чип Mux4way16 не работает до конца на ‏HardwareSimulator (VHDL)

Я пытаюсь построить этот чип:

// 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/01/Mux4Way16.hdl

/**
 * 4-way 16-bit multiplexor:
 * out = a if sel == 00
 *       b if sel == 01
 *       c if sel == 10
 *       d if sel == 11
 */

CHIP Mux4Way16 {
    IN a[16], b[16], c[16], d[16], sel[2];
    OUT out[16];

    PARTS:
    // Put your code here:

И то, что я написал до сих пор -

    PARTS:
    // Put your code here:
    Xor(a=sel[0], b=sel[1], out=finalSel);
    Not(in=finalSel, out=notFinalSel);
    Mux16(a=a, b=b, sel=finalSel, out=aAndB);
    Mux16(a=c, b=d, sel=notFinalSel, out=cAndd);
    Mux16(a=aAndB, b=cAndd, sel=sel[0], out=out);

}

И почему-то не работает.. Скриншот из ‏‏HardwareSimulator

кто-то знает, почему?


person Meni    schedule 12.01.2021    source источник
comment
Хотя это язык описания оборудования, это не VHDL (язык проектирования аппаратного обеспечения с очень крупными целочисленными схемами), см. Приложение A к книге «Элементы вычислительной системы» Ноама Нисана и Шимона Шокена. Материалы курса (и симулятор) доступны на официальном веб-сайте курсов Nand to Tetris. чем через тег nand2tetris. Не используйте сниппеты, предназначенные для HTML и ему подобных. Картинки не годятся в качестве постановки задачи.   -  person    schedule 13.01.2021


Ответы (1)


Ваша логика выбора входных данных для передачи кажется неверной. Вы должны проверить это, создав таблицу истинности для finalSel, notFinalSel, aAndB, cAndd и out для каждого из 4 условий контроля.

В общем, при решении подобных задач действует принцип KISS; Сохраняйте это простым и глупым. Вам не нужны никакие причудливые логические манипуляции с битами sel[], вы можете просто использовать их напрямую. Итак, как только вы исправите свою версию (и поймете, где вы ошиблись), попробуйте сделать версию, состоящую только из 3 Mux16 и ничего больше. Когда у вас заработают обе версии, вы поймете ошибку, из-за которой вы пошли по неверному пути с первой попытки, и это будет ценным уроком в будущем.

Веселиться!

person MadOverlord    schedule 12.01.2021