|
I know that the program won't load into the hardware sim, if the program is wrong, however i can't see where I'm going wrong. This is the code that I have made for the CPU. I can't seem to find where I have gone wrong
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:
// Put your code here:
Mux16(a=aregout, b=inM, sel=instruction[12], out=aluy);
ALU(x=alux, y=aluy, zx=instruction[11], nx=instruction[10], zy=instruction[9], ny=instruction[8], f=instruction[7], no=instruction[6], out=outM, out=aluout, zr=zr, ng=ng);
DRegister(in=aluout, load=instruction[4], out=alux);
ARegister(in=ain, load=instruction[5], out=aregout, out=addressM);
Mux16(a=instruction, b=aluout, sel=instruction[15], out=ain);
And(a=instruction[2], b=ng, out=jlt);
And(a=instruction[1], b=zr, out=jeq);
Nand(a=zr, b=ng, out=gt);
And(a=gt, b=instruction[0], out=jgt);
Or(a=jgt, b=jlt, out=jm);
Or(a=jr, b=jeq, out=pcl);
PC(in=aregout, load=pcl, inc=true, reset=reset, out=pc);
And(a=instruction[3], b=instruction[3], out=writeM);
}
|