声明一个reg数组,编译器是生成distributed ram还是生成block ram?如果我想让编译器综合成block ram,该如何做? 下面总结一下xilinx 与 altera两家的方法。 1.Altera 对于altera来说,综合时编译器会根据你所定义的数组的大小,选择生成distributed ram 还是block ram,如果数组较大,会生成block ram,数组较小会用lut实现。 altera是在声明前添加属性的方式: (* ramstyle = "M9K" *) reg ram ; 手动编写一段代码,进行验证,资源报告如下: 再将综合属性去掉,重新编译,生成报告如下: 可以看到,block memory bit 与 registers的变化。 (* ramstyle = "LOGIC" *) 使用lut实现 2.Xilinx xilinx的方法也类似,分别为: ( * RAM_STYLE="block" * ) reg ram ; ( * RAM_STYLE="distributed" * ) reg ram ; 下载视频