题解 | #格雷码计数器#

格雷码计数器

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

module gray_counter(
   input   clk,
   input   rst_n,
   output  reg [3:0] gray_out
);
reg[3:0] count;
reg clk_2;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
clk_2=1'b0;
end
else
begin
clk_2<=~clk_2;
end
end
always @(posedge clk_2 or negedge rst_n)
begin
if(!rst_n)
begin
count<=4'd0;
end
else
begin
count<=count+4'd1;
end
end

always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
gray_out<=4'd0;
end
else
begin
gray_out[3]=count[3];
gray_out[2]=count[3]^count[2];
gray_out[1]=count[2]^count[1];
gray_out[0]=count[1]^count[0];
end
end
endmodule

全部评论

相关推荐

10-06 12:46
门头沟学院 Java
跨考小白:定时任务启动
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务