我正在用VHDL编写一个简单的MIPS架构(仅支持R-type和lw / sw指令)。
我目前正在为上升沿的每个流水线寄存器计时。但是,我无法决定是在上升沿还是下降沿为寄存器文件,数据存储器和程序计数器提供时钟。
在网上查询之后,你在下降边缘写入寄存器文件是非常一致的。然而,在数据存储器方面并不是那么一致:有人说在上升沿触发写入数据存储器,有些人说是下降沿,所以我在这里有点困惑,需要一些解释。
哦,我还提到了程序计数器因为1个网站说使用了下降边缘;这种混淆也是为什么PC必须在下降沿计时。 如果有人有兴趣,那1个网站就是这个:https://ls12-www.cs.tu-dortmund.de/daes/en/lehre/downloads/ravi/documentation/pipeline.html非常感谢。
答案 0 :(得分:3)
在所有类型的设计中都会出现以相同周期写入的值的读取请求,并且通常使用旁路逻辑进行处理,从而将写入的值直接转发到读取输出,而无需通过寄存器。这种旁路在单时钟设计中完成。
在FPGA中优先选择(更快/更好)上升沿和下降沿的设计取决于控制信号和时钟的具体时序。但是,在FPGA中,所有触发器通常都是上升沿类型,因此下降沿是通过提供反相时钟的独立时钟网络实现的。在这两个时钟网络之间的静态时序分析(STA)中计算的最坏情况偏差可能是如此之大,以至于在引入下降沿时钟时没有时序优势,而不是仅以通常的方式进行旁路。
为了在ASIC中实现,双边缘设计可能具有优势,例如,如果时钟网络可以以小偏斜实现,或者如果目标技术中有下降沿触发器可用。