Channels ▼

Al Williams

Dr. Dobb's Bloggers

Synchronicity

November 05, 2013

Last time I talked a bit about flip flop set up and hold times and how synthesis tools compute the slack time to help route complex synchronous circuits. There is at least one other place where this becomes very important and that's when you are connecting an input to a system (or part of a system) that uses a different clock (including no clock at all).

A common example would be a D flip flop input connected to a push button switch. The switch could change state at any time, including inside the critical time around the flip flop's clock edge. This can push the flip flop into metastability — it can't decide if the output should be a one or a zero. It may oscillate, or it may take on an indeterminate illegal value and may eventually stabilize well beyond the stated output delay time for the flip flop. There are other things that can push a flip flop into a metastable state. For example, a short clock pulse can have the same effect.

Of course, you can generally control the length of the clock pulse. You can't control the timing of an external pushbutton. Well, not exactly, anyway.

What you can do is use a chain of multiple flip flops to ensure that the rest of your circuit will (probably) never see a metastable output. Of course, this also introduces a delay corresponding to the number of flip flops in the chain.

I say probably because there is always some chance that not only will the first flip flop hit the exact timing required to go metastable but that the second one will also. The more flip flops you add to the chain, the less likely you will have a problem but the higher the delay between input and the output of the synchronizer. Usually two stages are sufficient, although in critical applications you may need to do some math to prove that to your satisfaction.

Synchronous logic is fascinating and without it developing anything other than trivial logic circuits would be very difficult. However, things like metastability and set up times can lead to problems if you don't dig under the abstractions we use to make things easier to understand.

If you want to experiment with building digital logic, any of the FPGA toolsets (for example, ISE from Xilinx or Quartus from Altera) will let you build logic (using schematics or a definition language) and simulate it. There is a bit of a learning curve, though, and lots to install.

If you want something simpler in your browser, have a look at Digital Workshop or LogicSim. There are doubtlessly many others, and even more if you are willing to download and install something. Then again, if you climb the learning curve to learn FPGA tools, you'll be ready to realize your designs in hardware when you are ready.

Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 


Video