i want grey code counder eq ??

Status
Not open for further replies.

niks

Full Member level 3
Joined
Mar 18, 2002
Messages
189
Helped
2
Reputation
4
Reaction score
0
Trophy points
1,296
Activity points
1,386
hi
can anyone give me optimized 4 bit grey code counter. i want equation for bit 0-3 .....
~niks~
 

niks said:
hi
can anyone give me optimized 4 bit grey code counter. i want equation for bit 0-3 .....
~niks~

In what way do you whant the answer? C code, VHDL, gates, ....?

0000 0
0001 1
0011 2
0111 3
1111 4
1110 5
1100 6
1000 7

Regards
 

i want to write it in verilog. can u help me.
 

There are ways of doing it at RTL level but it's quite cumbersome, here you have an extract of the COMP.ARCH.FPGA newsgroup:

--------------------------------------------------------
Article: 28365
Subject: Re: grey code counters
Date: Wed, 10 Jan 2001 09:20:04 -0800
Here are my notes:
Grey-Coded Addresses
Only one bit/address changes at any time
Therefore no glitches from the identity comparator

Implementation:
Build binary counter
Generate XOR of two adjacent D-inputs
(that is the trick ! Don't use the binary Q, use the binary D)
Feed these XORs to a register = Grey !
MSB binary = MSB Grey
Advantage: very fast and easily epandable.

Yes, it wastes flip-flops. But I think it is still the most compact
(cheapest) solution in Virtex, where one CLB implements two bits, since it
has 4 flip-flops.
I tried various other ways, and -while they did not waste flip-flops- they
were no cheaper.
BTW: You can of course use the simultaneous binary output "for free".
You can also run the counter in both directions "for free".
I will gladly accept a more compact solution.

--------------------------------------------------------

There is more info in the newsgroup about it so have a look.

Why do you need a grey counter? Low noise, low power consumption?I don't like them what can I say.

Regards,
Maestor
 

i want to build grey counter for low power consumption.so i cant use binary counter.converting binary counter to grey ll still increase power.
actually im using xcr3064.
 

edit:
Sorry I didnt check the previous mail

Try the following for a 4-bit gray counter


////////////////////////////////////////////////////////////////////////////////
module GrayCounter(
clk_i ,
rst_i ,
GrayCount_o
) ;
parameter aw = 3 ;

input clk_i ;
input rst_i ;
output [aw:0] GrayCount_o ;
reg [aw:0] BinCount ;
reg [aw:0] GrayCount_o ;
wire [aw:0] NextBinCount ;
integer i ;

assign NextBinCount = BinCount + 1'b1 ;

always @ (posedge clk_i or posedge rst_i)
begin
if(rst_i == 1'b1)
begin
BinCount <= 0 ;
GrayCount_o<= 0 ;
end
else
begin
BinCount <= NextBinCount ;
GrayCount_o[aw] <= NextBinCount[aw] ;
for(i=0; i<aw; i=i+1)
GrayCount_o <= NextBinCount[i+1]^NextBinCount ;
end
end

endmodule
////////////////////////////////////////////////////////////////////////////////
 

i dun want to use more than 4 flops. how can i built it ?
 

Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…