欢迎光临散文网 会员登陆 & 注册

Vivado综合属性系列之三 RAM_STYLE

2023-05-15 21:36 作者:行中悟_悟中行  | 我要投稿

一、前言

        RAM英文全称为Random Access Memory,随机存取存储器,可以实现数据的快速随机读写,RAM可直接verilog代码编写,也可调用IP核。

二、RAM_STYLE

        RAM_STYLE属性使用格式:(* ram_style=value *) reg [len-1:0] reg_name [num-1:0];

len为存储器的宽度,num为深度,value为生成方式。

        XDC使用格式:set_property RAM_STYLE value [get_cells reg_name]

        Vivado可以通过属性RAM_STYLE指定RAM的生成方式,也即指定value的值,value可为block,distributed,registers,ultra,mixed,auto

block:使用块状RAM来实现

distributed:使用LUT来实现

registers:使用寄存器来是实现

ultra:只针对ultrascale系列的器件才有效,即使用ultrascale器件中的URAM实现

mixed:根据使用最小的面积原则灵活确定RAM的实现方式

auto:综合工具来决定实现方式

        属性如果设置在一个信号上,属性的作用范围限定为设置的信号上,如果是设置到一个模块层级上,该模块的RAM都按设置方式实现,但该属性对于模块中的子模块不生效。

        2.1 工程代码

module RAM_STYLE( d,address,ce,we,clk,out );

parameter len=12,depth=64;

input [len-1:0] d;

input [5:0] address;

input ce,we,clk;  //we为写入的使能信号,为1时对RAM进行写入

output reg [len-1:0] out;

(* RAM_STYLE="block"*) reg [len-1:0] ram [depth-1:0];   

always@(posedge clk)

if(ce==1'b1)

begin

if(we==1'b1)

ram[address]<=d;

else

out<=ram[address];

end

endmodule

结果如下图,RAM使用RAM18E1来实现

        RAM_STYLE的属性值修改为distributed,由网表可知有RAM64x1S生成RAM,即由LUT生成

            2.2 参考资料

书籍《Vivado从此开始-进阶篇》

用户手册《ug901-vivado-synthesis.pdf》


Vivado综合属性系列之三 RAM_STYLE的评论 (共 条)

分享到微博请遵守国家法律