BRAM研究
Xlinx系列FPGA,包含两种RAM:Block RAM 和 Distributed RAM,
他们的区别在于,Block RAM是内嵌专用的RAM,而Distributed RAM需要消耗珍贵的逻辑资源组成。前者具有更高的时序性能,而后者由于分布在不通的位置,延迟较大。
BRAM的应用形式
Single-port ROM
数据只读(毕竟ROM嘛。)
Dual-port ROM
能从两个端口同时访问ROM,理解上应该是加大流量了,并且可以用不同的时钟访问。同样只读
Single-port RAM
同时时钟下的单口随机读写
Simple Dual-port RAM
A口写,B口读(好像已经能处理不同时钟了)
True Dual-port RAM
A,B口都可以读和写
BRAM的读写模式
Write first mode
这种模式下
1)写操作:设置WEA为1写入当前地址的数据,而且在下一个时钟DOUTA会输出当前写入的
2)读操作:设置WEA为0读出当前地址的数据,在下一个时钟,DOUTA有效
- Read first mode 这种模式下: 1)写操作:设置WEA为1写入当前地址的数据,而且在下一个时钟DOUTA会输出之前这个地址的数据 2)读操作:设置WEA为0读出当前地址的数据,在下一个时钟,DOUTA有效
- No change mode 这种模式下: 1)写操作:设置WEA为1写入当前地址的数据,和前面两种方式不一样,DOUT保存不变 2)读操作:设置WEA为0读出当前地址的数据,在下一个时钟,DOUTA有效
- Byte Wirite 可以只针对一个字节读写,如下图,WEA = “010” ,则下一个DOUT 只有中间字节会改变成DIN的中间字节,其他保持
Something should be noticed
- 异步时钟处理原则 使用异步时钟,当一个端口将数据写入存储位置时,另一端口在指定的时间内不得读取或写入该位置。 器件数据手册中定义了该时钟到时钟的建立时间,以及其他Block RAM切换特性。这里说到的” 时钟到时钟的建立时间”我还没注意到哪一个文档有说明。所以异步时钟可以通过长期的稳定性测试获取到这个时间间隔。
just for fun
- Post link: https://www.sccan.top/2021/10/25/FPGA/BRAM%E7%A0%94%E7%A9%B6%20de590/
- Copyright Notice: All articles in this blog are licensed under unless otherwise stated.