⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch06.4.htm

📁 介绍asci设计的一本书
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML EXPERIMENTAL 970324//EN">

<HTML>

<HEAD>

<META NAME="GENERATOR" CONTENT="Adobe FrameMaker 5.5/HTML Export Filter">



<TITLE> 6.4&nbsp;AC Input</TITLE></HEAD><!--#include file="top.html"--><!--#include file="header.html"-->



<DIV>

<P>[&nbsp;<A HREF="CH06.htm">Chapter&nbsp;start</A>&nbsp;]&nbsp;[&nbsp;<A HREF="CH06.3.htm">Previous&nbsp;page</A>&nbsp;]&nbsp;[&nbsp;<A HREF="CH06.5.htm">Next&nbsp;page</A>&nbsp;]</P><!--#include file="AmazonAsic.html"--><HR></DIV>

<H1 CLASS="Heading1">

<A NAME="pgfId=19221">

 </A>

6.4&nbsp;<A NAME="17783">

 </A>

AC Input</H1>

<P CLASS="BodyAfterHead">

<A NAME="pgfId=19222">

 </A>

Suppose we wish to connect an input bus containing sampled data from an <SPAN CLASS="Definition">

analog-to-digital converter</SPAN>

<A NAME="marker=59613">

 </A>

 (<SPAN CLASS="Definition">

A/D</SPAN>

<A NAME="marker=77246">

 </A>

) that is running at a clock frequency of 100 kHz to an FPGA that is running from a system clock on a bus at 10 MHz (a NuBus). We are to perform some filtering and calculations on the sampled data before placing it on the NuBus. We cannot just connect the A/D output bus to our FPGA, because we have no idea when the A/D data will change. Even though the A/D data rate (a sample every 10 <SPAN CLASS="Symbol">

m</SPAN>

s or every 100 NuBus clock cycles) is much lower than the NuBus clock, if the data happens to arrive just before we are due to place an output on the NuBus, we have no time to perform any calculations. Instead we want to register the data at the input to give us a whole NuBus clock cycle (100 ns) to perform the calculations. We know that we should have the A/D data at the flip-flop input for at least the flip-flop setup time before the NuBus clock edge. Unfortunately there is no way to guarantee this; the A/D converter clock and the NuBus clock are completely independent. Thus it is entirely possible that every now and again the A/D data will change just before the NuBus clock edge.</P>

<DIV>

<H2 CLASS="Heading2">

<A NAME="pgfId=19223">

 </A>

6.4.1&nbsp;Metastability</H2>

<P CLASS="BodyAfterHead">

<A NAME="pgfId=19070">

 </A>

If we change the data input to a flip-flop (or a latch) too close to the clock edge (called a setup or hold-time <SPAN CLASS="Definition">

violation</SPAN>

<A NAME="marker=77235">

 </A>

), we run into a problem called <SPAN CLASS="Definition">

metastability</SPAN>

<A NAME="marker=19071">

 </A>

, illustrated in Figure 6.16. In this situation the flip-flop cannot decide whether its output should be a '1' or a '0' for a long time. If the flip-flop makes a decision, at a time <SPAN CLASS="EquationVariables">

t</SPAN>

<SUB CLASS="SubscriptVariable">

r</SUB>

 after the clock edge, as to whether its output is a '1' or a '0', there is a small, but finite, probability that the flip-flop will decide the output is a '1' when it should have been a '0' or vice versa. This situation, called an <SPAN CLASS="Definition">

upset</SPAN>

<A NAME="marker=77245">

 </A>

, can happen when the data is coming from the outside world and the flip-flop can&#8217;t determine when it will arrive; this is an <SPAN CLASS="Definition">

asynchronous signal</SPAN>

<A NAME="marker=19072">

 </A>

, because it is not synchronized to the chip clock.</P>

<TABLE>

<TR>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableFigTitleSide">

<A NAME="pgfId=85146">

 </A>

FIGURE&nbsp;6.16&nbsp;Metastability. (a)&nbsp;Data coming from one system is an asynchronous input to another. (b)&nbsp;A flip-flop has a very narrow decision window bounded by the setup and hold times. If the data input changes inside this decision window, the output may be metastable&#8212;neither '1' or '0'.</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableFigure">

<A NAME="pgfId=85151">

 </A>

&nbsp;</P>

<DIV>

<IMG SRC="CH06-16.gif">

</DIV>

</TD>

</TR>

</TABLE>

<P CLASS="Body">

<A NAME="pgfId=71257">

 </A>

Experimentally we find that the <SPAN CLASS="Definition">

probability of upset</SPAN>

<A NAME="marker=77320">

 </A>

, <SPAN CLASS="EquationVariables">

p</SPAN>

, is  </P>

<TABLE>

<TR>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=106995">

 </A>

<SPAN CLASS="EquationVariables">

p</SPAN>

<SPAN CLASS="EquationNumber">

 = T</SPAN>

<SUB CLASS="Subscript">

0</SUB>

<SPAN CLASS="EquationNumber">

 exp &#8211;</SPAN>

<SPAN CLASS="EquationVariables">

t</SPAN>

<SUB CLASS="SubscriptVariable">

r</SUB>

<SPAN CLASS="EquationNumber">

/</SPAN>

<SPAN CLASS="Symbol">

t</SPAN>

<SUB CLASS="SubscriptVariable">

c</SUB>

<SPAN CLASS="EquationNumber">

 </SPAN>

,</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnNumber">

<A NAME="pgfId=106998">

 </A>

<A NAME="27719">

 </A>

(6.2)</P>

</TD>

</TR>

</TABLE>

<P CLASS="BodyAfterHead">

<A NAME="pgfId=85544">

 </A>

(per data event, per clock edge, in one second, with units Hz<SUP CLASS="Superscript">

&#8211;1</SUP>

&#183;Hz<SUP CLASS="Superscript">

&#8211;1</SUP>

&#183;s<SUP CLASS="Superscript">

&#8211;1</SUP>

) where <SPAN CLASS="EquationVariables">

t</SPAN>

<SUB CLASS="SubscriptVariable">

r</SUB>

 is the time a <SPAN CLASS="Definition">

sampler</SPAN>

<A NAME="marker=85545">

 </A>

 (flip-flop or latch) has to <SPAN CLASS="Definition">

resolve</SPAN>

<A NAME="marker=85546">

 </A>

 the sampler output; T<SUB CLASS="Subscript">

0</SUB>

 and <SPAN CLASS="Symbol">

t</SPAN>

<SUB CLASS="Subscript">

c</SUB>

 are constants of the sampler circuit design. Let us see how serious this problem is in practice. If <SPAN CLASS="EquationVariables">

t</SPAN>

<SUB CLASS="Subscript">

r</SUB>

 = 5 ns, <SPAN CLASS="Symbol">

t</SPAN>

<SUB CLASS="Subscript">

c</SUB>

 = 0.1 ns, and <SPAN CLASS="EquationNumber">

T</SPAN>

<SUB CLASS="Subscript">

0</SUB>

 = 0.1 s, Eq.&nbsp;<A HREF="CH06.4.htm#27719" CLASS="XRef">

6.2</A>

 gives the upset probability as  </P>

<TABLE>

<TR>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnRight">

<A NAME="pgfId=107011">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107040">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107042">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107044">

 </A>

&#8211;5 <SPAN CLASS="Symbol">

&#165;</SPAN>

 10<SUP CLASS="Superscript">

&#8211;19</SUP>

</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107028">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnLeft">

<A NAME="pgfId=107030">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqn">

<A NAME="pgfId=107013">

 </A>

&nbsp;</P>

</TD>

</TR>

<TR>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnRight">

<A NAME="pgfId=107018">

 </A>

<SPAN CLASS="EquationVariables">

p</SPAN>

</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107046">

 </A>

=</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107048">

 </A>

0.1 exp</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107050">

 </A>

&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107032">

 </A>

=</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnLeft">

<A NAME="pgfId=107034">

 </A>

2 <SPAN CLASS="Symbol">

&#165;</SPAN>

 10<SUP CLASS="Superscript">

&#8211;23</SUP>

 s ,</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnNumber">

<A NAME="pgfId=107020">

 </A>

(6.3)</P>

</TD>

</TR>

<TR>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnRight">

<A NAME="pgfId=107022">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107052">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107054">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107056">

 </A>

0.1 <SPAN CLASS="Symbol">

&#165;</SPAN>

 10<SUP CLASS="Superscript">

&#8211;9</SUP>

</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107036">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnLeft">

<A NAME="pgfId=107038">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqn">

<A NAME="pgfId=107024">

 </A>

&nbsp;</P>

</TD>

</TR>

</TABLE>

<P CLASS="BodyAfterHead">

<A NAME="pgfId=19085">

 </A>

which is very small, but the data and clock may be running at several MHz, causing the sampler plenty of opportunities for upset.</P>

<P CLASS="Body">

<A NAME="pgfId=24195">

 </A>

The <SPAN CLASS="Definition">

mean time between upsets</SPAN>

<A NAME="marker=19086">

 </A>

 (<A NAME="marker=19087">

 </A>

<SPAN CLASS="Definition">

MTBU</SPAN>

<A NAME="marker=19088">

 </A>

, similar to MTBF&#8212;mean time between failures) is  </P>

<TABLE>

<TR>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnRight">

<A NAME="pgfId=107141">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107143">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107145">

 </A>

1</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107147">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107149">

 </A>

<SPAN CLASS="EquationNumber">

exp </SPAN>

<SPAN CLASS="EquationVariables">

t</SPAN>

<SUB CLASS="SubscriptVariable">

r</SUB>

<SPAN CLASS="EquationNumber">

/</SPAN>

<SPAN CLASS="Symbol">

t</SPAN>

<SUB CLASS="SubscriptVariable">

c</SUB>

</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107151">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqn">

<A NAME="pgfId=107153">

 </A>

&nbsp;</P>

</TD>

</TR>

<TR>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnRight">

<A NAME="pgfId=107155">

 </A>

MTBU</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107157">

 </A>

=</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107159">

 </A>

&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107161">

 </A>

=</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107163">

 </A>

&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211; ,</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107165">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnNumber">

<A NAME="pgfId=107167">

 </A>

<A NAME="18779">

 </A>

(6.4)</P>

</TD>

</TR>

<TR>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnRight">

<A NAME="pgfId=107169">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107171">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107173">

 </A>

<SPAN CLASS="EquationVariables">

pf</SPAN>

<SUB CLASS="Subscript">

clock</SUB>

<SPAN CLASS="EquationVariables">

f</SPAN>

<SUB CLASS="Subscript">

data</SUB>

</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107175">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107177">

 </A>

<SPAN CLASS="EquationVariables">

f</SPAN>

<SUB CLASS="Subscript">

clock</SUB>

<SPAN CLASS="EquationVariables">

 f</SPAN>

<SUB CLASS="Subscript">

data</SUB>

</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107179">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqn">

<A NAME="pgfId=107181">

 </A>

&nbsp;</P>

</TD>

</TR>

</TABLE>

<P CLASS="BodyAfterHead">

<A NAME="pgfId=19094">

 </A>

where <SPAN CLASS="EquationVariables">

f</SPAN>

<SUB CLASS="Subscript">

clock</SUB>

 is the clock frequency and <SPAN CLASS="EquationVariables">

f</SPAN>

<SUB CLASS="Subscript">

data</SUB>

 is the data frequency.</P>

<P CLASS="Body">

<A NAME="pgfId=24196">

 </A>

If <SPAN CLASS="EquationVariables">

t</SPAN>

<SUB CLASS="SubscriptVariable">

r</SUB>

 = 5 ns, <SPAN CLASS="Symbol">

t</SPAN>

<SUB CLASS="SubscriptVariable">

c</SUB>

 = 0.1 ns, <SPAN CLASS="EquationNumber">

T</SPAN>

<SUB CLASS="Subscript">

0</SUB>

 = 0.1 s (as in the previous example), <SPAN CLASS="EquationVariables">

f</SPAN>

<SUB CLASS="Subscript">

clock</SUB>

 = 100 MHz, and <SPAN CLASS="EquationVariables">

f</SPAN>

<SUB CLASS="Subscript">

data</SUB>

 = 1 MHz, then  </P>

<TABLE>

<TR>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnRight">

<A NAME="pgfId=107185">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107187">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107189">

 </A>

exp (5 <SPAN CLASS="Symbol">

&#165;</SPAN>

 10<SUP CLASS="Superscript">

&#8211;9</SUP>

/0.1 <SPAN CLASS="Symbol">

&#165;</SPAN>

 10<SUP CLASS="Superscript">

&#8211;9)</SUP>

</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107191">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnLeft">

<A NAME="pgfId=107193">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqnCenter">

<A NAME="pgfId=107195">

 </A>

&nbsp;</P>

</TD>

<TD ROWSPAN="1" COLSPAN="1">

<P CLASS="TableEqn">

<A NAME="pgfId=107197">

 </A>

&nbsp;</P>

</TD>

</TR>

<TR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -