Vivado 如何调用ROM IP核

电子说

1.3w人已加入

描述

.coe格式的数据文件简介

在Vivado中,对rom进行初始化的文件是.coe文件.它的格式如下:

memory_initialization_radix=10;
memory_initialization_vector =
65534,
65533,
...,
60211;

其中,memory_initialization_radix=10; 表示文件存储数据的进制,10即为10进制,memory_initialization_vector是数据向量,等号后面的数字就是数据向量,使用逗号隔开数据,分毫表示结束。

小结:
① .coe文件的前两行的开头格式是固定的,不能改变的
② 所存储的数据数量与大小是与设计rom的位宽和深度相对应的

使用matlab生成.coe文件

以下面的程序为例,演示了生成位宽为16bit,深度为1024的rom生成初始化文件:

width=16;   %rom的位宽
depth=1024; %rom的深度
x=linspace(0,2*pi,depth);  %在一个周期内产生1024个采样点
y_cos=cos(x);   %生成余弦数据
y_cos=round(y_cos*(2^(width-1)-1))+2^(width-1)-1;  %将余弦数据全部转换为整数

fid=fopen('C:/Users/Administrator/Desktop/cos_coe.coe','w');  %创建.coe文件
fprintf(fid,'%d,/n',y_cos);  %向.coe文件中写入数据
fclose(fid);  %关闭.coe文件

注意,windows中换行符可能是/r/n

再编辑.coe文件,推荐使用notepad++打开,并:

① 在前两行添加:

memory_initialization_radix=10;
memory_initialization_vector =

② 将最后一行的逗号改为分号.

Vivado中ROM IP核的使用

① 在project manager选择IP Catalog:

ROM

② 找到Block Memory Generator,并双击:

ROM

③ 在下面的界面中进行ROM的设置,在Other Options栏中设置刚刚设置好的.coe文件的位置,推荐将该文件放在工程目录下面。并点击OK,即可完成ROM的设置,成功会的结果如下所示:

ROM

④ 完成上面的操作之后可以在工程文件中调用该ROM IP核,调用的方式是在IP Source中打开所生成的ROM IP核,再打开*.v文件,如下图所示:

ROM

复制该文件中的调用语句:

module rom_data_i(clka, addra, douta)
/* synthesis syn_black_box black_box_pad_pin="clka,addra[16:0],douta[15:0]" */;
  input clka;
  input [16:0]addra;
  output [15:0]douta;
endmodule

模仿该格式就可以调用IP核。

编辑:hfy


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分