在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)