首页 > 解决方案 > HDL 中的多路复用器(8 位输入和 4 位输出)

问题描述

如果 sel = false,则 out 应包含 in 的低 4 位(即 in[0]、in[1]、in[2]、in[3])
如果 sel = true,则 out 应包含高 4 -in 的位(即 in[4]、in[5]、in[6]、in[7])

这是我的代码以及如何修改它....?

CHIP NewMux
{
   IN in[8], sel;
   OUT out[4];
PARTS:
   Mux4(sel=sel, a=in[0], b=false, out=out[0]);
   Mux4(sel=sel, a=in[1], b=false, out=out[1]);
   Mux4(sel=sel, a=in[2], b=false, out=out[2]);
   Mux4(sel=sel, a=in[3], b=false, out=out[3]);
   Mux4(sel=sel, a=in[4], b=true, out=out[0]);
   Mux4(sel=sel, a=in[5], b=true, out=out[1]);
   Mux4(sel=sel, a=in[6], b=true, out=out[2]);
   Mux4(sel=sel, a=in[7], b=true, out=out[3]);
}

标签: hdlmuxnand2tetris

解决方案


您不能让多个组件生成相同的输出。您有 4 条输出线,因此您需要使用 4 个简单的 1 位多路复用器。每个都将 sel 值和两个输入行作为输入,并生成一个输出行。


推荐阅读