📄 wr_gray_cntr.v
字号:
// fifo_wr_addr gray counter with synchronous reset
//-- Gray counter is used for FIFO address counter
`timescale 1ns/100ps
module wr_gray_cntr
(
clk,
reset,
cnt_en,
wgc_gcnt
);
input clk;
input reset;
input cnt_en;
output [3:0]wgc_gcnt;
reg [3:0] d_in;
wire [3:0] gc_int;
assign wgc_gcnt = gc_int;
always @(gc_int)
begin
case (gc_int)
4'b0000 : d_in <= 4'b0001; //1
4'b0001 : d_in <= 4'b0011; //3
4'b0010 : d_in <= 4'b0110; //6
4'b0011 : d_in <= 4'b0010; //2
4'b0100 : d_in <= 4'b1100; //c
4'b0101 : d_in <= 4'b0100; //4
4'b0110 : d_in <= 4'b0111; //7
4'b0111 : d_in <= 4'b0101; //5
4'b1000 : d_in <= 4'b0000; //0
4'b1001 : d_in <= 4'b1000; //8
4'b1010 : d_in <= 4'b1011; //b
4'b1011 : d_in <= 4'b1001; //9
4'b1100 : d_in <= 4'b1101; //d
4'b1101 : d_in <= 4'b1111; //f
4'b1110 : d_in <= 4'b1010; //a
4'b1111 : d_in <= 4'b1110; //e
default : d_in <= 4'b0001; //1
endcase
end
FDCE bit0 (
.Q(gc_int[0]),
.C(clk),
.CE(cnt_en),
.CLR(reset),
.D(d_in[0])
);
FDCE bit1 (
.Q(gc_int[1]),
.C(clk),
.CE(cnt_en),
.CLR(reset),
.D(d_in[1])
);
FDCE bit2 (
.Q(gc_int[2]),
.C(clk),
.CE(cnt_en),
.CLR(reset),
.D(d_in[2])
);
FDCE bit3 (
.Q(gc_int[3]),
.C(clk),
.CE(cnt_en),
.CLR(reset),
.D(d_in[3])
);
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -