题解 | #格雷码计数器#
格雷码计数器
https://www.nowcoder.com/practice/311754bcd45d42eb8d981eeddbdf1e43
//gray俩个时钟周期改变一次 需要进位 [3:0]->[4:0] //gray赋值需要用@(*) //gray_out<=cnt[4:1]^(cnt[4:1]>>1); `timescale 1ns/1ns module gray_counter( input clk, input rst_n, output reg [3:0] gray_out ); reg [4:0]cnt; always@(posedge clk or negedge rst_n)begin if(!rst_n) cnt<=0; else cnt<=cnt+1; end always@(*)begin if(!rst_n) gray_out<=0; else gray_out<=cnt[4:1]^(cnt[4:1]>>1); end endmodule