verilog 2001的“ +:”运算符的VHDL等价于什么?

时间:2019-06-26 16:44:27

标签: vhdl

在Verilog 2001和SystemVerilog中,我可以使用“ +:”运算符对逻辑向量进行切片,如下所示:

module testit;

    reg [31:0] avec;
    reg [7:0]  a0, a1, a2;

    initial begin
        avec = 32'hABCD1234;

        a0 = avec[0*8 +: 8];  //same as: a0 = avec[7:0]
        a1 = avec[1*8 +: 8];  //same as: a1 = avec[15:8]
        a2 = avec[2*8 +: 8];  //same as: a2 = avec[23:16]
    end 

endmodule

VHDL在标准IEEE或其他软件包中是否具有类似的功能? 还是有办法将该功能实现为VHDL功能?

1 个答案:

答案 0 :(得分:2)

这似乎有点XY Problem。 Verilog :+(或-:)运算符有点难以理解,以至于发生以下情况:

S(some_variable to some_other_variable)

在VHDL中是合法的,但这是

S[some_variable:some_other_variable]

在Verilog中是非法的。通常,您想做更多这样的事情:

S[some_variable:some_variable-7]

但这在Verilog中也是非法的。但是您可以做到这一点:

S[some_variable-:8]

相反。因此,在VHDL中,您不需要+:(或-:)运算符,只需执行以下操作即可:

S(some_variable downto some_variable-7)