【小技巧】使用MATLAB产生coe文件和mif文件供FPGA调用方法整理

目前主流的FPGA,就是xilinx的FPGA和英特尔(原altera)的FPGA,在使用过程中,经常需要调用一些数据到ROM核中。下面总结下调用方法。

1.产生coe,用于xilinx的FPGA:

fid = fopen ('dat.coe','w');
fprintf( fid, 'memory_initialization_radix=10;\n');%生成索引
fprintf( fid, 'memory_initialization_vector =\n' );
for i=1:length(y)%循环打印 32表示的是4bit*8 这里可以自己改
    fprintf(fid,'%d',round(1023*y(i)));%一个一个将矩阵里面的数值打印进去
    if i<length(y)
        fprintf(fid,',\n');%打印逗号
    else
        fprintf(fid,';');%最后一行的分号
    end
end
fclose(fid);

       注意,这里导入的数据为y,我乘以了1023,意思是将数据y进行量化,扩大了10个位宽。运行之后,将产生一个ceo文件。

其内部数据如下:

 

然后在vivado,ISE等软件中,IP核设置的时候调用coe文件就可以了。 

2.产生mif,用于英特尔(原altera)FPGA:

clear all;clc;close all;
depth = 256;            %存储器的深度
width = 8;              %存储器的宽度
fid = fopen('dat.mif','w');%fopen函数以写方式打开文件,如不存在,自动创建
fprintf(fid, 'DEPTH=%d;\n', depth); %fprintf函数可以将数据按指定格式写入到文本文件中
fprintf(fid, 'WIDTH=%d;\n', width); %数据的格式化输出:fprintf(fid, format, variables)
fprintf(fid, 'ADDRESS_RADIX=UNS;\n');%\n是换行,使光标下移一格
fprintf(fid, 'DATA_RADIX=UNS;\n');
fprintf(fid, 'CONTENT BEGIN\n');
for a = 0 : 15
       addr = a;       
       num = round(1023*y(a));
       fprintf(fid, '%d : %d;\n',addr,num);
end
fprintf(fid, 'END;');
fclose(fid);

同上,运行,这里数据为y,运行之后

其数据如下

 

 然后在vquartusii等软件中,IP核设置的时候调用mif文件就可以了。 

  • 7
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值