1.利用MATLAB产生COE文件,初始化RAM

产生正余弦波形数值,形成COE文件,加载在ROM中。

MATLAB中代码如下:

x = linspace(0,6.28,1024); %在0和2pi间取1024个点

y1 = cos (x)+1;

y2 = sin (x)+1;

y1 = y1 * 32768; %在将波形抬高到坐标轴上后,再将上面算得的数值放大量化成16位

y2 = y2 * 32768;

fid = fopen(‘c:/cos_coe.txt’,‘wt’); % 生成TXT文件

fprintf( fid, ‘memory_initialization_radix=10;\n’, y1);%生成索引

fprintf( fid, ‘memory_initialization_vector =\n’, y1 );

fprintf(fid,’%16.0f,\n’,y1);%量化数据格式,具体说明见前面,注意其中的逗号!

fclose(fid)

plot(y1);

hold on;

fid = fopen(‘c:/sin_coe.txt’,‘wt’);

fprintf( fid, ‘memory_initialization_radix=10;\n’, y2);

fprintf( fid, ‘memory_initialization_vector =\n’, y2 );

fprintf(fid,’%16.0f,\n’,y2);

fclose(fid)

plot(y2);

2.生成.coe文件。在D盘根目录下,将cos_coe.txt和sin_coe.txt的后缀改成.coe。打开文件,把每一行之间的空格用文本替换功能换成“,”(这可以通过强大的UltraEdit来实现!),并在最后一行添加一个分号“;”。最后,在文件的最开始添加下面两行:

memory_initialization_radix=10;

memory_initialization_vector=

然后,保存文件退出。

3.将coe文件加载到BLOCKROM所生成的ROM中。新建一个BLOCKROM的IP Core, 其位置为“Memories & Storage Elements---->RAMs & ROMs----->Block Memory Generator v2.4”。在第1页中选择“single port rom”,在第2页中选择位宽为16,深度为1024,在第3页下载coe文件,如下图,然后双击Finish,完成IP Core的生成。如果coe文件生成得不对,Browse前面的框中是显示红色的文件名,coe文件错误类型主要有数据基数不对和数据的长度不对两种。

MODELSIM下rom仿真。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐