Showing results for 
Search instead for 
Did you mean: 

Long counter (30s) in VHDL, balancing a clock divide and counter size

I need to add a timer to an application running on a Cyclone V with a long (30s) period.


I can easily write an integer counter that counts the clock (30MHz) x 30s = 90,000,000 which uses ~150 LUTs.


However I'm looking to reduce the amount of LUTs, I can divide the 30MHz clock down (say 100 or 1000) and the my counter only need to count the equivalent amount.


Are there any rules / guides to the ratio of clock divide-to- counter size to best implement a design ? Particularly for the smallest amount of LUTs ?


Plus running the counter slower would surely better from a timing perspective ?

0 Kudos
1 Reply
Valued Contributor II

If you need just a fixed duration counter (ie, don't need to load arbitrary count values) I would examine use of an LFSR approach to use a minimal number of cells. The number of cells will basically track the length of the counter. A 30 bit counter could have a period of 2^30-1 clocks (this is what is know as a maximal length LFSR). Here is a good quick reference: