ram的基础知识:详解RAM核的使用

1.RAM分类

XILINX的RAM可分为3种,分别是单口RAM、简化双口RAM和真双口RAM,如图3-18所示。

ram的基础知识:详解RAM核的使用(1)

图3-18 RAM种类

单口RAM:只有一个A口。

简化双口:RAM A口写入数据,B口读数据。

真双口:RAM A,B任意一个口都可以读/写数据。

2.选择数据位宽和深度

Block RAM的数据位宽为1~1152位,深度取决于所选择FPGA器件中block的数量。超出地址范围之外的写操作,写进去的数据不会与存储器件中的数据冲突。读超出地址范围之外的数据将会返回无效数据。注意,当对超出范围的地址进行操作的时候,不能置位或复位信号,因为这仍然会读出无效数据。

3.操作模式

每个端口的操作模式决定了此端口的读和写之间关系。端口A和B可以独立配置为以下三种模式中任一模式:写优先模式,读优先模式,不改变模式。这些模式详解见下面。当A和B端口地址有冲突时,操作模式就会影响A和B口之间关系。

写优先模式(Write First Mode):在写优先模式中,输入数据被自动写入存储器件中,并且出现在数据输出端口,时序见图3-19。这种传输模式增强了在同一端口进行写操作时使用数据输出总线的灵活性。

ram的基础知识:详解RAM核的使用(2)

图3-19 写优先操作模式

读优先模式(Read First Mode):在读优先模式中,预先存储在写地址中的数据会被输出,而输入数据被存入存储器件中。这种模式见图3-20。

ram的基础知识:详解RAM核的使用(3)

图3-20 读优先模式

不改变模式:在不改变模式中,输出锁存在进行写操作的时候保持不变,见图3-21。同一端口的写操作不会对数据输出端口产生影响,输出仍然是以前的读数据。

ram的基础知识:详解RAM核的使用(4)

图3-21 不改变模式

4.数据位宽比例

Block RAM产生器支持端口A和B的位宽不同,即DINA、DINB、DOUA与DOUTB位宽可以互不相同。支持1∶32到32∶1之间的比例,端口A的宽度最大可达端口B的32倍,反之亦然。例如一个A口位宽32位、深度2048的真双口RAM,如果B端口宽度为8位、深度为8192,那么A地址总线位宽为11位,地址总线位宽为13位。B数据存在little-endian中,见图 3-22。An 是相对 A 端口在地址 n 的数据,Bn是相对于B端口在地址n的数据。A 0 由B 3 、B 2 、B 1 、B 0 构成。

ram的基础知识:详解RAM核的使用(5)

图3-22 数据位宽比例示意图

5.比特写功能

比特写功能在8位或9位一字节时候都有效。当用8位一字节时,没有优先级位,而且存储宽度限定为8位的倍数。当用9位一字节时候,每一字节都包含一个优先级位,存储位宽限定为9位的倍数。

当打开比特写功能时,WEA或WEB总线位宽为N位,N等于DINA或DINB总线的字节数。写使能总线的最高位对应着输入字的最高字节,只有写使能总线在写操作时候置位,相应的字节才会存入存储器中。选择8位字节时,DIN和DOUT总线都由8位的字节构成,没有优先级。当选择9位字节时候,DIN和DOUT总线由9位的字节构成,每一个字节的第9位都作为相应字节的优先级位。字节写功能一般用于连接数据位宽方面,这可能限制了数据位宽选择的灵活性。然而,它不太可能用于NO_CHANGE操作模式。图3-23所示是一个单端RAM数据位宽24位、写使能总线WEA为3位的字节写功能。

ram的基础知识:详解RAM核的使用(6)

图3-23 字节写功能示意图

6.冲突

Block模块支持双口RAM,每一个口都是独立且平等的,这样就会有数据冲突。下面分别在异步和同步时钟域中描述这种冲突的后果。

冲突和异步时钟:一般指导原则是,使用异步时钟时,当一个端口往某个存储地址中写数据时,另一个端口在指定的时间就不能从此存储地址读或写数据。在器件手册中定义了此clock-to-clock的置位时间和其他Block RAM的转换特性。

冲突和同步时钟:一般指导原则,同步时钟导致一系列特殊的冲突,具体如下。

A:同步写-写冲突。当两个端口都往存储器中同一个地址写数据时,就会发生冲突,这会导致此存储地址中的内容是未知的。注意,写-写冲突只会影响存储内容,与之相反的是写-读冲突只影响数据输出。

B:使用字节写。使用字节写功能,当不同的字节地址写入相同的RAM地址单元,存储内容不会被破坏。如果两个端口都向同一个RAM地址写入相同的字节地址,RAM内容才会被破坏。图3-24描述了当ADDRA=ADDRB=0时候的情况。

ram的基础知识:详解RAM核的使用(7)

图3-24 写-写冲突示例

C:同步读/写冲突。当一个端口写数据,另一个端口从同样地址读数据时就会产生同步写/读冲突。若存储内容在读/写冲突时候没有被破坏,输出数据的有效性就取决于写端口的操作模式。

(1)如果写端口是读优先模式,那么另一个口就很可能读取旧的存储内容。

(2)如果写端口是写优先或不改变模式,那么读端口的输出数据是无效的。

(3)如果打开字节写功能,读端口输出只有最新的字节是无效的。

图3-25描述了字节写的写/读冲突的影响,列出了当端口A为写优先模式和读优先模式时的DOUTB。假设ADDRA=ADDRB=0,端口B一直在读,所有的存储地址都初始化为0,RAM内容在写/读冲突中没有被破坏。

ram的基础知识:详解RAM核的使用(8)

图3-25 写/读冲突示例

7.冲突和简单双口RAM

对于简单双口RAM,操作模式是不可选的,但是会自动设置为读优先或写优先模式,这个取决于目标器件和时钟配置。操作模式决定了A或B端口的读/写关系,只有在地址冲突时才会影响A和B端口之间的关系。

你开学,我放价

给大家发福利了,10张专栏优惠券,满60立减29元,先到先得,速领→优惠券

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页