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