打印
[FPGA]

Write First Read First和No Change的区别

[复制链接]
327|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
调用RAMO的IP时,无论是单端口还是双端口模式,都会有个选项:
可能很多人都没注意过这个选项,记得毕业季去华为面试的时候,还问过我这个问题,当时也是没答上来。后来也发现很多面试官都喜欢问这个问题,今天我们就来讲一下。
在讲这三种模式具体的区别前,我们先把RAM的接口说一下,对于单端口RAM,有6个端口:
clka: 时钟输入端口addra: 地址输入端口dina: 数据输出端口douta: 输出输出端口ena: RAM使能,高有效wea: 写使能,高有效
这三个选项是用来解决读写冲突时使用的,什么是读写冲突?就是对同一地址进行了读写。首先来回顾一下RAM最常被使用的方式,当需要写入数据时,将wea拉高,并给出地址和数据;当需要读数据时,将wea拉低,在地址的下一个周期输出数据。我们都知道,douta端口受addra的控制,它会输出对应地址的数据。那么问题就来了,当写数据的时候,此时douta输出的,是当前地址刚刚写入的数据,还是写入前的数据,或者直接不输出?
Write First Mode:
写优先模式,在该模式下,写使能有效时,当前时钟下写入的数据,在下一个时钟就会出现在douta端口上。下图中,在时刻1时,将数据1111写入RAM中,默认douta的数据比地址晚一个周期,因此在时刻2时,1111便会出现在douta上。
Read First Mode:
读优先模式,在该模式下,写使能有效时,当前时钟下写入的数据,不会在下一个时钟就会出现在douta端口上。
下图中,假如地址aa上的数据是0xaa,地址bb上的数据是0xbb,地址cc上的数据是0xcc,在时刻1将数据1111写入到RAM中,但在下一个时钟周期即时刻2时,RAM的输出douta输出的是RAM原来的数据0xbb,而不是上一个时刻写入的1111.
No Change Mode:
写优先模式,在该模式下,写使能有效时,输出数据端口douta一直保持不变,不会根据地址的变化而变化。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:这个社会混好的两种人:一是有权有势,二是没脸没皮的。

1025

主题

11271

帖子

25

粉丝