Ошибка сравнения при реализации шлюза MUX в nand2tetris - PullRequest
1 голос
/ 13 января 2020

Я пытаюсь реализовать шлюз MUX (мультиплексор) в курсе nand2tetris. Я сначала попробовал себя, и я получил ошибку. Но независимо от того, что я изменил, я всегда получал ошибку. Поэтому я попытался проверить какой-то код в Интернете, и это то, что большинство людей используют:

CHIP Mux {
    IN a, b, sel;
    OUT out;

    PARTS:
    Not(in=sel, out=nsel);
    And(a=sel, b=b, out=c1);
    And(a=nsel, b=a, out=c2);
    Or(a=c1, b=c2, out=out);
}

Но даже когда я пробую этот код, я все равно получаю следующую ошибку: error msg

Что я получу в качестве таблицы истинности:

|   a   |   b   |  sel  |  out  |
|   0   |   0   |   0   |   0   |
|   0   |   0   |   1   |   0   |
|   0   |   1   |   0   |   0   |
|   0   |   1   |   1   |   0   |

Что я должен получить:

|   a   |   b   |  sel  |  out  |
|   0   |   0   |   0   |   0   |
|   0   |   0   |   1   |   0   |
|   0   |   1   |   0   |   0   |
|   0   |   1   |   1   |   1   |
|   1   |   0   |   0   |   1   |
|   1   |   0   |   1   |   0   |
|   1   |   1   |   0   |   1   |
|   1   |   1   |   1   |   1   |

У меня новейшая версия программного обеспечения в 2020-01-13

1 Ответ

1 голос
/ 14 января 2020

Из того, что видно, ваши входные контакты:

a = 0  
b = 1  
sel = 1

Ваши внутренние контакты:

nsel = 1 
c1   = 1 
c2   = 0

Все, как и ожидалось, пока.

Ожидается out = 1 в этом случае, и вы получите out = 0. На этом этапе тестовый сценарий останавливается из-за сбоя.

Теперь может быть две причины этого:
1) вы неправильно загрузили Mux.hdl и потому что, если вы вычислили Or(c1,c2) вы получите 1 , что правильно. Если вы поместите And gate вместо Or, это объяснит сбой
2) ваша реализация Or.hdl неверна. Mux использует вашу версию Or gate, если такой файл присутствует в том же каталоге.

Итак сначала проверьте ваш код в Симуляторе аппаратного обеспечения, , а затем подтвердите реализацию Or.hdl. Последнее вы можете сделать, временно удалив Or.hdl из каталога проекта. Аппаратный симулятор загружает встроенную версию Or gate.

...