SN/X for Verilog-HDL
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[裏プロジェクト]]
*SN/X for Verilog-HDL [#vfd59e88]
東海大学の清水先生が開発した16ビットCPUであるSN/Xを用いてVerilog-HDLの練習をする。
----
#contents
**被験者 [#hf885bf3]
-[[前田]]
**SN/Xの構成 [#ta7c0e2a]
CENTER:&ref(snx.png);
**SN/Xの命令 [#pbf8c2e4]
***命令形式 [#m034c8f2]
SN/Xは16ビットからなるR形式とI形式の命令をサポートしています。
||>|>|>|>|CENTER:フィールド|
|命令形式|15-12|11-10|9-8|7-6|5-0|
|R|OP|R2|R3|R1||
|I|OP|R1|R2|>|I|
***命令セット [#o0109db8]
SN/Xがサポートしている命令は以下の通りです。
|命令|形式|例|意味|
|ADD|R|add $1, $2, $3|$1 = $2 + $3|
|AND|R|and $1, $2, $3|$1 = $2 & $3|
|SLT|R|slt $1, $2, $3|if($s2<$s3) $s1=1 ; else $s1=0|
|NOT|R|not $1, $2|$1 = ^$2|
|SR|R|sr $1, $2|$1 = $2 >> 1|
|HLT||hlt|CPUを停止する|
|LD|I|ld $1, 10($2)|$s1 = memory[$s2+10]|
|ST|I|st $1, 10($2)|memory[$s2+10] = $1|
|LDA|I|lda $1, 10($2)|$1 = $2 + 10|
|BZ|I|bz $1, L001|if($1==0) goto L001|
|BAL|I|bal $1, L001|$1 = PC+1 ; goto L001|
**被験者のメモ [#fb4234bb]
***前田 [#n4655447]
add命令、st命令、ld命令と順番に実装/検証を繰り返す開発をしていくと、ソースコードに一貫性が無く、制御ユニットの実装も面倒になるのでおすすめしない。~
SN/Xの構成の画像に従って、最初からマルチプレクサへの制御ユニットの設計を念頭に実装するのがおすすめ。~
1日目 : 汎用レジスタ(gr.v)、メモリ(memory.v)、ALU(alu.v)、命令定義(opdef.v)のコーディング
2日目 : メインモジュール(snx.v)のコーディング、デバッグ。完成。
終了行:
[[裏プロジェクト]]
*SN/X for Verilog-HDL [#vfd59e88]
東海大学の清水先生が開発した16ビットCPUであるSN/Xを用いてVerilog-HDLの練習をする。
----
#contents
**被験者 [#hf885bf3]
-[[前田]]
**SN/Xの構成 [#ta7c0e2a]
CENTER:&ref(snx.png);
**SN/Xの命令 [#pbf8c2e4]
***命令形式 [#m034c8f2]
SN/Xは16ビットからなるR形式とI形式の命令をサポートしています。
||>|>|>|>|CENTER:フィールド|
|命令形式|15-12|11-10|9-8|7-6|5-0|
|R|OP|R2|R3|R1||
|I|OP|R1|R2|>|I|
***命令セット [#o0109db8]
SN/Xがサポートしている命令は以下の通りです。
|命令|形式|例|意味|
|ADD|R|add $1, $2, $3|$1 = $2 + $3|
|AND|R|and $1, $2, $3|$1 = $2 & $3|
|SLT|R|slt $1, $2, $3|if($s2<$s3) $s1=1 ; else $s1=0|
|NOT|R|not $1, $2|$1 = ^$2|
|SR|R|sr $1, $2|$1 = $2 >> 1|
|HLT||hlt|CPUを停止する|
|LD|I|ld $1, 10($2)|$s1 = memory[$s2+10]|
|ST|I|st $1, 10($2)|memory[$s2+10] = $1|
|LDA|I|lda $1, 10($2)|$1 = $2 + 10|
|BZ|I|bz $1, L001|if($1==0) goto L001|
|BAL|I|bal $1, L001|$1 = PC+1 ; goto L001|
**被験者のメモ [#fb4234bb]
***前田 [#n4655447]
add命令、st命令、ld命令と順番に実装/検証を繰り返す開発をしていくと、ソースコードに一貫性が無く、制御ユニットの実装も面倒になるのでおすすめしない。~
SN/Xの構成の画像に従って、最初からマルチプレクサへの制御ユニットの設計を念頭に実装するのがおすすめ。~
1日目 : 汎用レジスタ(gr.v)、メモリ(memory.v)、ALU(alu.v)、命令定義(opdef.v)のコーディング
2日目 : メインモジュール(snx.v)のコーディング、デバッグ。完成。
ページ名: