题解 | #格雷码计数器#

格雷码计数器

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

在我理解中格雷码计数器是指输入是格雷码,输出也是格雷码。 1️⃣以二进制计算器为例,cnt<=cnt+1;输入可以理解为上一态的二进制cnt,输出可以理解为下一态二进制的cnt,可以看出输入输出都为二进制。这里可有构成一个反馈,也就是上一态的cnt输出,就是下一态的输入 2️⃣根据别人的回答,该题答案是两个周期变化一次,于是我设计了如下电路图,一个组合电路:格雷码转二进制,两个时序电路:二进制计数器和二进制码转格雷码 alt `timescale 1ns/1ns

module gray_counter( input clk, input rst_n,

output reg [3:0] gray_out ); wire [3:0] bin_out; reg [3:0] s1_bin_out;

//格雷码转二进制码
assign bin_out[3]=gray_out[3];
genvar i;
generate
    for(i=2;i>=0;i=i-1)
        begin : gray2bin
            assign bin_out[i] = bin_out[i+1]^gray_out[i];
        end
endgenerate

//二进制计数器+1
always@(posedge clk or negedge rst_n)
    if(!rst_n)
        s1_bin_out <= 0;
    else
        s1_bin_out <= bin_out+1;
//二进制转格雷码寄存一拍
always@(posedge clk or negedge rst_n)
    if(!rst_n)
        gray_out <= 0;
    else
        gray_out <= s1_bin_out^(s1_bin_out>>1);    

endmodule

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-01 11:47
点赞 评论 收藏
分享
牛客刘北:如果暑期实习是27届的话,你要晚一年才会毕业,企业为什么会等你呢?要搞清时间逻辑呀!27届现在实习只能是在暑假实习,这是日常实习,不是暑期实习。所以多去投日常实习吧,暑期实习肯定不会要你的
点赞 评论 收藏
分享
06-16 15:04
黑龙江大学 Java
零OFFER战士:另一个版本查看图片
点赞 评论 收藏
分享
评论
4
1
分享

创作者周榜

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