我正在尝试通过编写一个只需要少量指令和操作的非常简单的机器来学习MyHDL。我正在努力的是设计我的机器来处理需要多个时钟周期才能解决的操作的最佳方法。目前,我编写的所有硬件组件只需要一个刻度即可解决,所以它是我遇到问题的控制单元。
例如,假设我的所有机器操作都需要1到3个时钟周期才能完成,这意味着我需要为每条指令设置3个周期(因为我现在没有做任何并行操作)
这意味着我需要三个阶段到我的机器,或者在HDL方面,我需要三个时钟敏感的逻辑块。机器的一次完整迭代看起来像:
由于没有并行性且每个阶段都使用共享硬件,我希望按顺序依次触发控制块。要做到这一点,我想要多个时钟吗?组件的一个时钟和控制器的一个时钟,每个控制阶段结束时组件时钟的滴答?但是控制A,B和C都将由每个时钟周期一起执行。那么我会想要四个时钟,一个用于组件,一个用于每个控制阶段,其中组件时钟和下一个阶段的时钟在每个控制阶段结束时提前?或者我是否只需要一个时钟和一些布尔信号来告诉每个阶段何时应该进行(每个控制阶段都会检查一个标志,如果设置了,它们会执行并设置下一阶段的标志)?
答案 0 :(得分:1)
根据您的描述,我认为您可以尝试使用状态机解决问题并将电路拆分为独立单元。
由于您说您不想在设计中添加任何参数,您可以尝试将设计保持在单个电路中,只需一个时钟并使用寄存器控制行为。考虑每个时钟采取一个动作,尝试描述电路。
尝试添加一些示例代码和更具体的信息。