我是Verilog的新手,我正在网上阅读一些代码。我碰到了以下代码行,却不明白这到底是什么意思
wr_ptr_reg <= {ADDR_WIDTH + 1{1'b0}};
如果有人能解释其含义,我将不胜感激
答案 0 :(得分:3)
1'b0
描述了一个1位宽的二进制零值。 <n>{<value>}
给出了一个由位向量n
的{{1}}个副本串联而成的位向量。在这种情况下,它将创建一个包含value
位的ADDR_WIDTH + 1
个副本的位向量。 0
将是一个预先声明的参数,代表某个常数(可能存储为ADDR_WIDTH
,它基本上是一个32位位向量)。然后,您将零存储到integer
。 wr_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位组成)