芯片 Mux4way16 在 硬件模拟 (VHDL) 上直到最后才运行
Posted
技术标签:
【中文标题】芯片 Mux4way16 在 硬件模拟 (VHDL) 上直到最后才运行【英文标题】:chip Mux4way16 not run ontil the end on HardwareSimulator (VHDL) 【发布时间】:2021-01-12 19:24:19 【问题描述】:我正在尝试构建这个芯片:
// 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
有人知道为什么吗?
【问题讨论】:
虽然硬件描述语言不是 VHDL(超大规模整数电路硬件设计语言),但请参阅 Noam Nisan 和 Shimon Schocken 的“计算系统元素”的附录 A。课程资料(和模拟器)可通过the official website of Nand to Tetris courses 获得,这可能会排除通过nand2tetris 标签以外的帮助。不要使用用于 html 的 sn-ps 和它的同类。图片不足以作为问题陈述。 【参考方案1】:您选择要传递的输入的逻辑似乎不正确。您应该通过为 4 个控制条件中的每一个为 finalSel、notFinalSel、aAndB、cAndd 和 out 创建一个真值表来测试它。
一般来说,在做这类题时,KISS原则是成立的;保持简单和愚蠢。您不需要对 sel[] 位进行任何花哨的逻辑操作,您可以直接使用它们。因此,一旦您修复了您的版本(并了解您出错的地方),请尝试制作一个仅由 3 个 Mux16 组成的版本,而不是其他任何东西。一旦两个版本都正常工作,您就会了解导致您在第一次尝试中走错路的错误,这将是今后宝贵的一课。
玩得开心!
【讨论】:
以上是关于芯片 Mux4way16 在 硬件模拟 (VHDL) 上直到最后才运行的主要内容,如果未能解决你的问题,请参考以下文章