如何将时钟实现到程序计数器中?

How to implement clock into Program Counter?

我正在尝试创建一个带有逻辑门的程序计数器。我已经完成了逻辑,但我不确定我应该在哪里连接时钟。

... where I should connect the clock.

这是因为你的电路不工作:

假设“inc in”为真,“load in”为假,“reset in" 是错误的。

那么“out Out”的值就是“inc16”元素的输出。

而“inc16”元素的输出是“out Out”的值加1。

这意味着“out Out”的值计算为:

inc16 = out_Out + 1
out_Out = inc16

或:

out_Out = out_Out + 1

这一行必须像数学方程式一样阅读,而不是编程语言中的变量赋值:

并且由于方程无解,电路将无法工作。

你必须在你的电路中引入一些延迟元件(一个由flip-flops组成的寄存器)。该延迟元件将由“Clock in”输入控制:

只要“时钟输入”处有脉冲,延迟元件的输入就会被复制到它的输出。

方程式可能如下所示(有不同的可能性):

inc16 = delay_Out + 1
out_Out = inc16
delay_In = out_Out
delay_Out = delay_In;

或:

out_Out = out_Out + 1;

前三行再次读起来像数学方程;然而,以 semi-colon (";") 结尾的两行的意思类似于编程语言(例如 C、C++ 或 Java)中的变量赋值,当出现是来自“Clock in”输入的脉冲。

这是EV3的解决方案(感谢编辑):