Verilog分支指令MIPS

时间:2013-11-08 20:48:23

标签: mips verilog instructions

我试图理解verilog分支语句如何以MIPS处理器的立即指令格式工作。我无法理解以下Verilog代码的作用:

IR是指令,所以IR [31:26]会给出操作码。

reg[31:0] BT = PC + 4 + { 14{IR[15]}, IR[15:0], 2'b0};

我看到比特和片段,例如我们正在更新程序计数器,并且我们正在获取指令的最后16位以获得直接地址。然后我们需要一个32位字,所以我们再增加16个零。

  1. 为什么PC + 4而不仅仅是PC
  2. 什么是2'b0
  3. 我已经阅读了有关符号扩展的内容,但不太明白这里发生了什么。

    感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

1:相对于下一条指令计算MIPS中的分支偏移(因为分支之后的指令也被执行,作为分支延迟槽)。因此,我们必须使用PC +4进行基址计算。 2:由于MIPS使用逐字节存储器寻址系统(存储器中的每个字节都有唯一的地址),但使用32位(4字节)字,因此规范要求每条指令都是字对齐的;因此,地址的最后两位指向指令的底部字节(0x_ _ __ 00)。 在完整的情况下,指令通过取程序计数器计算分支目标地址,加上4来计算分支延迟槽,然后加上符号扩展(因为分支偏移可以是正数或负数;这就是{{ 1}}确实)偏移到目标。

答案 1 :(得分:0)

Verilog中的数字可以使用以下数字的位数刻度格式表示。

2'b11; // 2 bit binary 
3'd3 ; // 3 bit decimal
4'ha ; // 4 bit hex

格式描述以下数字,使用的位模式不会被格式更改。即2'b11与2'd3相同;