【问题标题】:What's the recommended MyHDL design pattern for multi-tick operations?多滴答操作的推荐 MyHDL 设计模式是什么?
【发布时间】:2017-05-29 03:08:37
【问题描述】:

我正在尝试通过编写一个非常简单的机器来学习 MyHDL,只需要一些指令和操作。我正在努力的是设计我的机器以处理需要多个时钟周期才能解决的操作的最佳方法。目前,我编写的所有硬件组件都只需要一个勾就可以解决,所以我遇到的问题是控制单元。

例如,假设我的机器的所有操作都需要 1 到 3 个时钟周期才能完成,这意味着每条指令需要 3 个周期(因为我现在没有做任何并行处理) .

这意味着我的机器需要三个阶段,或者用 HDL 术语来说,需要三个时钟敏感逻辑块。机器的完整迭代如下所示:

  • 控制 A
    • 勾选 :: 组件
  • 控制 B
    • 勾选 :: 组件
  • 控制 C
    • 勾选 :: 组件
  • 返回A

由于没有并行性并且每个阶段都使用共享硬件,我希望控制块按顺序触发。为此,我需要多个时钟吗?一个时钟用于组件,一个用于控制,其中组件时钟的滴答是在每个控制阶段结束时完成的?但随后控制 A、B 和 C 将在每个时钟滴答时一起执行。那么我是否需要四个时钟,一个用于组件,一个用于每个控制阶段,其中组件时钟和下一阶段的时钟在每个控制阶段结束时提前?还是我只需要一个时钟和一些布尔信号来告诉每个阶段它们应该在什么时候进行(每个控制阶段都会检查一个标志,如果它被设置,它们会执行并为下一个阶段设置标志)?

【问题讨论】:

    标签: python hdl myhdl


    【解决方案1】:

    根据您的描述,我认为您可以尝试使用状态机并将电路分成独立的单元来解决您的问题。

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

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

    【讨论】:

      猜你喜欢
      • 2010-11-18
      • 2013-07-17
      • 1970-01-01
      • 1970-01-01
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多