2015-05-29 14 views
-3

У меня есть этот код CPU.hdl.CPU.hdl - Нужно пояснить код

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 into M? 
    addressM[15], // Address in data memory (of M) 
    pc[15];   // address of next instruction 

PARTS: 
Not(in=instruction[15], out=isAcmd); 
Not(in=isAcmd, out=isCcmd); 

// Create the ALU chip. 
// First input to ALU is always D; 2nd is A or M based on inst[12] 
Mux16(a=outA, b=inM, out=outAM, sel=instruction[12]); 
ALU(x=outD, y=outAM, zx=instruction[11], nx=instruction[10], zy=instruction[9], ny=instruction[8], f=instruction[7], no=instruction[6], out=outM, out=outALU, out=inD, zr=zr, ng=ng); 
//also need logic as to whether to write to M ... it's part of the instruction 
And(a=isCcmd, b=instruction[3], out=writeM); 
. 
. 
. 
} 

Я пытаюсь понять CPU.hdl. Я не понимаю 2 строки после PARTS. Что они достигают?

+0

На каком языке это? Это не VHDL или Verilog, которые являются двумя обычно используемыми ЛПВП. – Philippe

+0

@Philippe, это hdl от nand2tetris. этот язык я изучаю в школе. – theOtherOne

ответ

0

PARTS создает новые компоненты внутри процессора.

Например. есть NOT компонент, где порт имени in соединен с сигналом instruction[15]

+0

Прошу прощения, я этого не понял. О чем ты говоришь? – theOtherOne

+1

Да ладно. Пожалуйста, прочитайте учебник, прежде чем приходить сюда, чтобы задать такие основные вопросы. – Philippe

0

Из книги:

Для того, чтобы выяснить, что означает, что это 16-битное слово, если можно разбить в поля «i xx a cccccc ddd jjj». I-бит кодирует тип инструкции , который равен 0 для A-инструкции, и 1 для инструкции C.

Две строки, о которых идет речь, являются инструкцией по разделению [15] на 2 контакта. Может быть, разделив их с DMUX может иметь больше смысла для вас:

DMux(in=true, sel=instruction[15], a=aInstruction, b=cInstruction);

Нарисуйте таблицу истинности для обоих способов, и это должно иметь смысл я.