Wednesday, November 21, 2012

Boolean Logic : Activity 10

Activity 10 : Build 16 bit OR using (NAND, AND, XOR, OR, MUX, DMUX)


You can do this using only Or; the below solution is by using only Nand..
If you read the previous solutions, you really wont be checking this out !! ;)



/**
 * 16-bit bitwise Or gate: for i=0..15 out[i] = a[i] or b[i].
 */

CHIP Or16 {
    IN a[16], b[16];
    OUT out[16];

    PARTS:
    // Put your code here.

Nand(a=a[0], b=a[0], out=p0);
Nand(a=a[1], b=a[1], out=p1);
Nand(a=a[2], b=a[2], out=p2);
Nand(a=a[3], b=a[3], out=p3);
Nand(a=a[4], b=a[4], out=p4);
Nand(a=a[5], b=a[5], out=p5);
Nand(a=a[6], b=a[6], out=p6);
Nand(a=a[7], b=a[7], out=p7);
Nand(a=a[8], b=a[8], out=p8);
Nand(a=a[9], b=a[9], out=p9);
Nand(a=a[10], b=a[10], out=p10);
Nand(a=a[11], b=a[11], out=p11);
Nand(a=a[12], b=a[12], out=p12);
Nand(a=a[13], b=a[13], out=p13);
Nand(a=a[14], b=a[14], out=p14);
Nand(a=a[15], b=a[15], out=p15);


Nand(a=b[0], b=b[0], out=q0);
Nand(a=b[1], b=b[1], out=q1);
Nand(a=b[2], b=b[2], out=q2);
Nand(a=b[3], b=b[3], out=q3);
Nand(a=b[4], b=b[4], out=q4);
Nand(a=b[5], b=b[5], out=q5);
Nand(a=b[6], b=b[6], out=q6);
Nand(a=b[7], b=b[7], out=q7);
Nand(a=b[8], b=b[8], out=q8);
Nand(a=b[9], b=b[9], out=q9);
Nand(a=b[10], b=b[10], out=q10);
Nand(a=b[11], b=b[11], out=q11);
Nand(a=b[12], b=b[12], out=q12);
Nand(a=b[13], b=b[13], out=q13);
Nand(a=b[14], b=b[14], out=q14);
Nand(a=b[15], b=b[15], out=q15);



Nand(a=p0, b=q0, out=out[0]);
Nand(a=p1, b=q1, out=out[1]);
Nand(a=p2, b=q2, out=out[2]);
Nand(a=p3, b=q3, out=out[3]);
Nand(a=p4, b=q4, out=out[4]);
Nand(a=p5, b=q5, out=out[5]);
Nand(a=p6, b=q6, out=out[6]);
Nand(a=p7, b=q7, out=out[7]);
Nand(a=p8, b=q8, out=out[8]);
Nand(a=p9, b=q9, out=out[9]);
Nand(a=p10, b=q10, out=out[10]);
Nand(a=p11, b=q11, out=out[11]);
Nand(a=p12, b=q12, out=out[12]);
Nand(a=p13, b=q13, out=out[13]);
Nand(a=p14, b=q14, out=out[14]);
Nand(a=p15, b=q15, out=out[15]);

}

////////////////////////////////////////////////////////

Wanted to make use of Mux which I did, but dha !! I am using Or too




/**
 * 16-bit bitwise Or gate: for i=0..15 out[i] = a[i] or b[i].
 */

CHIP Or16 {
    IN a[16], b[16];
    OUT out[16];

    PARTS:
    // Put your code here.

Mux(a=a[0], b=b[0], out=w0);
Mux(a=a[1], b=b[1], out=w1);
Mux(a=a[2], b=b[2], out=w2);
Mux(a=a[3], b=b[3], out=w3);
Mux(a=a[4], b=b[4], out=w4);
Mux(a=a[5], b=b[5], out=w5);
Mux(a=a[6], b=b[6], out=w6);
Mux(a=a[7], b=b[7], out=w7);
Mux(a=a[8], b=b[8], out=w8);
Mux(a=a[9], b=b[9], out=w9);
Mux(a=a[10], b=b[10], out=w10);
Mux(a=a[11], b=b[11], out=w11);
Mux(a=a[12], b=b[12], out=w12);
Mux(a=a[13], b=b[13], out=w13);
Mux(a=a[14], b=b[14], out=w14);
Mux(a=a[15], b=b[15], out=w15);



Or(a=a[0], b=w0, out=p0);
Or(a=a[1], b=w1, out=p1);
Or(a=a[2], b=w2, out=p2);
Or(a=a[3], b=w3, out=p3);
Or(a=a[4], b=w4, out=p4);
Or(a=a[5], b=w5, out=p5);
Or(a=a[6], b=w6, out=p6);
Or(a=a[7], b=w7, out=p7);
Or(a=a[8], b=w8, out=p8);
Or(a=a[9], b=w9, out=p9);
Or(a=a[10], b=w10, out=p10);
Or(a=a[11], b=w11, out=p11);
Or(a=a[12], b=w12, out=p12);
Or(a=a[13], b=w13, out=p13);
Or(a=a[14], b=w14, out=p14);
Or(a=a[15], b=w15, out=p15);



Or(a=b[0], b=p0, out=out[0]);
Or(a=b[1], b=p1, out=out[1]);
Or(a=b[2], b=p2, out=out[2]);
Or(a=b[3], b=p3, out=out[3]);
Or(a=b[4], b=p4, out=out[4]);
Or(a=b[5], b=p5, out=out[5]);
Or(a=b[6], b=p6, out=out[6]);
Or(a=b[7], b=p7, out=out[7]);
Or(a=b[8], b=p8, out=out[8]);
Or(a=b[9], b=p9, out=out[9]);
Or(a=b[10], b=p10, out=out[10]);
Or(a=b[11], b=p11, out=out[11]);
Or(a=b[12], b=p12, out=out[12]);
Or(a=b[13], b=p13, out=out[13]);
Or(a=b[14], b=p14, out=out[14]);
Or(a=b[15], b=p15, out=out[15]);

}

eeks.. better to use only Or.. but just wanted to write Mux :)
Did you notice? I didn't write sel in the Mux definition and it worked perfectly !!



Downloads :
activity 10 | using Nand
activity 10 | using Mux and Or

No comments:

Post a Comment