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]);
}

results matching ""

    No results matching ""