add project 1, 2, 3 HDLs
This commit is contained in:
		
							
								
								
									
										20
									
								
								projects/01/And.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								projects/01/And.hdl
									
									
									
									
									
										Normal 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/01/And.hdl | ||||
|  | ||||
| /** | ||||
|  * And gate: | ||||
|  * out = 1 if (a == 1 and b == 1) | ||||
|  *       0 otherwise | ||||
|  */ | ||||
|  | ||||
| CHIP And { | ||||
|     IN a, b; | ||||
|     OUT out; | ||||
|  | ||||
|     PARTS: | ||||
|     // Put your code here: | ||||
|     Nand(a=a, b=b, out=outz); | ||||
|     Nand(a=outz, b=outz, out=out); | ||||
| } | ||||
							
								
								
									
										33
									
								
								projects/01/And16.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								projects/01/And16.hdl
									
									
									
									
									
										Normal 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/01/And16.hdl | ||||
|  | ||||
| /** | ||||
|  * 16-bit bitwise And: | ||||
|  * for i = 0..15: out[i] = (a[i] and b[i]) | ||||
|  */ | ||||
|  | ||||
| CHIP And16 { | ||||
|     IN a[16], b[16]; | ||||
|     OUT out[16]; | ||||
|  | ||||
|     PARTS: | ||||
|     // Put your code here: | ||||
|     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]); | ||||
| } | ||||
							
								
								
									
										21
									
								
								projects/01/DMux.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								projects/01/DMux.hdl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| // 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/DMux.hdl | ||||
|  | ||||
| /** | ||||
|  * Demultiplexor: | ||||
|  * {a, b} = {in, 0} if sel == 0 | ||||
|  *          {0, in} if sel == 1 | ||||
|  */ | ||||
|  | ||||
| CHIP DMux { | ||||
|     IN in, sel; | ||||
|     OUT a, b; | ||||
|  | ||||
|     PARTS: | ||||
|     // Put your code here: | ||||
|     Not(in=sel, out=nsel); | ||||
|     And(a=in, b=sel, out=b); | ||||
|     And(a=in, b=nsel, out=a); | ||||
| } | ||||
							
								
								
									
										25
									
								
								projects/01/DMux4Way.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								projects/01/DMux4Way.hdl
									
									
									
									
									
										Normal 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/01/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: | ||||
|     // Put your code here: | ||||
|     // IN in, sel; | ||||
|     // OUT a, b; | ||||
|     DMux(in=in, sel=sel[1], a=x, b=y); | ||||
|     DMux(in=x, sel=sel[0], a=a, b=b); | ||||
|     DMux(in=y, sel=sel[0], a=c, b=d); | ||||
| } | ||||
							
								
								
									
										27
									
								
								projects/01/DMux8Way.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								projects/01/DMux8Way.hdl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| // 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/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 | ||||
|  *                            etc. | ||||
|  *                            {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: | ||||
|     // Put your code here: | ||||
|     DMux(in=in, sel=sel[2], a=i, b=j); | ||||
|     DMux(in=i, sel=sel[1], a=w, b=x); | ||||
|     DMux(in=j, sel=sel[1], a=y, b=z); | ||||
|     DMux(in=w, sel=sel[0], a=a, b=b); | ||||
|     DMux(in=x, sel=sel[0], a=c, b=d); | ||||
|     DMux(in=y, sel=sel[0], a=e, b=f); | ||||
|     DMux(in=z, sel=sel[0], a=g, b=h); | ||||
| } | ||||
							
								
								
									
										22
									
								
								projects/01/Mux.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								projects/01/Mux.hdl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| // 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/Mux.hdl | ||||
|  | ||||
| /**  | ||||
|  * Multiplexor: | ||||
|  * out = a if sel == 0 | ||||
|  *       b otherwise | ||||
|  */ | ||||
|  | ||||
| CHIP Mux { | ||||
|     IN a, b, sel; | ||||
|     OUT out; | ||||
|  | ||||
|     PARTS: | ||||
|     // Put your code here: | ||||
|     Not(in=sel, out=nsel); | ||||
|     And(a=b, b=sel, out=outx); | ||||
|     And(a=a, b=nsel, out=outy); | ||||
|     Or(a=outx, b=outy, out=out); | ||||
| } | ||||
							
								
								
									
										34
									
								
								projects/01/Mux16.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								projects/01/Mux16.hdl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | ||||
| // 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/Mux16.hdl | ||||
|  | ||||
| /** | ||||
|  * 16-bit multiplexor:  | ||||
|  * for i = 0..15 out[i] = a[i] if sel == 0  | ||||
|  *                        b[i] if sel == 1 | ||||
|  */ | ||||
|  | ||||
| CHIP Mux16 { | ||||
|     IN a[16], b[16], sel; | ||||
|     OUT out[16]; | ||||
|  | ||||
|     PARTS: | ||||
|     // Put your code here: | ||||
|     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]); | ||||
| } | ||||
							
								
								
									
										25
									
								
								projects/01/Mux4Way16.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								projects/01/Mux4Way16.hdl
									
									
									
									
									
										Normal 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/01/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: | ||||
|     // Put your code here: | ||||
|     // IN a[16], b[16], sel; | ||||
|     // OUT out[16]; | ||||
|     Mux16(a=a, b=b, sel=sel[0], out=outab); | ||||
|     Mux16(a=c, b=d, sel=sel[0], out=outcd); | ||||
|     Mux16(a=outab, b=outcd, sel=sel[1], out=out); | ||||
| } | ||||
							
								
								
									
										29
									
								
								projects/01/Mux8Way16.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								projects/01/Mux8Way16.hdl
									
									
									
									
									
										Normal 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/01/Mux8Way16.hdl | ||||
|  | ||||
| /** | ||||
|  * 8-way 16-bit multiplexor: | ||||
|  * out = a if sel == 000 | ||||
|  *       b if sel == 001 | ||||
|  *       etc. | ||||
|  *       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: | ||||
|     // Put your code here: | ||||
|     Mux16(a=a, b=b, sel=sel[0], out=outab); | ||||
|     Mux16(a=c, b=d, sel=sel[0], out=outcd); | ||||
|     Mux16(a=e, b=f, sel=sel[0], out=outef); | ||||
|     Mux16(a=g, b=h, sel=sel[0], out=outgh); | ||||
|     Mux16(a=outab, b=outcd, sel=sel[1], out=outabcd); | ||||
|     Mux16(a=outef, b=outgh, sel=sel[1], out=outefgh); | ||||
|     Mux16(a=outabcd, b=outefgh, sel=sel[2], out=out); | ||||
| } | ||||
							
								
								
									
										18
									
								
								projects/01/Not.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								projects/01/Not.hdl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| // 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/Not.hdl | ||||
|  | ||||
| /** | ||||
|  * Not gate: | ||||
|  * out = not in | ||||
|  */ | ||||
|  | ||||
| CHIP Not { | ||||
|     IN in; | ||||
|     OUT out; | ||||
|  | ||||
|     PARTS: | ||||
|     // Put your code here: | ||||
|     Nand(a=in, b=in, out=out); | ||||
| } | ||||
							
								
								
									
										33
									
								
								projects/01/Not16.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								projects/01/Not16.hdl
									
									
									
									
									
										Normal 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/01/Not16.hdl | ||||
|  | ||||
| /** | ||||
|  * 16-bit Not: | ||||
|  * for i=0..15: out[i] = not in[i] | ||||
|  */ | ||||
|  | ||||
| CHIP Not16 { | ||||
|     IN in[16]; | ||||
|     OUT out[16]; | ||||
|  | ||||
|     PARTS: | ||||
|     // Put your code here: | ||||
|     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]); | ||||
| } | ||||
							
								
								
									
										21
									
								
								projects/01/Or.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								projects/01/Or.hdl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| // 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/Or.hdl | ||||
|  | ||||
|  /** | ||||
|  * Or gate: | ||||
|  * out = 1 if (a == 1 or b == 1) | ||||
|  *       0 otherwise | ||||
|  */ | ||||
|  | ||||
| CHIP Or { | ||||
|     IN a, b; | ||||
|     OUT out; | ||||
|  | ||||
|     PARTS: | ||||
|     // Put your code here: | ||||
|     Nand(a=a, b=a, out=outx); | ||||
|     Nand(a=b, b=b, out=outy); | ||||
|     Nand(a=outx, b=outy, out=out); | ||||
| } | ||||
							
								
								
									
										33
									
								
								projects/01/Or16.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								projects/01/Or16.hdl
									
									
									
									
									
										Normal 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/01/Or16.hdl | ||||
|  | ||||
| /** | ||||
|  * 16-bit bitwise Or: | ||||
|  * 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: | ||||
|     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]); | ||||
| } | ||||
							
								
								
									
										24
									
								
								projects/01/Or8Way.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								projects/01/Or8Way.hdl
									
									
									
									
									
										Normal 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/01/Or8Way.hdl | ||||
|  | ||||
| /** | ||||
|  * 8-way Or:  | ||||
|  * out = (in[0] or in[1] or ... or in[7]) | ||||
|  */ | ||||
|  | ||||
| CHIP Or8Way { | ||||
|     IN in[8]; | ||||
|     OUT out; | ||||
|  | ||||
|     PARTS: | ||||
|     // Put your code here: | ||||
|     Or(a=in[0], b=in[1], out=stepA); | ||||
|     Or(a=in[2], b=stepA, out=stepB); | ||||
|     Or(a=in[3], b=stepB, out=stepC); | ||||
|     Or(a=in[4], b=stepC, out=stepD); | ||||
|     Or(a=in[5], b=stepD, out=stepE); | ||||
|     Or(a=in[6], b=stepE, out=stepF); | ||||
|     Or(a=in[7], b=stepF, out=out); | ||||
| } | ||||
							
								
								
									
										21
									
								
								projects/01/Xor.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								projects/01/Xor.hdl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| // 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/Xor.hdl | ||||
|  | ||||
| /** | ||||
|  * Exclusive-or gate: | ||||
|  * out = not (a == b) | ||||
|  */ | ||||
|  | ||||
| CHIP Xor { | ||||
|     IN a, b; | ||||
|     OUT out; | ||||
|  | ||||
|     PARTS: | ||||
|     // Put your code here: | ||||
|     Nand(a=a, b=b, out=outz); | ||||
|     Nand(a=a, b=outz, out=outx); | ||||
|     Nand(a=b, b=outz, out=outy); | ||||
|     Nand(a=outx, b=outy, out=out);  | ||||
| } | ||||
							
								
								
									
										66
									
								
								projects/02/ALU.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								projects/02/ALU.hdl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,66 @@ | ||||
| // 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/02/ALU.hdl | ||||
|  | ||||
| /** | ||||
|  * The ALU (Arithmetic Logic Unit). | ||||
|  * Computes one of the following functions: | ||||
|  * x+y, x-y, y-x, 0, 1, -1, x, y, -x, -y, !x, !y, | ||||
|  * x+1, y+1, x-1, y-1, x&y, x|y on two 16-bit inputs,  | ||||
|  * according to 6 input bits denoted zx,nx,zy,ny,f,no. | ||||
|  * In addition, the ALU computes two 1-bit outputs: | ||||
|  * if the ALU output == 0, zr is set to 1; otherwise zr is set to 0; | ||||
|  * if the ALU output < 0, ng is set to 1; otherwise ng is set to 0. | ||||
|  */ | ||||
|  | ||||
| // Implementation: the ALU logic manipulates the x and y inputs | ||||
| // and operates on the resulting values, as follows: | ||||
| // if (zx == 1) set x = 0        // 16-bit constant | ||||
| // if (nx == 1) set x = !x       // bitwise not | ||||
| // if (zy == 1) set y = 0        // 16-bit constant | ||||
| // if (ny == 1) set y = !y       // bitwise not | ||||
| // if (f == 1)  set out = x + y  // integer 2's complement addition | ||||
| // if (f == 0)  set out = x & y  // bitwise and | ||||
| // if (no == 1) set out = !out   // bitwise not | ||||
| // if (out == 0) set zr = 1 | ||||
| // if (out < 0) set ng = 1 | ||||
|  | ||||
| CHIP ALU { | ||||
|     IN   | ||||
|         x[16], y[16],  // 16-bit inputs         | ||||
|         zx, // zero the x input? | ||||
|         nx, // negate the x input? | ||||
|         zy, // zero the y input? | ||||
|         ny, // negate the y input? | ||||
|         f,  // compute out = x + y (if 1) or x & y (if 0) | ||||
|         no; // negate the out output? | ||||
|  | ||||
|     OUT  | ||||
|         out[16], // 16-bit output | ||||
|         zr, // 1 if (out == 0), 0 otherwise | ||||
|         ng; // 1 if (out < 0),  0 otherwise | ||||
|  | ||||
|     PARTS: | ||||
|     // Put you code here: | ||||
|     Mux16(a=x, b=false, sel=zx, out=xa); | ||||
|     Not16(in=xa, out=xb); | ||||
|     Mux16(a=xa, b=xb, sel=nx, out=xc); | ||||
|  | ||||
|     Mux16(a=y, b=false, sel=zy, out=ya); | ||||
|     Not16(in=ya, out=yb); | ||||
|     Mux16(a=ya, b=yb, sel=ny, out=yc); | ||||
|  | ||||
|     And16(a=xc, b=yc, out=xandy); | ||||
|     Add16(a=xc, b=yc, out=xplusy); | ||||
|     Mux16(a=xandy, b=xplusy, sel=f, out=xf); | ||||
|  | ||||
|     Not16(in=xf, out=xn); | ||||
|     Mux16(a=xf, b=xn, sel=no, out=out, out[15]=ngr, out[0..7]=zri, out[8..15]=zrj); | ||||
|  | ||||
|     Or8Way(in=zri, out=zrm); | ||||
|     Or8Way(in=zrj, out=zrn); | ||||
|     Or(a=zrm, b=zrn, out=zro); | ||||
|     Not(in=zro, out=zr); | ||||
|     Mux(a=false, b=true, sel=ngr, out=ng); | ||||
| } | ||||
							
								
								
									
										33
									
								
								projects/02/Add16.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								projects/02/Add16.hdl
									
									
									
									
									
										Normal 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/02/Adder16.hdl | ||||
|  | ||||
| /** | ||||
|  * Adds two 16-bit values. | ||||
|  * The most significant carry bit is ignored. | ||||
|  */ | ||||
|  | ||||
| CHIP Add16 { | ||||
|     IN a[16], b[16]; | ||||
|     OUT out[16]; | ||||
|  | ||||
|     PARTS: | ||||
|     // Put you code here: | ||||
|     HalfAdder(a=a[0], b=b[0], sum=out[0], carry=carry0); | ||||
|     FullAdder(a=a[1], b=b[1], c=carry0, sum=out[1], carry=carry1); | ||||
|     FullAdder(a=a[2], b=b[2], c=carry1, sum=out[2], carry=carry2); | ||||
|     FullAdder(a=a[3], b=b[3], c=carry2, sum=out[3], carry=carry3); | ||||
|     FullAdder(a=a[4], b=b[4], c=carry3, sum=out[4], carry=carry4); | ||||
|     FullAdder(a=a[5], b=b[5], c=carry4, sum=out[5], carry=carry5); | ||||
|     FullAdder(a=a[6], b=b[6], c=carry5, sum=out[6], carry=carry6); | ||||
|     FullAdder(a=a[7], b=b[7], c=carry6, sum=out[7], carry=carry7); | ||||
|     FullAdder(a=a[8], b=b[8], c=carry7, sum=out[8], carry=carry8); | ||||
|     FullAdder(a=a[9], b=b[9], c=carry8, sum=out[9], carry=carry9); | ||||
|     FullAdder(a=a[10], b=b[10], c=carry9, sum=out[10], carry=carry10); | ||||
|     FullAdder(a=a[11], b=b[11], c=carry10, sum=out[11], carry=carry11); | ||||
|     FullAdder(a=a[12], b=b[12], c=carry11, sum=out[12], carry=carry12); | ||||
|     FullAdder(a=a[13], b=b[13], c=carry12, sum=out[13], carry=carry13); | ||||
|     FullAdder(a=a[14], b=b[14], c=carry13, sum=out[14], carry=carry14); | ||||
|     FullAdder(a=a[15], b=b[15], c=carry14, sum=out[15], carry=carry15); | ||||
| } | ||||
							
								
								
									
										20
									
								
								projects/02/FullAdder.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								projects/02/FullAdder.hdl
									
									
									
									
									
										Normal 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/02/FullAdder.hdl | ||||
|  | ||||
| /** | ||||
|  * Computes the sum of three bits. | ||||
|  */ | ||||
|  | ||||
| CHIP FullAdder { | ||||
|     IN a, b, c;  // 1-bit inputs | ||||
|     OUT sum,     // Right bit of a + b + c | ||||
|         carry;   // Left bit of a + b + c | ||||
|  | ||||
|     PARTS: | ||||
|     // Put you code here: | ||||
|     HalfAdder(a=a, b=b, sum=sumi, carry=carryi); | ||||
|     HalfAdder(a=c, b=sumi, sum=sum, carry=carryj); | ||||
|     Or(a=carryi, b=carryj, out=carry); | ||||
| } | ||||
							
								
								
									
										19
									
								
								projects/02/HalfAdder.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								projects/02/HalfAdder.hdl
									
									
									
									
									
										Normal 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/02/HalfAdder.hdl | ||||
|  | ||||
| /** | ||||
|  * Computes the sum of two bits. | ||||
|  */ | ||||
|  | ||||
| CHIP HalfAdder { | ||||
|     IN a, b;    // 1-bit inputs | ||||
|     OUT sum,    // Right bit of a + b  | ||||
|         carry;  // Left bit of a + b | ||||
|  | ||||
|     PARTS: | ||||
|     // Put you code here: | ||||
|     Xor(a=a, b=b, out=sum); | ||||
|     And(a=a, b=b, out=carry); | ||||
| } | ||||
							
								
								
									
										18
									
								
								projects/02/Inc16.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								projects/02/Inc16.hdl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| // 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/02/Inc16.hdl | ||||
|  | ||||
| /** | ||||
|  * 16-bit incrementer: | ||||
|  * out = in + 1 (arithmetic addition) | ||||
|  */ | ||||
|  | ||||
| CHIP Inc16 { | ||||
|     IN in[16]; | ||||
|     OUT out[16]; | ||||
|  | ||||
|     PARTS: | ||||
|     // Put you code here: | ||||
|     Add16(a=in, b[0]=true, b[1..15]=false, out=out); | ||||
| } | ||||
							
								
								
									
										20
									
								
								projects/03/a/Bit.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								projects/03/a/Bit.hdl
									
									
									
									
									
										Normal 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/03/a/Bit.hdl | ||||
|  | ||||
| /** | ||||
|  * 1-bit register: | ||||
|  * If load[t] == 1 then out[t+1] = in[t] | ||||
|  *                 else out does not change (out[t+1] = out[t]) | ||||
|  */ | ||||
|  | ||||
| CHIP Bit { | ||||
|     IN in, load; | ||||
|     OUT out; | ||||
|  | ||||
|     PARTS: | ||||
|     // Put your code here: | ||||
|     Mux(a=dffout, b=in, sel=load, out=muxout); | ||||
|     DFF(in=muxout, out=out, out=dffout); | ||||
| } | ||||
							
								
								
									
										25
									
								
								projects/03/a/PC.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								projects/03/a/PC.hdl
									
									
									
									
									
										Normal 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/03/a/PC.hdl | ||||
|  | ||||
| /** | ||||
|  * A 16-bit counter with load and reset control bits. | ||||
|  * if      (reset[t] == 1) out[t+1] = 0 | ||||
|  * else if (load[t] == 1)  out[t+1] = in[t] | ||||
|  * else if (inc[t] == 1)   out[t+1] = out[t] + 1  (integer addition) | ||||
|  * else                    out[t+1] = out[t] | ||||
|  */ | ||||
|  | ||||
| CHIP PC { | ||||
|     IN in[16], load, inc, reset; | ||||
|     OUT out[16]; | ||||
|  | ||||
|     PARTS: | ||||
|     // Put your code here: | ||||
|     Inc16(in=registerValue, out=incrementedValue); | ||||
|     Mux16(a=registerValue, b=incrementedValue, sel=inc, out=incBitStep); | ||||
|     Mux16(a=incBitStep, b=in, sel=load, out=loadBitStep); | ||||
|     Mux16(a=loadBitStep, b=false, sel=reset, out=resetBitStep); | ||||
|     Register(in=resetBitStep, load=true, out=out, out=registerValue); | ||||
| } | ||||
							
								
								
									
										45
									
								
								projects/03/a/RAM64.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								projects/03/a/RAM64.hdl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| // 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/03/a/RAM64.hdl | ||||
|  | ||||
| /** | ||||
|  * Memory of 64 registers, each 16 bit-wide. Out holds the value | ||||
|  * stored at the memory location specified by address. If load==1, then  | ||||
|  * the in value is loaded into the memory location specified by address  | ||||
|  * (the loaded value will be emitted to out from the next time step onward). | ||||
|  */ | ||||
|  | ||||
| CHIP RAM64 { | ||||
|     IN in[16], load, address[6]; | ||||
|     OUT out[16]; | ||||
|  | ||||
|     PARTS: | ||||
|     // Put your code here: | ||||
|     DMux8Way(in=load, sel=address[3..5], a=toRAM8A, | ||||
|                                          b=toRAM8B, | ||||
|                                          c=toRAM8C, | ||||
|                                          d=toRAM8D, | ||||
|                                          e=toRAM8E, | ||||
|                                          f=toRAM8F, | ||||
|                                          g=toRAM8G, | ||||
|                                          h=toRAM8H); | ||||
|  | ||||
|     RAM8(in=in, load=toRAM8A, address=address[0..2], out=fromRAM8A); | ||||
|     RAM8(in=in, load=toRAM8B, address=address[0..2], out=fromRAM8B); | ||||
|     RAM8(in=in, load=toRAM8C, address=address[0..2], out=fromRAM8C); | ||||
|     RAM8(in=in, load=toRAM8D, address=address[0..2], out=fromRAM8D); | ||||
|     RAM8(in=in, load=toRAM8E, address=address[0..2], out=fromRAM8E); | ||||
|     RAM8(in=in, load=toRAM8F, address=address[0..2], out=fromRAM8F); | ||||
|     RAM8(in=in, load=toRAM8G, address=address[0..2], out=fromRAM8G); | ||||
|     RAM8(in=in, load=toRAM8H, address=address[0..2], out=fromRAM8H); | ||||
|  | ||||
|     Mux8Way16(sel=address[3..5], out=out, a=fromRAM8A, | ||||
|                                           b=fromRAM8B, | ||||
|                                           c=fromRAM8C, | ||||
|                                           d=fromRAM8D, | ||||
|                                           e=fromRAM8E, | ||||
|                                           f=fromRAM8F, | ||||
|                                           g=fromRAM8G, | ||||
|                                           h=fromRAM8H); | ||||
| } | ||||
							
								
								
									
										45
									
								
								projects/03/a/RAM8.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								projects/03/a/RAM8.hdl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| // 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/03/a/RAM8.hdl | ||||
|  | ||||
| /** | ||||
|  * Memory of 8 registers, each 16 bit-wide. Out holds the value | ||||
|  * stored at the memory location specified by address. If load==1, then  | ||||
|  * the in value is loaded into the memory location specified by address  | ||||
|  * (the loaded value will be emitted to out from the next time step onward). | ||||
|  */ | ||||
|  | ||||
| CHIP RAM8 { | ||||
|     IN in[16], load, address[3]; | ||||
|     OUT out[16]; | ||||
|  | ||||
|     PARTS: | ||||
|     // Put your code here: | ||||
|     DMux8Way(in=load, sel=address, a=toRegisterA, | ||||
|                                    b=toRegisterB, | ||||
|                                    c=toRegisterC, | ||||
|                                    d=toRegisterD, | ||||
|                                    e=toRegisterE, | ||||
|                                    f=toRegisterF, | ||||
|                                    g=toRegisterG, | ||||
|                                    h=toRegisterH); | ||||
|  | ||||
|     Register(in=in, load=toRegisterA, out=fromRegisterA); | ||||
|     Register(in=in, load=toRegisterB, out=fromRegisterB); | ||||
|     Register(in=in, load=toRegisterC, out=fromRegisterC); | ||||
|     Register(in=in, load=toRegisterD, out=fromRegisterD); | ||||
|     Register(in=in, load=toRegisterE, out=fromRegisterE); | ||||
|     Register(in=in, load=toRegisterF, out=fromRegisterF); | ||||
|     Register(in=in, load=toRegisterG, out=fromRegisterG); | ||||
|     Register(in=in, load=toRegisterH, out=fromRegisterH); | ||||
|  | ||||
|     Mux8Way16(sel=address, out=out, a=fromRegisterA, | ||||
|                                     b=fromRegisterB, | ||||
|                                     c=fromRegisterC, | ||||
|                                     d=fromRegisterD, | ||||
|                                     e=fromRegisterE, | ||||
|                                     f=fromRegisterF, | ||||
|                                     g=fromRegisterG, | ||||
|                                     h=fromRegisterH); | ||||
| } | ||||
							
								
								
									
										34
									
								
								projects/03/a/Register.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								projects/03/a/Register.hdl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | ||||
| // 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/03/a/Register.hdl | ||||
|  | ||||
| /** | ||||
|  * 16-bit register: | ||||
|  * If load[t] == 1 then out[t+1] = in[t] | ||||
|  * else out does not change | ||||
|  */ | ||||
|  | ||||
| CHIP Register { | ||||
|     IN in[16], load; | ||||
|     OUT out[16]; | ||||
|  | ||||
|     PARTS: | ||||
|     // Put your code here: | ||||
|     Bit(in=in[0], load=load, out=out[0]); | ||||
|     Bit(in=in[1], load=load, out=out[1]); | ||||
|     Bit(in=in[2], load=load, out=out[2]); | ||||
|     Bit(in=in[3], load=load, out=out[3]); | ||||
|     Bit(in=in[4], load=load, out=out[4]); | ||||
|     Bit(in=in[5], load=load, out=out[5]); | ||||
|     Bit(in=in[6], load=load, out=out[6]); | ||||
|     Bit(in=in[7], load=load, out=out[7]); | ||||
|     Bit(in=in[8], load=load, out=out[8]); | ||||
|     Bit(in=in[9], load=load, out=out[9]); | ||||
|     Bit(in=in[10], load=load, out=out[10]); | ||||
|     Bit(in=in[11], load=load, out=out[11]); | ||||
|     Bit(in=in[12], load=load, out=out[12]); | ||||
|     Bit(in=in[13], load=load, out=out[13]); | ||||
|     Bit(in=in[14], load=load, out=out[14]); | ||||
|     Bit(in=in[15], load=load, out=out[15]); | ||||
| } | ||||
							
								
								
									
										33
									
								
								projects/03/b/RAM16K.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								projects/03/b/RAM16K.hdl
									
									
									
									
									
										Normal 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/03/b/RAM16K.hdl | ||||
|  | ||||
| /** | ||||
|  * Memory of 16K registers, each 16 bit-wide. Out holds the value | ||||
|  * stored at the memory location specified by address. If load==1, then  | ||||
|  * the in value is loaded into the memory location specified by address  | ||||
|  * (the loaded value will be emitted to out from the next time step onward). | ||||
|  */ | ||||
|  | ||||
| CHIP RAM16K { | ||||
|     IN in[16], load, address[14]; | ||||
|     OUT out[16]; | ||||
|  | ||||
|     PARTS: | ||||
|     // Put your code here: | ||||
|     DMux4Way(in=load, sel=address[12..13], a=toRAM4KA, | ||||
|                                            b=toRAM4KB, | ||||
|                                            c=toRAM4KC, | ||||
|                                            d=toRAM4KD); | ||||
|  | ||||
|     RAM4K(in=in, load=toRAM4KA, address=address[0..11], out=fromRAM4KA); | ||||
|     RAM4K(in=in, load=toRAM4KB, address=address[0..11], out=fromRAM4KB); | ||||
|     RAM4K(in=in, load=toRAM4KC, address=address[0..11], out=fromRAM4KC); | ||||
|     RAM4K(in=in, load=toRAM4KD, address=address[0..11], out=fromRAM4KD); | ||||
|  | ||||
|     Mux4Way16(sel=address[12..13], out=out, a=fromRAM4KA, | ||||
|                                             b=fromRAM4KB, | ||||
|                                             c=fromRAM4KC, | ||||
|                                             d=fromRAM4KD); | ||||
| } | ||||
							
								
								
									
										45
									
								
								projects/03/b/RAM4K.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								projects/03/b/RAM4K.hdl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| // 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/03/b/RAM4K.hdl | ||||
|  | ||||
| /** | ||||
|  * Memory of 4K registers, each 16 bit-wide. Out holds the value | ||||
|  * stored at the memory location specified by address. If load==1, then  | ||||
|  * the in value is loaded into the memory location specified by address  | ||||
|  * (the loaded value will be emitted to out from the next time step onward). | ||||
|  */ | ||||
|  | ||||
| CHIP RAM4K { | ||||
|     IN in[16], load, address[12]; | ||||
|     OUT out[16]; | ||||
|  | ||||
|     PARTS: | ||||
|     // Put your code here: | ||||
|     DMux8Way(in=load, sel=address[9..11], a=toRAM512A, | ||||
|                                           b=toRAM512B, | ||||
|                                           c=toRAM512C, | ||||
|                                           d=toRAM512D, | ||||
|                                           e=toRAM512E, | ||||
|                                           f=toRAM512F, | ||||
|                                           g=toRAM512G, | ||||
|                                           h=toRAM512H); | ||||
|  | ||||
|     RAM512(in=in, load=toRAM512A, address=address[0..8], out=fromRAM512A); | ||||
|     RAM512(in=in, load=toRAM512B, address=address[0..8], out=fromRAM512B); | ||||
|     RAM512(in=in, load=toRAM512C, address=address[0..8], out=fromRAM512C); | ||||
|     RAM512(in=in, load=toRAM512D, address=address[0..8], out=fromRAM512D); | ||||
|     RAM512(in=in, load=toRAM512E, address=address[0..8], out=fromRAM512E); | ||||
|     RAM512(in=in, load=toRAM512F, address=address[0..8], out=fromRAM512F); | ||||
|     RAM512(in=in, load=toRAM512G, address=address[0..8], out=fromRAM512G); | ||||
|     RAM512(in=in, load=toRAM512H, address=address[0..8], out=fromRAM512H); | ||||
|  | ||||
|     Mux8Way16(sel=address[9..11], out=out, a=fromRAM512A, | ||||
|                                            b=fromRAM512B, | ||||
|                                            c=fromRAM512C, | ||||
|                                            d=fromRAM512D, | ||||
|                                            e=fromRAM512E, | ||||
|                                            f=fromRAM512F, | ||||
|                                            g=fromRAM512G, | ||||
|                                            h=fromRAM512H); | ||||
| } | ||||
							
								
								
									
										45
									
								
								projects/03/b/RAM512.hdl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								projects/03/b/RAM512.hdl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| // This file is part of the materials accompanying the book  | ||||
| // "The Elements of Computing Systems" by Nisan and Schocken,  | ||||
| // MIT Press. Book site: www.idc.ac.il/tecs | ||||
| // File name: projects/03/b/RAM512.hdl | ||||
|  | ||||
| /** | ||||
|  * Memory of 512 registers, each 16 bit-wide. Out holds the value | ||||
|  * stored at the memory location specified by address. If load==1, then  | ||||
|  * the in value is loaded into the memory location specified by address  | ||||
|  * (the loaded value will be emitted to out from the next time step onward). | ||||
|  */ | ||||
|  | ||||
| CHIP RAM512 { | ||||
|     IN in[16], load, address[9]; | ||||
|     OUT out[16]; | ||||
|  | ||||
|     PARTS: | ||||
|     // Put your code here: | ||||
|     DMux8Way(in=load, sel=address[6..8], a=toRAM64A, | ||||
|                                          b=toRAM64B, | ||||
|                                          c=toRAM64C, | ||||
|                                          d=toRAM64D, | ||||
|                                          e=toRAM64E, | ||||
|                                          f=toRAM64F, | ||||
|                                          g=toRAM64G, | ||||
|                                          h=toRAM64H); | ||||
|  | ||||
|     RAM64(in=in, load=toRAM64A, address=address[0..5], out=fromRAM64A); | ||||
|     RAM64(in=in, load=toRAM64B, address=address[0..5], out=fromRAM64B); | ||||
|     RAM64(in=in, load=toRAM64C, address=address[0..5], out=fromRAM64C); | ||||
|     RAM64(in=in, load=toRAM64D, address=address[0..5], out=fromRAM64D); | ||||
|     RAM64(in=in, load=toRAM64E, address=address[0..5], out=fromRAM64E); | ||||
|     RAM64(in=in, load=toRAM64F, address=address[0..5], out=fromRAM64F); | ||||
|     RAM64(in=in, load=toRAM64G, address=address[0..5], out=fromRAM64G); | ||||
|     RAM64(in=in, load=toRAM64H, address=address[0..5], out=fromRAM64H); | ||||
|  | ||||
|     Mux8Way16(sel=address[6..8], out=out, a=fromRAM64A, | ||||
|                                           b=fromRAM64B, | ||||
|                                           c=fromRAM64C, | ||||
|                                           d=fromRAM64D, | ||||
|                                           e=fromRAM64E, | ||||
|                                           f=fromRAM64F, | ||||
|                                           g=fromRAM64G, | ||||
|                                           h=fromRAM64H); | ||||
| } | ||||
		Reference in New Issue
	
	Block a user