Architecture VHDL中的MIPS体系结构:如何时钟寄存器文件、数据存储器和PC机

Architecture VHDL中的MIPS体系结构:如何时钟寄存器文件、数据存储器和PC机,architecture,mips,vhdl,clock,ram,Architecture,Mips,Vhdl,Clock,Ram,我正在用VHDL编写一个简单的MIPS体系结构(仅支持R-type和lw/sw指令) 我目前正在记录上升沿上的每个管道寄存器。然而,我很难决定是在上升沿还是下降沿对寄存器文件、数据存储器和程序计数器进行时钟设置 在网上查找之后,大家一致认为,您在下降边缘写入了一个寄存器文件。然而,在数据存储方面并非完全一致:有人说在上升沿触发对数据存储的写入,有人说在下降沿触发对数据存储的写入,所以我在这里有点困惑,需要一些解释 哦,我还提到了程序计数器,因为1个网站说使用了下降沿;这也让人困惑,为什么个人电脑

我正在用VHDL编写一个简单的MIPS体系结构(仅支持R-type和lw/sw指令)

我目前正在记录上升沿上的每个管道寄存器。然而,我很难决定是在上升沿还是下降沿对寄存器文件、数据存储器和程序计数器进行时钟设置

在网上查找之后,大家一致认为,您在下降边缘写入了一个寄存器文件。然而,在数据存储方面并非完全一致:有人说在上升沿触发对数据存储的写入,有人说在下降沿触发对数据存储的写入,所以我在这里有点困惑,需要一些解释

哦,我还提到了程序计数器,因为1个网站说使用了下降沿;这也让人困惑,为什么个人电脑必须在下降边缘计时。 如果有人感兴趣,请访问以下网站:


非常感谢。

在所有类型的设计中都会出现在同一周期中写入值的读取请求,通常通过旁路逻辑进行处理,通过旁路逻辑,写入的值直接转发到读取输出,而无需经过寄存器。这种旁路是在单时钟设计中完成的

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


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

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

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


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

什么是目标技术;FPGA还是ASIC?在整个设计中使用相同的时钟使得通用设计和时序分析(STA)更加容易,因此应该有充分的理由同时使用上升沿和下降沿。您是否有充分的理由,或者这个想法仅仅基于使用下降沿的寄存器文件的一些示例?目标技术是FPGA。这里引用了我确信对寄存器文件使用下降沿的原因:“在一个周期内写入寄存器文件发生在同一周期内读取寄存器文件之前。这可以通过在下降沿(而不是上升沿)写入寄存器文件来实现从同一寄存器读取的寄存器文件将在下一个上升沿将其值计时到ID/EX管道寄存器中,确保刚刚写入的值传递到EX阶段;FPGA还是ASIC?在整个设计中使用相同的时钟使得通用设计和时序分析(STA)更加容易,因此应该有充分的理由同时使用上升沿和下降沿。您是否有充分的理由,或者这个想法仅仅基于使用下降沿的寄存器文件的一些示例?目标技术是FPGA。这里引用了我确信对寄存器文件使用下降沿的原因:“在一个周期内写入寄存器文件发生在同一周期内读取寄存器文件之前。这可以通过在下降沿(而不是上升沿)写入寄存器文件来实现从同一寄存器读取的寄存器文件将在下一个上升沿将其值计时到ID/EX管道寄存器中,确保刚刚写入的值传递到EX阶段。“谢谢回答!也许我不希望寄存器文件和RAM成为上升沿的另一个原因是因为我已经有5个在上升沿触发的流水线级。若寄存器文件和RAM在上升沿触发,我基本上有7个流水线级。我想将它保持在5个阶段,这就是为什么我认为应该在下降沿触发对reg/RAM的写入。顺便说一句,我应该提到,我正在实现的寄存器文件具有异步读取,与您在此处发布的寄存器文件相反:使用上升沿和下降沿的另一种方法是在双频时钟上设计多周期路径,这可能会提供更好的计时。谢谢您的回答!也许我不希望寄存器文件和RAM成为上升沿的另一个原因是因为我已经有5个在上升沿触发的流水线级。若寄存器文件和RAM在上升沿触发,我基本上有7个流水线级。我想将它保持在5个阶段,这就是为什么我认为应该在下降沿触发对reg/RAM的写入。顺便说一句,我应该提到我正在实现的寄存器文件具有异步读取,与您在这里发布的寄存器文件相反:另一种方法是