芯片Mux4way16未运行到底‏硬件模拟器(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);
}

出于某种原因,它不起作用。。的屏幕截图‏‏硬件模拟器

有人知道为什么?

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

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

玩得开心!

最新更新