Add16 (16 位元的加法器) :
Add16功能是兩組16位元的輸入相加,
元件構成只需要串接16個1bit Full-Adder就行了 !
注意 :
第一個 Cin (C0) 不需要考慮來自低位的進位,設成false,
或是第一個換成Half-Adder。
(想成個位數累加到9,才會需要進位至10。)
CHIP Add16
{
IN a[16], b[16];
OUT out[16];
PARTS:
FullAdder(a=a[0], b=b[0], c=false, carry=carry0, sum=out[0]);
/* HalfAdder(a=a[0], b=b[0], carry=carry0, sum=out[0]); */
FullAdder(a=a[1], b=b[1], c=carry0, carry=carry1, sum=out[1]);
FullAdder(a=a[2], b=b[2], c=carry1, carry=carry2, sum=out[2]);
FullAdder(a=a[3], b=b[3], c=carry2, carry=carry3, sum=out[3]);
FullAdder(a=a[4], b=b[4], c=carry3, carry=carry4, sum=out[4]);
FullAdder(a=a[5], b=b[5], c=carry4, carry=carry5, sum=out[5]);
FullAdder(a=a[6], b=b[6], c=carry5, carry=carry6, sum=out[6]);
FullAdder(a=a[7], b=b[7], c=carry6, carry=carry7, sum=out[7]);
FullAdder(a=a[8], b=b[8], c=carry7, carry=carry8, sum=out[8]);
FullAdder(a=a[9], b=b[9], c=carry8, carry=carry9, sum=out[9]);
FullAdder(a=a[10], b=b[10], c=carry9, carry=carry10, sum=out[10]);
FullAdder(a=a[11], b=b[11], c=carry10, carry=carry11, sum=out[11]);
FullAdder(a=a[12], b=b[12], c=carry11, carry=carry12, sum=out[12]);
FullAdder(a=a[13], b=b[13], c=carry12, carry=carry13, sum=out[13]);
FullAdder(a=a[14], b=b[14], c=carry13, carry=carry14, sum=out[14]);
FullAdder(a=a[15], b=b[15], c=carry14, carry=carry15, sum=out[15]);
}