- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
hi,
i'm new to ASIC design. i'm using megaWizard DCFIFO to send the data from two different clock domain. I'm designing network adapter in Network-on-chip. i want to use the DCFIFO to put the 16-bit flit(packet) that i want to send to router. router uses different clock speed. the question is, as a DCFIFO is already can handle two clock domain data transfer, do i still need to design external syncronizer? N.adapter domain | Router domain flit_in ------------> DCFIFO--> flit out--> syncronizer----> flit_out_R (Router domain should be located at flit_out_R, not on top of DCFIFO). i'm confused with build-in syncronizer function in DCFIFO. if yes, where i can find the reference design for simple syncronizer? like two-flops syncronizer. can someone explain to me? Thanks a lot!:)Link Copied
4 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
No. The whole point of the DCFIFO is to take care of the synchronization for you. There tend to be four basic synchronizers commonly used:
1) DCFIFO - takes the most logic and has the most latency, but generally the most robust. The big thing is that it works for busses, i.e. if you're sending 8 bit data, it will remain aligned on the output. Throughput is also very high, and it can store data to handle the clock rates. 2) Hand-shaking - Only works when the data rate is slower than the clock rates. In essence the data is presented with a valid signal, the receiving data sees the valid signal and acknowledges it got the data, and the sending domain lowers valid and prepares the next bus of data. 3) De-metastabilizing(probably a better term). This is just double or triple registering the data in the new domain, so that the final register is never metastable. Works nicely for individual signals, but there is no alignment across the bus. 4) Don't care. This really isn't a technique, but often sigals that cross domains are a false path, and so nothing special is done in the RTL, just the data transfers domains directly and the user puts a false_path assignment on it. This usually means the soure is either constan, or the destination really doesn't care(i.e. it might drive some LEDs) I'm sure there are more. DCFIFO is probably the most common.- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
--- Quote Start --- No. The whole point of the DCFIFO is to take care of the synchronization for you. --- Quote End --- so, the flow will be like this : --> 4 flits (16 bits each) send to router NA domain(100Mhz) Router domain (200Mhz) data_in[16bit][3:0] ---------> data_out[16bit][3:0] signals & data synchronization process is taken care by DCFIFO. correct? thanks Guru..:)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Correctamundo.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ooh ok..understood. previously i thought i need to have external synchronizer to handle the data from different clock speed domain. i keep arguing with my friend. he said, we need to have external syncronizer for this DCFIFO except the clocks speed at both domain(NA and router) are the same speed.
thanks.
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page