如何将时钟实现到程序计数器中?
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的解决方案(感谢编辑):
我正在尝试创建一个带有逻辑门的程序计数器。我已经完成了逻辑,但我不确定我应该在哪里连接时钟。
... 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的解决方案(感谢编辑):