Verilog中的此命令是什么

时间:2018-10-17 21:09:35

标签: verilog system-verilog iverilog

我是Verilog的新手,我正在网上阅读一些代码。我碰到了以下代码行,却不明白这到底是什么意思

wr_ptr_reg <= {ADDR_WIDTH + 1{1'b0}};

如果有人能解释其含义,我将不胜感激

2 个答案:

答案 0 :(得分:3)

1'b0描述了一个1位宽的二进制零值。 <n>{<value>}给出了一个由位向量n的{​​{1}}个副本串联而成的位向量。在这种情况下,它将创建一个包含value位的ADDR_WIDTH + 1个副本的位向量。 0将是一个预先声明的参数,代表某个常数(可能存储为ADDR_WIDTH,它基本上是一个32位位向量)。然后,您将零存储到integerwr_ptr_reg表示非阻塞分配。这基本上意味着直到当前块的其余部分完成后,它的值才会更新。您可以将块中的所有非阻塞分配都视为在块完成时同时发生。

添加括号会更清楚:

<=

答案 1 :(得分:2)

{..}是一个串联运算符。 { count { vector } }表示连接vector count次。

在这种情况下,向量是单个位,重复ADDR_WIDTH + 1次。 因此,您将获得一个由(ADDR_WIDTH + 1)零组成的向量。

这是另一个示例:{ 4 { 3'b101} }等于12'b101101101101

因此,您将wr_ptr_reg设置为全零(假设wr_ptr_reg由ADDR_WIDTH + 1位组成)