这个 verilog 分配函数有什么作用?
What does this verilog assign function do?
如果sig_in = 0000, 0001, 0010, ... ,1111
sig_out = {sig_in[3], sig_in[3], sig_in[3: 2]};
如果我没看错,sig_out[3] 将是 sig_in[3],sig_out[2] 也将是 sig_in[3 ],我不确定 sig_in[3: 2] 的作用。有人可以帮忙吗?
在赋值的右侧有一个 concatination
运算符 {...}
;
它将来自其参数的位连接成单个位流。
所以,如果 sign_in[3:0]
是 0101,您的示例中的结果将是:
sign_in[3:0] = 4'b0101
bit 3 ----^
bit 0 -------^
{
1'b0, // sign_in[3]
1'b0, // sigh_in[3]
2'b01 // sign_in[3:2] -- extracts 2 bits - bit 3 (0) an d bit 2 (1)
}
因此,sign_out[3:0] 将如下所示
==> 4'b0001;
sign_in[3] --^
sign_in[3] ---^
sign_in[3:2] ----^^
如果sig_in = 0000, 0001, 0010, ... ,1111
sig_out = {sig_in[3], sig_in[3], sig_in[3: 2]};
如果我没看错,sig_out[3] 将是 sig_in[3],sig_out[2] 也将是 sig_in[3 ],我不确定 sig_in[3: 2] 的作用。有人可以帮忙吗?
在赋值的右侧有一个 concatination
运算符 {...}
;
它将来自其参数的位连接成单个位流。
所以,如果 sign_in[3:0]
是 0101,您的示例中的结果将是:
sign_in[3:0] = 4'b0101
bit 3 ----^
bit 0 -------^
{
1'b0, // sign_in[3]
1'b0, // sigh_in[3]
2'b01 // sign_in[3:2] -- extracts 2 bits - bit 3 (0) an d bit 2 (1)
}
因此,sign_out[3:0] 将如下所示
==> 4'b0001;
sign_in[3] --^
sign_in[3] ---^
sign_in[3:2] ----^^