您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > Xilinx-IP-core之RAM用法指南
1XILINXIpcore之RAM用法指南一RAM分类XILINX的RAM可分为三种,分别是:单口RAM,简化双口RAM和真双口RAM。如下图所示:图.1单口RAM图.2简化双口RAMA口写入数据,B口读数据2图.3真双口RAMA,B任意一个口都可以读写数据,可从A写入,B读数据二选择数据位宽和深度BlockRAM的数据位宽为1-1152bit,深度取决于所选择FPGA器件中block的数量。超出地址范围之外的写操作,写进去的数据不会与存储器件中的数据冲突。读超出地址范围之外数据将会返回无效数据。注意,当对超出范围的地址进行操作的时候,不能置位set或reset信号,因为这仍然会读出无效数据。三操作模式每个端口的操作模式决定了此端口的读和写之间关系。端口A和B可以独立配置为以下三种模式中任一模式:写优先模式,读优先模式,不改变模式。这些模式详解见下面。当A和B端口地址有冲突时,操作模式就会影响A和B口之间关系。1.写优先模式(writefirstmode):在写优先模式中,输入数据被自动写入存储器件中,并且出现在数据输出端口。时序见下图。这种传输模式增强了在同一端口写操作时使用数据输出总线的灵活性。图.4写优先操作模式32.读优先模式(readfirstmode):在读优先模式中,预先存储在写地址中的数据会被输出,而输入数据被存入存储器件中。这种模式见下图。图.5读优先模式3.不改变模式:在不改变模式中,输出锁存在写操作时候保持不变,见下图。在同一端口的写操作不会对数据输出端口产生影响,输出仍然是以前的读数据。图.6不改变模式四数据位宽比例BlockRAM产生器支持端口A和B的位宽不同。即DINA,DINB,DOUA,DOUTB位宽可以互不相同。支持1:32到32:1之间的比例,端口A的宽度最大可达端口B的32倍,反之亦然。例如一个A口位宽32bit深度2048的真双口RAM,如果B端口宽度为8bit深度为8192。那么A地址总线位宽为11bits,B地址总线位宽为13bits。数据存在little-endian中,见下图。An是相对A端口在地址n的数据,Bn是相对于B端口在地址n的数据。A0由B3,B2,B1,B0构成。图.7数据位宽比例示意图五比特写功能(Byte_Write)比特写功能在8bit或9bit一字节时候都有效。当使用8bit一字节时候,没有优先级位,而且存储宽度限定为8bit的倍数。当用9bit一字节时候,每一个字节都包含一个优先级位,存储位宽限定为9bit的倍数。4当打开比特写功能时候,WEA或WEB总线位宽为N位。N等于DINA或DINB总线的字节数。写使能总线的最高位对应着输入字的最高字节。只有写使能总线在写操作时候置位,相应的字节才会存入存储器中。选择8bit字节时候,DIN和DOUT总线都由8bit的字节构成,没有优先级。当选择9bit字节时候,DIN和DOUT总线由9bit的字节,每一个字节的第9位都做为相应字节的优先级位。字节写功能一般用于连接数据位宽方面,这可能限制了数据位宽选择的灵活性。然而,它不太可能用于NO_CHANGE操作模式。下面是一个单端RAM数据位宽24bits,写使能总线WEA为3bits的字节写功能的示意图。图.8字节写功能示意图六冲突Block模块支持双口RAM,每一个口都是独立且平等的,这样就会有数据冲突。下面分别在异步和同步时钟域中描述这种冲突的后果。1.冲突和异步时钟:一般指导原则使用异步时钟时候,当一个端口往某个存储地址中写数据时,另一个端口在指定的时间就不能从此存储地址读或写数据。在器件手册中定义了此clock-to-clock置位时间,和其它blockram的转换特性。2.冲突和同步时钟:一般指导原则同步时钟倒是一系列特殊的冲突,如下:A同步写-写冲突。当两个端口都往存储器中同一个地址写数据时候,就会发生冲突。这会导致此存储地址中的内容是未知的。注意,写-写冲突只会影响存储内容,与之相反写-读冲突只影响数据输出。B使用字节写。使用字节写功能,当分散的字节写入同样数据字,存储内容不会腐烂。RAM内容只有在每个端口都写入相同的字节。下图描述了当ADDRA=ADDRB=0时候的情况图.9写-写冲突示例C同步读-写冲突。当一个端口写数据,另一个端口从同样地址读数据时就会产生同步写-读冲突。当存储内容在读-写冲突时候没有腐烂,输出数据的有效性就取决于写端口的操作模式。a)如果写端口是读优先模式,那么另一个口就很可能读取旧的存储内容。5b)如果写端口是写优先或不改变模式,那么读端口的输出数据是无效的。c)如果打开字节写功能,读端口输出只有最新的字节是无效的。下图描述了字节写的写-读冲突的影响。当端口A为写优先模式和读优先模式时的DOUTB。假设ADDRA=ADDRB=0,端口B一直在读,所有的存储地址都初始化为0.RAM内容在写-读冲突中从没有corrupt。图.10写读冲突示例七冲突和简单双口RAM对于简单双口RAM,操作模式是不可选的,但是会自动设置为要么读优先或写优先模式,这个取决于目标器件和时钟配置。操作模式决定了A或B端口的读写关系,只有在地址冲突时候才会影响A和B端口之间关系。
本文标题:Xilinx-IP-core之RAM用法指南
链接地址:https://www.777doc.com/doc-4379722 .html