Verilog 2001的“ :”操作员的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函数实现此功能?

这似乎是一个XY问题。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)

最新更新