IA08プロセッサ - Shimizu Lab

IA08プロセッサ
IA16マイクロプロセッサ
業界標準命令セットを実装した8ビットプロセッサIA08を開発
目的
業界標準アーキテクチャ16bit CPU IP コアの開発
プロセッサ、ビデオ回路、サウンド回路などゲームプラットフォームのシステム全てを設計
それら論理回路部全てをFPGAワンチップに実装し、アナログ回路を含めワンボードにシステム全てを実装
IA08プロセッサコア
INTERNAL BUS
VRAM
プログラム,
Color
RAM
メイン キャラクタ,
RAM スプライト
ROM
MUX, DMUX
OP1
OP2
B
D
H
メモリコントローラ
A’
DMUX
アドレスデコード
ALU
C
E
L
BC’
DE’
HL’
15
アービトレーション
I/Oバス
クロック
分周
+
Joypad
I/Oコントローラ
コリジョン検出
clock
Divider
white noize
generator 4BIT
FIR Band
Pass Filter
CL
DS
DX
DH
00
DL
SP
01
or
10
BP
0
t0
コリジョン
write/read
4BIT
BL
CH
DI
現状
↓
3. FPGAへ実装
QuartusII ver3.0で合成
最終的には周辺デバイスとの
接続, OSの動作までを実現し
コンピュータシステム全体の
構築をする。
mod = 01,disp = disp low sign-extended to 16 bits.
mod = 10,disp = disp high & disp low.
mod = 00 & r/m = 110 -> EA = disp high & disp low.
汎用レジスタ
ファイル
スプライト制御
select data
アドレス計算無し
EA = BX + SI
EA = BX + DI
EA = BP + SI
EA = BP + DI
EA = SI
EA = DI
EA = BP
EA = BX
EA = BX + SI + disp
EA = BX + DI + disp
EA = BP + SI + disp
EA = BP + DI + disp
EA = SI + disp
EA = DI + disp
EA = BP + disp
EA = BX + disp
000
001
010
011
100
101
110
111
000
001
010
011
100
101
110
111
オフセットアドレスの計算法
1.7MHz
4BIT
BH
CX
開発フロー
1. SFL記述(論理設計)
2. Verilogシミュレーション
計算法
11
SI
memio
13.98KHz
BX
SS
セグメント方式アドレッシング
NTSC
コンポジット
信号生成
r/m
AL
CS
3bit
r/m
mod
物理アドレス
14.318MHz
スプライトXY軸
AH
セグメントレジスタ
ファイル
19
キャラクタ制御
3bit
0000
VRAM,Color RAMバス
ビデオコントローラ
AX
ES
0
セグメントアドレス
SYSTEM BUS
2bit
mod
0
オフセットアドレス
15
メモリバス
オペコードの2byte目
アーキテクチャ
・1MBメモリ空間
・セグメント方式アドレッシング
・64KB I/O空間
F’
A
SP
PC
IX
IY
CONTROL UNIT
OP0
F
INC
DEC
t1
t2
t3
t4
t5
t6
t7
t8
t9
t10
t11
memory
access
memory
access
memory
access
memory
access
read
read
write
write
t12
t13
ブロック図
固定優先順位方式
sound_mix
映像出力
decay
BHE
address
enable
OUT
data
音声出力
4BIT
音声出力
high
high
even
odds
data
data
low
INT
high
high
even
even
odds
even
data
high
data
data
low
data
high
メモリアクセスのタイミングチャート
割り込み
信号線
オンチップ
割り込み
コントローラ
割り込みベクタ
アドレス
INTA
プロセッサ
コア
割り込み処理
動作予定OS
Free DOS
MINIX
ELKS
ターゲットコンパイラ
bcc
sound
generator
サウンド生成回路
信号合成アナログ回路
サウンド生成回路ではホワイトノイズ生成回路、
フィルタやディケイ回路を通して爆発音等が
作られ、射撃音などとミキサで合成して出力する.
クロマ信号
カラーバースト信号
水平同期信号
画面は8×8ドットのキャラクタを背景として描画し、32×32
ドットのスプライトイメージを指定したXY軸から合成して
作られる.コリジョン検出はキャラクタとスプライトイメージ
の衝突を検出し、I/Oポートを通してCPUから認識される.
論理回路部で同期信号、
カラーバースト、クロマ
信号を生成し、製作した
アナログ回路で合成
している。
32キャラクタ
スプライト
ビデオ回路はキャラクタ・スプライト
ROMを使うモードとVRAMのみを使う
ビットマップモードと切替えることが
可能.
コンパイラ
Dhrystone/S
9MHz
bcc
1348
7.5MHz
cc
1254
DeSmet
625
設計したプロセッサ
IBM PC/AT 80286
Macintosh512 68000 7.7MHz
IBM PC/XT 8086
Dhrystone Benchmark実行時の様子
8MHz
Intel C-86V2.0
304
Dhrystone Benchmarkの実行結果による性能比較
MY80プロセッサコア
NTSCコンポジット信号を
オシロスコープで出力した様子
製作したボード
を用いたスペース
インベーダー
ゲームのデモ.
映像出力とともに
音声出力も行って
いる.CPUはMY80
を実装.
スペースインベーダーを動作させた様子
動作周波数
映像信号、音声
信号波形の合成・
出力とともに
ROM、RAM、
源発振器とJoypad
入力端子を実装.
製作したボード
プログラムROMはタイトー社より御提供 C TAITO CORP. 1978-2003
論理規模
880 LE
最大動作周波数
58.56 MHz
実装FPGA
EP1C3T100C6
bccでコンパイルしたDhrystone BenchmarkをVerilog 上
で実行し性能の評価をした。
結果、他の16bitプロセッサと遜色無い性能であった。
合成結果
IA08プロセッサコア
論理規模
1465 LE
最大動作周波数
35.79 MHz
実装FPGA
EP1S10F780C7ES
Stratix EP1S10F780C7ES
実行したアセンブリコードの一部
Cyclone EP1C6Q240C8
論理規模
3884LE
3909LE
動作周波数
9.16MHz
7.31MHz