zoukankan      html  css  js  c++  java
  • 定点化_mif文件生成

    clc;                                             %全屏清零
    clear all;                                        %变量清零
    N=2^8;                                             %设置ROM深度(字变量)的变量参数,
    s_p=0:255;                                        %正弦波一个周期的采样点数
    sin_data=sin(2*pi*s_p/N);                        %离散正弦波数据,这里的N决定了由ROM的深度决定,如果要更多的采样点,需要把N增大
                                                    %打印我们的波形
    %plot(sin_data,'r*');                            %红色r*打印
    %hold on;                                        %保持
    %plot(sin_data);                                %打印原来的波形
                                                    %定点化
    fix_p_sin_data=fix(sin_data*127);                 %调用fix函数,原来幅度是1,扩展到127——(-127)为什么乘127呢?因为每一个采样点
                                                    %的位数是8位,而定点化前,正负的点的个数各占一半,也就是7位,2^7-1 = 127%若需要精度更高的定点化数据,那么需要把幅度乘的数加大。
                                                    %由于使用的DAC位数只有8位,因此定点化8位就可以了,也就是乘以2^(8-1)-1=127即可
    for i=1:N                                        %总共1:2^8,即1:256,共256个点(深度),对每个点进行定点化
        if fix_p_sin_data(i)<0                        %如果得到的值小于零,那么就加上256(定点化位数的幅度)进行取正值
            fix_p_sin_data(i)=N+fix_p_sin_data(i);    %记住这里是负数用加号即可
        else
            fix_p_sin_data(i)=fix_p_sin_data(i);    %若大于0,不需要修正
        end
    end
                                                    %打印定点化后的波形
    %plot(sin_data,'r*');                             %红色r*打印
    %hold on;                                        %保持
    %plot(127*sin_data);                            %打印原来的波形
    fid=fopen('sp_ram_256x8.mif','w+');             %创建并打开名字叫�‘p_ram_256x8.mif'的文件,'w+'进行写数据
    fprintf(fid,'WIDTH=8;
    ');                      %打印(写) WIDTH=8; 然后 /n  换行
    fprintf(fid,'DEPTH=256;
    ');                    %
    fprintf(fid,'ADDRESS_RADIX=UNS;
    ');            %
    fprintf(fid,'DATA_RADIX=UNS;
    ');               %
    fprintf(fid,'CONTENT BEGIN 
    ');                %上面的print都是写.mif文件的固定格式
    for i=1:N                                       %这里开始写数据
    fprintf(fid,'%d:%d; 
    ',i-1,fix_p_sin_data(i)); %数据格式是  行:数据
    end                                             %行从0~255,数据则从sin的第一个数(没有0个)写到256个数,12行可以看出
    fprintf(fid,'END; 
    ');                         %文件格式'END;'
    fclose(fid);                                    %关闭文件
  • 相关阅读:
    malloc/free和new/delete的区别
    Vim Skills——Windows利用Vundle和Github进行Vim配置和插件的同步
    selenium自学笔记---ecshop购买脚本 xpath定位元素(下拉框,单选框)
    python基础09--闭包,装饰器
    python基础08--迭代器,生成器
    python基础07--函数
    python基础06--文件操作
    python基础05--深浅copy, set,bytes
    python基础04--list,cou,dict
    python基础03--int,bool,str
  • 原文地址:https://www.cnblogs.com/IClearner/p/7273366.html
Copyright © 2011-2022 走看看