通过Verilog计数器
我正在Verilog中开发一个计数器,它可以循环使用以下系列:通过Verilog计数器,verilog,Verilog,我正在Verilog中开发一个计数器,它可以循环使用以下系列: 0, 1, 3, 7, 6, 4, 0, 1, ... 并在reset\u b上重置为0 这是到目前为止我的代码,它似乎没有在循环中通过3: module Counter_1(output reg [2: 0] Count, input clock, reset); reg [2: 0] last; always @(posedge clock, negedge reset) begin if
0, 1, 3, 7, 6, 4, 0, 1, ...
并在reset\u b
上重置为0
这是到目前为止我的代码,它似乎没有在循环中通过3
:
module Counter_1(output reg [2: 0] Count, input clock, reset);
reg [2: 0] last;
always @(posedge clock, negedge reset) begin
if (!reset) begin
Count <= 3'b000;
end
else begin
case (last)
3'b000: Count <= 3'b001;
3'b001: Count <= 3'b011;
3'b011: Count <= 3'b111;
3'b111: Count <= 3'b110;
3'b110: Count <= 3'b100;
3'b100: Count <= 3'b000;
endcase
end
last <= Count;
end
endmodule
模块计数器_1(输出寄存器[2:0]计数,输入时钟,复位);
reg[2:0]最后一次;
始终@(posedge时钟、negedge重置)开始
如果(!重置)开始
计数您当然应该在重置块中指定最后一个:
if (!reset) begin
last <= 3'b000;
Count <= 3'b000;
end
您当然应该在重置块中指定最后一个:
if (!reset) begin
last <= 3'b000;
Count <= 3'b000;
end
查看序列总是很有用的:
000
001
011
111
110
100
分析模式,您会发现序列可以通过以下方式进行:
if (!reset)
Count <= 3'b000;
else
Count <= {Count[1:0],~Count[3]};
如果(!重置)
计数查看序列总是很有用的:
000
001
011
111
110
100
分析模式,您会发现序列可以通过以下方式进行:
if (!reset)
Count <= 3'b000;
else
Count <= {Count[1:0],~Count[3]};
如果(!重置)
计数始终条件下的重置是异步重置。您建议的代码提供了同步重置。始终条件下的重置是异步重置。您建议的代码提供了同步重置。