《7.4 基于ip core的block ram设计修改稿》由会员分享,可在线阅读,更多相关《7.4 基于ip core的block ram设计修改稿(39页珍藏版)》请在金锄头文库上搜索。
1、7.4 基于IP Core的Block RAM设计7.4 基于IP Core的Block RAM设计n 本节介绍基于IP Core的Block RAM设计,由于 Block RAM属于特殊结构,使用Xilinx公司提供 的IP Core是比较方便的,而且灵活、高效、不 容易出错(IP Core的使用请见3.1.4节)。7.4.1双端口块RAM(Dual-Port Block RAM)双端口RAM的特性nVirtex、Virtex-E、Virtex-II、Virtex-IIPro、 Spartan、Spartan-II、Spartan-IIE和Spartan- 3系列的FPGA都嵌入了Block
2、 RAM。n支持所有3种Virtex-II写模式 :Read-After-Write 、Read-Before-Write和 No-Read-On-Write( 只适用于Virtex-II和Spartan-3)n支持RAM和ROM功能。n支持1到256BIT的数据端口宽度。n根据选择的不同结构,支持1到2M字的存储深度。n支持ROM功能,两个端口可以同时对一个地址的数据进 行读操作。n支持RAM功能,两个端口可以同时对不同的地址进行写 操作,或者对同一地址进行读操作。n两个端口是完全独立的。n支持A、B端口的不对称配置。n支持CORE设计或者使用SelectRAM+ 、 SelectRAM-I
3、I 库原语以求面积优化。n支持不同极性的控制信号引脚:时钟(clock)、 使能 (enable), 写使能(write enable) 和输出初使化( output initialization)引脚。n结合Xilinx的Smart-IP技术使设计更灵活,最优化实现。2双端口RAM的功能描述nDual-Port Block RAM是由一块或多块叫做Select -RAM+的4Kb存储块组成的。Virtex-II和 Spartan-3系列的Dual-Port Block RAM是由一块 或多块16 Kb存储块(SelectRAM-II)组成的 ,能构成更宽或者更深的存储器设计。Select-
4、RAM+ 和SelectRAM-II都是真正的双端口 RAM,为Spartan-II和Virtex系列家族的芯片提 供快速、离散的而且足够大的块RAM。因为 Spartan-II和Virtex都使用4Kb的Select-RAM+ 存储块,所以任何涉及到Virtex能实现的RAM, 都可以在Spartan-II、Virtex-E、Virtex-II、 Virtex-IIPro、Spartan-IIE系列中实现。每个存储器含有两个完全独立的端口A和B ,两个端口享有同时访问存储器中同一地址的 能力,存储器的深度和宽度由使用者自己定义 。两个端口在功能上是完全一样,都可以对存 储器进行读写操作。两个
5、端口可以同时对存储 器的同一地址进行读操作,如果对同一地址进 行操作,一个端口读,一个端口写,那么写操 作成功,而读出的数据是无效的。根据使用者的定义,可以配置端口A和端口 B的数据宽度和地址宽度。当两个端口被禁用时 (ENA和ENB无效),存储器中的数据和输出 端口将保持不变。当两个端口可用时(ENA和 ENB有效),对存储器的所有操作将在输入时 钟的边沿触发。n 进行写操作时(WEA或WEB有效),相应数 据端口的数据将写入地址端口所指定的存储地 址中。 在这个操作中,Spartan-II/Virtex和 Virtex-II系列的块RAM的输出端口的动作并不相 同。nVirtex-II和S
6、partan-3系列的块RAM的输出端 口的具体实现要根据“写模式”的设置而定。 Virtex-II和Spartan-3系列的块RAM支持3种“写 模式”,每种模式决定了输出端口在写操作发生 后将如何作出反应。nSpartan-II和Virtex系列的块RAM只支持一种“写 模式”:Read-After-Write。这种写模式使写入 的数据在写操作后呈现在输出端口。n在读操作时,地址输入端口指定的地址上的 数据在输出端口输出。当同步初始化( Synchronous Initialization(SINITA或SINITB)) 有效时,有锁存器的输出端口将被同步初始化 ,Spartan-II和V
7、irtex系列将被初始化为0, Virtex-II系列将被初始化为使用者事先定义的数 据。同步初始化操作并不影响存储器中的数据 ,也不会与写操作发生冲突。n使能,写使能和同步初始化可以被定义为高 电平有效或者低电平有效。3双端口RAM的引脚n双端口RAM的Core 引脚如图7.4.1所示 。 图7.4.1 双端口RAM的引脚n双端口RAM的Core引脚的具体含义列表 于表7.4.1。端口名称 端口 方向 功能描述DINA|B可选 输入 数据输入:数据从此端口写入存储器。ADDRA|B 输入 地址输入:写或者读操作的地址由此端口输入。 WEA|B可选 输入 写使能控制信号:控制数据写入存储器。
8、ENA|B可选 输入 使能控制信号:写或者读操作的有效控制。SINITA|B可选 输入 同步初始化控制信号:使输出端口初始化为预先 设定的状态。 CLKA|B 输入 时钟信号:所有存储器操作是在输入时钟的同步 下进行的。 NDA|B可选 输入 握手信号:表示A或者B端口上有新的而且有效的 地址数据。(高电平有效)。 DOUTA|B可选 输出 数据输出端口:存储器的同步数据输出端口。 RFDA|B可选 输出 握手信号:表示存储器已经准备好接受新数据。 (高电平有效) RDYA|B可选 输出 握手信号:表示输出端口上的数据有效。(高电 平有效)。 7.4.2 使用IP Core生成双端口RAM n
9、 Xilinx提供了Dual-Port Block RAM的IP Core。 具体如何调用IP Core、生成IP Core见3.1.4节。 这里介绍具体的一些IP Core参数,设计者可以 根据设计的需要设置这些参数。nDual-Port Block RAM的参数设置窗口分别如 图7.4.2、图7.4.3、图7.4.4、图7.4.5所示。 Dual-Port Block RAM的参数设置一共有4个窗口 ,可以单击按钮进入下一个窗口。图7.4.2 Dual-Port Block RAM的参数设置窗口图7.4.3 Port A Block RAM的参数设置窗口图7.4.4 Port B Bloc
10、k RAM的参数设置窗口图7.4.5 Dual-Port Block RAM的参数设置窗口n元件名称(Component Name):为了生成IP Core,必 须为生成的文件取一个名称。n端口A存储器大小(Memory Size):n数据端口A宽度(Width A):可以选择数据端口A的宽度,宽 度可以从1到256。n地址端口A深度(Depth A):可以选择存储器的字节数 。根据所选择的不同结构,字节数可以从2BIT到2M。 可以选择的地址深度要根据所选择的数据端口A的宽度 而定。Spartan-II和Virtex系列的块RAM的最大字节数为 256K,Virtex-II和Spartan-
11、3系列的块RAM的最大字节数 为1M。必须注意生成的CORE的大小不能超过目标器件 库原语的大小 端口B存储器大小(Memory Size):数据端口B宽度(Width B):可以选择数据端 口B的宽度,可以选择的数据端口B的宽度取决 于定义的数据端口A的宽度。对于Spartan-II和 Virtex系列的块RAM,能够选择的宽度可以是1 ,2,4,8或16倍A端口的宽度。对于Virtex-II 系列的块RAM,能够选择的宽度可以是1,2,4 ,8,16或32倍A端口的宽度。n地址端口B深度(Depth B):定义了Width A、Depth A和Width B后,Depth B的值将为 定值
12、。根据端口A和B定义的存储器的大小必 须相等可以计算出Depth B。n端口A可选项(Port A Options):n配置(Configuration)选项:可以选择的 有Read And Write(读和写), Write Only (只写)和Read Only(只读)。n写模式(Write mode)选择:可以为Virtex-II 系列的块RAM选择写模式。Spartan-II和 Virtex系列的块RAM只支持Read After Write模式。Read After Write模式(支持的有Virtex-II、Spartan-II、 Spartan-3、Virtex),可能有下面几种
13、情况:n没有输入输出寄存器时:数据在WEA信号有效 后的第一个时钟沿传送到端口DOUTA。n仅有输入寄存器时:数据在WEA信号有效后的 第二个时钟沿传送到端口DOUTA。n仅有输出寄存器时:数据在WEA信号有效后的 第二个时钟沿传送到端口DOUTA。n有输入和输出寄存器时:数据在WEA信号有效 后的第三个时钟沿传送到端口DOUTA。nRead After Write模式的时序如图7.4.6所示。图7.4.6 Read After Write模式时序nRead Before Write模式(支持的有Virtex- II、Spartan-3),可能有下面几种情况:n没有输入输出寄存器时:在WEA信
14、号有效后的第 一个时钟沿,存储器中当前地址上的数据被传 送到端口DOUTA。n仅有输入寄存器时:在WEA信号有效后的第二 个时钟沿,存储器中当前地址上的数据被传送 到端口DOUTA。n仅有输出寄存器时:在WEA信号有效后 的第二个时钟沿,存储器中当前地址上 的数据被传送到端口DOUTA。n有输入和输出寄存器时:在WEA信号有 效后的第三个时钟沿,存储器中当前地 址上的数据被传送到端口DOUTA。图7.4.7 Read Before Write模式时序nNo-Read-On-Write模式(支持的有Virtex-II、Spartan-3) :当WEA有效时,不会进行读操作。DOUTA端 口将保持
15、上一次读操作的数据。No-Read-On-Write模式时序如图7.4.8所示。图7.4.8 No-Read-On-Write模式时序n端口B可选项(Port B Options): 端口B可选项 与端口A可选项相同。n端口A设计选项(Port A Design Options):1 可选引脚端(Optional Pins):a. 使能引脚端。b. 握手信号引脚端。包括ND、RFD、RDY 信号,它们的含义如表7.4.1所示。需要注意的 是,ND信号必须在RFD有效时才能有效。RFD信 号在EN信号有效时一直是有效的。可选输入寄存器(Register Options) :可以为 端口DIN、A
16、DDR和WE添加输入寄存器。 可选输出寄存器(Output Register Options):n a. Additional Output Pipe Stages:选择1可以为 输出端口再增加一级寄存器,选择0不加寄存器 。n b. 初始化(SINIT)引脚: SINIT引脚的含义见 表7.4.1。n引脚极性(Pin Polarity):使用者可以 为存在的引脚极性配置。对于时钟信号 ,可以配置成上升沿或下降沿触发。对 于EN、WE和SINIT引脚端,可以配置 成高电平或低电平有效。n端口B可选项(Port B Options): 端口B可选 项与端口A可选项相同。n库原语选择(Primitive Selection):有两项 可供选择。n面积优化(Optimize For Area)。n选择库原语(Select Primitive)。Virtex、Virtex- E和Spartan-II的库原语有4kx1, 2kx2, 1kx4, 512x8和256x16。Virtex-II的库原语有16kx1, 8kx