From d3a0cc3a8ba6dfeb64d3faeffdeb6845b60e5840 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Sat, 20 Jan 2018 15:41:49 +0100 Subject: rearranged the dir for github - removed tools and pdfs - rearranged the projects dirs - added md files - other minor changes --- projects/05/Memory.hdl | 45 --------------------------------------------- 1 file changed, 45 deletions(-) delete mode 100644 projects/05/Memory.hdl (limited to 'projects/05/Memory.hdl') diff --git a/projects/05/Memory.hdl b/projects/05/Memory.hdl deleted file mode 100644 index 6aeb8a0..0000000 --- a/projects/05/Memory.hdl +++ /dev/null @@ -1,45 +0,0 @@ -// 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/05/Memory.hdl - -/** - * The complete address space of the Hack computer's memory, - * including RAM and memory-mapped I/O. - * The chip facilitates read and write operations, as follows: - * Read: out(t) = Memory[address(t)](t) - * Write: if load(t-1) then Memory[address(t-1)](t) = in(t-1) - * In words: the chip always outputs the value stored at the memory - * location specified by address. If load==1, the in value is loaded - * into the memory location specified by address. This value becomes - * available through the out output from the next time step onward. - * Address space rules: - * Only the upper 16K+8K+1 words of the Memory chip are used. - * Access to address>0x6000 is invalid. Access to any address in - * the range 0x4000-0x5FFF results in accessing the screen memory - * map. Access to address 0x6000 results in accessing the keyboard - * memory map. The behavior in these addresses is described in the - * Screen and Keyboard chip specifications given in the book. - */ - -CHIP Memory { - IN in[16], load, address[15]; - OUT out[16]; - - PARTS: - // Put your code here: - DMux(in=load, sel=address[14], a=mload, b=load1); - DMux(in=load1, sel=address[13], a=sload, b=kload); - RAM16K(in=in, load=mload, address=address[0..13], out=mout); - Screen(in=in, load=sload, address=address[0..12], out=sout); - - Or8Way(in=address[0..7], out=or1); - Or8Way(in=address[5..12], out=or2); - Or(a=or1, b=or2, out=ksel); - - Keyboard(out=kout); - - Mux16(a=kout, b=false, sel=ksel, out=fout1); - Mux16(a=sout, b=fout1, sel=address[13], out=fout2); - Mux16(a=mout, b=fout2, sel=address[14], out=out); -} -- cgit v1.2.3