题解 | #Johnson Counter#
Johnson Counter
http://www.nowcoder.com/practice/7ee6e9ed687c40c3981d7586a65bc22d
- 本题的循环计数规律是:当最后一位是0是,右移补位是1,否则为0。
- 另一种方法是用状态机,比较适用于没规律的计数。
完整代码
`timescale 1ns/1ns
module JC_counter(
input clk ,
input rst_n,
output reg [3:0] Q
);
always@(negedge rst_n or posedge clk)begin
if(~rst_n)
Q <= 0;
else
Q <= Q[0]? {1'b0,Q[3:1]}: {1'b1,Q[3:1]};
end
endmodule