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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;start</A>&nbsp;&nbsp;&nbsp;<A

HREF="CH02.13.htm">Previous&nbsp;&nbsp;page</A>&nbsp;&nbsp;<A HREF="CH02.15.htm">Next&nbsp;&nbsp;page</A></P>



<H2>2.6.2&nbsp;&nbsp;&nbsp;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>&nbsp;&nbsp;method

1&nbsp;&nbsp;method 2</P>



<P><P CLASS="EqnNmbrdAlign"><A NAME="pgfId=215365"></A>&nbsp;&nbsp;G[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>=<SPAN CLASS="White">&nbsp;</SPAN>A[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>&middot;<SPAN CLASS="White">&nbsp;</SPAN>B[<SPAN CLASS="EquationVariables">

i</SPAN> ]&nbsp;&nbsp;G[<SPAN CLASS="EquationVariables"> i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>=<SPAN CLASS="White">&nbsp;</SPAN>A[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>&middot;<SPAN CLASS="White">&nbsp;</SPAN>B[<SPAN CLASS="EquationVariables">

i</SPAN> ](2.42)</P>



<P><P CLASS="EqnNmbrdAlign"><A NAME="pgfId=215366"></A>&nbsp;&nbsp;P[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>=<SPAN CLASS="White">&nbsp;</SPAN>A[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN><SPAN CLASS="Symbol">

</SPAN> <SPAN CLASS="White">&nbsp;</SPAN>B[<SPAN CLASS="EquationVariables">

i</SPAN> ]&nbsp;&nbsp;P[<SPAN CLASS="EquationVariables"> i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>=<SPAN CLASS="White">&nbsp;</SPAN>A[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>+<SPAN CLASS="White">&nbsp;</SPAN>B[<SPAN CLASS="EquationVariables">

i</SPAN> ](2.43)</P>



<P><P CLASS="EqnNmbrdAlign"><A NAME="pgfId=215368"></A>&nbsp;&nbsp;C[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>=<SPAN CLASS="White">&nbsp;</SPAN>G[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>+<SPAN CLASS="White">&nbsp;</SPAN>P[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>&middot;<SPAN CLASS="White">&nbsp;</SPAN>C[<SPAN CLASS="EquationVariables">

i</SPAN> <SPAN CLASS="White">&nbsp;</SPAN><SPAN CLASS="White">&nbsp;</SPAN>1]&nbsp;&nbsp;C[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>=<SPAN CLASS="White">&nbsp;</SPAN>G[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>+<SPAN CLASS="White">&nbsp;</SPAN>P[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>&middot;<SPAN CLASS="White">&nbsp;</SPAN>C[<SPAN CLASS="EquationVariables">

i</SPAN> <SPAN CLASS="White">&nbsp;</SPAN><SPAN CLASS="White">&nbsp;</SPAN>1](2.44)</P>



<P><P CLASS="EqnNmbrdAlign"><A NAME="pgfId=195306"></A>&nbsp;&nbsp;S[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>=<SPAN CLASS="White">&nbsp;</SPAN>P[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN><SPAN CLASS="Symbol">

</SPAN> <SPAN CLASS="White">&nbsp;</SPAN>C[<SPAN CLASS="EquationVariables">

i</SPAN> <SPAN CLASS="White">&nbsp;</SPAN><SPAN CLASS="White">&nbsp;</SPAN>1]&nbsp;&nbsp;S[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>=<SPAN CLASS="White">&nbsp;</SPAN>

A[<SPAN CLASS="EquationVariables"> i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN><SPAN CLASS="Symbol">

</SPAN> <SPAN CLASS="White">&nbsp;</SPAN>B[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN><SPAN CLASS="Symbol"> </SPAN> <SPAN CLASS="White">&nbsp;</SPAN>C[<SPAN CLASS="EquationVariables">

i</SPAN> <SPAN CLASS="White">&nbsp;</SPAN><SPAN CLASS="White">&nbsp;</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">&nbsp;</SPAN>+<SPAN CLASS="White">&nbsp;</SPAN>1).

Thus, C[<SPAN CLASS="EquationVariables"> i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>=<SPAN CLASS="White">&nbsp;</SPAN>COUT[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>=<SPAN CLASS="White">&nbsp;</SPAN>CIN[<SPAN CLASS="EquationVariables">

i</SPAN> <SPAN CLASS="White">&nbsp;</SPAN>+<SPAN CLASS="White">&nbsp;</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.&nbsp;&nbsp;2.422.45 when forming the sum, since the propagate signal,

P[<SPAN CLASS="EquationVariables"> i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>,

is different for each method.</P>



<P><P CLASS="Body"><A NAME="pgfId=194423"></A>Figure&nbsp;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 &quot;go-faster&quot; bubbles to change

AND and OR gates to fast two-input NAND gates as shown in Figure&nbsp;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>&nbsp;&nbsp;either&nbsp;&nbsp;C[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>=<SPAN CLASS="White">&nbsp;</SPAN>A[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>&middot;<SPAN CLASS="White">&nbsp;</SPAN>B[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>+<SPAN CLASS="White">&nbsp;</SPAN>P[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>&middot;<SPAN CLASS="White">&nbsp;</SPAN>C[<SPAN CLASS="EquationVariables">

i</SPAN> <SPAN CLASS="White">&nbsp;</SPAN><SPAN CLASS="White">&nbsp;</SPAN>1](2.46)</P>



<P><P CLASS="EqnNmbrdAlign"><A NAME="pgfId=194874"></A>&nbsp;&nbsp;or<SPAN CLASS="White">n</SPAN>&nbsp;&nbsp;C[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>=<SPAN CLASS="White">&nbsp;</SPAN>(A[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>+<SPAN CLASS="White">&nbsp;</SPAN>B[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>)<SPAN CLASS="White">&nbsp;</SPAN>&middot;<SPAN CLASS="White">&nbsp;</SPAN>(P[<SPAN CLASS="EquationVariables">

i</SPAN> ]'<SPAN CLASS="White">&nbsp;</SPAN>+<SPAN CLASS="White">&nbsp;</SPAN>C[<SPAN CLASS="EquationVariables">

i</SPAN> <SPAN CLASS="White">&nbsp;</SPAN><SPAN CLASS="White">&nbsp;</SPAN>1]),(2.47)</P>



<P><P CLASS="BodyAfterHead"><A NAME="pgfId=194866"></A>where P[<SPAN CLASS="EquationVariables">

i</SPAN> ]'<SPAN CLASS="White">&nbsp;</SPAN><SPAN CLASS="White">&nbsp;</SPAN>=<SPAN CLASS="White">&nbsp;</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&nbsp;2.22b):</P>



<P><P CLASS="EquationAlign"><A NAME="pgfId=194944"></A>&nbsp;&nbsp;even

stages&nbsp;&nbsp;odd stages</P>



<P><P CLASS="EqnNmbrdAlign"><A NAME="pgfId=194992"></A>&nbsp;&nbsp;C1[<SPAN CLASS="EquationVariables">

i</SPAN> ]'<SPAN CLASS="White">&nbsp;</SPAN>=<SPAN CLASS="White">&nbsp;</SPAN>P[<SPAN CLASS="EquationVariables">

i</SPAN> <SPAN CLASS="White">&nbsp;</SPAN>]<SPAN CLASS="White">&nbsp;</SPAN>&middot;<SPAN CLASS="White">&nbsp;</SPAN>C3[<SPAN CLASS="EquationVariables">

i</SPAN> <SPAN CLASS="White">&nbsp;</SPAN><SPAN CLASS="White">&nbsp;</SPAN>1]<SPAN CLASS="White">&nbsp;</SPAN>&middot;<SPAN CLASS="White">&nbsp;</SPAN>C4[<SPAN CLASS="EquationVariables">

i</SPAN> <SPAN CLASS="White">&nbsp;</SPAN><SPAN CLASS="White">&nbsp;</SPAN>1]&nbsp;&nbsp;C3[<SPAN CLASS="EquationVariables">

i</SPAN> ]'<SPAN CLASS="White">&nbsp;</SPAN>=<SPAN CLASS="White">&nbsp;</SPAN>P[<SPAN CLASS="EquationVariables">

i</SPAN> <SPAN CLASS="White">&nbsp;</SPAN>]<SPAN CLASS="White">&nbsp;</SPAN>&middot;<SPAN CLASS="White">&nbsp;</SPAN>C1[<SPAN CLASS="EquationVariables">

i</SPAN> <SPAN CLASS="White">&nbsp;</SPAN><SPAN CLASS="White">&nbsp;</SPAN>1]<SPAN CLASS="White">&nbsp;</SPAN>&middot;<SPAN CLASS="White">&nbsp;</SPAN>C2[<SPAN CLASS="EquationVariables">

i</SPAN> <SPAN CLASS="White">&nbsp;</SPAN><SPAN CLASS="White">&nbsp;</SPAN>1](2.48)</P>



<P><P CLASS="EqnNmbrdAlign"><A NAME="pgfId=194945"></A>&nbsp;&nbsp;C2[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>=<SPAN CLASS="White">&nbsp;</SPAN>A[<SPAN CLASS="EquationVariables">

i</SPAN> <SPAN CLASS="White">&nbsp;</SPAN>]<SPAN CLASS="White">&nbsp;</SPAN>+<SPAN CLASS="White">&nbsp;</SPAN>B[<SPAN CLASS="EquationVariables">

i</SPAN> <SPAN CLASS="White">&nbsp;</SPAN>]&nbsp;&nbsp;C4[<SPAN CLASS="EquationVariables">

i</SPAN> ]'<SPAN CLASS="White">&nbsp;</SPAN>=<SPAN CLASS="White">&nbsp;</SPAN>A[<SPAN CLASS="EquationVariables">

i</SPAN> <SPAN CLASS="White">&nbsp;</SPAN>]<SPAN CLASS="White">&nbsp;</SPAN>&middot;<SPAN CLASS="White">&nbsp;</SPAN>B[<SPAN CLASS="EquationVariables">

i</SPAN> <SPAN CLASS="White">&nbsp;</SPAN>](2.49)</P>



<P><P CLASS="EqnNmbrdAlign"><A NAME="pgfId=195069"></A>&nbsp;&nbsp;C[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>=<SPAN CLASS="White">&nbsp;</SPAN>C1[<SPAN CLASS="EquationVariables">

i</SPAN> <SPAN CLASS="White">&nbsp;</SPAN>]<SPAN CLASS="White">&nbsp;</SPAN>&middot;<SPAN CLASS="White">&nbsp;</SPAN>C2[<SPAN CLASS="EquationVariables">

i</SPAN> <SPAN CLASS="White">&nbsp;</SPAN>]&nbsp;&nbsp;C[<SPAN CLASS="EquationVariables">

i</SPAN> ]<SPAN CLASS="White">&nbsp;</SPAN>=<SPAN CLASS="White">&nbsp;</SPAN>C3[<SPAN CLASS="EquationVariables">

i</SPAN> <SPAN CLASS="White">&nbsp;</SPAN>]<SPAN CLASS="White">&nbsp;</SPAN>'<SPAN CLASS="White">&nbsp;</SPAN>+<SPAN CLASS="White">&nbsp;</SPAN>C4[<SPAN CLASS="EquationVariables">

i</SPAN> <SPAN CLASS="White">&nbsp;</SPAN>]'(2.50)</P>



<P><TABLE BORDER="0" CELLSPACING="2" CELLPADDING="0">

<TR>

<TD><P><P CLASS="TableFigure"><A NAME="pgfId=195075"></A>&nbsp;</P>

⌨️ 快捷键说明

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