原创 Block ram or Distributed ram

2020-8-26 13:49 4174 24 24 分类: FPGA/CPLD
声明一个reg数组,编译器是生成distributed ram还是生成block ram?如果我想让编译器综合成block ram,该如何做?
下面总结一下xilinx 与 altera两家的方法。
1.Altera
对于altera来说,综合时编译器会根据你所定义的数组的大小,选择生成distributed ram 还是block ram,如果数组较大,会生成block ram,数组较小会用lut实现。
altera是在声明前添加属性的方式:
(* ramstyle = "M9K" *) reg   [DATA_WIDTH:0]   ram   [DATA_DEPTH:0]   ;
手动编写一段代码,进行验证,资源报告如下:

再将综合属性去掉,重新编译,生成报告如下:

可以看到,block memory bit 与 registers的变化。

(* ramstyle = "LOGIC" *) 使用lut实现

2.Xilinx

xilinx的方法也类似,分别为:

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

(* RAM_STYLE="distributed" *) reg   [DATA_WIDTH-1:0]      ram [DATA_DEPTH-1:0];


作者: 洋仔, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-1854387.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
24
关闭 站长推荐上一条 /3 下一条