coding tips

  1. 注意框架
  2. 注意模块间接口
  3. 注意pc值传递关系
  4. 注意分布式控制信号操作

添加指令流程

  • branch_link意即写回pc_0+4
  • branch_likely意即不跳转时清空延迟槽

branch类跳转:

  1. 比较类型:control_cmp

  2. 是否写入pc_0 + 4

    • 注意WD_12选择为pc_0
  3. 是否为条件写入,即写使能与branch是否有关

    • 如果是条件写入:则将branch信号随instr一同流水
    • 在reg_34流水出来后,将branch信号传给control_4,与新增指令一同控制写使能信号
  4. 是否需要清空延迟槽

    • 如果需要清空延迟槽,将branch信号传给control_1,如果branch && instr_1为1,则将reset_01置1传给IF_module
    • 注意当处于stall时,不reset,即reg_01内为 if(reset||(reset_01 && en_01))

bgezall:条件跳转,否则清空延迟槽
bgtzalr:条件写寄存器

访存类指令:

  1. 是否为条件写入
    • 该情况下,DM种读出的数值决定了是否进行写入寄存器的操作
    • 不管是否写入,注意控制WD_34为修改后的写入值,必要时给control_3里的control_WD34加一位
    • 因此需要把是否需要写入的信号随instr一同流水
    • 在reg_34流水出来后,将控制写入的信号传给control_4,与新增指令一同控制写使能信号

lwso:如果lw的data大于0,则写入,否则不写入

相关文章:

  • 2022-01-22
  • 2021-11-30
  • 2021-12-28
  • 2022-12-23
  • 2021-09-28
  • 2021-06-01
  • 2021-10-06
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-05
  • 2022-12-23
  • 2021-06-14
  • 2021-06-07
相关资源
相似解决方案