Не могу найти свою ошибку в реализации счетчика

Я реализую счетчик из гл. 3. Вот мой код:

// 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];
      //sel=0; a;sel=1;b
      PARTS:
      //reset
      Not16(in=true, out=resetted);
      //inc
      Inc16(in=t, out=incremented);
      //Choose input between reset and out[t]
      Mux16(a=t,b=resetted,sel=reset,out=o1);
      //Choose input between o1 and in[t](load)
      Mux16(a=o1, b=in,sel=load,out=o2);
      //Choose input between o2 and inc
      Mux16(a=o2,b=incremented, sel=inc, out=o3);
      Register(in=o3, load=load, out=t, out=out);
  }

Кажется, он не прошел этот тест:

set in -32123,
tick,
output

Это строка 5, я не могу найти свою ошибку (ошибки). Любая помощь приветствуется


person Planet_Earth    schedule 26.05.2016    source источник


Ответы (1)


Подсказка (потому что это, в конце концов, обучающее упражнение):

Вы выполняете каскад мультиплексирования для создания нового значения, но при каких обстоятельствах вы обновляете регистр?

Предложения:

Вернитесь к главе 2 и обратите внимание, что они заставили вас реализовать компонент Mux4Way16. Его использование значительно облегчит вам жизнь.

Кроме того, вы можете использовать false в качестве входных данных, и он автоматически станет настолько широким, насколько это необходимо. Таким образом, вам не нужно запускать true через Not16, чтобы получить false[16].

person MadOverlord    schedule 26.05.2016
comment
Также на случай, если кто-то зашел сюда с помощью поисковой системы, я хочу отметить, что мне пришлось изменить порядок операций, чтобы заставить его работать (я понятия не имею, почему это сработало). - person Planet_Earth; 27.05.2016