题解 | 格雷码计数器

格雷码计数器

https://www.nowcoder.com/practice/311754bcd45d42eb8d981eeddbdf1e43

`timescale 1ns/1ns

module gray_counter(
   input   clk,
   input   rst_n,

   output  reg [3:0] gray_out
);
    reg  clk2;
    reg [3:0] counter;
    reg [3:0] gray_out_d;
    always@(posedge clk or negedge rst_n)begin
        if(!rst_n)clk2<='d0;
        else
            clk2<=~clk2;
    end

    always@(posedge clk2 or negedge rst_n)begin
        if(!rst_n)counter<='d0;
        else
            counter <= counter + 1'b1;
    end

    always@(*)begin
        if(!rst_n)gray_out_d<='d0;
        else
        gray_out_d = counter^(counter>>1);
    end

    always@(posedge clk or negedge rst_n)begin
        if(!rst_n)gray_out<='d0;
        else
            gray_out <= gray_out_d;
    end
endmodule

照着时序图修改直至通过。。

全部评论

相关推荐

弦五Strings:他之所以会举报你代课是因为在这种人眼里正常上课就是正义代课就是邪恶,典型二极管思维,处理方法就是私下沟通,你就说你自己家里经济困难或者家里父母生病什么之类的,需要去打工挣钱,用尽孝的正义对冲他认为的上课的正义,他可能就妥协了。
我的实习日记
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务