对于ROM 模块,主要是生成相应的.coe 文件。 1.在Matlab 中生成正余弦波形的浮点值,并量化为16bit 定点波形数值: % 生成 ROM 的 .coe 文件 clc clear all close all x = linspace(0, pi/2 ,1024); % 在区间[0,pi/2]之间等间隔地取1024 个点 y_cos = cos(x); y_sin = sin(x); y_cos = y_cos * 2^15; y_sin = y_sin * 2^15; fid = fopen('D:/cos_coe.txt','wt'); fprintf(fid, '%16.0f' , y_cos); fclose(fid); fid = fopen('D:/sin_coe.txt','wt'); fprintf(fid, '%16.0f' , y_sin); fclose(fid); 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 文件错误类型主要有数据基数不对和数据的长度不对两种。 4.在ModelSim 中对此IP 单独进行仿真。 可见延时为两个时钟周期,如下图: 另一种方法: Xilinx 的ROM 的初始化是一件很麻烦的事情,要导入Coe 文件。 Alteral 是mif 和 hex 文件,有专门的软件可以生成。 coe 文件的格式如下: MEMORY_INITIALIZATION_RADIX=10; MEMORY_INITIALIZATION_VECTOR= 512,515,518,522,525,528,531,535,538,54 。。。。。。。。12,23; 注意:前面的2 行不要动,RADIX 后面的数字表示的是进制,这里取 10 进制。结尾用的是分号 在 matlab 中关键的步骤如下,我们以一个周期 1000 个采样,位数为 10 位的正弦表格为例子。 n=0:999 ;y=round(sin(2*pi*0.001*n)*512)+512;//后面加上 512 是为了防止出现负数 y=mod(y,1024);//因为是10 位,所以,没有 1024,对 1024 取余数,把 1...