first commit
This commit is contained in:
BIN
project-1-boolean-logic/01.zip
Normal file
BIN
project-1-boolean-logic/01.zip
Normal file
Binary file not shown.
17
project-1-boolean-logic/01/And.hdl
Executable file
17
project-1-boolean-logic/01/And.hdl
Executable file
@@ -0,0 +1,17 @@
|
||||
// This file is part of www.nand2tetris.org
|
||||
// and the book "The Elements of Computing Systems"
|
||||
// by Nisan and Schocken, MIT Press.
|
||||
// File name: projects/1/And.hdl
|
||||
/**
|
||||
* And gate:
|
||||
* if (a and b) out = 1, else out = 0
|
||||
*/
|
||||
CHIP And {
|
||||
IN a, b;
|
||||
OUT out;
|
||||
|
||||
PARTS:
|
||||
// Reverse the Nand Gate with the newly created Not chip/gate
|
||||
Nand(a=a, b=b, out=notOut);
|
||||
Not(in= notOut, out= out);
|
||||
}
|
||||
33
project-1-boolean-logic/01/And16.hdl
Executable file
33
project-1-boolean-logic/01/And16.hdl
Executable file
@@ -0,0 +1,33 @@
|
||||
// This file is part of www.nand2tetris.org
|
||||
// and the book "The Elements of Computing Systems"
|
||||
// by Nisan and Schocken, MIT Press.
|
||||
// File name: projects/1/And16.hdl
|
||||
/**
|
||||
* 16-bit And gate:
|
||||
* for i = 0, ..., 15:
|
||||
* out[i] = a[i] And b[i]
|
||||
*/
|
||||
CHIP And16 {
|
||||
IN a[16], b[16];
|
||||
OUT out[16];
|
||||
|
||||
PARTS:
|
||||
|
||||
And(a=a[0],b=b[0],out=out[0]);
|
||||
And(a=a[1],b=b[1],out=out[1]);
|
||||
And(a=a[2],b=b[2],out=out[2]);
|
||||
And(a=a[3],b=b[3],out=out[3]);
|
||||
And(a=a[4],b=b[4],out=out[4]);
|
||||
And(a=a[5],b=b[5],out=out[5]);
|
||||
And(a=a[6],b=b[6],out=out[6]);
|
||||
And(a=a[7],b=b[7],out=out[7]);
|
||||
And(a=a[8],b=b[8],out=out[8]);
|
||||
And(a=a[9],b=b[9],out=out[9]);
|
||||
And(a=a[10],b=b[10],out=out[10]);
|
||||
And(a=a[11],b=b[11],out=out[11]);
|
||||
And(a=a[12],b=b[12],out=out[12]);
|
||||
And(a=a[13],b=b[13],out=out[13]);
|
||||
And(a=a[14],b=b[14],out=out[14]);
|
||||
And(a=a[15],b=b[15],out=out[15]);
|
||||
|
||||
}
|
||||
20
project-1-boolean-logic/01/DMux.hdl
Executable file
20
project-1-boolean-logic/01/DMux.hdl
Executable file
@@ -0,0 +1,20 @@
|
||||
// This file is part of www.nand2tetris.org
|
||||
// and the book "The Elements of Computing Systems"
|
||||
// by Nisan and Schocken, MIT Press.
|
||||
// File name: projects/1/DMux.hdl
|
||||
/**
|
||||
* Demultiplexor:
|
||||
* [a, b] = [in, 0] if sel = 0
|
||||
* [0, in] if sel = 1
|
||||
*/
|
||||
CHIP DMux {
|
||||
IN in, sel;
|
||||
OUT a, b;
|
||||
|
||||
PARTS:
|
||||
|
||||
Not(in=sel,out=notSel);
|
||||
And(a=in,b=notSel,out=a);
|
||||
And(a=in,b=sel,out=b);
|
||||
|
||||
}
|
||||
39
project-1-boolean-logic/01/DMux4Way.hdl
Executable file
39
project-1-boolean-logic/01/DMux4Way.hdl
Executable file
@@ -0,0 +1,39 @@
|
||||
// This file is part of www.nand2tetris.org
|
||||
// and the book "The Elements of Computing Systems"
|
||||
// by Nisan and Schocken, MIT Press.
|
||||
// File name: projects/1/DMux4Way.hdl
|
||||
/**
|
||||
* 4-way demultiplexor:
|
||||
* [a, b, c, d] = [in, 0, 0, 0] if sel = 00
|
||||
* [0, in, 0, 0] if sel = 01
|
||||
* [0, 0, in, 0] if sel = 10
|
||||
* [0, 0, 0, in] if sel = 11
|
||||
*/
|
||||
CHIP DMux4Way {
|
||||
IN in, sel[2];
|
||||
OUT a, b, c, d;
|
||||
|
||||
PARTS:
|
||||
|
||||
DMux(in= in, sel=sel[1] , a=topHalf , b=botHalf );
|
||||
|
||||
DMux(in= topHalf, sel=sel[0] , a=a , b=b );
|
||||
DMux(in= botHalf, sel=sel[0] , a=c , b=d );
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
CHIP DMux {
|
||||
IN in, sel;
|
||||
OUT a, b;
|
||||
|
||||
PARTS:
|
||||
|
||||
Not(in=sel,out=notSel);
|
||||
And(a=in,b=notSel,out=a);
|
||||
And(a=in,b=sel,out=b);
|
||||
|
||||
}
|
||||
*/
|
||||
26
project-1-boolean-logic/01/DMux8Way.hdl
Executable file
26
project-1-boolean-logic/01/DMux8Way.hdl
Executable file
@@ -0,0 +1,26 @@
|
||||
// This file is part of www.nand2tetris.org
|
||||
// and the book "The Elements of Computing Systems"
|
||||
// by Nisan and Schocken, MIT Press.
|
||||
// File name: projects/1/DMux8Way.hdl
|
||||
/**
|
||||
* 8-way demultiplexor:
|
||||
* [a, b, c, d, e, f, g, h] = [in, 0, 0, 0, 0, 0, 0, 0] if sel = 000
|
||||
* [0, in, 0, 0, 0, 0, 0, 0] if sel = 001
|
||||
* [0, 0, in, 0, 0, 0, 0, 0] if sel = 010
|
||||
* [0, 0, 0, in, 0, 0, 0, 0] if sel = 011
|
||||
* [0, 0, 0, 0, in, 0, 0, 0] if sel = 100
|
||||
* [0, 0, 0, 0, 0, in, 0, 0] if sel = 101
|
||||
* [0, 0, 0, 0, 0, 0, in, 0] if sel = 110
|
||||
* [0, 0, 0, 0, 0, 0, 0, in] if sel = 111
|
||||
*/
|
||||
CHIP DMux8Way {
|
||||
IN in, sel[3];
|
||||
OUT a, b, c, d, e, f, g, h;
|
||||
|
||||
PARTS:
|
||||
|
||||
DMux(in= in, sel=sel[2] , a=topHalf , b=botHalf );
|
||||
|
||||
DMux4Way(in=topHalf , sel=sel[0..1] , a=a , b=b , c=c , d=d );
|
||||
DMux4Way(in=botHalf , sel=sel[0..1] , a=e , b=f , c=g , d=h );
|
||||
}
|
||||
19
project-1-boolean-logic/01/Mux.hdl
Executable file
19
project-1-boolean-logic/01/Mux.hdl
Executable file
@@ -0,0 +1,19 @@
|
||||
// This file is part of www.nand2tetris.org
|
||||
// and the book "The Elements of Computing Systems"
|
||||
// by Nisan and Schocken, MIT Press.
|
||||
// File name: projects/1/Mux.hdl
|
||||
/**
|
||||
* Multiplexor:
|
||||
* if (sel = 0) out = a, else out = b
|
||||
*/
|
||||
CHIP Mux {
|
||||
IN a, b, sel;
|
||||
OUT out;
|
||||
|
||||
PARTS:
|
||||
|
||||
Not(in=sel,out=notSel);
|
||||
And(a= a, b= notSel, out= andA);
|
||||
And(a= b, b= sel, out= andB);
|
||||
Xor(a= andA , b= andB, out=out );
|
||||
}
|
||||
35
project-1-boolean-logic/01/Mux16.hdl
Executable file
35
project-1-boolean-logic/01/Mux16.hdl
Executable file
@@ -0,0 +1,35 @@
|
||||
// This file is part of www.nand2tetris.org
|
||||
// and the book "The Elements of Computing Systems"
|
||||
// by Nisan and Schocken, MIT Press.
|
||||
// File name: projects/1/Mux16.hdl
|
||||
/**
|
||||
* 16-bit multiplexor:
|
||||
* for i = 0, ..., 15:
|
||||
* if (sel = 0) out[i] = a[i], else out[i] = b[i]
|
||||
*/
|
||||
CHIP Mux16 {
|
||||
IN a[16], b[16], sel;
|
||||
OUT out[16];
|
||||
|
||||
PARTS:
|
||||
|
||||
Mux(a=a[0],b=b[0],sel=sel,out=out[0]);
|
||||
Mux(a=a[1],b=b[1],sel=sel,out=out[1]);
|
||||
Mux(a=a[2],b=b[2],sel=sel,out=out[2]);
|
||||
Mux(a=a[3],b=b[3],sel=sel,out=out[3]);
|
||||
Mux(a=a[4],b=b[4],sel=sel,out=out[4]);
|
||||
Mux(a=a[5],b=b[5],sel=sel,out=out[5]);
|
||||
Mux(a=a[6],b=b[6],sel=sel,out=out[6]);
|
||||
Mux(a=a[7],b=b[7],sel=sel,out=out[7]);
|
||||
Mux(a=a[8],b=b[8],sel=sel,out=out[8]);
|
||||
Mux(a=a[9],b=b[9],sel=sel,out=out[9]);
|
||||
Mux(a=a[10],b=b[10],sel=sel,out=out[10]);
|
||||
Mux(a=a[11],b=b[11],sel=sel,out=out[11]);
|
||||
Mux(a=a[12],b=b[12],sel=sel,out=out[12]);
|
||||
Mux(a=a[13],b=b[13],sel=sel,out=out[13]);
|
||||
Mux(a=a[14],b=b[14],sel=sel,out=out[14]);
|
||||
Mux(a=a[15],b=b[15],sel=sel,out=out[15]);
|
||||
|
||||
|
||||
|
||||
}
|
||||
24
project-1-boolean-logic/01/Mux4Way16.hdl
Executable file
24
project-1-boolean-logic/01/Mux4Way16.hdl
Executable file
@@ -0,0 +1,24 @@
|
||||
// This file is part of www.nand2tetris.org
|
||||
// and the book "The Elements of Computing Systems"
|
||||
// by Nisan and Schocken, MIT Press.
|
||||
// File name: projects/1/Mux4Way16.hdl
|
||||
/**
|
||||
* 4-way 16-bit multiplexor:
|
||||
* out = a if sel = 00
|
||||
* b if sel = 01
|
||||
* c if sel = 10
|
||||
* d if sel = 11
|
||||
*/
|
||||
CHIP Mux4Way16 {
|
||||
IN a[16], b[16], c[16], d[16], sel[2];
|
||||
OUT out[16];
|
||||
|
||||
PARTS:
|
||||
|
||||
Mux16(a=a,b=b,sel=sel[0],out=mux1);
|
||||
Mux16(a=c,b=d,sel=sel[0],out=mux2);
|
||||
|
||||
Mux16(a=mux1,b=mux2,sel=sel[1],out=out);
|
||||
|
||||
//// Replace this comment with your code.
|
||||
}
|
||||
29
project-1-boolean-logic/01/Mux8Way16.hdl
Executable file
29
project-1-boolean-logic/01/Mux8Way16.hdl
Executable file
@@ -0,0 +1,29 @@
|
||||
// This file is part of www.nand2tetris.org
|
||||
// and the book "The Elements of Computing Systems"
|
||||
// by Nisan and Schocken, MIT Press.
|
||||
// File name: projects/1/Mux8Way16.hdl
|
||||
/**
|
||||
* 8-way 16-bit multiplexor:
|
||||
* out = a if sel = 000
|
||||
* b if sel = 001
|
||||
* c if sel = 010
|
||||
* d if sel = 011
|
||||
* e if sel = 100
|
||||
* f if sel = 101
|
||||
* g if sel = 110
|
||||
* h if sel = 111
|
||||
*/
|
||||
CHIP Mux8Way16 {
|
||||
IN a[16], b[16], c[16], d[16],
|
||||
e[16], f[16], g[16], h[16],
|
||||
sel[3];
|
||||
OUT out[16];
|
||||
|
||||
PARTS:
|
||||
Mux4Way16(a=a, b=b, c=c , d=d , sel=sel[0..1] , out=muxabcd );
|
||||
Mux4Way16(a=e , b=f , c=g , d=h , sel=sel[0..1] , out=muxefgh );
|
||||
|
||||
Mux16(a=muxabcd , b=muxefgh , sel=sel[2] , out=out );
|
||||
|
||||
//// Replace this comment with your code.
|
||||
}
|
||||
16
project-1-boolean-logic/01/Not.hdl
Executable file
16
project-1-boolean-logic/01/Not.hdl
Executable file
@@ -0,0 +1,16 @@
|
||||
// This file is part of www.nand2tetris.org
|
||||
// and the book "The Elements of Computing Systems"
|
||||
// by Nisan and Schocken, MIT Press.
|
||||
// File name: projects/1/Not.hdl
|
||||
/**
|
||||
* Not gate:
|
||||
* if (in) out = 0, else out = 1
|
||||
*/
|
||||
CHIP Not {
|
||||
IN in;
|
||||
OUT out;
|
||||
PARTS:
|
||||
// nand = 1 + 1 = 0
|
||||
// 0 + 0 = 1
|
||||
Nand(a=in, b=in, out=out);
|
||||
}
|
||||
32
project-1-boolean-logic/01/Not16.hdl
Executable file
32
project-1-boolean-logic/01/Not16.hdl
Executable file
@@ -0,0 +1,32 @@
|
||||
// This file is part of www.nand2tetris.org
|
||||
// and the book "The Elements of Computing Systems"
|
||||
// by Nisan and Schocken, MIT Press.
|
||||
// File name: projects/01/Not16.hdl
|
||||
/**
|
||||
* 16-bit Not gate:
|
||||
* for i = 0, ..., 15:
|
||||
* out[i] = Not(a[i])
|
||||
*/
|
||||
CHIP Not16 {
|
||||
IN in[16];
|
||||
OUT out[16];
|
||||
|
||||
PARTS:
|
||||
|
||||
Not(in=in[0],out=out[0]);
|
||||
Not(in=in[1],out=out[1]);
|
||||
Not(in=in[2],out=out[2]);
|
||||
Not(in=in[3],out=out[3]);
|
||||
Not(in=in[4],out=out[4]);
|
||||
Not(in=in[5],out=out[5]);
|
||||
Not(in=in[6],out=out[6]);
|
||||
Not(in=in[7],out=out[7]);
|
||||
Not(in=in[8],out=out[8]);
|
||||
Not(in=in[9],out=out[9]);
|
||||
Not(in=in[10],out=out[10]);
|
||||
Not(in=in[11],out=out[11]);
|
||||
Not(in=in[12],out=out[12]);
|
||||
Not(in=in[13],out=out[13]);
|
||||
Not(in=in[14],out=out[14]);
|
||||
Not(in=in[15],out=out[15]);
|
||||
}
|
||||
19
project-1-boolean-logic/01/Or.hdl
Executable file
19
project-1-boolean-logic/01/Or.hdl
Executable file
@@ -0,0 +1,19 @@
|
||||
// This file is part of www.nand2tetris.org
|
||||
// and the book "The Elements of Computing Systems"
|
||||
// by Nisan and Schocken, MIT Press.
|
||||
// File name: projects/1/Or.hdl
|
||||
/**
|
||||
* Or gate:
|
||||
* if (a or b) out = 1, else out = 0
|
||||
*/
|
||||
CHIP Or {
|
||||
IN a, b;
|
||||
OUT out;
|
||||
|
||||
PARTS:
|
||||
//// Replace this comment with your code.
|
||||
Nand(a=a, b=a, out=nanda);
|
||||
Nand(a=b, b=b, out=nandb);
|
||||
Nand(a=nanda , b=nandb , out=out);
|
||||
|
||||
}
|
||||
32
project-1-boolean-logic/01/Or16.hdl
Executable file
32
project-1-boolean-logic/01/Or16.hdl
Executable file
@@ -0,0 +1,32 @@
|
||||
// This file is part of www.nand2tetris.org
|
||||
// and the book "The Elements of Computing Systems"
|
||||
// by Nisan and Schocken, MIT Press.
|
||||
// File name: projects/1/Or16.hdl
|
||||
/**
|
||||
* 16-bit Or gate:
|
||||
* for i = 0, ..., 15:
|
||||
* out[i] = a[i] Or b[i]
|
||||
*/
|
||||
CHIP Or16 {
|
||||
IN a[16], b[16];
|
||||
OUT out[16];
|
||||
|
||||
PARTS:
|
||||
|
||||
Or(a=a[0],b=b[0],out=out[0]);
|
||||
Or(a=a[1],b=b[1],out=out[1]);
|
||||
Or(a=a[2],b=b[2],out=out[2]);
|
||||
Or(a=a[3],b=b[3],out=out[3]);
|
||||
Or(a=a[4],b=b[4],out=out[4]);
|
||||
Or(a=a[5],b=b[5],out=out[5]);
|
||||
Or(a=a[6],b=b[6],out=out[6]);
|
||||
Or(a=a[7],b=b[7],out=out[7]);
|
||||
Or(a=a[8],b=b[8],out=out[8]);
|
||||
Or(a=a[9],b=b[9],out=out[9]);
|
||||
Or(a=a[10],b=b[10],out=out[10]);
|
||||
Or(a=a[11],b=b[11],out=out[11]);
|
||||
Or(a=a[12],b=b[12],out=out[12]);
|
||||
Or(a=a[13],b=b[13],out=out[13]);
|
||||
Or(a=a[14],b=b[14],out=out[14]);
|
||||
Or(a=a[15],b=b[15],out=out[15]);
|
||||
}
|
||||
25
project-1-boolean-logic/01/Or8Way.hdl
Executable file
25
project-1-boolean-logic/01/Or8Way.hdl
Executable file
@@ -0,0 +1,25 @@
|
||||
// This file is part of www.nand2tetris.org
|
||||
// and the book "The Elements of Computing Systems"
|
||||
// by Nisan and Schocken, MIT Press.
|
||||
// File name: projects/1/Or8Way.hdl
|
||||
/**
|
||||
* 8-way Or gate:
|
||||
* out = in[0] Or in[1] Or ... Or in[7]
|
||||
*/
|
||||
CHIP Or8Way {
|
||||
IN in[8];
|
||||
OUT out;
|
||||
|
||||
PARTS:
|
||||
|
||||
Or(a= in[0], b=in[1] , out=out00 );
|
||||
Or(a= in[2], b=in[3] , out=out01 );
|
||||
Or(a= in[4], b=in[5] , out=out02 );
|
||||
Or(a= in[6], b=in[7] , out=out03 );
|
||||
|
||||
Or(a= out00 , b= out01 , out= out0001 );
|
||||
Or(a= out02, b=out03 , out=out0203 );
|
||||
|
||||
Or(a=out0001 , b=out0203 , out= out );
|
||||
|
||||
}
|
||||
23
project-1-boolean-logic/01/Xor.hdl
Executable file
23
project-1-boolean-logic/01/Xor.hdl
Executable file
@@ -0,0 +1,23 @@
|
||||
// This file is part of www.nand2tetris.org
|
||||
// and the book "The Elements of Computing Systems"
|
||||
// by Nisan and Schocken, MIT Press.
|
||||
// File name: projects/1/Xor.hdl
|
||||
/**
|
||||
* Exclusive-or gate:
|
||||
* if ((a and Not(b)) or (Not(a) and b)) out = 1, else out = 0
|
||||
*/
|
||||
CHIP Xor {
|
||||
IN a, b;
|
||||
OUT out;
|
||||
PARTS:
|
||||
|
||||
Not(in=a , out=nota );
|
||||
Not(in=b , out=notb );
|
||||
|
||||
And(a= a, b= notb , out= aAndNotB );
|
||||
And(a= b, b= nota, out= bAndNotA );
|
||||
|
||||
Or(a= aAndNotB, b=bAndNotA , out= out);
|
||||
|
||||
//// Replace this comment with your code.
|
||||
}
|
||||
BIN
project-1-boolean-logic/boolean_logic.pdf
Normal file
BIN
project-1-boolean-logic/boolean_logic.pdf
Normal file
Binary file not shown.
BIN
project-1-boolean-logic/project_1.pdf
Normal file
BIN
project-1-boolean-logic/project_1.pdf
Normal file
Binary file not shown.
Reference in New Issue
Block a user