题解 | 格雷码计数器
二分频题目没说
`timescale 1ns/1ns module gray_counter( input clk, input rst_n, output reg [3:0] gray_out ); reg [3:0] cnt; reg falg; always @(posedge clk or negedge rst_n) begin if(!rst_n) begin falg <= 'd0; end else begin falg <= ~falg; end end always @(posedge clk or negedge rst_n) begin if(!rst_n) begin cnt <= 'd0; end else if(falg) begin cnt <= cnt + 1'b1; end end always@(*) begin if(!rst_n) begin gray_out = 'd0; end else begin gray_out = cnt ^ (cnt >> 1); end end endmodule