芯片 Mux4way16 未 运行 直到 HardwareSimulator (VHDL) 结束

chip Mux4way16 not run ontil the end on ‏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);

}

而且由于某种原因它不工作.. Screenshot from the ‏‏HardwareSimulator

有人知道为什么吗?

您选择要传递的输入的逻辑似乎不正确。您应该通过为 finalSel、notFinalSel、aAndB、cAndd 和 out 为 4 个控制条件中的每一个创建一个真值 table 来测试它。

一般来说,做这类题时,KISS原则是成立的;保持简单和愚蠢。您不需要对 sel[] 位进行任何花哨的逻辑操作,您可以直接使用它们。因此,一旦您修复了您的版本(并了解您哪里出错了),请尝试制作一个仅包含 3 个 Mux16 而没有其他任何内容的版本。一旦两个版本都可以正常工作,您就会明白导致您在第一次尝试时走错路的错误,这将是一个宝贵的教训。

玩得开心!