正如@MadOverlord正确指出的那样:
... Hack 机器无法获取该信息。
但是,我注意到您正在尝试使用 DFF 等低级门提出解决方案。大概您正在查看 DFF,因为阅读了诸如“... DFF 具有根据主时钟信号不断变化的时钟输入”,第 3 章,第 42 页之类的内容。我想也许你误解了这里引用的时钟的性质,消除这种误解会很有用。
在较高的层次上,这个时钟代表了一个离散的时间单位,它控制 CPU 何时执行操作,但它不跟踪以人类为单位的时间流逝。以下是第 3 章第 42 页的相关摘录:
“从一个“tick”开始到下一个“tock”结束之间经过的时间称为周期,每个时钟周期都被用来模拟一个离散的时间单位。
“当前时钟相位(滴答声或滴答声)由二进制信号表示”
“使用硬件电路,该信号同时广播到整个计算机平台的每个顺序芯片。”
需要这个时钟是为了让计算机的内部硬件有足够的时间让机器的内存在执行下一个操作之前进入适当的状态。例如,如果将两个数字相加,则需要等待内存中的所有位都翻转到适当的位置,然后才能继续并在另一个操作中使用该相加的结果。硬件操作虽然很快,但需要不同长度的时间来完成各种任务,因此计算机必须在操作之间等待一小段时间。这少量的时间是时钟周期之间经过的离散时间单位。
另一方面,以人类为单位跟踪时间流逝通常是由另一个称为实时时钟的硬件提供的。这与 CPU 是分开的,因为 CPU 不需要它的行为,因此只会降低 CPU 实现的效率。据我所知,nand2tetris没有以任何有意义的方式为用户建模实时时钟(如果我有这个错误,请纠正我)。
我跳过了很多细节,但我觉得这种思路,在这个层面上,可能足以帮助你思考为什么你的想法行不通。或者,也许您的想法会奏效,但我遗漏了一些东西,请告诉我!
祝你好运。