Элемент NAND не работает должным образом в этом HDL?

#hdl #nand2tetris

#hdl #nand2tetris

Вопрос:

Всякий раз, когда я ввожу a = 1 и b = 1, я все равно получаю 0, а мой внутренний вывод aAndNotb показывает 1, однако, если я удаляю элемент Not, я получаю нормально функционирующий элемент Nand, в чем дело?

 /**
 * And gate: 
 * out = 1 if (a == 1 and b == 1)
 *       0 otherwise
 */

CHIP And {
    IN a, b;
    OUT out;

    PARTS:
    // Put your code here: 
    Nand(a=a, b=b, out=aAndNotb);   
    Not(in=aAndNotb, out=out);
}
  

Ответ №1:

Учитывая симптомы, которые вы описываете, проблема, по-видимому, в вашем Not-шлюзе. Возможно, этот компонент реализован неправильно?

Вы можете проверить это, реализовав элемент Not непосредственно с помощью элемента Nand, который, если вы реализовали элемент Not, вы уже знаете, как это сделать.

Если это работает, то проблема заключается в реализации Not gate. Если это не так, то проблема по какой-то причине связана с подключением вентилей (но для меня они выглядят нормально).