Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > VHDL > clock domain switch fast to slow

Reply
Thread Tools

clock domain switch fast to slow

 
 
axr0284
Guest
Posts: n/a
 
      01-22-2007
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

 
Reply With Quote
 
 
 
 
Wesley J. Landaker
Guest
Posts: n/a
 
      01-22-2007
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
 
Reply With Quote
 
 
 
 
Dal
Guest
Posts: n/a
 
      01-23-2007
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


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Why do domain connected PCs go so slow and fast as stand-alone? dimon Computer Support 6 03-28-2006 07:16 PM
Passing a signal from slow to fast clock Divyang M VHDL 4 05-19-2005 03:39 PM



Advertisments
 



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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57