VerilogのHDLシングル・サイクルCPUを達成します

参考実験的なテスト命令のカウントセット-ジェーンの本、いくつかの詳細を追加します。

1. BNE命令を追加します。

ctrl.vを変更


 

 


 

 


 

mipstestloopjal_sim.asmを変更した後、火星のダンプがbnetest.datです

 


 

sccomp_tbを変更

 


 

ModelSimのコンパイル、シミュレーション。> i_bne、NPC、PC - u_ctrl:信号はsccomp_tbを追加します

 


 

可視i_bne制御信号は、NPCは44となり、1です。BNE成功を追加します。

2. jr命令を追加します。

フォーマットを見てください。

 


 

Rタイプ命令。

次のようにそのため、ctrl.vに変更。


 

ctrl.vと二つの変更

 


 

そして、NPC.v.を変更 パラメータの入力を追加することに注意してください

 


 

 


 

 

=理由RD1可視sccpu.v

 


 

ctrl_encode_defで定義されたNPC_JR


 

sccpu.vのパラメータに.RD1を追加


 

そして、テスト手順を書きます

$ Raが最初のサイクルを継続すべきである。4.これに割り当てられています。

輸出テスト


 

sccomp_tbを変更することを忘れないでください。

 


 

図1c PC 4の波形図から分かるように変化するように設定されています。追加に成功しました

 


 

3. JALRを追加します。

 


 

ctrl.v

 


 

 


 

 


 

 


 

 

JAL R&LT命令形式は  JAL R&LT RS

無条件ジャンプレジスタrsで指定された命令、およびレジスタ$ raの次の命令のアドレスを保存

テストコード

 


 

ジャンプ4から分かる14、


 

$ RAレコード18

 


 

4.命令を追加NOR

 


 

 


 

 


 

alu.vで

 


 

テストコード


 

波形:

 


 

登録:


 

5. SLL&SRA&SRLの命令を追加します。

この拡張が行われていることに注意してください


 

入力の幅を変更するにも注意してくださいALUOp


 

そして、ctrl.vで

書き込みレジスタ

唯一のRegWriteメソッドを変更し、RDは以下を変更していないことに注意してください


 

 

出力を追加

 


 

 

 


 

 

sccpu.vで


 

 


 

 

 


 

 


 

テストコード:

 


 

波形:ALUopはSLL、SRL、SRAの1000,1001,1010対応してご覧ください

 


 

値を登録します。

 


 

6.sllvとsrlv

 

ここでは5下RS使っsllv  ロジックMIPS命令セット、シフトとスペースコマンド- - yxwkaifa -ブログパークCPUの5段目(3)自分自身を書きます

sllv $t1,$t2,$t3。

则t1值为t2左移t3的低五位

但是这里不太懂,没搞明白是怎么实现的逻辑左右移,位数可变

这里犯了一次错误。复制粘贴后忘了改数字了


 

 


 

 

 


 

 


 

 


 

测试代码:

 


 

波形:

 


 

寄存器变化

 


 

7.stli指令

小于则置一

 


 

 


 

 


 

 


 

测试代码:

 


 

波形:

 


 

寄存器值:

 


 

8.lui指令

取高十六位


 

 


 

 


 

 

 


 

 


 

 

测试代码:


 

波形图:

 


 

寄存器值:

 


 

9.andi指令

 


 

 


 

别忘了RT


 

 

aluop同and


 

测试代码:

 


 

波形图:

 


 

寄存器:

 


 

以上。nice!

学号后八位排序

01510029

lui 0x0151

ori 0x0029

 


 

记得改sccomp_tb

 


 

跑完看result.txt

 


 

大概是完成了排序。

おすすめ

転載: www.cnblogs.com/lqerio/p/11117623.html