Quartus II mif 文件格式及rom如何输出负数 |
您所在的位置:网站首页 › 识别文件格式怎么设置 › Quartus II mif 文件格式及rom如何输出负数 |
(1) ADDRESS_RADIX=DEC ; %设置地址基值(实际就是地址用什么进制的数表示) 可以设为BIN(二进制),OCT(八进制),DEC(十进制),HEX(十六进制),UNS(无符号数) 用verilog模拟DDS产生正弦波信号 http://www.cnblogs.com/christsong/p/5536995.html
(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 CODE\test3.txt','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文件内容也将改变,见下图: 此时再读rom中的初始化数据,q值将会变为有符号数!!!同时,若将mif文件改为二进制表示或者无符号十进制表示,也同样可以实现有符号数读出! 注意:必须将q的位宽设置为与WIDTH相同的数值!!否则读出数据同样出错!
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |