快速生成mif文件

在我们使用FPGA中的Rom时,我们需要提前准备好数据,然后FPGA运行时直接读取ROM中的数据就行了。此时就需要用到Rom的初始化配置文件.mif(Memory initialization file)。

首先先介绍一下mif文件的格式
WIDTH=8;
DEPTH=128;
ADDRESS_RADIX=HEX;
DATA_RADIX=HEX;
CONTENT BEGIN
0 : 80;
1 : 86;
2 : 8C;
3 : 92;
4 : 98;
END;

第一行为mif数据的深度,8代表每个数据都是8bit;
第二行是数据的宽度,128代表总共有128的数据;
第三行是指地址的格式 HEX即代表以16进制来寻址;
第四行代表数据存储的格式也为16进制;
在content begin和end之间就是存储的数据;
存储数据的格式为“地址(HEX):数据(HEX);”

知道mif文件的格式我们就可以通过程序来自动生成数据文件了,这里我是用matlab生成的。

width=8;
depth=128;

%设置128个点为一个周期
t = 1:depth;
sinValue = sin(2*3.14159265358979*t/depth);
sinValue = (sinValue + 1)/2;
%设置数据最大值
sinValue = sinValue * 255;
%对浮点数四舍五入
sinValue = round(sinValue);

addr=0:depth-1;
strWidth=strcat(‘WIDTH=’,num2str(width));
strDepth=strcat(‘DEPTH=’,num2str(depth));

%打开文件
fid=fopen(‘f:test.mif’,’w’);
%设置数据宽度
fprintf(fid,strWidth);
fprintf(fid,’;\n’);
%设置数据深度
fprintf(fid,strDepth);
fprintf(fid,’;\n\n’);
%设置地址格式
fprintf(fid,’ADDRESS_RADIX=HEX;\n’);
%设置数据格式
fprintf(fid,’DATA_RADIX=HEX;\n\n’);

fprintf(fid,’CONTENT BEGIN\n’);
%写数据
fprintf(fid,’\t%X : %X;\n’,[addr;sinValue]);
fprintf(fid,’END;\n’);
fclose(fid);

代码比较简单就不多加解释了,主要就是按照文件格式写数据。通过这样我们可以快速生成rom的数据表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值