如何在CPU设计中考虑ROM延迟

时间:2016-03-11 13:32:16

标签: vhdl fpga latency rom

我正在尝试用VHDL为Altera FPGA设计一个简单的CPU。然而,我试图了解如何解释ROM块引起的延迟。 ROM块本身可以同时输入地址和输出数据,也可以只输入时钟输入地址,在数据请求(设置地址)和获取数据之间提供1或2个时钟周期延迟。

我可以理解ROM本质上是一个海量数据多路复用器,像跳转这样的事情是微不足道的,因为你只需设置地址,在下一个时钟周期,正确的指令就在那里!我只是不太明白如何通过ROM和CPU之间的延迟来管理它。根据我收集的内容,每条指令都需要知道是否要获取新指令,修改PC程序计数器(跳转)或停止(保持PC相同),但是如果存在2个周期的延迟,则说明需要知道前两个周期?

如何为这种系统编写PC?

作为参考,存储器数据宽度与指令的大小相同,因此每个存储器位置存储一条指令。

1 个答案:

答案 0 :(得分:3)

在FPGA上,只有输入地址寄存器提供1个时钟周期的延迟就足够了。然后,您可以使用PC寄存器的下一个值而不是当前值来寻址ROM。

下一个值是将在下一个上升(或下降)时钟沿加载到寄存器中的值。下一个值也将加载到具有相同时钟边沿的ROM地址寄存器中。因此,两个寄存器将具有相同的内容,并且ROM实际上在时钟边缘之后在(新)PC上传送数据。

如果有2个以上的流水线级,ROM输出存储在指令寄存器中。在这种情况下,您将自动拥有ROM输出寄存器。

相关问题