我试图通过编写一个非常简单的机器来学习 MyHDL,只需要一些指令和操作。我正在苦苦挣扎的是设计我的机器以处理需要多个时钟周期才能解决的操作的最佳方法。目前,我编写的所有硬件组件只需要一个滴答声就可以解决,所以我遇到问题的是控制单元。
例如,假设我的机器的所有操作都需要 1 到 3 个时钟周期才能完成,这意味着每条指令需要 3 个周期(因为我现在没有做任何并行处理)。
这意味着我的机器需要三个阶段,或者用 HDL 术语来说,需要三个时钟敏感逻辑块。机器的一个完整迭代如下所示:
- 对照A
- 勾选 :: 组件
- 控制 B
- 勾选 :: 组件
- 控制 C
- 勾选 :: 组件
- 回到A
由于没有并行性并且每个阶段都使用共享硬件,我希望控制块按顺序触发。为此,我需要多个时钟吗?一个时钟用于组件,一个用于控制,其中组件时钟的滴答是在每个控制阶段结束时完成的?但随后控制 A、B 和 C 将在每个时钟滴答时一起执行。那么我是否需要四个时钟,一个用于组件,一个用于每个控制阶段,其中组件时钟和下一阶段的时钟在每个控制阶段结束时提前?还是我只想要一个时钟和一些布尔信号来告诉每个阶段它们应该何时进行(每个控制阶段都会检查一个标志,如果它被设置,它们将执行并为下一阶段设置标志)?