在QII软件中如何设置才能调用RAM模块资源而不是LE资源??
例如:reg mem;这样定义一个RAM时,怎样设置QII软件使编译器调用blockRAM模块而不使用registers资源构建RAM呢? 用megawizard 创建。一个blockRAM并不是可以无限拆分的,不管你怎么搭配,至少在Cyclone系列里好像只能拆成两个,其他就浪费了 这个我会。我说的是在程序里面直接这样reg mem;定义,综合时候怎样才能使用blockRAM模块而不使用registers资源构建RAM。 打开auto ram replacement 的on选项;
Assignments -> Settings -> Analysis & Synthesis Setting -> More Settings(不同软件版本可能位置略有不同,自己找找吧) 回复【3楼】p.nicholas
打开auto ram replacement 的on选项;
assignments -> settings -> analysis & synthesis setting -> more settings(不同软件版本可能位置略有不同,自己找找吧)
-----------------------------------------------------------------------
LS这个设置默认已经打开了,但是编译是还是占用了registers资源而不是RAM资源。
继续求解!谢谢 这样定义是不行的,综合出来一定是用触发器。
必须要用RAM的IP,并且自行管理地址、RD、WR等信号。 不是吧? 那这样定义reg mem;岂不是失去使用的意义???
quartus有没有像Synplicity综合工具那样定义reg mem /* synthesis syn_ramstyle="block_ram" */;
后面加约束就可以直接使综合的时候使用内部RAM资源??
见如下例子:
使用Synplicity综合工具:
例 10在 Verilog 代码中附加 syn_ramstyle 综合约束属性,指定综合存贮单元的类型
在 Verilog 代码中指定 syn_ramstyle 的语法格式为:
object /* synthesis syn_ramstyle = "string" */ ;
其中“object”为 reg 类型的存储器信号;用黑体表示的“synthesis syn_ramstyle”中注释符
号后面“synthesis”是 Synplicity综合工具的 Verilog约束属性通用关键字;“syn_ramstyle”
是综合 RAM 类型的约束属性关键字;“string”根据所选器件类型,可以选择 registers、
block_ram、no_rw_check、select_ram 中的一种属性值。在 Verilog 代码中一般直接在 mem
型定义时附加该综合约束属性,如下面示例,将存储器“mem”定义为“registers”,即使
用 FF+LUT 实现“men”。代码如下:
reg mem /* synthesis syn_ramstyle="registers" */;
又如在上面举例代码中,定义 mem使用 Block RAM 资源:
module ram_WR_EN(A,CLK,D,WR,EN,RST,Q);
input D;
input WR,EN;
input A;
input CLK,RST;
output Q;
reg mem /* synthesis syn_ramstyle="block_ram" */;
reg Q; 顶一顶 我没用过A家的,只用过X家的器件,类比的话,应有以下可能:
1、使用IPCore生成工具,直接生成BlockRAM的IP Core。
2、查手册,直接实例化一个底层元件。
3、查手册,综合器的,一般会有综合器支持的代码模板。找到BlockRAM的模板,照搬即可。
4、代码加入综合器特殊注释。
12不依赖于综合器,有器件依赖,确保你用的是想用的。
3 依赖于Block RAM的行为以及综合器,一般不会有问题。
4 依赖于综合器本身。
如果你想要综合器直接推断出来一个BlockRAM,那么你描述的RAM行为,必须符合手册中BlockRAM的行为。 谢谢dr2001的回答 denike 发表于 2011-1-18 15:06
谢谢dr2001的回答
有没有找到解决方法?给个示例呗,同求!!
页:
[1]