Пытаюсь собрать ПК (счетчик) для nand2tetris, но у меня проблемы с логикой

Проект направлен на создание счетчика программ.

Описание следующее:

// 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:
    Register(in=in, load=true, out=thein);
    Register(in=in, load=false, out=theout);
    Inc16(in=theout, out=forinc);
    Register(in=forinc, load=true, out=theinc);
    Mux8Way16(a=theout, b=false, c=theinc, d=false, e=thein, f=false, g=thein, h=false, sel[2]=load, sel[1]=inc, sel[0]=reset, out=out);
}

Я пробовал много раз, но все терпели неудачу, когда часы загружались до времени 1+ или что-то в этом роде.

Поскольку определенный здесь регистр равен out(t+1) = out(t)

каков выход времени ?+.Меня это очень раздражает.

Любые предложения будут оценены.


person Daybreak Tesxas    schedule 14.07.2021    source источник


Ответы (1)


Некоторые наблюдения:

  1. Вы сохраняете вывод в регистре, и это хорошо. Однако обратите внимание, что вывод регистра также является одним из ваших входов — это out[t].

  2. Вам не нужен большой Mux8Way16. Существует 4 возможных различных выхода, поэтому вы можете либо использовать несколько Mux16 в каскаде, либо (дополнительный кредит) один Mux4Way16 с некоторой дополнительной логикой для вычисления двух битов выбора.

  3. Обычно я обнаруживал, что самый простой способ сделать что-либо — это сначала вычислить все возможные выходные данные (в данном случае 0, ввод, регистр+1 или регистр), а затем иметь логику, чтобы решить, какой из них фактически получает вывод.

Удачи. Вы очень близки.

person MadOverlord    schedule 14.07.2021
comment
Большое спасибо, это действительно работает! - person Daybreak Tesxas; 15.07.2021