大和田/PICO16o
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[大和田/SFL]]
*PICO16o [#p6afda58]
PICO16o(PICO16 Ohwada version)は、慶應大学で考案された教育用16ビットRISCプロセッサPICO16を、SFLらしい記述方法を考えて再記述したものです。
----
#contents
**PICO16との相異点 [#r3b66d96]
主な相異点は以下の通りです。
-メモリアドレッシングは16ビット単位
-バイト単位のアクセス命令LB, SBはサポートしない
-SFL記述を変更
オリジナルのPICO16は同じようにSFLで記述されています。
また、以下のウェブページでその設計ファイルを公開しています。
http://www.am.ics.keio.ac.jp/picobook/
**サポートする命令セット [#y50dc4fa]
命令セットはPICO16aと互換です。
|命令|動作|使用例|意味|
|NOP|何もしない|NOP|有効な操作は行わない|
|MV|コピー|MV r1, r2|r1 = r2|
|AND|論理積|AND r1, r2|r1 = r1 & r2|
|OR|論理和|OR r1, r2|r1 = r1 | r2|
|XOR|排他的論理和|XOR r1, r2|r1 = r1 @ r2|
|NOT|否定|NOT r1|r1 = ^r1|
|ADD|加算|ADD r1, r2|r1 = r1 + r2|
|SUB|減算|SUB r1, r2|r1 = r1 - r2|
|LD|ロード|LD r1, (r2)|r1 = mem[r2]|
|ST|ストア|ST (r1), r2|mem[r1] = r2|
|SL|左シフト|SL r1, r2|r1 = r1 << 1|
|SR|右シフト|SR r1, r2|r1 = r1 >> 1|
|RFI|割り込みからの復帰|RFI|pc = iar, ienable = 1|
|EINT|割り込み許可|EINT|ienable = 1|
|LIAR|IARをロード|LIAR r1|r1 = iar|
|SIAR|IARにストア|SIAR r1|iar = r1|
|DINT|割り込み禁止|DINT|ienable = 0|
|ANDI|即値論理積(下位8ビットはゼロ拡張)|ANDI r1, #10|r1 = r1 & 10|
|ORI|即値論理和(下位8ビットはゼロ拡張)|ORI r1, #10|r1 = r1 | 10|
|XORI|即値排他的論理和(下位8ビットはゼロ拡張)|XORI r1, #10|r1 = r1 @ 10|
|ADDI|即値加算(上位8ビットは符号拡張)|ADDI r1, #10|r1 = r1 + 10|
|SUBI|即値減算(上位8ビットは符号拡張)|SUBI r1, #10|r1 = r1 - 10|
|JALR|戻り値を保存してレジスタの値に絶対分岐|JALR r1|r7 = pc, pc = r1|
|BNEZ|ゼロでないとき相対分岐|BNEZ r1, -5|if(pc != 0) pc = pc - 5|
|BEQZ|ゼロのとき相対分岐|BEQZ r1, -5|if(pc == 0) pc = pc - 5|
|BMI|負のとき相対分岐|BMI r1, -5|if(pc < 0) pc = pc - 5|
|BPL|正のとき相対分岐(0を含む)|BPL r1, -5|if(pc >= 0) pc = pc - 5|
|JAL|戻り値を保存して相対分岐|JAL -5|r7 = pc, pc = pc - 5|
|JR|レジスタの値に絶対分岐|JR r1|pc = r1|
|JMP|相対分岐|JMP -5|pc = pc - 5|
|LDLI|下位8ビットにロード(上位8ビットは符号拡張)|LDLI r1, 0x10|r1 = 0x00000010|
|LDHI|上位8ビットにロード(下位8ビットはゼロ拡張)|LDHI r2, 0x10|r2 = 0x00100000|
**シミュレータ [#ca4bbd61]
PICO16oには周辺デバイスが実装されていませんが、命令の動作確認にはPICO16aシミュレータ[[OCIP>大和田/OCIP]]が使用できます。
**アセンブラ [#j031cb1d]
2007年度のコンピュータ構築設計論で使用したPICOのアセンブラ[[pasm>大和田/pasm]]があります。
使用するにはパスの設定をする必要があります。~/.cshrcに以下の記述を加えてください。
set path = ( $path /home/course/comporg/bin )
**ダウンロード [#c526bf7e]
|PICO16o (PICO16 Ohwada version)|&ref(pico16o.tar.gz);|
**フォルダ構成 [#u6082c0b]
フォルダ構成は以下のようになっています。
-pico16o
--rtl : 各モジュールのSFLファイル
--sim : シミュレーションファイル
---asm : アセンブリファイル
***rtlディレクトリのファイル [#o44f978e]
|Makefile|コンパイルのためのスクリプトを書いたファイル|
|~|% make で全てのSFLファイルをコンパイルする|
|memory.sfl|主記憶ユニット|
|memory.h|~|
|alu.sfl|ALU|
|alu.h|~|
|regfile.sfl|レジスタファイル|
|regfile.h|~|
|pico16o.sfl|プロセッサ本体|
|pico16o.h|~|
***simディレクトリのファイル [#t45f9e54]
|Makefile|シミュレーションのためのスクリプトを書いたファイル&br;% make で簡単な乗算を行なうサンプルアセンブリプログラムを実行します|
|main.v|Verilog-HDLで記述したテストベンチ|
|test_pico16.sfl|CPUとメモリを接続したモジュール|
***asmディレクトリのファイル [#od610c85]
|mult.s|簡単な乗算を行なうサンプルアセンブリプログラム|
終了行:
[[大和田/SFL]]
*PICO16o [#p6afda58]
PICO16o(PICO16 Ohwada version)は、慶應大学で考案された教育用16ビットRISCプロセッサPICO16を、SFLらしい記述方法を考えて再記述したものです。
----
#contents
**PICO16との相異点 [#r3b66d96]
主な相異点は以下の通りです。
-メモリアドレッシングは16ビット単位
-バイト単位のアクセス命令LB, SBはサポートしない
-SFL記述を変更
オリジナルのPICO16は同じようにSFLで記述されています。
また、以下のウェブページでその設計ファイルを公開しています。
http://www.am.ics.keio.ac.jp/picobook/
**サポートする命令セット [#y50dc4fa]
命令セットはPICO16aと互換です。
|命令|動作|使用例|意味|
|NOP|何もしない|NOP|有効な操作は行わない|
|MV|コピー|MV r1, r2|r1 = r2|
|AND|論理積|AND r1, r2|r1 = r1 & r2|
|OR|論理和|OR r1, r2|r1 = r1 | r2|
|XOR|排他的論理和|XOR r1, r2|r1 = r1 @ r2|
|NOT|否定|NOT r1|r1 = ^r1|
|ADD|加算|ADD r1, r2|r1 = r1 + r2|
|SUB|減算|SUB r1, r2|r1 = r1 - r2|
|LD|ロード|LD r1, (r2)|r1 = mem[r2]|
|ST|ストア|ST (r1), r2|mem[r1] = r2|
|SL|左シフト|SL r1, r2|r1 = r1 << 1|
|SR|右シフト|SR r1, r2|r1 = r1 >> 1|
|RFI|割り込みからの復帰|RFI|pc = iar, ienable = 1|
|EINT|割り込み許可|EINT|ienable = 1|
|LIAR|IARをロード|LIAR r1|r1 = iar|
|SIAR|IARにストア|SIAR r1|iar = r1|
|DINT|割り込み禁止|DINT|ienable = 0|
|ANDI|即値論理積(下位8ビットはゼロ拡張)|ANDI r1, #10|r1 = r1 & 10|
|ORI|即値論理和(下位8ビットはゼロ拡張)|ORI r1, #10|r1 = r1 | 10|
|XORI|即値排他的論理和(下位8ビットはゼロ拡張)|XORI r1, #10|r1 = r1 @ 10|
|ADDI|即値加算(上位8ビットは符号拡張)|ADDI r1, #10|r1 = r1 + 10|
|SUBI|即値減算(上位8ビットは符号拡張)|SUBI r1, #10|r1 = r1 - 10|
|JALR|戻り値を保存してレジスタの値に絶対分岐|JALR r1|r7 = pc, pc = r1|
|BNEZ|ゼロでないとき相対分岐|BNEZ r1, -5|if(pc != 0) pc = pc - 5|
|BEQZ|ゼロのとき相対分岐|BEQZ r1, -5|if(pc == 0) pc = pc - 5|
|BMI|負のとき相対分岐|BMI r1, -5|if(pc < 0) pc = pc - 5|
|BPL|正のとき相対分岐(0を含む)|BPL r1, -5|if(pc >= 0) pc = pc - 5|
|JAL|戻り値を保存して相対分岐|JAL -5|r7 = pc, pc = pc - 5|
|JR|レジスタの値に絶対分岐|JR r1|pc = r1|
|JMP|相対分岐|JMP -5|pc = pc - 5|
|LDLI|下位8ビットにロード(上位8ビットは符号拡張)|LDLI r1, 0x10|r1 = 0x00000010|
|LDHI|上位8ビットにロード(下位8ビットはゼロ拡張)|LDHI r2, 0x10|r2 = 0x00100000|
**シミュレータ [#ca4bbd61]
PICO16oには周辺デバイスが実装されていませんが、命令の動作確認にはPICO16aシミュレータ[[OCIP>大和田/OCIP]]が使用できます。
**アセンブラ [#j031cb1d]
2007年度のコンピュータ構築設計論で使用したPICOのアセンブラ[[pasm>大和田/pasm]]があります。
使用するにはパスの設定をする必要があります。~/.cshrcに以下の記述を加えてください。
set path = ( $path /home/course/comporg/bin )
**ダウンロード [#c526bf7e]
|PICO16o (PICO16 Ohwada version)|&ref(pico16o.tar.gz);|
**フォルダ構成 [#u6082c0b]
フォルダ構成は以下のようになっています。
-pico16o
--rtl : 各モジュールのSFLファイル
--sim : シミュレーションファイル
---asm : アセンブリファイル
***rtlディレクトリのファイル [#o44f978e]
|Makefile|コンパイルのためのスクリプトを書いたファイル|
|~|% make で全てのSFLファイルをコンパイルする|
|memory.sfl|主記憶ユニット|
|memory.h|~|
|alu.sfl|ALU|
|alu.h|~|
|regfile.sfl|レジスタファイル|
|regfile.h|~|
|pico16o.sfl|プロセッサ本体|
|pico16o.h|~|
***simディレクトリのファイル [#t45f9e54]
|Makefile|シミュレーションのためのスクリプトを書いたファイル&br;% make で簡単な乗算を行なうサンプルアセンブリプログラムを実行します|
|main.v|Verilog-HDLで記述したテストベンチ|
|test_pico16.sfl|CPUとメモリを接続したモジュール|
***asmディレクトリのファイル [#od610c85]
|mult.s|簡単な乗算を行なうサンプルアセンブリプログラム|
ページ名: