本文檔主要講解實現一個16384(2^14)點的14位正弦波數據mif格式文件的生成,使用此文件,我們便可以在FPGA上基於直接數字合成(DDS)原理生成標准的正弦波,即實現信號發生器的功能。關於DDS原理的相關內容,請參考由北航出版社出版的《FPGA自學筆記——設計與驗證》一書第六章第6.2節—— “雙通道幅頻相可調DDS信號發生器” 一節的內容。

在很早之前,我曾編寫過一個生成1024點16位正弦波mif文件的方法,不過那時候我的matlab技術還特別特別菜(現在也很菜),只是在matlab中簡單的實現了正弦波數據的生成,關於四舍五入取整以及mif文件的最終生成,我用了excel和quartus兩個軟件經過了復雜的操作才最終完成。如今,自己都對那種方法沒有了耐心,剛好新做的一個雙通道14位高速DAC模塊在做DDS實驗時需要用到14位的mif數據,因此今天對matlab的腳本文件重新編寫了下,實現了僅通過Matlab就可以一鍵生成mif文件的功能。

首先,打開MATLAB軟件,小梅哥這里使用的版本為MATLAB 2012b。新建一個Script文件,操作為File —>New—>Script。在該文件中輸入以下內容:

F1=1; %信號的頻率

Fs=2^14;%采樣頻率

P1=0;%信號初始相位

N=2^14;%采樣點數為N

t=[0:1/Fs:(N-1)/Fs];%采樣時刻

ADC=2^13 - 1;%直流分量

A=2^13;%信號幅度

s=A*sin(2*pi*F1*t + pi*P1/180) + ADC;%生成信號

plot(s);%繪制圖形

fild = fopen('d:/sin14bit_16384.mif','wt');%創建mif文件

%寫入mif文件文件頭

fprintf(fild, '%s\n','WIDTH=14;');%位寬

fprintf(fild, '%s\n\n','DEPTH=16384;');%深度

fprintf(fild, '%s\n','ADDRESS_RADIX=UNS;');%地址格式

fprintf(fild, '%s\n\n','DATA_RADIX=HEX;');%數據格式

fprintf(fild, '%s\t','CONTENT');%地址

fprintf(fild, '%s\n','BEGIN');%

for i = 1:N

s2(i) = round(s(i)); %對小數四舍五入以取整

if s2(i) <0 %強制將負1置0,

s2(i) = 0

end

% addr : data;

fprintf(fild, '\t%g\t',i-1);%地址,從0開始編碼

fprintf(fild, '%s\t',':');

fprintf(fild, '%x',s2(i));

fprintf(fild, '%s\n',';');

end

用戶如果想自己生成其他深度和位寬的數據,只需要對應修改采樣頻率(Fs)、采樣點數(N)、直流分量(ADC)和信號幅度(A)即可。

保存文件,點擊運行按鈕,即可生成我們所需要的正弦波數據,並在電腦的D盤根目錄生成一個名為“sin14bit_16384 .mif”的文件。

隨后,會彈出如下圖1所示的界面,該界面便是以我們生產的數據為值,t為時間軸繪制出來的波形,從波形可知為標准的正弦波,你也可以通過放大縮小來具體查看幾個頂點的值,以確定數據是否在自己預期的范圍內。這里,我們直接關掉該界面即可。

下圖2為使用該文件配合我們的ACM9767模塊設計的DDS信號發生器系統,輸出頻率為3.448Mhz(隨機設置的一個值),通過示波器的FFT功能可以看到,諧波量並不大。

小梅哥

2018年3月31日星期六

matlab 图片生成mif文件,使用MATLAB一鍵制作mif文件相关推荐

  1. matlab 图片倒影_计算物理基于matlab方法研究水中倒影问题

    计算物理基于matlab方法研究水中倒影问题 基于 Matlab 方法研究水中倒影问题[摘 要] 本文介绍了用 matlab 研究倒影问题的方法,利用 matlab 可视化的优点可 以直观的得出结果. ...

  2. 只有APE文件的情况下自己制作CUE文件的方法-转,经过本人验证真实可靠good!20101128终极解决版...

    先去下载一个叫Exact Audio Copy的软件 然后将ape转换为wav, 打开Eac--工具--处理wav--找到转换后的wav--(等待扫描)--cue节目单--生成CUE节目单--(等待扫 ...

  3. matlab 图片转化为avi,在matlab中将tiff图像转换为avi

    我正在尝试使用VideoWriter将大量的tiff图像转换为avi视频.我在使用for循环将图像转换为视频时遇到了麻烦.这里是我到目前为止的代码:在matlab中将tiff图像转换为avi func ...

  4. MATLAB怎么生成一个周期信号,matlab产生方波脉冲和周期性方波信号

    周期性矩形波(方波)信号:在MATLAB中用square函数来表示,其调用形式为 y=square(t,DUTY) 其作用类似于sin(t),用以产生一个时长为t.幅值为±1的周期性方波信号,其中的D ...

  5. matlab图片差异度的比较,Matlab进行图像相似度比较,使用欧式距离

    实验内容在网上或者提前准备10张(或以上)图像,使用matlab提取图像直方图特征并进行显示:将图像特征进行保存(保存为矩阵形式.mat格式),并进行图像相似度比较(使用欧式距离).clear,clc ...

  6. matlab 图片保存失真,如何将matlab画出的图片保存为要求精度

    杂志社对投稿图片的分辨率通常有如下要求: TIFF: Colour or greyscale photographs (halftones): always use a minimum of 300 ...

  7. 学习笔记_ncl_读取nc文件中的变量_制作nc文件的方法

    由于生成的文件较大较多,在超算上不方便使用matlab,只好向ncl势力低头 目的是在超算上对相关结果进行第一步简单处理后,下载到pc上再进行其他处理 ncl新手 如果是从已有的nc文件中读取变量到新 ...

  8. gnuplot 文件_如何使用gnuplot制作eps文件

    gnuplot 文件 How to make gnuplot generate eps files instead of plot the figures on screen? 如何使gnuplot生 ...

  9. patch文件格式 patch文件的结构 使用和制作patch文件

    创建补丁文件: 代码: diff -Naur 旧的目录 新的目录 > patch文件 或者 diff -Naur 旧的文件 新的文件 > patch文件 对于目录层数的一些限制 在创建pa ...

  10. 种子文件多服务器,使用bitcomet制作torrent文件 [BitComet]

    此处填写tracker服务器地址和DHT网络节点. BitComet多服务器规范 服务器分组:是指互相联通并且信息共享的服务器为一组,比如同一个服务器的多个端口.同一组的服务器只要有一个连通了就不需要 ...

最新文章

  1. jQuery中的文档操作处理(五):append()、prepend()、after()、before()、wrap()、wrapAll()、wrapInner()、clone()等...
  2. 一周一论文(翻译)——[SIGMOD 2016] RDMA over Commodity Ethernet at Scale
  3. 童年真的回来了么?《摩尔庄园》手游深度分析
  4. [译文] C# 8 已成旧闻, 向前, 抵达 C# 9!
  5. 【转】SVN冲突出现场景
  6. c字符串分割成数组_excel这个复杂数组公式怎么读?
  7. 实现二叉树的三种非递归遍历算法
  8. php laravel导入excel,Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
  9. python符号表_根据第一个字符分割列表-Python
  10. ORACLE中null的排序问题
  11. 如何阅读python源码_如何阅读源代码(转)
  12. 卡方检验与方差分析的区别
  13. 吃大闸蟹 非得阳澄湖吗?
  14. 8051单片机(STC89C52)定时器实现10ms精准定时
  15. V3S-Zero 网络篇章 Linux5.2
  16. 不看绝对血亏!docker镜像下载不下来
  17. 用arduino IDE开发esp8266 wifi
  18. Python实现增值税发票OCR(带源码)
  19. 我的五大开仓点与五大平仓点 开仓点
  20. 移动邮箱(@139.com):启用IMAP/SMTP服务+获取授权码

热门文章

  1. 第10章第4节:使用iSlide的统一色彩命令统一修改某个颜色 [PowerPoint精美幻灯片实战教程]
  2. c语言程序求200以内的全部素数,求100~200之间的全部素数
  3. 易网云授权php,网易云音乐热评api php源码
  4. WiFi 2.4G和5G国家及信道分布
  5. 蘑菇战争2显示没有连接服务器,蘑菇战争2新手怎么玩?四步带你解决新手难关[多图]...
  6. 数据可视化大屏demo制作(画图)
  7. 怎么修改打印机服务器权限,Win7如何设置网络打印机管理权限
  8. 实践系列:分销平台的技术架构
  9. tiny4412 uboot 2020.10版本移植(三)——uboot初步启动
  10. 用c语言判断一个数是否是素数(质数)