Verilog分支指令MIPS

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

IR是IR [31:26]给操作码的指令。

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

我看到一些零碎的东西,例如我们正在更新程序计数器,并且我们正在取指令的最后16位来获得直接地址。 那么我们需要一个32位的字,所以我们再扩展16个零。

  • 为什么是PC + 4而不是PC
  • 什么是2'b0
  • 我已经阅读了有关签名扩展的一些内容,但不太明白这里发生了什么。

    感谢所有的帮助!


    1:MIPS中的分支偏移是相对于下一条指令计算的(因为分支后的指令也被执行,作为分支延迟槽)。 因此,我们必须使用PC +4来进行基地址计算。 2:由于MIPS使用按字节内存寻址系统(内存中的每个字节都有唯一地址),但使用32位(4字节)字,因此规范要求每条指令都是字对齐的; 因此,指令底部字节处的地址点的最后两位(0x____00)。 完整地,指令通过取程序计数器来计算分支目标地址,加上4来考虑hte分支延迟时隙,然后加上符号扩展(因为分支偏移可以是正的或负的;这就是14{IR[15]} )抵消目标。


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

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

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

    链接地址: http://www.djcxy.com/p/19211.html

    上一篇: Verilog branch instruction MIPS

    下一篇: MIPS Store Byte and Store Halfword Implementation