在verilog中将线向量转换为整数



在这样的例子中

function module(
input [3:0] in
output out); 
for(integer i = in; i < in+10; i += 1) begin
// do stuff
end
endfunction

如何将in转换为i?从我的理解,一个整数是一个32位的矢量,解释在2的补。那么verilog用28{in[3]}填充位向量吗?

From LRM

如果需要,扩展右侧的大小,当且仅当右侧的类型有符号时执行符号扩展。

因此,在您的情况下,i将用'0'填充,而不是在[3]中使用,因为in没有签名。

要进行签名扩展,您需要在signed:input signed [3:0] in;

最新更新