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.

data transfer from slower to faster clock doamin

Status
Not open for further replies.

HPC

Newbie level 4
Newbie level 4
Joined
Dec 30, 2012
Messages
6
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Visit site
Activity points
1,329
Hi,

In my design I have two clocks CLKA (200MHz) and CLKB (450 MHz).
I need to transfer 16 bit data from CLKA domain to CLKB domain.

My data changes every clock in CLKA domain.

How do I sample this data in clock B domain correctly?

Thanks in advance.
 

Hi HPC,
There are 2 methods you can do that:
1.Using traditional handshaking mechanism or
2.Using asynchronous FIFO memory

method 1 is not preferred when clock latency is the concern.
So if you have enough hardware resources, i recommend you to go for method 2.

Design of asyn FIFO is bit difficult if you are beginner but it's widely used for data transmission b/w diff clk domains.
You can refer attached documents for the design of such FIFO:

I would recommend to design sync FIFO(FIFO1.pdf) first and than move to asyn FIFO(FIFO2.pdf).
 

Attachments

  • FIFO2.pdf
    120.8 KB · Views: 218
  • FIFO1.pdf
    136.8 KB · Views: 264
the two PDF are very helpful, thank you babaduredi!

to HPC, if you want save the trouble understanding the mechanism, just use the IPcore that is already embedded in the Xilinx EDAtool.
 
Last edited:

Thanks babaduredi and naught for information. Attachments really useful.
What I was thinking is to generate a control signal in clock domain A and toggle it when data changes in domain A.
Then edge detect this signal in domain B (detect both possitive and negative edges) and sample data accordingly.
 

Thanks babaduredi and naught for information. Attachments really useful.
What I was thinking is to generate a control signal in clock domain A and toggle it when data changes in domain A.
Then edge detect this signal in domain B (detect both possitive and negative edges) and sample data accordingly.

Dude be careful. My first thought is that this might not work. You have CDC (clock domain crossing) problem. Use the proper protocol to transfer data from one clock domain to the other.

Look at this article

**broken link removed**
 


Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top