描述
实现4bit位宽的格雷码计数器。
电路的接口如下图所示。
`timescale 1ns/1ns
module gray_counter(
input clk,
input rst_n,
output reg [3:0] gray_out
);
reg [3:0] cnt_bin ;
reg flag ;//两个时钟恢复为1
always@(posedge clk or negedge rst_n)begin
if(!rst_n) begin
flag <= 0 ;
end
else
flag <= ~flag;
end
always@(posedge clk or negedge rst_n)begin
if(!rst_n) begin
cnt_bin <= 0 ;
end
else if(flag)
cnt_bin <= cnt_bin + 1 ;
else
cnt_bin <= cnt_bin ;
end
always@(*)begin
gray_out <= cnt_bin ^ (cnt_bin>>1) ; //判断异或的标志是^
end
endmodule