• 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:WORKDRS6000_QMATLAB CODE est3.txt','wt');

    fprintf(fid,'WIDTH=%d; ',N);

    fprintf(fid,'DEPTH=%d; ',depth);

    fprintf(fid,'ADDRESS_RADIX=UNS; ');

    fprintf(fid,'DATA_RADIX=DEC; '); % 有符号十进制表示

    fprintf(fid,'CONTENT BEGIN ');

     

      for i  = 1 : depth

          fprintf(fid, '%d%c%d%c ', number(i),comer(i), L(i),semi(i)); 

      end

     fprintf(fid,'END; ');

     fclose(fid);

    以上代码的作用是在mif文件中存入有符号的十进制数,如图:

      

    但是用有符号十进制(DEC)表示的负数在ROM中读出时全部为0!!!!

    修改方法为:在Quartus II中打开该mif文件,并做如下修改:

     

    修改后,mif文件内容也将改变,见下图:

     

    此时再读rom中的初始化数据,q值将会变为有符号数!!!同时,若将mif文件改为二进制表示或者无符号十进制表示,也同样可以实现有符号数读出!

    注意:必须将q的位宽设置为与WIDTH相同的数值!!否则读出数据同样出错!

     

  • 相关阅读:
    C# WPF – 利用“Attached Property” 把 RoutedEvent 接上 ICommand
    文件输入输出代码
    strcpy()
    heaplog
    单链表范例
    贪吃蛇
    时钟程序
    herizai_CD2所做答案
    6月25日代码
    6月24日代码
  • 原文地址:https://www.cnblogs.com/chuanchuan304/p/5891934.html
Copyright © 2020-2023  润新知