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

📄 ch02.6.htm

📁 介绍asci设计的一本书
💻 HTM
📖 第 1 页 / 共 5 页
字号:
NA</P>

</TD>

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

<P CLASS="TableLeft">

<A NAME="pgfId=162410">

 </A>

Z = A;</P>

<P CLASS="TableLeft">

<A NAME="pgfId=162411">

 </A>

SG(Z) = NOT(SG(A))</P>

</TD>

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

<P CLASS="TableLeft">

<A NAME="pgfId=162413">

 </A>

Z = NOT(A)</P>

</TD>

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

<P CLASS="TableLeft">

<A NAME="pgfId=162415">

 </A>

Z = NOT(A) + 1</P>

</TD>

</TR>

</TABLE>

</DIV>

<DIV>

<H3 CLASS="Heading2">

<A NAME="pgfId=162537">

 </A>

2.6.2&nbsp;Adders</H3>

<P CLASS="BodyAfterHead">

<A NAME="pgfId=194409">

 </A>

We can view addition in terms of <SPAN CLASS="Definition">

generate</SPAN>

, G[<SPAN CLASS="EquationVariables">

i</SPAN>

], and <SPAN CLASS="Definition">

propagate</SPAN>

, P[<SPAN CLASS="EquationVariables">

i</SPAN>

], signals. </P>

<TABLE>

<TR>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380769">

 </A>

<SPAN CLASS="BodyText">

method 1</SPAN>

</P>

</TD>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380771">

 </A>

<SPAN CLASS="BodyText">

method 2</SPAN>

</P>

</TD>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380773">

 </A>

&nbsp;</P>

</TD>

</TR>

<TR>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380775">

 </A>

G[i] = A[i] &#183; B[i]</P>

</TD>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380777">

 </A>

G[<SPAN CLASS="EquationVariables">

i</SPAN>

] = A[<SPAN CLASS="EquationVariables">

i</SPAN>

] &#183; B[<SPAN CLASS="EquationVariables">

i</SPAN>

]</P>

</TD>

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

<P CLASS="TableEqnNumber">

<A NAME="pgfId=380779">

 </A>

(2.42)</P>

</TD>

</TR>

<TR>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380781">

 </A>

P[<SPAN CLASS="EquationVariables">

i</SPAN>

] = A[<SPAN CLASS="EquationVariables">

i</SPAN>

] <SPAN CLASS="Symbol">

&#8853; </SPAN>

B[<SPAN CLASS="EquationVariables">

i</SPAN>

</P>

</TD>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380783">

 </A>

P[<SPAN CLASS="EquationVariables">

i</SPAN>

] = A[<SPAN CLASS="EquationVariables">

i</SPAN>

] + B[<SPAN CLASS="EquationVariables">

i</SPAN>

]</P>

</TD>

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

<P CLASS="TableEqnNumber">

<A NAME="pgfId=380785">

 </A>

(2.43)</P>

</TD>

</TR>

<TR>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380787">

 </A>

C[<SPAN CLASS="EquationVariables">

i</SPAN>

] = G[<SPAN CLASS="EquationVariables">

i</SPAN>

] + P[<SPAN CLASS="EquationVariables">

i</SPAN>

] &#183; C[<SPAN CLASS="EquationVariables">

i</SPAN>

&#8211;1]</P>

</TD>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380789">

 </A>

C[<SPAN CLASS="EquationVariables">

i</SPAN>

] = G[<SPAN CLASS="EquationVariables">

i</SPAN>

] + P[<SPAN CLASS="EquationVariables">

i</SPAN>

] &#183; C[<SPAN CLASS="EquationVariables">

i</SPAN>

&#8211;1]</P>

</TD>

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

<P CLASS="TableEqnNumber">

<A NAME="pgfId=380791">

 </A>

(2.44)</P>

</TD>

</TR>

<TR>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380793">

 </A>

S[<SPAN CLASS="EquationVariables">

i</SPAN>

] = P[<SPAN CLASS="EquationVariables">

i</SPAN>

] <SPAN CLASS="Symbol">

&#8853; </SPAN>

C[<SPAN CLASS="EquationVariables">

i</SPAN>

&#8211;1]</P>

</TD>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380795">

 </A>

S[<SPAN CLASS="EquationVariables">

i</SPAN>

] = A[<SPAN CLASS="EquationVariables">

i</SPAN>

] <SPAN CLASS="Symbol">

&#8853; </SPAN>

B[<SPAN CLASS="EquationVariables">

i</SPAN>

] <SPAN CLASS="Symbol">

&#8853; </SPAN>

C[<SPAN CLASS="EquationVariables">

i</SPAN>

&#8211;1]</P>

</TD>

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

<P CLASS="TableEqnNumber">

<A NAME="pgfId=380797">

 </A>

(2.45)</P>

</TD>

</TR>

</TABLE>

<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>

 + 1). Thus, C[<SPAN CLASS="EquationVariables">

i</SPAN>

] = COUT[<SPAN CLASS="EquationVariables">

i</SPAN>

] = CIN[<SPAN CLASS="EquationVariables">

i</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[&#8211;1] or CIN[0], to '0'. Some people use <SPAN CLASS="Definition">

delete</SPAN>

 (D) or <SPAN CLASS="Definition">

kill</SPAN>

 (K) in various ways for the complements of G[i] and P[i], but unfortunately others use C for COUT and D for CIN&#8212;so I avoid using any of these. Do not confuse the two different methods (both of which are used) in Eqs.&nbsp;&nbsp;2.42&#8211;2.45 when forming the sum, since the propagate signal, P[<SPAN CLASS="EquationVariables">

i</SPAN>

] , is different for each method. </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 &#8220;go-faster&#8221; 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>

<TABLE>

<TR>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380815">

 </A>

either</P>

</TD>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380817">

 </A>

C[<SPAN CLASS="EquationVariables">

i</SPAN>

] = A[<SPAN CLASS="EquationVariables">

i</SPAN>

] &#183; B[<SPAN CLASS="EquationVariables">

i</SPAN>

] + P[<SPAN CLASS="EquationVariables">

i</SPAN>

] &#183; C[<SPAN CLASS="EquationVariables">

i</SPAN>

 &#8211; 1]</P>

</TD>

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

<P CLASS="TableEqnNumber">

<A NAME="pgfId=380819">

 </A>

(2.46)</P>

</TD>

</TR>

<TR>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380821">

 </A>

or</P>

</TD>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380823">

 </A>

C[<SPAN CLASS="EquationVariables">

i</SPAN>

] = (A[<SPAN CLASS="EquationVariables">

i</SPAN>

] + B[<SPAN CLASS="EquationVariables">

i</SPAN>

] ) &#183; (P[<SPAN CLASS="EquationVariables">

i</SPAN>

]' + C[<SPAN CLASS="EquationVariables">

i</SPAN>

 &#8211; 1]),</P>

</TD>

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

<P CLASS="TableEqnNumber">

<A NAME="pgfId=380825">

 </A>

(2.47)</P>

</TD>

</TR>

</TABLE>

<P CLASS="BodyAfterHead">

<A NAME="pgfId=306711">

 </A>

where P[<SPAN CLASS="EquationVariables">

i</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>

<TABLE>

<TR>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380845">

 </A>

<SPAN CLASS="BodyText">

even stages</SPAN>

</P>

</TD>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380847">

 </A>

<SPAN CLASS="BodyText">

odd stages</SPAN>

</P>

</TD>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380849">

 </A>

&nbsp;</P>

</TD>

</TR>

<TR>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380851">

 </A>

<SPAN CLASS="BodyText">

C1[i]' = P[i ] &#183; C3[i &#8211; 1] &#183; C4[i &#8211; 1]</SPAN>

</P>

</TD>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380853">

 </A>

<SPAN CLASS="BodyText">

C3[i]' = P[i ] &#183; C1[i &#8211; 1] &#183; C2[i &#8211; 1]</SPAN>

</P>

</TD>

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

<P CLASS="TableEqnNumber">

<A NAME="pgfId=380855">

 </A>

(2.48)</P>

</TD>

</TR>

<TR>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380857">

 </A>

<SPAN CLASS="BodyText">

C2[i] = A[i ] + B[i ]</SPAN>

</P>

</TD>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380859">

 </A>

<SPAN CLASS="BodyText">

C4[i]' = A[i ] &#183; B[i ]</SPAN>

</P>

</TD>

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

<P CLASS="TableEqnNumber">

<A NAME="pgfId=380861">

 </A>

(2.49)</P>

</TD>

</TR>

<TR>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380863">

 </A>

<SPAN CLASS="BodyText">

C[i] = C1[i ] &#183; C2[i ]</SPAN>

</P>

</TD>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380865">

 </A>

<SPAN CLASS="BodyText">

C[i] = C3[i ] ' + C4[i ]'</SPAN>

</P>

</TD>

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

<P CLASS="TableEqnNumber">

<A NAME="pgfId=380867">

 </A>

(2.50)</P>

</TD>

</TR>

</TABLE>

<P CLASS="BodyAfterHead">

<A NAME="pgfId=306839">

 </A>

(the carry inputs to stage zero are C3[&#8211;1] = C4[&#8211;1] = '0'). We can use the RCA of Figure&nbsp;2.22(b) in a datapath, with standard cells, or on a gate array. </P>

<P CLASS="Body">

<A NAME="pgfId=195091">

 </A>

Instead of propagating the carries through each stage of an RCA, Figure&nbsp;2.23 shows a different approach. A <SPAN CLASS="Definition">

carry-save adder</SPAN>

 (<SPAN CLASS="Definition">

CSA</SPAN>

) cell CSA(A1[<SPAN CLASS="EquationVariables">

i</SPAN>

], A2[<SPAN CLASS="EquationVariables">

i</SPAN>

], A3[<SPAN CLASS="EquationVariables">

i</SPAN>

 ], CIN, S1[<SPAN CLASS="EquationVariables">

i</SPAN>

], S2[<SPAN CLASS="EquationVariables">

i</SPAN>

], COUT) has three outputs: &nbsp;</P>

<TABLE>

<TR>

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

<P CLASS="TableEqnLeft">

<A NAME="pgfId=380999">

 </A>

S1[<SPAN CLASS="EquationVariables">

i</SPAN>

] = CIN ,</P>

</TD>

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

<P CLASS="TableEqnNumber">

<A NAME="pgfId=381001">

 </A>

(2.51)</P>

</TD>

</TR>

<TR>

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

<P CLASS="EquationAlign">

<A NAME="pgfId=381003">

 </A>

S2[<SPAN CLASS="EquationVariables">

i</SPAN>

] = A1[<SPAN CLASS="EquationVariables">

⌨️ 快捷键说明

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