当前位置:   article > 正文

verilog实现的16位CPU单周期设计

verilog微指令16位cpu

verilog实现的16位CPU单周期设计

这个工程完成了16位CPU的单周期设计,模块化设计,包含对于关键指令的仿真与设计,有包含必要的分析说明。

单周期CPU结构图

SingalCycle

单周期CPU设计真值表与结构图

TrueTable

该CPU用到的指令集,16位8个通用寄存器

register

设计思路

  1. Instruction Memory:
    输入8位的PC指令,输出对应内存的16位指令
    IF

  2. Control Unit
    输入16位的指令,根据真值表,输出对应结果
    CU

  3. Register File
    输入三个地址和写入内容,写入信号,输出两个地址对应的内容
    由于单周期内不能一边读一边写,故有一个时钟信号,通过一级缓存,在下一个时钟信号来临时立即写入内存
    RF

  4. ALU
    输入运算数和指令,输出运算结果以及标志位
    由于单周期内,标志位并不在当前周期而在下一周期使用,故增加时钟信号,通过一级缓存,在下一个周期时判断使用
    ALU

  5. Data Memory
    输入一个地址,写入内容和写入信号,输出读取内容
    由于单周期内不能一边读一边写,故有一个时钟信号,通过一级缓存,在下一个时钟信号来临时立即写入内存
    DM

  6. PC-NextPC
    根据分支指令,跳转指令和标志位的组合逻辑,决定PC是+1还是到某目标位置
    PC

实验结果

RTL图
RTL

Testbench内容
tb

在test中,通过每隔50个ns,时钟取反一次,CPU通过一次时钟的上升沿计算一个周期,通过输出用到的通用寄存器和用到的datamemory里面的变量来观察整个CPU的流程结果,测试CPU是否正确工作

Instruction Memory:
IM2

指令0:gr1原本初始化时为0,把gr1加上一个立即数18,gr1为18(0012)
指令1:gr2原本初始化时为0,把gr2加上一个高八位1,gr2为256(0100)
指令2:从gr1和gr2中取值相加,结果保存在gr3中,gr3应为274(0112)
指令3:把gr3的值保存到datamemory中的dm0,dm0为274(0112)
指令4:gr1的值为18,减去一个立即数2,gr1为16(0010)
指令5:gr2的值为256,加上一个高八位立即数0,结果不变为256(0100)
指令6:从gr1和gr2中取值相加,结果保存在gr3中,gr3应为272(0110)
指令7:把gr3的值保存到datamemory中的dm1,dm1为272(0110)
指令8:从dm0中取值到gr1中,gr1为274(0112)
指令9:从dm1中取值到gr2中,gr2为272(0110)
指令10:从gr1和gr2中取值相减,结果保存在gr3中,gr3应为2(0002)
指令11:把gr3的值保存到datamemory中的dm2,dm2为2(0002)
指令12:跳转指令,PC跳转到第14条指令
指令13:该指令不被执行,如gr1中出现274+171=445(01BD)则出错
指令14:从gr1和gr2中取值与操作,结果保存在gr3中,gr3应为272(0110)
指令15:把gr3的值保存到datamemory中的dm3,dm3为272(0110)
指令16:把gr1的值置为0
指令17:把gr1的值置为1
指令18:把gr1的值算术左移两位保存在gr3中,gr3为4
指令19:把gr3的值保存到datamemory中的dm4,dm4为4(0004)
指令20:把gr3和gr3相减让ZF标志位为1
指令21:因为ZF标志位为1,所以跳转到指令12,循环执行,如PC的值大于21,则出错

实验结果:
result

结果分析:
1) 指令0~3,测试立即数加法和加法,计算18(0012)+256(0100)=274(0112),得到0112存储在dm0上。√
2) 指令4~7,测试立即数减法和加法,计算18-2(0010)+256(0110)=272(0110),得到0110存储在dm1上。√
3) 指令8~11,测试减法和读取写入,计算274(0112)-272(0110)=2(0002),得到0002存储在dm2上。√
4) 指令12~15,测试跳转指令和位操作指令,PC值从0c跳转到0e把274(100010010)和272(100010000)与操作得到272(1000100010)[0110]存储在dm3上。√
5) 指令16~19,测试移位指令,将1(0001)左移2位得到4(0004)存储在dm4上。√
6) 指令

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/696281
推荐阅读
相关标签
  

闽ICP备14008679号