以这样的例子
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]}
填充位向量?
答案 0 :(得分:0)
来自 LRM
<块引用>如果需要,扩展右侧的大小,当且仅当右侧的类型为有符号时才执行符号扩展。
因此,在您的情况下,i
将填充“0”,而不是 in[3],因为 in
未签名。
要进行签名扩展,您需要输入签名:input signed [3:0] in;