Skip to content
Uriel58 edited this page Jan 6, 2022 · 9 revisions

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)

Clone this wiki locally