VHDLによるアーキテクチャ 学習支援ソフトの開発

VHDLによるCPUアーキテクチャ
学習支援ソフトの開発
研究者名 サデック モハメド ハニフ
指導教官 青山 義弘
パソコンの普及とともに…
。。。。…
学習ソフト
。。。。。。。
CPUの動作と構造の理解は学生にとって少し難しく感じる場合
が多い。
CPU等のアーキテクチャの学習をテーマに学習支援ソフトの
開発を行う。
1.本学科4,5年生
対象となる学生
2.情報系以外の生産
システム工学科1~2年生
CPUアーキテクチャと動作
HTML
VHDLツール
・プログラム
・シミュレーション
・シンセサイザ
学生に分かりやすく説明
VHDLとは
HDL : Hardware Descriptive Language
(ハードウェア記述言語)
VHDL: VHSIC HDL
VHSIC :Very High Speed Integrated
Circuit
(高速集積回路)
VHDL の特徴
・ 設計期間の短縮
・ 完成度の高いシステムが構築可能
・ 設計の再利用が容易
このため、集積論理回路の設計に多くの研究期
間や企業に幅広く使われているハードウェア記
述言語である。
今回ツールとしてVHDLを利用
した理由:
VHDLは、難しいハードウェア記述言語である
が
高級言語であるため、その記述から動作を理解
しやすい。
記述内の変数名を実際の素子や信号とその動
作に合わせて考えることが出来る。
難しい論理式を考えず、動作だけ分かればよい 。
例えば、ADDER…FAなんて考えなくても
VHDL記述(8bit add):
….…
port (
A , B :in….(7 downto 0);
C
:in
Z :out..(7 downto 0));
論理合成
シミュレーション
……
Z <= A+B+C;
FPGAボードに実装
CPU
コントローラ
ALU等の
演算器
レジスタ
・学生がCPUの構造を部分的に、ハードウェア記述言語での記述
とシミュレーションにより動作を確かめる。
・そして、それらの組み合わせることによって、CPU 構造と動作を
全体的にシミュレーションし、その理解を深める。
研究の進め方
VHDLの学習
HTMLで教材開発
シミュレーションと
合成方法の学習
VHDLで書かれたCPU動作
を分かりやすく説明する
方法を考察
HTMLの使い方の学習
現在の状況:
VHDLの文法の学習。
VHDLで16ビットアダー、16ビット加減算器、
カウンタ、ALU、自動販売機などの設計。
シミュレーションと論理合成。
シミュレータ、FPGAボードで動作の
確認 。
今後の課題:
HTMLを学習し、目標である教材開発に取り組みたい 。
これまで作成したVHDLの記述をもとに、簡単なハードウェア
の理解を支援する教材を作成。
ALU
:組合せ論理回路のVHDL記述の例
カウンタ
:順序回路のVHDL記述の例
自動販売機
:順序回路のVHDL記述の例
1997年度卒研のCPUの仕様で教材開発。
記述の読みやすさを重視したVHDL記述の再コーディング。
8bitCPU概略図
IM
DM
IA
ID
IC
DA
DD
DC
IMC
PC
DMC
ALU
Decoder、
State Machine
& Controller
IR
Shifter
FR
Reg. File
8bit × 16
命令仕様(12bit固定長)
OPコード
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
ニモニック
NOP
LD
ST
MV
JMP
JNZ
JPZ
SET
ADD
SUB
SRL
SLL
AND
OR
XOR
NOT
オペランド
-reg1 reg2
reg1 reg2
reg1 reg2
ADDRESS
ADDRESS
ADDRESS
Imm
reg1 reg2
reg1 reg2
reg1 reg2
reg1 reg2
reg1 reg2
reg1 reg2
reg1 reg2
reg1 reg2
意味
NO OPERATION
REGF[reg1]<=M [reg2]
M [reg1]<=REGF[reg2]
REGF[reg1]<=REGF[reg2]
アドレス値へジャンプ
ゼロでないならJMP
正 or ゼロならJMP
REGF[reg0] <= Imm
REGF[reg1]<=REGF[reg1] + REGF[reg2]
REGF[reg1]<=REGF[reg1] - REGF[reg2]
REGF[reg1]<=REGF[reg2]の論理右シフト
REGF[reg1]<=REGF[reg2]の論理左シフト
REGF[reg1]<=REGF[reg1] AND REGF[reg2]
REGF[reg1]<=REGF[reg1] OR REGF[reg2]
REGF[reg1]<=REGF[reg1] XOR REGF[reg2]
REGF[reg1] <= NOT REGF[reg2]