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.

Need of a Verilog code to generate clock signal for 10Mhz with system clock 50Mhz.

Status
Not open for further replies.

RTYPRABHAKAR

Newbie level 3
Joined
Jan 30, 2013
Messages
3
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,305
VERILOG CODE to generate clock signal for 10Mhz with system clock 50Mhz
Need Verilog code for generating two signals
1.clock signal to generate 10Mhz
2. at the same time the second signal has to toggle its sate on specific count on "negative" edge period
3. How to call a function after a specific clock period?

here i'm sharing a clock signal generation verilog code of 10Mhz from system clock 50Mhz


Code Verilog - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
module clk_div(clk,reset, clk_out );
parameter N=5;
parameter R=3;// Detramains number of binary bits to present the value of "N" 
input clk;
input reset;
output clk_out;
 
reg [R-1:0] pos_count, neg_count;
wire [R-1:0] r_nxt;
 
always @(posedge clk)
if (reset)
pos_count <=0;
else if (pos_count ==(N-1))
pos_count <=0;
else 
pos_count<= pos_count +1;
 
always @(negedge clk)
if (reset)
neg_count <=0;
else  if (neg_count ==(N-1)) 
neg_count <=0;
  
else 
neg_count<= neg_count +1;
assign clk_out = ((pos_count == (N-1)) | (neg_count == (N-1)));
endmodule

 
Last edited by a moderator:

Hi,

Take a piece of paper and draw the timing diagram for 50MHz and 10MHz.

Then with 50% duty cycle you will see that the edges of the 10MHz will fall on rising as well as falling edge of the 50MHz.
But usually only the rising edge of the system clock will be used.

Either generate 2:5 duty cycle or use a PLL.

Klaus
 

The logic in post #1 has some issues.
The phase between pos_count and neg_count is undetermined. Depending on the reset timing either pos_count or neg_count will increment first, giving different clk_out waveforms. It's even possible that reset release is coinciding with a clock edge, resulting in unexpected counter values.

You may do this:
1. Use a reset synchronizer (if not already present)
2. Use only one counter, derive the neg_edge action from pos_edge controlled signals.

Be aware that generated clocks are likely to cause timing issues if they are combined with the original clock in downstream logic.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top