题解 | #Johnson Counter#
Johnson Counter
https://www.nowcoder.com/practice/7ee6e9ed687c40c3981d7586a65bc22d
`timescale 1ns/1ns
module JC_counter(
input clk ,
input rst_n,
output reg [3:0] Q
);
reg shift_en;
always@(posedge clk or negedge rst_n)begin
if(!rst_n)shift_en<=0;
else if(Q==4'b0001)shift_en<=0;//shift_en低电平为右移1
else if(Q==4'b1110)shift_en<=1;//shift_en高电平为右移0
end
always@(posedge clk or negedge rst_n)begin
if(!rst_n)begin
Q<=4'b0000;
end
else begin
if(!shift_en)begin
Q<={1'b1,Q[3:1]};
end
else Q<={1'b0,Q[3:1]};
end
end
endmodule
查看1道真题和解析