Verilog

31条指令单周期cpu设计(Verilog)-(四)数据输入输出关系表

详解31条MIPS指令数据通路设计中各部件的输入输出关系表,包含PC、NPC、ALU、寄存器堆等部件的详细连接关系,用于Verilog代码结构设计。

说在前面

  • 开发环境:Vivado
  • 语言:Verilog
  • cpu框架:Mips
  • 控制器:组合逻辑

表格作用

  • 这张表用于设计整体的数据通路图 (在第二篇中已经给出来了),而总数据通路图是用于设计Verilog代码整体结构的。

设计流程

  • 上一篇文章中分析了每一条指令的具体数据通路图 ,由于篇幅问题没有将单条指令的数据输入输出关系列举出来,所以就在这里整合一下 (反正单条的数据通路图都有了)

步骤

  • 将31条指令涉及到的所有部件作为表头,首列为指令;RF为寄存器堆;
    指令 PC NPC IM RF ALU EXT16 EXT5 EXT18 ADD II DMEN EXT1 ADD8
    WData A B A B A B
  • 根据上一节内容,将每条指令各个部件的输入填入表格,未涉及的为空;NPC表示部件NPC的输出,其他同理;Rs\Rt为寄存器堆的两个输出
    指令 PC NPC IM RF ALU EXT16 EXT5 EXT18 ADD II DMEN EXT1 ADD8
    WData A B A B A B
    add NPC PC PC ALU Rs Rt
  • 得到表格 表中的imm16、offset等请根据指令的具体描述理解
    例如addi中的imm16,参考第二篇中:
    Bit#31..2625..2120..1615..0
    I-typeoprsrtimmediate
    addi001000rsrsimmediate(-~+)addi 1,1,2,100

    又如lw中的offset:
    Bit#31..2625..2120..1615..0
    I-typeoprsrtimmediate
    lw100011rsrtimmediate(-~+)lw 1,10(1,10(2)