目前,我试图在verilog中查看环形计数器。 但我很好奇戒指柜台的目的是什么? 我没有抓好。有谁知道戒指柜台的目的是什么?
答案 0 :(得分:1)
使用Ring counters四个触发器可用于创建四个状态FSM而无需额外的逻辑。传统的状态机需要2个触发器和下一个状态逻辑。维基百科指出Ring计数器更简单,合成区域更小。
我希望加法器和下一个状态逻辑需要与环形计数器中使用的两个额外触发器具有相似的大小,这使得任一类型的四个状态机大致相当。环形计数器也会快速增长,每个额外的状态都需要额外的触发器。和州必须始终遵循线性模式。大多数FSM都有分支并对输入做出反应,最大限度地减少了使用环形计数器的机会。
环形计数器的优点是状态为one-hot。这可能会简化输出逻辑。
响铃计数器FSM:
module ring_counter(
input clk,
input rst_n,
//outputs ...
);
reg state0;
reg state1;
reg state2;
reg state3;
always @(posedge clk, negedge rst_n) begin
if (~rst_n) begin
state0 <= 1'b1;
state1 <= 1'b0;
state2 <= 1'b0;
state3 <= 1'b0;
end
else begin
state0 <= state3;
state1 <= state0;
state2 <= state1;
state3 <= state2;
end
end
endmodule
整体状态将以0001
开始,然后围绕0010
,0100
,1000
转动并返回到开头0001
。
相比之下,典型的FSM可能是:
reg [1:0] state;
always @(posedge clk, negedge rst_n) begin
if (~rst_n) begin
state <= 'b0;
end
else begin
state <= state + 1;
end
end
将迭代状态00
- &gt; 01
- &gt; 10
- &gt; 11