30 lines
619 B
Coq
30 lines
619 B
Coq
|
/*
|
||
|
* This file is based on "Asynchronous FIFO" by Alex Claros F.,
|
||
|
* itself based on the article "Asynchronous FIFO in Virtex-II FPGAs"
|
||
|
* by Peter Alfke.
|
||
|
*/
|
||
|
|
||
|
module asfifo_graycounter #(
|
||
|
parameter width = 2
|
||
|
) (
|
||
|
output reg [width-1:0] gray_count,
|
||
|
input ce,
|
||
|
input rst,
|
||
|
input clk
|
||
|
);
|
||
|
|
||
|
reg [width-1:0] binary_count;
|
||
|
|
||
|
always @(posedge clk, posedge rst) begin
|
||
|
if(rst) begin
|
||
|
binary_count <= {width{1'b0}} + 1;
|
||
|
gray_count <= {width{1'b0}};
|
||
|
end else if(ce) begin
|
||
|
binary_count <= binary_count + 1;
|
||
|
gray_count <= {binary_count[width-1],
|
||
|
binary_count[width-2:0] ^ binary_count[width-1:1]};
|
||
|
end
|
||
|
end
|
||
|
|
||
|
endmodule
|