QuartusIImif⽂件格式及rom如何输出负数
(1)  ADDRESS_RADIX=DEC ;  %设置地址基值(实际就是地址⽤什么进制的数表⽰)  可以设为BIN(⼆进制),OCT(⼋进制),DEC(⼗进制),HEX(⼗六进制),UNS(⽆符号数)
(2)⽤MATLAB⽣成正弦波,以及将正弦波存储为.mif⽂件所需格式代码如下:
clear all
clc
close all
N = 10;                    %储存单元地址线
depth=2^N;                %存储单元深度
widths=N;                    %数据宽度为8位
index = linspace(0,pi*2,depth);
sin_value = sin(index);
sin_value = sin_value * (depth/2 -1);  %扩⼤正弦幅度值
sin_value = fix((sin_value)+0.5);
plot(sin_value);
number=[0:depth-1];
i=0;
for(i=1:depth)
comer(i)=':';
end
for(i=1:depth)
semi(i)=';';
end
for i=1:depth
L(i)=sin_value(i);
end
fid=fopen('E:\WORK\DRS6000_Q\MATLAB ','wt');
fprintf(fid,'WIDTH=%d;\n',N);
fprintf(fid,'DEPTH=%d;\n',depth);
fprintf(fid,'ADDRESS_RADIX=UNS;\n');
fprintf(fid,'DATA_RADIX=DEC;\n'); % 有符号⼗进制表⽰
fprintf(fid,'CONTENT BEGIN\n');
for i  = 1 : depth
fprintf(fid, '%d%c%d%c\n', number(i),comer(i), L(i),semi(i));
end
fprintf(fid,'END;\n');
fclose(fid);
以上代码的作⽤是在mif⽂件中存⼊有符号的⼗进制数,如图:
但是⽤有符号⼗进制(DEC)表⽰的负数在ROM中读出时全部为0
修改⽅法为:在Quartus II中打开该mif⽂件,并做如下修改:
修改后,mif⽂件内容也将改变,见下图:
fprintf格式
此时再读rom中的初始化数据,q值将会变为有符号数同时,若将mif⽂件改为⼆进制表⽰或者⽆符号⼗进制表⽰,也同样可以实现有符号数读出!
注意:必须将q的位宽设置为与WIDTH相同的数值!!否则读出数据同样出错!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。