描述
关键词:块RAM,选择RAM,单,双,端口,块内存,列奥纳多,初始化
紧迫性:标准
一般描述:
列奥纳多谱可以将Verilog或VHDL中的内存语句映射到所有ViTeX器件上的块RAM。
以下是Leonardo Spectrum中的块RAM的详细信息列表:
– VIETEX块RAM完全同步。读写操作都是同步的。
-列奥纳多频谱推断以下块RAM配置:
1。在同一地址上读写的单端口RAM或RAM。
2。双端口RAM -具有独立读写地址的RAM。(从端口A写入,从B端口读取)
-列奥纳多谱不推断以下配置:
1。从A和B端口读取和写入的双端口RAM。
2。使用RST和ENA引脚功能的块RAM。
变量:
如果不需要RAM提取,则将以下变量设置为“false”(默认为真)。
设置提取错误
默认情况下,可映射到块RAM的RAM被映射到块RAM。通过将属性BuffiSRAM设置为“false”,可以禁用映射到块RAM:
StIsAtgult-名称块RAM -值false
在这种情况下,如果可能的话,使用选择RAM来实现RAM。
注:
使用块RAM实现的单端口RAM的变体不能使用选择RAM来实现。
-对于双端口块RAM推断,请参见(赛灵思解答10728).
在HDL代码中初始化被推断的RAM目前不被支持。为此,从Leonardo Spectrum的示意查看器或EDF网表中获取RAM的实例名,并在UCF文件中应用init属性。(默认情况下,推断的RAM初始化为“0”(零)。
解决方案
一
Verilog示例:
(在列奥纳多频谱1999年1F中测试)
模块RAM(DIN,我们,ADDR,CLK,DOUT);
参数数据宽度=7,地址宽度=6,内存元件=64;
输入[DATAWIWITHES-1:0] DIN;
输入〔地址宽度1∶0〕ADDR;
输入我们,CLK;
输出[DATAWIWITHES-1:0] DOUT;
Reg [ DATAWIWITH-1:0] MEM[ MeMielEngs-1∶0];
//示例属性MEM Buffer-RAM-FALSE
*如果您想禁用块RAM提取,请使用上面的指令。
将BuffySRAM属性设置为信号存储器上的FALSE。
必须在内存信号上设置BuffyRAM属性。*/
Reg [地址宽度-1:0] ADDRYRG;
总是@(POSEDGE CLK)
开始
AdDr.Reg & lt;
如果(我们)
MEM[ADDR];
结束
指定DOU= MEM[ADDRYRG ];
终端模块
二
块RAM的VHDL实例
(在列奥纳多频谱1999年1F中测试)
库IEEE,范例;
使用IEEE.STDYLogiCy1164.ALL;
使用IEEE.
RAMI示例1实体
泛型(DATAL宽度:整数:=8;
地址宽度:整数:=8;
MimiStime:整数:=256);
端口(数据:在STdLogLogic向量中(DATAWIWITHOT-1降到0);
地址:未签名(地址栏宽度1至0);
我们,CLK:在STDYLogic中;
问:出StdLogLogic向量(DATAWIWITH-1下降到0);
RAME1例结束;
RAMI示例1的体系结构EX1
类型MyMyType是StdLogLogic向量的数组(MeMyDeXTH-1下降到0)(DATAWIWITH-1下降到0);
信号MEM:MeMyType;
信号rAd:未签名(ADDESRESWITHEST-1降到0);
开始
L0:进程(CLK,我们,地址)
开始
如果(CLK=‘1’和CLK’事件)
地址;地址;
如果(=‘1’)
MEM(To-整数(rAdvess))和lt;=数据;
如果结束;
如果结束;
结束过程;
L1:进程(CLK,地址)
开始
如果(CLK=‘1’和CLK’事件)
=MEM(To-整数(地址));
如果结束;
结束过程;
末端EX1;
没有回复内容