mirror of https://github.com/YosysHQ/yosys.git
34 lines
1.1 KiB
Verilog
34 lines
1.1 KiB
Verilog
|
//==========================================
|
||
|
// Function : Code Gray counter.
|
||
|
// Coder : Alex Claros F.
|
||
|
// Date : 15/May/2005.
|
||
|
//=======================================
|
||
|
|
||
|
module GrayCounter
|
||
|
#(parameter COUNTER_WIDTH = 4)
|
||
|
|
||
|
(output reg [COUNTER_WIDTH-1:0] GrayCount_out, //'Gray' code count output.
|
||
|
|
||
|
input wire Enable_in, //Count enable.
|
||
|
input wire Clear_in, //Count reset.
|
||
|
|
||
|
input wire Clk);
|
||
|
|
||
|
/////////Internal connections & variables///////
|
||
|
reg [COUNTER_WIDTH-1:0] BinaryCount;
|
||
|
|
||
|
/////////Code///////////////////////
|
||
|
|
||
|
always @ (posedge Clk)
|
||
|
if (Clear_in) begin
|
||
|
BinaryCount <= {COUNTER_WIDTH{1'b 0}} + 1; //Gray count begins @ '1' with
|
||
|
GrayCount_out <= {COUNTER_WIDTH{1'b 0}}; // first 'Enable_in'.
|
||
|
end
|
||
|
else if (Enable_in) begin
|
||
|
BinaryCount <= BinaryCount + 1;
|
||
|
GrayCount_out <= {BinaryCount[COUNTER_WIDTH-1],
|
||
|
BinaryCount[COUNTER_WIDTH-2:0] ^ BinaryCount[COUNTER_WIDTH-1:1]};
|
||
|
end
|
||
|
|
||
|
endmodule
|