Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Generate 40 Hz from 44MHz clock

Status
Not open for further replies.

dhan_pow

Newbie level 5
Joined
Apr 7, 2016
Messages
8
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
66
I am designing FPGA using VHDL. Please suggest a logic to generate exactly 40 Hz from 44MHz using FPGA alone.
 

Hi,

44MHz ÷ 40Hz = 1 100 000
--> you need 1 100 000 pulses of 44MHz for one 40Hz pulse
Each pulse has two edges: thus 550 000 pulses of 44MHz from one 40Hz edge to the next.

Now use a 20 bit binary counter running from 44MHz.
Compare it with 549 999 (count from 0 to 549 999)
On compare match: toggle the 40Hz signal and synchronously reset the 20 bit counter.

Klaus
 

^
|
|
What he said.

Just remember things are in multiples of two.

Therefore in order to make 1100000 you need to know what the x is in 2^x.

On a side note, since I assume you're new to vhdl


Code VHDL - [expand]
1
2
3
4
5
6
7
8
9
-- allows addition
signal s : unsigned(x-1 downto 0);
s <= s+1;
-- does not allow addition
signal slv : std_logic_vector(x-1 downto 0); 
-- requires type conversion
slv <= std_logic_vector(unsigned(slv)+ 1);
 
-- using variables allows addition to happen instantaneous which will help you around the edges ;)


[/syntax]
 


Code VHDL - [expand]
1
-- using variables allows addition to happen instantaneous which will help you around the edges ;)


A variable will also synthesizes to an adder following a register, so if your clock frequency is high and you use the output of this add operation for say a huge mux, some other large combinational logic, or has a lot of loads, you may not meet timing. The s output, if defined as a variable with the following assignment s := s+1;, will be a combinational output.

So yeah it might "help you around the edges" but there is a caveat.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top