题解 | #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位寄存器组的后四位输出,每个时钟周期上升沿对这个移位寄存器进行循环右移并使用组合逻辑输出后四位的值(这里使用组合逻辑输出是为了对上结果波形图,否则会相对其延后一个时钟周期)。

全部评论

相关推荐

牛客5655:其他公司的面试(事)吗
点赞 评论 收藏
分享
把球:这个听过,你加了就会发现是字节的hr
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务