Dou*_*ith 8 hdl mux nand2tetris
它似乎接近工作,显然只是在第7行搞砸了?
/**
* 4-way demultiplexor.
* {a,b,c,d} = {in,0,0,0} if sel==00
* {0,in,0,0} if sel==01
* {0,0,in,0} if sel==10
* {0,0,0,in} if sel==11
*/
CHIP DMux4Way {
IN in, sel[2];
OUT a, b, c, d;
PARTS:
DMux(in = in, sel = sel[0], a = out1, b = out2);
DMux(in = out1, sel = sel[1], a = a, b = b);
DMux(in = out2, sel = sel[1], a = c, b = d);
}
Run Code Online (Sandbox Code Playgroud)
我已经实现了我的DMux,如下所示,我只是使用它,就好像它是一棵树:
/**
* Dmultiplexor.
* {a,b} = {in,0} if sel==0
* {0,in} if sel==1
*/
CHIP DMux {
IN in, sel;
OUT a, b;
PARTS:
Not(in = sel, out = notsel);
And(a = in, b = notsel, out = a);
And(a = in, b = sel, out = b);
}
Run Code Online (Sandbox Code Playgroud)
你有正确的想法!但是你开始缩小sel [0]而不是sel [1],它对应于左列.
PS:我知道我迟到了
编辑:根据以下请求添加固定代码.感谢您的反馈
CHIP DMux4Way {
IN in, sel[2];
OUT a, b, c, d;
PARTS:
DMux(in = in, sel = sel[1], a = out1, b = out2);
DMux(in = out1, sel = sel[0], a = a, b = b);
DMux(in = out2, sel = sel[0], a = c, b = d);
}
Run Code Online (Sandbox Code Playgroud)
缩小在真值表中引用左列的内容(即,sel [1];记住在计数时从右边开始),你将有效地在中间分割选项