-
Notifications
You must be signed in to change notification settings - Fork 0
HW2
1.NOT16
CHIP Not16 {
IN in[16];
OUT out[16];
PARTS:
Not(in=in[15], out=out[15]);
Not(in=in[14], out=out[14]);
Not(in=in[13], out=out[13]);
Not(in=in[12], out=out[12]);
Not(in=in[11], out=out[11]);
Not(in=in[10], out=out[10]);
Not(in=in[9], out=out[9]);
Not(in=in[8], out=out[8]);
Not(in=in[7], out=out[7]);
Not(in=in[6], out=out[6]);
Not(in=in[5], out=out[5]);
Not(in=in[4], out=out[4]);
Not(in=in[3], out=out[3]);
Not(in=in[2], out=out[2]);
Not(in=in[1], out=out[1]);
Not(in=in[0], out=out[0]);
}
//not的16位元版
2.And16
CHIP And16 {
IN a[16], b[16];
OUT out[16];
PARTS:
And(a=a[15], b=b[15], out=out[15]);
And(a=a[14], b=b[14], out=out[14]);
And(a=a[13], b=b[13], out=out[13]);
And(a=a[12], b=b[12], out=out[12]);
And(a=a[11], b=b[11], out=out[11]);
And(a=a[10], b=b[10], out=out[10]);
And(a=a[9], b=b[9], out=out[9]);
And(a=a[8], b=b[8], out=out[8]);
And(a=a[7], b=b[7], out=out[7]);
And(a=a[6], b=b[6], out=out[6]);
And(a=a[5], b=b[5], out=out[5]);
And(a=a[4], b=b[4], out=out[4]);
And(a=a[3], b=b[3], out=out[3]);
And(a=a[2], b=b[2], out=out[2]);
And(a=a[1], b=b[1], out=out[1]);
And(a=a[0], b=b[0], out=out[0]);
}
////and的16位元版
3.OR16
CHIP Or16 {
IN a[16], b[16];
OUT out[16];
PARTS:
Or(a=a[15], b=b[15], out=out[15]);
Or(a=a[14], b=b[14], out=out[14]);
Or(a=a[13], b=b[13], out=out[13]);
Or(a=a[12], b=b[12], out=out[12]);
Or(a=a[11], b=b[11], out=out[11]);
Or(a=a[10], b=b[10], out=out[10]);
Or(a=a[9], b=b[9], out=out[9]);
Or(a=a[8], b=b[8], out=out[8]);
Or(a=a[7], b=b[7], out=out[7]);
Or(a=a[6], b=b[6], out=out[6]);
Or(a=a[5], b=b[5], out=out[5]);
Or(a=a[4], b=b[4], out=out[4]);
Or(a=a[3], b=b[3], out=out[3]);
Or(a=a[2], b=b[2], out=out[2]);
Or(a=a[1], b=b[1], out=out[1]);
Or(a=a[0], b=b[0], out=out[0]);
}
//OR的16位元版
4.MUX16
CHIP Mux16 {
IN a[16], b[16], sel;
OUT out[16];
PARTS:
Mux(a=a[15], b=b[15], sel=sel, out=out[15]);
Mux(a=a[14], b=b[14], sel=sel, out=out[14]);
Mux(a=a[13], b=b[13], sel=sel, out=out[13]);
Mux(a=a[12], b=b[12], sel=sel, out=out[12]);
Mux(a=a[11], b=b[11], sel=sel, out=out[11]);
Mux(a=a[10], b=b[10], sel=sel, out=out[10]);
Mux(a=a[9], b=b[9], sel=sel, out=out[9]);
Mux(a=a[8], b=b[8], sel=sel, out=out[8]);
Mux(a=a[7], b=b[7], sel=sel, out=out[7]);
Mux(a=a[6], b=b[6], sel=sel, out=out[6]);
Mux(a=a[5], b=b[5], sel=sel, out=out[5]);
Mux(a=a[4], b=b[4], sel=sel, out=out[4]);
Mux(a=a[3], b=b[3], sel=sel, out=out[3]);
Mux(a=a[2], b=b[2], sel=sel, out=out[2]);
Mux(a=a[1], b=b[1], sel=sel, out=out[1]);
Mux(a=a[0], b=b[0], sel=sel, out=out[0]);
}
//MUX的16位元版
5.OR8WAY
CHIP Or8Way {
IN in[8];
OUT out;
PARTS:
Or(a=in[7], b=in[6], out=or76);
Or(a=in[5], b=in[4], out=or54);
Or(a=in[3], b=in[2], out=or32);
Or(a=in[1], b=in[0], out=or10);
Or(a=or76, b=or54, out=or74);
Or(a=or32, b=or10, out=or30);
Or(a=or74, b=or30, out=out);
}
6.Mux4Way16
CHIP DMux4Way {
IN in, sel[2];
OUT a, b, c, d;
PARTS:
DMux(in=in,sel=sel[1],a=ab,b=cd);
DMux(in=ab, sel=sel[0], a=a, b=b);
DMux(in=cd, sel=sel[0], a=c, b=d);
}
7.Mux8Way16
Mux4Way16(a=a, b=b, c=c, d=d, sel=sel[0..1], out=outad);
Mux4Way16(a=e, b=f, c=g, d=h, sel=sel[0..1], out=outeh);
Mux16(a=outad, b=outeh, sel=sel[2], out=out);
8.DMux4Way
PARTS:
DMux(in=in,sel=sel[1],a=ab,b=cd);
DMux(in=ab, sel=sel[0], a=a, b=b);
DMux(in=cd, sel=sel[0], a=c, b=d);
| in | sel | a | b | c | d |
| 0 | 00 | 0 | 0 | 0 | 0 |
| 0 | 01 | 0 | 0 | 0 | 0 |
| 0 | 10 | 0 | 0 | 0 | 0 |
| 0 | 11 | 0 | 0 | 0 | 0 |
| 1 | 00 | 1 | 0 | 0 | 0 |
| 1 | 01 | 0 | 1 | 0 | 0 |
| 1 | 10 | 0 | 0 | 1 | 0 |
| 1 | 11 | 0 | 0 | 0 | 1 |
9.DMux8Way
CHIP DMux8Way {
IN in, sel[3];
OUT a, b, c, d, e, f, g, h;
PARTS:
DMux(in=in, sel=sel[2], a=abcd, b=efgh);
DMux4Way(in=abcd, sel=sel[0..1], a=a, b=b, c=c, d=d);
DMux4Way(in=efgh, sel=sel[0..1], a=e, b=f, c=g, d=h);
}
| in | sel | a | b | c | d | e | f | g | h |
| 0 | 000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 001 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 010 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 011 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 100 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 101 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 110 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 111 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 000 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 001 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 010 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
| 1 | 011 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
| 1 | 100 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
| 1 | 101 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
| 1 | 110 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
| 1 | 111 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
證明迪摩根定律二式 Not(x Or y) = Not(x) And Not(y)