2017-02-20 66 views
0

我试图通过编写一个非常简单的机器只用少量的指令和操作来学习MyHDL。我正在努力的是设计我的机器来处理需要多个时钟周期来解决的操作的最佳方式。目前,我写的所有硬件组件都需要一个单独的刻度来解决,所以这是我遇到麻烦的控制单元。例如,假设我的机器的所有操作都需要1到3个时钟周期才能完成,这意味着每条指令都需要3个周期(因为我现在没有进行任何并行操作)。什么是推荐MyHDL设计模式用于多刻度操作?

这将意味着我需要三个阶段到我的机器或HDL术语,三个时钟敏感的逻辑块。机器的一个完整的迭代会是什么样子:

  • 控制一个
    • 蜱::组件
  • 对比B
    • 蜱::组件
  • 对照C
    • 蜱::组件
  • 回到甲

由于没有平行性,并且每个阶段是使用共享的硬件,我希望控制块被顺序地并且为了触发。要做到这一点,我想要多个时钟?每个控制阶段结束时,组件的一个时钟和控制器的组件时钟的滴答完成?但是,控制A,B和C将全部由每个时钟滴答执行。那么我会需要四个时钟,一个用于组件,一个用于每个控制阶段的组件时钟和下一个阶段的时钟在每个控制阶段结束时提前?或者我只需要一个时钟和一些布尔信号来告诉每个阶段他们应该去哪里(每个控制阶段都会检查一个标志,如果已设置,他们会执行并设置下一个阶段的标志)?

回答

1

从你的描述中我认为你可以试着用状态机来解决你的问题,并将你的电路分解为独立的单元。

既然你说你不想在你的设计中添加任何平行律,你可以试着将你的设计保存在一个电路中,只有一个时钟并且使用寄存器控制行为。尝试描述考虑到每个时钟将采取一个动作的电路。

尝试添加一些示例代码和更具体的信息。

相关问题