vivado中的ram和fifo使用总结

ram有单端口,伪双端口,真双端口,其中单端口有一个地址线控制读或写,wea信号为1时读,0时写,读写都是类似于时序逻辑的结果,也就是当wea信号至高,延迟一个周期时,写入前一个状态,因为时一个端口,所以只有一个时钟;

伪双端口,有一个专门读,一个专门写,读的控制信号为ena和wea,当两个信号都为1时,开始读,写的控制信号就enb,如果设置为always enable则ena和enb端口就没了,支持不同时钟读写(不要勾选comma clock),可达到同时读写一片寄存区;

真双端口,两个口都可读写,理解为两个单端口。

还有fifo,优点是:

1.无地址信号,先入先出,适合做缓存,本质是一个伪双口,模式可以选择comma clock和independent clock(同步时钟和异步时钟),ena控制写端口,enb控制读端口,可同时读写,在解决跨时钟域的数据传输中,经常使用用来缓存,优化时序。但是也因为如此不适合运用到需要地址的存储中。

2.fifo中还有一个功能用处很大,就是输出模式,有常规和first word那个模式,first word模式下,当enb至高后,不用等一个周期,直接就开始输出,类似于组合逻辑结果;

3.有empty和full信号,使用fifo时需要注意,empty信号在写入一个数据后,至0会有4个周期左右的延迟,只有当empty信号为0时,rd_en为1才有效果,也就是empty为1时,rd_en虽然为1了,但是仍然读不出,只有满足条件才会执行读操作;

参考https://blog.csdn.net/weixin_43872190/article/details/121981302?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121981302-blog-119898330.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121981302-blog-119898330.pc_relevant_antiscanv2&utm_relevant_index=2

https://blog.csdn.net/weixin_43872190/article/details/121981302

https://blog.csdn.net/qq_43796199/article/details/119898330

4.fifo还有一个pro_empty信号和pro_full信号,这两个信号为empty和full的提前信号,可以在实际应用中发挥作用。

posted @ 2022-06-29 17:32  孑尛燚茻  阅读(1970)  评论(0)    收藏  举报