![]() |
|
|
|||||||
![]() |
VHDL - clock domain switch fast to slow |
|
|
Thread Tools | Search this Thread |
|
|
#1 |
|
Hi,
I need to send a pulse for a clock domain running at 62.5 MHZ to another domain running at 45 MHz. I implemented the pulse synchronizer circuit which consists of a mux with 4 FF and an XOR at the end. I got that from an article by Mike Stein that I read: Crossing the abyss: asynchronous signals in a synchronous world. The problem is that the pulse only takes 16 ns in the fast domain which is less than 1 period of the clock in the second domain so the circuit does not detect it. If I used two clock cycle then it works but it kind of defeats the purpose of the circuit in that "it is to take a single clockwide pulse from one clock domain and create a single clockwide pulse in a new domain" I would appreciate any thoughts on that. Amish axr0284 |
|
|
|
|
#2 |
|
Posts: n/a
|
axr0284 wrote:
> Hi, > I need to send a pulse for a clock domain running at 62.5 MHZ to > another domain running at 45 MHz. > > I implemented the pulse synchronizer circuit which consists of a mux > with 4 FF and an XOR at the end. > I got that from an article by Mike Stein that I read: > Crossing the abyss: asynchronous signals in a synchronous world. > > The problem is that the pulse only takes 16 ns in the fast domain > which is less than 1 period of the clock in the second domain so the > circuit does not detect it. If I used two clock cycle then it works > but it kind of defeats the purpose of the circuit in that "it is to > take a single clockwide pulse from one clock domain and create a > single clockwide pulse in a new domain" Basically, no matter what you implement to do this, you'll have essentially reinvented a 0-bit, 1-entry asynchronous FIFO. If you don't know how to implement that yourself, contact me via e-mail and I'd be happy to give you a quick tutorial on asynchronous clock-to-clock crossings or send you some GPL'd VHDL code that does exactly what you're asking. -- Wesley J. Landaker <> <xmpp:> OpenPGP FP: 4135 2A3B 4726 ACC5 9094 0097 F0A9 8A4C 4CD6 E3D2 Wesley J. Landaker |
|
|
|
#3 |
|
Posts: n/a
|
Have the input pulse toggle a signal in the source clock domain.
Resync this signal to the destination clock domain. Do an edge detect on the resync'ed signal. Note the limitation that your source pulse rate must be less frequent than your maximum resync delay. Welcome to the synchronous world. axr0284 wrote: > Hi, > I need to send a pulse for a clock domain running at 62.5 MHZ to > another domain running at 45 MHz. > > I implemented the pulse synchronizer circuit which consists of a mux > with 4 FF and an XOR at the end. > I got that from an article by Mike Stein that I read: > Crossing the abyss: asynchronous signals in a synchronous world. > > The problem is that the pulse only takes 16 ns in the fast domain which > is less than 1 period of the clock in the second domain so the circuit > does not detect it. If I used two clock cycle then it works but it kind > of defeats the purpose of the circuit in that "it is to take a single > clockwide pulse from one clock domain and create a single clockwide > pulse in a new domain" > > I would appreciate any thoughts on that. > Amish Dal |
|
![]() |
| Thread Tools | Search this Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Trouble joining a computer to a domain: network path not found | daveh551 | General Help Related Topics | 1 | 08-11-2007 05:53 AM |
| New Releases: Revelations, The Librarian & My Left Foot: Updated complete downloadable R1 DVD DB & Info lists | Doug MacLean | DVD Video | 0 | 05-17-2005 06:57 AM |
| USB Key not recognised on laptop in a domain, but is when logged in locally | lawrend | A+ Certification | 4 | 04-24-2005 03:02 AM |
| Hollywood Detective - The Buried Clock | David Marsh | DVD Video | 1 | 09-27-2004 11:26 PM |