module RingCounter(
input logic Clock,
input logic Reset,
output logic [3:0] Count
);
always_ff @(posedge Clock, posedge Reset)
begin
if (Reset)
Count <= 4’d1;
else
Count <= {Count[2:0], Count[3]};
end
endmodule我在SystemVerilog中有一个4位环形计数器的工作代码,但我不确定其中一行是如何工作的,因为它在讲座中没有得到明确的解释。
Count <= {Count[2:0], Count[3]};任何帮助解释这一行到底做了什么,将不胜感激。
发布于 2021-12-30 23:00:27
花括号{}是连接操作符。它们将多个比特连接到一个总线中。
在非阻塞分配(<=)的左侧,有Count,这是编写4位总线:Count[3:0]的一种简短方式。
在赋值的右边,您将3位信号Count[2:0]与1位信号Count[3]连接起来。
另一种编写RHS的方法是按以下顺序作为4个单独的位:
{Count[2], Count[1], Count[0], Count[3]}另一种编写LHS的方法是按以下顺序作为4个单独的位:
{Count[3], Count[2], Count[1], Count[0]}因此,分配将新的Count[3]设置为旧的Count[2],等等。
参见IEEE Std 1800-2017,第11.4.12节串联运营商。
https://stackoverflow.com/questions/70537337
复制相似问题