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



我正在尝试为Altera FPGA设计一个简单的VHDLCPU。但是,我正试图弄清楚如何解释ROM块产生的延迟。ROM模块本身可以同时对输入地址和输出数据进行计时,或者仅对输入地址进行计时,从而在数据请求(设置地址)和取回数据之间产生1或2个时钟周期延迟。

我可以理解 ROM 本质上是一个庞大的数据多路复用器,做跳转之类的事情是微不足道的,因为你只需设置地址,到下一个时钟周期,正确的指令就会在那里!我只是不太明白如何在ROM和CPU之间延迟的情况下管理这个问题。从我收集的信息来看,每条指令都需要知道是获取新指令、修改 PC - 程序计数器(跳转)还是停滞(保持 PC 不变),但肯定的是,如果有 2 个周期的延迟,指令将需要知道提前 2 个周期?

如何为这种系统编写PC?

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

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

下一个值

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

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

相关内容

最新更新