搜索
bottom↓
回复: 10

在QII软件中如何设置才能调用RAM模块资源而不是LE资源??

[复制链接]

出0入0汤圆

发表于 2011-1-13 17:38:21 | 显示全部楼层 |阅读模式
例如:reg [7:0] mem[31:0];
这样定义一个RAM时,怎样设置QII软件使编译器调用blockRAM模块而不使用registers资源构建RAM呢?

出0入0汤圆

发表于 2011-1-13 18:06:17 | 显示全部楼层
用megawizard 创建。一个blockRAM并不是可以无限拆分的,不管你怎么搭配,至少在Cyclone系列里好像只能拆成两个,其他就浪费了

出0入0汤圆

 楼主| 发表于 2011-1-14 09:42:29 | 显示全部楼层
这个我会。我说的是在程序里面直接这样reg [7:0] mem[31:0];定义,综合时候怎样才能使用blockRAM模块而不使用registers资源构建RAM。

出0入0汤圆

发表于 2011-1-14 12:48:17 | 显示全部楼层
打开auto ram replacement 的on选项;

Assignments -> Settings -> Analysis & Synthesis Setting -> More Settings(不同软件版本可能位置略有不同,自己找找吧)

出0入0汤圆

 楼主| 发表于 2011-1-17 10:45:48 | 显示全部楼层
回复【3楼】p.nicholas
打开auto ram replacement 的on选项;
assignments -> settings -> analysis & synthesis setting -> more settings(不同软件版本可能位置略有不同,自己找找吧)
-----------------------------------------------------------------------

LS这个设置默认已经打开了,但是编译是还是占用了registers资源而不是RAM资源。
继续求解!谢谢

出0入0汤圆

发表于 2011-1-17 11:28:45 | 显示全部楼层
这样定义是不行的,综合出来一定是用触发器。

必须要用RAM的IP,并且自行管理地址、RD、WR等信号。

出0入0汤圆

 楼主| 发表于 2011-1-17 11:39:53 | 显示全部楼层
不是吧? 那这样定义reg [7:0] mem[255:0];岂不是失去使用的意义???
quartus有没有像Synplicity综合工具那样定义reg [7:0] mem[15:0] /* 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 [7:0] mem[31:0] /* synthesis syn_ramstyle="registers" */;  
又如在上面举例代码中,定义 mem使用 Block RAM 资源:
module ram_WR_EN(A,CLK,D,WR,EN,RST,Q);
input [7:0] D;
input WR,EN;
input [3:0] A;
input CLK,RST;
output [7:0] Q;  
reg [7:0] mem[15:0] /* synthesis syn_ramstyle="block_ram" */;
reg [7:0] Q;

出0入0汤圆

 楼主| 发表于 2011-1-18 09:33:06 | 显示全部楼层
顶一顶

出0入0汤圆

发表于 2011-1-18 09:41:00 | 显示全部楼层
我没用过A家的,只用过X家的器件,类比的话,应有以下可能:

1、使用IPCore生成工具,直接生成BlockRAM的IP Core。
2、查手册,直接实例化一个底层元件。
3、查手册,综合器的,一般会有综合器支持的代码模板。找到BlockRAM的模板,照搬即可。
4、代码加入综合器特殊注释。

12不依赖于综合器,有器件依赖,确保你用的是想用的。
3 依赖于Block RAM的行为以及综合器,一般不会有问题。
4 依赖于综合器本身。

如果你想要综合器直接推断出来一个BlockRAM,那么你描述的RAM行为,必须符合手册中BlockRAM的行为。

出0入0汤圆

 楼主| 发表于 2011-1-18 15:06:14 | 显示全部楼层
谢谢dr2001的回答

出0入0汤圆

发表于 2016-11-28 11:23:34 | 显示全部楼层
denike 发表于 2011-1-18 15:06
谢谢dr2001的回答

有没有找到解决方法?  给个示例呗,同求!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-30 23:01

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表