ch02.14.htm
来自「介绍asci设计的一本书」· HTM 代码 · 共 409 行 · 第 1/3 页
HTM
409 行
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="Adobe PageMill 2.0 Mac">
<TITLE> 2.6.2 Adders</TITLE>
</HEAD><!--#include file="top.html"--><!--#include file="header.html"-->
<P><A NAME="pgfId=162537"></A><HR ALIGN=LEFT></P>
<P><A HREF="CH02.12.htm">Chapter start</A> <A
HREF="CH02.13.htm">Previous page</A> <A HREF="CH02.15.htm">Next page</A></P>
<H2>2.6.2 Adders</H2>
<P><P CLASS="BodyAfterHead"><A NAME="pgfId=194409"></A>We can view addition
in terms of <B>generate</B> , G[<SPAN CLASS="EquationVariables"> i</SPAN>
], and <B>propagate</B> , P[<SPAN CLASS="EquationVariables"> i</SPAN> ],
signals.</P>
<P><P CLASS="EquationAlign"><A NAME="pgfId=195314"></A> method
1 method 2</P>
<P><P CLASS="EqnNmbrdAlign"><A NAME="pgfId=215365"></A> G[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>=<SPAN CLASS="White"> </SPAN>A[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>·<SPAN CLASS="White"> </SPAN>B[<SPAN CLASS="EquationVariables">
i</SPAN> ] G[<SPAN CLASS="EquationVariables"> i</SPAN> ]<SPAN CLASS="White"> </SPAN>=<SPAN CLASS="White"> </SPAN>A[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>·<SPAN CLASS="White"> </SPAN>B[<SPAN CLASS="EquationVariables">
i</SPAN> ](2.42)</P>
<P><P CLASS="EqnNmbrdAlign"><A NAME="pgfId=215366"></A> P[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>=<SPAN CLASS="White"> </SPAN>A[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN><SPAN CLASS="Symbol">
</SPAN> <SPAN CLASS="White"> </SPAN>B[<SPAN CLASS="EquationVariables">
i</SPAN> ] P[<SPAN CLASS="EquationVariables"> i</SPAN> ]<SPAN CLASS="White"> </SPAN>=<SPAN CLASS="White"> </SPAN>A[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>+<SPAN CLASS="White"> </SPAN>B[<SPAN CLASS="EquationVariables">
i</SPAN> ](2.43)</P>
<P><P CLASS="EqnNmbrdAlign"><A NAME="pgfId=215368"></A> C[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>=<SPAN CLASS="White"> </SPAN>G[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>+<SPAN CLASS="White"> </SPAN>P[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>·<SPAN CLASS="White"> </SPAN>C[<SPAN CLASS="EquationVariables">
i</SPAN> <SPAN CLASS="White"> </SPAN><SPAN CLASS="White"> </SPAN>1] C[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>=<SPAN CLASS="White"> </SPAN>G[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>+<SPAN CLASS="White"> </SPAN>P[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>·<SPAN CLASS="White"> </SPAN>C[<SPAN CLASS="EquationVariables">
i</SPAN> <SPAN CLASS="White"> </SPAN><SPAN CLASS="White"> </SPAN>1](2.44)</P>
<P><P CLASS="EqnNmbrdAlign"><A NAME="pgfId=195306"></A> S[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>=<SPAN CLASS="White"> </SPAN>P[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN><SPAN CLASS="Symbol">
</SPAN> <SPAN CLASS="White"> </SPAN>C[<SPAN CLASS="EquationVariables">
i</SPAN> <SPAN CLASS="White"> </SPAN><SPAN CLASS="White"> </SPAN>1] S[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>=<SPAN CLASS="White"> </SPAN>
A[<SPAN CLASS="EquationVariables"> i</SPAN> ]<SPAN CLASS="White"> </SPAN><SPAN CLASS="Symbol">
</SPAN> <SPAN CLASS="White"> </SPAN>B[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN><SPAN CLASS="Symbol"> </SPAN> <SPAN CLASS="White"> </SPAN>C[<SPAN CLASS="EquationVariables">
i</SPAN> <SPAN CLASS="White"> </SPAN><SPAN CLASS="White"> </SPAN>1](2.45)</P>
<P><P CLASS="BodyAfterHead"><A NAME="pgfId=195387"></A>where C[<SPAN CLASS="EquationVariables">
i</SPAN> ] is the carry-out signal from stage <SPAN CLASS="EquationVariables">
i</SPAN> , equal to the carry in of stage (<SPAN CLASS="EquationVariables">
i</SPAN> <SPAN CLASS="White"> </SPAN>+<SPAN CLASS="White"> </SPAN>1).
Thus, C[<SPAN CLASS="EquationVariables"> i</SPAN> ]<SPAN CLASS="White"> </SPAN>=<SPAN CLASS="White"> </SPAN>COUT[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>=<SPAN CLASS="White"> </SPAN>CIN[<SPAN CLASS="EquationVariables">
i</SPAN> <SPAN CLASS="White"> </SPAN>+<SPAN CLASS="White"> </SPAN>1].
We need to be careful because C[0] might represent either the carry in or
the carry out of the LSB stage. For an adder we set the carry in to the
first stage (stage zero), C[1] or CIN[0], to '0'. Some people use <B>delete</B>
(D) or <B>kill</B> (K) in various ways for the complements of G[i] and P[i],
but unfortunately others use C for COUT and D for CINso I avoid using any
of these. Do not confuse the two different methods (both of which are used)
in Eqs. 2.422.45 when forming the sum, since the propagate signal,
P[<SPAN CLASS="EquationVariables"> i</SPAN> ]<SPAN CLASS="White"> </SPAN>,
is different for each method.</P>
<P><P CLASS="Body"><A NAME="pgfId=194423"></A>Figure 2.22(a) shows
a conventional RCA. The delay of an <SPAN CLASS="EmphasisPrefix"> n</SPAN>
-bit RCA is proportional to <SPAN CLASS="EquationVariables"> n</SPAN> and
is limited by the propagation of the carry signal through all of the stages.
We can reduce delay by using pairs of "go-faster" bubbles to change
AND and OR gates to fast two-input NAND gates as shown in Figure 2.22(a).
Alternatively, we can write the equations for the carry signal in two different
ways:</P>
<P><P CLASS="EqnNmbrdAlign"><A NAME="pgfId=194870"></A> either C[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>=<SPAN CLASS="White"> </SPAN>A[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>·<SPAN CLASS="White"> </SPAN>B[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>+<SPAN CLASS="White"> </SPAN>P[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>·<SPAN CLASS="White"> </SPAN>C[<SPAN CLASS="EquationVariables">
i</SPAN> <SPAN CLASS="White"> </SPAN><SPAN CLASS="White"> </SPAN>1](2.46)</P>
<P><P CLASS="EqnNmbrdAlign"><A NAME="pgfId=194874"></A> or<SPAN CLASS="White">n</SPAN> C[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>=<SPAN CLASS="White"> </SPAN>(A[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>+<SPAN CLASS="White"> </SPAN>B[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>)<SPAN CLASS="White"> </SPAN>·<SPAN CLASS="White"> </SPAN>(P[<SPAN CLASS="EquationVariables">
i</SPAN> ]'<SPAN CLASS="White"> </SPAN>+<SPAN CLASS="White"> </SPAN>C[<SPAN CLASS="EquationVariables">
i</SPAN> <SPAN CLASS="White"> </SPAN><SPAN CLASS="White"> </SPAN>1]),(2.47)</P>
<P><P CLASS="BodyAfterHead"><A NAME="pgfId=194866"></A>where P[<SPAN CLASS="EquationVariables">
i</SPAN> ]'<SPAN CLASS="White"> </SPAN><SPAN CLASS="White"> </SPAN>=<SPAN CLASS="White"> </SPAN>NOT(P[<SPAN CLASS="EquationVariables">
i</SPAN> ]). Equations 2.46 and 2.47 allow us to build the carry chain from
two-input NAND gates, one per cell, using different logic in even and odd
stages (Figure 2.22b):</P>
<P><P CLASS="EquationAlign"><A NAME="pgfId=194944"></A> even
stages odd stages</P>
<P><P CLASS="EqnNmbrdAlign"><A NAME="pgfId=194992"></A> C1[<SPAN CLASS="EquationVariables">
i</SPAN> ]'<SPAN CLASS="White"> </SPAN>=<SPAN CLASS="White"> </SPAN>P[<SPAN CLASS="EquationVariables">
i</SPAN> <SPAN CLASS="White"> </SPAN>]<SPAN CLASS="White"> </SPAN>·<SPAN CLASS="White"> </SPAN>C3[<SPAN CLASS="EquationVariables">
i</SPAN> <SPAN CLASS="White"> </SPAN><SPAN CLASS="White"> </SPAN>1]<SPAN CLASS="White"> </SPAN>·<SPAN CLASS="White"> </SPAN>C4[<SPAN CLASS="EquationVariables">
i</SPAN> <SPAN CLASS="White"> </SPAN><SPAN CLASS="White"> </SPAN>1] C3[<SPAN CLASS="EquationVariables">
i</SPAN> ]'<SPAN CLASS="White"> </SPAN>=<SPAN CLASS="White"> </SPAN>P[<SPAN CLASS="EquationVariables">
i</SPAN> <SPAN CLASS="White"> </SPAN>]<SPAN CLASS="White"> </SPAN>·<SPAN CLASS="White"> </SPAN>C1[<SPAN CLASS="EquationVariables">
i</SPAN> <SPAN CLASS="White"> </SPAN><SPAN CLASS="White"> </SPAN>1]<SPAN CLASS="White"> </SPAN>·<SPAN CLASS="White"> </SPAN>C2[<SPAN CLASS="EquationVariables">
i</SPAN> <SPAN CLASS="White"> </SPAN><SPAN CLASS="White"> </SPAN>1](2.48)</P>
<P><P CLASS="EqnNmbrdAlign"><A NAME="pgfId=194945"></A> C2[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>=<SPAN CLASS="White"> </SPAN>A[<SPAN CLASS="EquationVariables">
i</SPAN> <SPAN CLASS="White"> </SPAN>]<SPAN CLASS="White"> </SPAN>+<SPAN CLASS="White"> </SPAN>B[<SPAN CLASS="EquationVariables">
i</SPAN> <SPAN CLASS="White"> </SPAN>] C4[<SPAN CLASS="EquationVariables">
i</SPAN> ]'<SPAN CLASS="White"> </SPAN>=<SPAN CLASS="White"> </SPAN>A[<SPAN CLASS="EquationVariables">
i</SPAN> <SPAN CLASS="White"> </SPAN>]<SPAN CLASS="White"> </SPAN>·<SPAN CLASS="White"> </SPAN>B[<SPAN CLASS="EquationVariables">
i</SPAN> <SPAN CLASS="White"> </SPAN>](2.49)</P>
<P><P CLASS="EqnNmbrdAlign"><A NAME="pgfId=195069"></A> C[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>=<SPAN CLASS="White"> </SPAN>C1[<SPAN CLASS="EquationVariables">
i</SPAN> <SPAN CLASS="White"> </SPAN>]<SPAN CLASS="White"> </SPAN>·<SPAN CLASS="White"> </SPAN>C2[<SPAN CLASS="EquationVariables">
i</SPAN> <SPAN CLASS="White"> </SPAN>] C[<SPAN CLASS="EquationVariables">
i</SPAN> ]<SPAN CLASS="White"> </SPAN>=<SPAN CLASS="White"> </SPAN>C3[<SPAN CLASS="EquationVariables">
i</SPAN> <SPAN CLASS="White"> </SPAN>]<SPAN CLASS="White"> </SPAN>'<SPAN CLASS="White"> </SPAN>+<SPAN CLASS="White"> </SPAN>C4[<SPAN CLASS="EquationVariables">
i</SPAN> <SPAN CLASS="White"> </SPAN>]'(2.50)</P>
<P><TABLE BORDER="0" CELLSPACING="2" CELLPADDING="0">
<TR>
<TD><P><P CLASS="TableFigure"><A NAME="pgfId=195075"></A> </P>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?