FPGA 设计过程中,使用好双口 RAM,也是提高效率的一种方法。

 

官方将双口 RAM 分为简单双口 RAM 和真双口 RAM。

 

 

简单双口 RAM 只有一个写端口,一个读端口。

 

 

真双口 RAM 分别有两个写端口和两个读端口。

 

无论是简单双口 RAM 还是真双口 RAM,在没有读操作的情况下,应将读使能 rden 信号拉成低电平,节省功耗。

 

在两种情况下,都应当避免 read-during-write,虽然可在软件中进行设置,但是,作为设计者,应当尽量避免此种情况。

 

对于真双口 RAM,还应当避免两个读端口或者两个写端口同时操作同一个地址,RAM 中并没有此种冲突解决电路,设计者应该避免这种冲突。

 

无论是那种双口 RAM,读时序图是相同的。

 

 

当读使能有效时,数据会在时钟下一个上升沿从 Q 端输出。

 

真双口 RAM 给设计带来很多便利。在高速存储中,需要对连续的数据同时处理,使用简单双口 RAM 只能读取一个数据,而使用真双口 RAM 可以同时读取两个数据,这样明显提高读取速度以及处理速度。

 

 

调用真双口 RAM,如图设置。

 

 

这里可以设置时钟方案,而读使能 rden 并非必须信号。当使用 rden 信号时,此信号高电平有效,当不使用 rden 信号时,给定地址,下一个脉冲数据从 q 端口送出。

 

 

这里的设置非常重要,当选中 read output ports 时,q 端会增加一级寄存器。虽然这样增加流水线能够提高电路的速度,但同时从读使能有效到最终数据有效将会多延迟一个时钟周期。在设计中要格外注意。根据设计自行设置。

 

 

 

上面两张图是指定对同一地址操作时的输出。作为设计者,应尽量在自己的设计中避免这种情况发生。

 

真双口 RAM 用好了是非常省时间的。之前我们文章中提到硬件 FFT 的实现,在实现过程中,使用基 2 的设计方案,需要同时读取两个 RAM 数据,这种情况下可以使用真双口 RAM 提高效率。