环形计数器
下面描述的是一个 4 位环形计数器,rst 在 always 的敏感信号列表中,为异步复位信号,
在 rst 的下降沿到来或时钟上升沿到来,rst = 0 时,dout 被置数为二进制数 0001;初始状态
为 0001,有效状态为 0001—>0010—>0100—>1000。在时钟的每一个上升沿到达时,每次
都是讲最高位移至最低位,同时其余各位依次向左移动一位。
过程十分简单,其 verilog HDL 设计代码为:
1. modulering_counter(clk,rst_n,dout);
2. inputclk,rst_n;
3. output[3:0]dout;
4. reg[3:0]dout;
5. always@(posedgeclkornegedgerst_n)
6. begin
7. if(!rst_n)
8. dout<=4'b0001;
9. else
10. dout<={dout[2:0],dout[3]};
11. end
12.
13. endmodule
测试文件为:
1. `timescale1ns/1ps
2. modulering_counter_tb;
3. regclk,rst_n;
4. wire[3:0]dout;
5. always
6. begin
7. #10clk=~clk;
8. end
9. initial
10. begin
11. clk=1'b0;
12. rst_n=1'b0;
13. #10rst_n=1'b1;
14. #100;
15. end
16.
17. ring_counterU1(.clk(clk),.rst_n(rst_n),.dout(dout));