Menu Close

关于双口RAM 中 rden的使用

关于双口RAM 中 rden的使用

在双口RAM例化中有两种选择,一种是带rden端口,另一种是不带rden端口的。带rden接口的,在使用时需要将rden=1’b1,双口RAM才能有数据输出。在例化时如果选择忽略rden,其实默认rden永远为1,这时只要地址给定,在双口RAM的数据端就会有数据输出。

可以启动RAM的例化过程,看看例化过程就知道。下图以Intel公司的器件为例进行介绍并介绍如何在Quartus II下进行设置,Xilinx Vavado有类似的设置。

%title插图%num

图1     例化中不选择RDEN

在图1中,可以看到在例化时没有选择”create ‘rden_a and rden_b enable signals”

%title插图%num

图2 例化中选择带rden

那么什么时候选择带rden,什么时候可以选择不带呢?

如果地址是在状态机中(或其它方式的时序逻辑)是按照需求与clock同步的,redn端口就可以选择不带,只要严格控制地址线的节拍,就可以控制数据的输出。

需要rden的场景也很多,举个简单的例子, 如果FPGA与MCU有接口,MCU需要读取Duel port RAM的数据, 由于两者是异步时钟域,首先同步化,其次还需要在MCU的rden_CPU 的上升沿前准备好数据,因此更可靠的做法,提取rden_cpu的下降沿(一个clock周期的单脉冲),延迟一定的时间后,读取Duel port RAM的数据锁存(但一定要在rden_cpu的上升沿之前),赋值给CPU的数据端口,在rden_cpu上升沿时刻,MCU把数据读走。

欢迎大家补充。

 

Posted in FPGA, Quartus II, Verilog

1 Comment

发表评论

相关链接