我正在尝试创建一个 8 位移位寄存器,但不太确定我哪里出错了

问题描述

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 中;否则该位保持其当前值。