logo资料库

Xilinx_IP_core之SRAM用法.doc

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
一 RAM分类
二 选择数据位宽和深度
三 操作模式
四 数据位宽比例
五 字节写功能(Byte_Write)
六 冲突
七 冲突和简单双口RAM
XILINX Ipcore 之 RAM 用法指南 一 RAM 分类 XILINX 的 RAM 可分为三种,分别是:单口 RAM,简化双口 RAM 和真双口 RAM。如下 图所示: 图.1 单口 RAM 图.2 简化双口 RAM A 口写入数据,B 口读数据 1
图.3 真双口 RAM A,B 任意一个口都可 以读写数据,可从 A 写入,B 读数据 二 选择数据位宽和深度 Block RAM 的数据位宽为 1-1152bit,深度取决于所选择 FPGA 器件中 block 的数量。超 出地址范围之外的写操作,写进去的数据不会与存储器件中的数据冲突。读超出地址范围之 外数据将会返回无效数据。注意,当对超出范围的地址进行操作的时候,不能置位 set 或 reset 信号,因为这仍然会读出无效数据。 三 操作模式 每个端口的操作模式决定了此端口的读和写之间关系。端口 A 和 B 可以独立配置为以 下三种模式中任一模式:写优先模式,读优先模式,不改变模式。这些模式详解见下面。 当 A 和 B 端口地址有冲突时,操作模式就会影响 A 和 B 口之间关系。 1. 写优先模式(write first mode):在写优先模式中,输入数据被自动写入存储器件中,并且 出现在数据输出端口。时序见下图。这种传输模式增强了在同一端口写操作时使用数据 输出总线的灵活性。 图.4 写优先操作模式 2
2. 读优先模式(read first mode):在读优先模式中,预先存储在写地址中的数据会被输出, 而输入数据被存入存储器件中。这种模式见下图。 3. 不改变模式:在不改变模式中,输出锁存在写操作时候保持不变,见下图。在同一端口 的写操作不会对数据输出端口产生影响,输出仍然是以前的读数据。 图.5 读优先模式 图.6 不改变模式 四 数据位宽比例 Block RAM 产生器支持端口 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 的倍数。 3
当打开字节写功能时候,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 置位时间,和其它 block ram 的转换特性。 2. 冲突和同步时钟:一般指导原则 同步时钟倒是一系列特殊的冲突,如下: A 同步写-写冲突。当两个端口都往存储器中同一个地址写数据时候,就会发生冲突。这会 导致此存储地址中的内容是未知的。注意,写-写冲突只会影响存储内容,与之相反写-读冲 突只影响数据输出。 B 使用字节写。使用字节写功能,当分散的字节写入同样数据字,存储内容不会腐烂。RAM 内容只有在每个端口都写入相同的字节。下图描述了当 ADDRA=ADDRB=0 时候的情况 图.9 写-写冲突示例 C 同步读-写冲突。当一个端口写数据,另一个端口从同样地址读数据时就会产生同步写-读 冲突。当存储内容在读-写冲突时候没有腐烂,输出数据的有效性就取决于写端口的操作模 式。 a) 如果写端口是读优先模式,那么另一个口就很可能读取旧的存储内容。 4
b) 如果写端口是写优先或不改变模式,那么读端口的输出数据是无效的。 c) 如果打开字节写功能,读端口输出只有最新的字节是无效的。 下图描述了字节写的写-读冲突的影响。当端口 A 为写优先模式和读优先模式时的 DOUTB。 假设 ADDRA=ADDRB=0,端口 B 一直在读,所有的存储地址都初始化为 0.RAM 内容在写-读 冲突中从没有 corrupt。 图.10 写读冲突示例 七 冲突和简单双口 RAM 对于简单双口 RAM,操作模式是不可选的,但是会自动设置为要么读优先或写优先模式, 这个取决于目标器件和时钟配置。操作模式决定了 A 或 B 端口的读写关系,只有在地址冲 突时候才会影响 A 和 B 端口之间关系。 5
分享到:
收藏