【问题标题】:MIPS Architecture in VHDL: How to clock Register File, Data Memory and PCVHDL 中的 MIPS 架构:如何为寄存器文件、数据存储器和 PC 计时
【发布时间】:2014-04-07 09:21:03
【问题描述】:

我正在用 VHDL 编写一个简单的 MIPS 架构(仅支持 R 型和 lw/sw 指令)。

我目前在上升沿为每个流水线寄存器计时。但是,我很难决定是在上升沿还是下降沿为寄存器文件、数据存储器和程序计数器计时。

网上查了下,大家一致认为是下降沿写入寄存器文件。但是,在数据存储器方面并不是那么一致:有人说在上升沿触发写入数据存储器,有人说在下降沿,所以我在这里有点困惑,需要一些解释。

哦,我还提到了程序计数器,因为 1 个网站说使用下降沿;对于为什么必须在下降沿为 PC 计时的问题也很困惑。 如果有人感兴趣,那 1 个网站就是这个:https://ls12-www.cs.tu-dortmund.de/daes/en/lehre/downloads/ravi/documentation/pipeline.html

非常感谢。

【问题讨论】:

  • 目标技术是什么; FPGA还是ASIC?对整个设计使用相同的时钟使一般设计和时序分析 (STA) 更加容易,因此应该有充分的理由同时使用上升沿和下降沿。您是否有充分的理由,或者这个想法仅基于使用下降沿的寄存器文件的一些示例?
  • 目标技术是FPGA。这里引用了我确信对寄存器文件使用下降沿的原因:“一个周期中的寄存器文件写入发生在同一个周期中读取寄存器文件之前。这可以通过在下降沿写入寄存器文件来完成(而不是每个时钟周期的上升沿)。从同一寄存器读取的寄存器文件将在下一个上升沿将其值同步到 ID/EX 流水线寄存器中,确保将刚刚写入的值传递给 EX阶段。”

标签: architecture mips vhdl clock ram


【解决方案1】:

在同一周期写入值的读取请求发生在所有类型的设计中,并且通常使用旁路逻辑处理,写入的值直接转发到读取输出,而不通过寄存器。这种旁路是在单时钟设计中完成的。

在 FPGA 中是否更喜欢(更快/更好)具有上升沿和下降沿的设计,取决于控制信号和时钟的特定时序。然而,在 FPGA 中,所有触发器通常都是上升沿类型,因此下降沿是通过提供反向时钟的单独时钟网络产生的。在静态时序分析 (STA) 中计算的这两个时钟网络之间的最坏情况偏差可能非常大,以致于引入下降沿时钟而不是像通常的方式进行旁路那样没有时序优势。

对于在 ASIC 中的实现,双边沿设计可能具有优势,例如,如果时钟网络可以以小偏差实现,或者如果目标技术中提供下降沿触发器。

【讨论】:

  • 感谢您的回答!也许我不希望寄存器文件和 RAM 处于上升沿的另一个原因是因为我已经有 5 个在上升沿触发的流水线阶段。如果寄存器文件和 RAM 在上升沿触发,我基本上会有 7 个流水线阶段。我想将它保持在 5 个阶段,这就是为什么我认为我应该在下降沿触发对 reg/RAM 的写入。顺便说一句,我应该提到我正在实现的寄存器文件与您在此处发布的寄存器文件相反:stackoverflow.com/questions/19942067/…
  • 同时使用上升沿和下降沿的另一种方法是在双频时钟上设计多周期路径,这样可以提供更好的时序。
猜你喜欢
  • 2012-10-24
  • 1970-01-01
  • 2016-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-11
  • 2016-01-05
相关资源
最近更新 更多