题解 | #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 [7:0] Q_r = 8'b11110000;

    always @(*)
        Q <= Q_r[3:0];

    always @(posedge clk or negedge rst_n)
        if(!rst_n)
            Q_r <= 8'b11110000;
        else
            Q_r <= {Q_r[0], Q_r[7:1]};
endmodule

可将该4bit约翰逊计数器视为一个8位寄存器组的后四位输出,每个时钟周期上升沿对这个移位寄存器进行循环右移并使用组合逻辑输出后四位的值(这里使用组合逻辑输出是为了对上结果波形图,否则会相对其延后一个时钟周期)。

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 20:06
点赞 评论 收藏
分享
09-13 13:10
南京大学 C++
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务