mirror of
https://github.com/soconnor0919/eceg431.git
synced 2025-12-11 22:54:43 -05:00
project05: base files
This commit is contained in:
36
05/CPU.hdl
Normal file
36
05/CPU.hdl
Normal file
@@ -0,0 +1,36 @@
|
||||
// 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/5/CPU.hdl
|
||||
/**
|
||||
* The Hack Central Processing unit (CPU).
|
||||
* Parses the binary code in the instruction input and executes it according to the
|
||||
* Hack machine language specification. In the case of a C-instruction, computes the
|
||||
* function specified by the instruction. If the instruction specifies to read a memory
|
||||
* value, the inM input is expected to contain this value. If the instruction specifies
|
||||
* to write a value to the memory, sets the outM output to this value, sets the addressM
|
||||
* output to the target address, and asserts the writeM output (when writeM = 0, any
|
||||
* value may appear in outM).
|
||||
* If the reset input is 0, computes the address of the next instruction and sets the
|
||||
* pc output to that value. If the reset input is 1, sets pc to 0.
|
||||
* Note: The outM and writeM outputs are combinational: they are affected by the
|
||||
* instruction's execution during the current cycle. The addressM and pc outputs are
|
||||
* clocked: although they are affected by the instruction's execution, they commit to
|
||||
* their new values only in the next cycle.
|
||||
*/
|
||||
CHIP CPU {
|
||||
|
||||
IN inM[16], // M value input (M = contents of RAM[A])
|
||||
instruction[16], // Instruction for execution
|
||||
reset; // Signals whether to re-start the current
|
||||
// program (reset==1) or continue executing
|
||||
// the current program (reset==0).
|
||||
|
||||
OUT outM[16], // M value output
|
||||
writeM, // Write to M?
|
||||
addressM[15], // Address in data memory (of M)
|
||||
pc[15]; // address of next instruction
|
||||
|
||||
PARTS:
|
||||
//// Replace this comment with your code.
|
||||
}
|
||||
Reference in New Issue
Block a user