在进行FPGA设计时,经常要对rom模块进行初始化。ISE或Quartus II软件本身具备的初始化功能对于较小的rom是行之有效的,但面对大容量的rom时就显得捉襟见肘了。而matlab作为一神器,在这时就有了用武之地。使用它生成.coe或.mif文件,可以起到事半功倍的效果。

生成.coe文件

一、了解.coe文件的格式
在ISE中,对rom进行初始化的文件是.coe文件。它的格式如下:
 memory_initialization_radix=10; -->文件存储数据的进制,10即为10进制
 memory_initialization_vector = -->数据向量
 65534,65533,……,65532,65528; -->所存储的10进制数据,每个数据使用逗号隔开,最后分号结束

**.coe文件的前两行的开头格式是固定的,不能改变的。
**--|第一行:memory_initialization_radix=<进制>;
**--|第二回:memory_initialization_vector=   
**所存储的数据数量与大小,是与设计rom的位宽和深度相对应的。
二、使用matlab生成.coe文件
2.1 以下程序用于为位宽为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文件
2.2 编辑.coe文件(最好使用UltraEdit打开)
--在前两行添加
 memory_initialization_radix=10;
 memory_initialization_vector =

--将最后的逗号改为分号
--最后文件格式:
 memory_initialization_radix=10;
 memory_initialization_vector =
 65534,
 65533,
 .....
 65334,
 65287;

生成.mif文件
一、了解.mif文件的格式
%.mif文件的结构
%--WIDTH=16;    -->位宽
%--DEPTH=1024;  -->深度
%--ADDRESS_RADIX=UNS;   -->地址的进制,此处为无符号类型
%--DATA_RADIX=UNS;      -->数据的进制,此处为无符号类型
%--CONTENT BEGIN        -->存储内容的开头
%--0:0;
%--……;
%--1023:43;
%--END;                 -->存储内容的结束

二、使用matlab生成.mif文件
width=16;   %rom的位宽
depth=1024; %rom的深度
x=linspace(0,2*pi,depth);  %在一个周期内产生1024个采样点
y_cos=cos(x);   %生成余弦数据
y_cos=y_cos+1;  %将生成的数据全部转换为整数
y_cos=round(y_cos*(2^(width-1)-1));    %将幅值放大,并转换为整数
y_sin=sin(x);   %生成正弦数据
y_sin=y_sin+1;
y_sin=round(y_sin*(2^(width-1)-1));    %将幅值放大,并转换为整数
fid=fopen('C:\Users\Administrator\Desktop\cos_mif.mif','w');
for num=0:depth-1;
   fprintf(fid,'%d:%d;\n',num,y_cos(num+1));
end
fclose(fid);
fid=fopen('C:\Users\Administrator\Desktop\sin_mif.mif','w');
for num=0:depth-1;
  fprintf(fid,'%d:%d;\n',num,y_sin(num+1)); 
end
fclose(fid);
%用于测试生成的数据
%plot(x,y_cos)
%plot(x,y_sin)

Matlab生成Xilinx Rom IP CORE的初始化内容coe文件相关推荐

  1. (44)Xilinx ROM IP核配置(五)(第9天)

    (44)Xilinx ROM IP核配置(五)(第9天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)Xilinx ROM IP核配置(五)(第9天) 5)技术 ...

  2. Xilinx FIR IP core滤波器系数的重载方法

    总结起来就是有两种方法,一种是只利用config channel 来选择滤波器组,另外一种方法是使用reload channel 动态输入滤波器组的系数值,然后配合使用config channel 来 ...

  3. Xilinx FFT IP core V9.0的介绍和使用

    参考: http://blog.csdn.net/yijingjijng/article/details/48137897 http://xilinx.eetop.cn/viewnews-1262 h ...

  4. Xilinx RAM IP核的使用

    背景 RAM和ROM也是类似的,由于这也是常用的IP核,所有完全有必要在这里记录一下,以后用到了实际后,再补充到实际工程中.随机存储器(RAM),它可以随时从任一指定地址读出数据,也可以随时把数据写入 ...

  5. vivado ROM IP核简单使用

    vivado ROM IP核简单使用 vivado配置 下面选择数据的存储深度和数据的位宽 ROM内存储的数据由coe文件初始化 下面是初始化coe文件的内容 memory_initializatio ...

  6. (51)Xilinx Divider IP核配置(十一)(第11天)

    (51)Xilinx Divider IP核配置(十一)(第11天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)Xilinx Divider IP核配置(十一 ...

  7. (50)Xilinx Multiplier IP核配置(十一)(第10天)

    (50)Xilinx Multiplier IP核配置(十一)(第10天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)Xilinx Multiplier IP ...

  8. (49)Xilinx Subtracter IP核配置(十)(第10天)

    (49)Xilinx Subtracter IP核配置(十)(第10天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)Xilinx Subtracter IP核 ...

  9. (48)Xilinx Adder IP核配置(九)(第10天)

    (48)Xilinx Adder IP核配置(九)(第10天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)Xilinx Adder IP核配置(九)(第10天 ...

最新文章

  1. 设计师学习HTML/CSS之路-01
  2. 如何顺利度过新人适应期
  3. 机器学习-学习资源整理
  4. 新年红包封面来了,3000万份红包封面来啦!到点直领!
  5. python 虚拟环境 virtualenv virtualenvwrapper的使用方法、命令
  6. USTC小道消息20220119
  7. hdu 3819动态规划
  8. 西南交大计算机几个专业,西南交通大学计算机科学与技术专业
  9. limit实现原理 mysql_解读数据库:深入分析MySQL中事务以及MVCC的实现原理
  10. nginx配置官网yum源
  11. JAVA 测试日期的不同显示格式
  12. 无线打印机 连接路由器连接到服务器,怎么通过无线路由器连到有的打印机线网络...
  13. JAVA编码(5)——JAVA输入流输出流
  14. 移动端click事件延时
  15. Linux搭建smb共享ftp服务器——windows无法写入samba共享路径 无操作权限的问题解决
  16. Android Studio中Eric常用的快捷键
  17. 好的技术不一定能给你带来财富,但是好的工具一定可以让你创造财富
  18. html源代码中 图像的属性标记,HTML图像标签img和源属性src及Alt属性、宽高、对齐...
  19. 我奋斗了18年,不是为了和你一起喝咖啡
  20. Educoder CC++数组实训

热门文章

  1. 关于举办第十五届全国大学生 智能汽车竞赛的通知
  2. html中怎么设置文本框居中显示图片,css如何让图片水平居中显示?
  3. 中间件应用程序错误 修复方案_Qtum Neutron:新一代区块链虚拟机中间件会给Qtum带来哪些新功能?...
  4. java中bigdecimal除以int类型的数据怎么实现_大部分Java程序员都会忽略的几个问题,你中招没?...
  5. python ide如何运行_如何在Ubuntu上安装IDLE Python IDE
  6. matlab 工具箱application compiler的作用_matlab机器人工具箱下载与使用
  7. c语言unused variable错误,这个错误可能的原因是你忘了初始化变量
  8. 在工作中有被动转主动的体会_积极主动应对眼前的一切,就是对自己最好的犒赏...
  9. 三维曲面matlab程序,用matlab画三维曲面图 - 程序语言 - 小木虫 - 学术 科研 互动社区...
  10. 【 FPGA/IC 】谈谈复位