Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers

Clock Divider

Altera_Forum
Honored Contributor II
875 Views

I have a input clock 128*Fs(Sampling Frequency). I need derived clocks of Fs, 2Fs, 4Fs, 8Fs, 16Fs ... 64Fs.  

 

However, there are 2 ways in my mind to implement it. 

 

1st: 

1 module only and multiple output 

use modulus 128-counter: 

- if (count == 2, 4, 6, 8, ...) a = 1;//64*Fs 

- else if (count== 4, 8, 12,...) b =1; //32*Fs 

.... 

 

2nd: 

Multiple Module and 1 output each module 

- modulus 2 counter 

- modulus 4 counter 

etc 

 

Which method is better? 

 

Besides, how to check the value is multiple of 4, 8 and 16?  

 

Thanks
0 Kudos
3 Replies
Altera_Forum
Honored Contributor II
205 Views

Neither. 

 

Either use: 

1. use Phase lock loops instead. Logic generated clocks will give you large skew and you'll have all sorts of failures. 

 

2. Instead of using your outputs from your counters as clocks, use them as enables on registers running at sampling frequency.
0 Kudos
Altera_Forum
Honored Contributor II
205 Views

1. My input clock rate can't fullfill the requirement of pll.  

 

2. Yes, i am using this method. However, the structure can be different as i mentioned.
0 Kudos
Altera_Forum
Honored Contributor II
205 Views

Hi, 

 

1) It doesn't work as expected :  

- if (count == 2, 4, 6, 8, ...) a = 1;//64*Fs 

- else if (count == 4, 8, 12,...) b =1; //32*Fs // count == 4,8 already done in the above condition. 

 

2)too numerous counters 

 

I give a 3rd solution : one counter (range 5 downto 0 for example) and take each bit that switches on divided frequence :  

count(0) for signal f/2,  

count(1) for f/4,  

count(2) for f/8 

.... 

 

May it help you ! 

 

EDIT :  

I see you need F/6 for example : take a counter modulo 6 

F/12 take (F/6)/2 : be aware about their "phase".
0 Kudos
Reply