岡田/春のプロジェクト/第10回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[岡田/春のプロジェクト]]
*第10回 CPUの設計(1) 基本アーキテクチャの設計 [#m27c2332]
**Keyword [#e71610a8]
-CPU、命令セット、制御線、制御線のロジック、ニーモニック、オペランド、ポップ、プッシュ、カウンタ、ステート・マシン、スタック、算術演算回路、メモリ、TINYCPU
**TINYCPUの構成要素 [#tb5ad27c]
-カウンタ、ステート・マシン、スタック、算術論理演算回路、メモリ(ブロックRAM)
-各モジュールの接続には、アドレス・バス、データ・バスの2つのバスを用いる。
-全モジュールが共通のクロックとリセットを用いるので、TINYCPUは完全同期式回路である。
**TINYCPUの制御信号 [#dd02df76]
||制御信号|関係モジュール・バス|CENTER:値が1のときの動作|
|1|halt|state0|EXECAからIDLEに状態遷移|
|2|cout|state0|EXECAからEXECBに状態遷移|
|3|pcinc|pc0|プログラム・カウンタの値を1増加|
|4|push|stack0|スタックをプッシュ|
|5|pop|stack0|スタックをポップ|
|6|abus2pc|abus,pc0|abusの値をpc0に書き込む|
|7|dbus2ir|dbus,ir0|dbusの値をir0に書き込む|
|8|dbus2qtop|dbus,stack0|dbusの値をstack0に書き込む|
|9|dbus2ram|abus,dbus,ram0|ram0のabusで指定された番地にdbusの値を書き込む|
|10|dbus2obuf|dbus,obuf0|dbusの値をobuf0に書き込む|
|11|pc2abus|pc0,abus|pcoutの値をabusに書き込む|
|12|ir2abus|ir0,abus|irout[11:0]の値をabusに書き込む|
|13|ir2dbus|ir0,dbus|irout[11:0]の値の符合拡張をdbusに書き込む|
|14|qtop2dbus|stack,dbus|qtopの値をdbusに書き込む|
|15|alu2dbus|alu0,dbus|aluoutの値をdbusに書き込む|
|16|ram2dbus|ram0,dbus|ramoutの値をdbusに書き込む|
|17|in2dbus|dbus|inをdbusに書き込む|
**TINYCPUの制御信号論理 [#kbf8fbee]
|CENTER:命令|CENTER:FETCHA|CENTER:FETCHB|
|すべて|pcinc,pc2abus|ram2dbus,dbus2ir|
&br;
|CENTER:命令|CENTER:EXECA|CENTER:条件|
|HALT|halt|CENTER:-|
|PUSH I|ir2dbus,dbus2qtop,push|CENTER:-|
|PUSH A|ir2abus,cout|CENTER:-|
|POP A|ir2abus,qtop2dbus,dbus2ram,pop|CENTER:-|
|JMP A|ir2abus,abus2pc|CENTER:-|
|JZ A|ir2abus,abus2pc,pop|qtop==0のとき|
|JZ A|pop|qtop!=0のとき|
|JNZ A|ir2abus,abus2pc,pop|qtop!=0のとき|
|JNZ A|pop|qtop==0のとき|
|IN|in2dbus,dbus2qtop,push|CENTER:-|
|OUT|qtop2dbus,dbus2obuf,pop|CENTER:-|
|OP f|alu2dbus,dbus2qtop,pop|irout[4]==0のとき|
|OP f|alu2dbus,dbus2qtop|irout[4]==1のとき|
&br;
|CENTER:命令|CENTER:EXECB|
|PUSH A|ram2dbus,dbus2qtop,push|
#comment
終了行:
[[岡田/春のプロジェクト]]
*第10回 CPUの設計(1) 基本アーキテクチャの設計 [#m27c2332]
**Keyword [#e71610a8]
-CPU、命令セット、制御線、制御線のロジック、ニーモニック、オペランド、ポップ、プッシュ、カウンタ、ステート・マシン、スタック、算術演算回路、メモリ、TINYCPU
**TINYCPUの構成要素 [#tb5ad27c]
-カウンタ、ステート・マシン、スタック、算術論理演算回路、メモリ(ブロックRAM)
-各モジュールの接続には、アドレス・バス、データ・バスの2つのバスを用いる。
-全モジュールが共通のクロックとリセットを用いるので、TINYCPUは完全同期式回路である。
**TINYCPUの制御信号 [#dd02df76]
||制御信号|関係モジュール・バス|CENTER:値が1のときの動作|
|1|halt|state0|EXECAからIDLEに状態遷移|
|2|cout|state0|EXECAからEXECBに状態遷移|
|3|pcinc|pc0|プログラム・カウンタの値を1増加|
|4|push|stack0|スタックをプッシュ|
|5|pop|stack0|スタックをポップ|
|6|abus2pc|abus,pc0|abusの値をpc0に書き込む|
|7|dbus2ir|dbus,ir0|dbusの値をir0に書き込む|
|8|dbus2qtop|dbus,stack0|dbusの値をstack0に書き込む|
|9|dbus2ram|abus,dbus,ram0|ram0のabusで指定された番地にdbusの値を書き込む|
|10|dbus2obuf|dbus,obuf0|dbusの値をobuf0に書き込む|
|11|pc2abus|pc0,abus|pcoutの値をabusに書き込む|
|12|ir2abus|ir0,abus|irout[11:0]の値をabusに書き込む|
|13|ir2dbus|ir0,dbus|irout[11:0]の値の符合拡張をdbusに書き込む|
|14|qtop2dbus|stack,dbus|qtopの値をdbusに書き込む|
|15|alu2dbus|alu0,dbus|aluoutの値をdbusに書き込む|
|16|ram2dbus|ram0,dbus|ramoutの値をdbusに書き込む|
|17|in2dbus|dbus|inをdbusに書き込む|
**TINYCPUの制御信号論理 [#kbf8fbee]
|CENTER:命令|CENTER:FETCHA|CENTER:FETCHB|
|すべて|pcinc,pc2abus|ram2dbus,dbus2ir|
&br;
|CENTER:命令|CENTER:EXECA|CENTER:条件|
|HALT|halt|CENTER:-|
|PUSH I|ir2dbus,dbus2qtop,push|CENTER:-|
|PUSH A|ir2abus,cout|CENTER:-|
|POP A|ir2abus,qtop2dbus,dbus2ram,pop|CENTER:-|
|JMP A|ir2abus,abus2pc|CENTER:-|
|JZ A|ir2abus,abus2pc,pop|qtop==0のとき|
|JZ A|pop|qtop!=0のとき|
|JNZ A|ir2abus,abus2pc,pop|qtop!=0のとき|
|JNZ A|pop|qtop==0のとき|
|IN|in2dbus,dbus2qtop,push|CENTER:-|
|OUT|qtop2dbus,dbus2obuf,pop|CENTER:-|
|OP f|alu2dbus,dbus2qtop,pop|irout[4]==0のとき|
|OP f|alu2dbus,dbus2qtop|irout[4]==1のとき|
&br;
|CENTER:命令|CENTER:EXECB|
|PUSH A|ram2dbus,dbus2qtop,push|
#comment
ページ名: