问题描述
CHIP Shift8 {
IN x;
OUT out[8];
PARTS:
DFF(x=x,out=d1);
DFF(x=d1,out=d2);
DFF(x=d2,out=d3);
DFF(x=d3,out=d4);
DFF(x=d4,out=d5);
DFF(x=d5,out=d6);
DFF(x=d6,out=d7);
DFF(x=d7,out=d8);
Bit(x=d1,out=out[0]);
Bit(x=d2,out=out[1]);
Bit(x=d3,out=out[2]);
Bit(x=d4,out=out[3]);
Bit(x=d5,out=out[4]);
Bit(x=d6,out=out[5]);
Bit(x=d7,out=out[6]);
Bit(x=d8,out=out[7]);
}
当我测试我的代码时,out[8]
似乎永远不会改变。但是,d1-d8 确实会根据需要进行更改。
解决方法
通常的 Nand2Tetris Bit 实现有两个输入,新值和加载信号,如果为真,则将新值加载到 Bit 中;否则该位保持其当前值。