matlab 图片生成mif文件,使用MATLAB一鍵制作mif文件
本文檔主要講解實現一個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文件相关推荐
- matlab 图片倒影_计算物理基于matlab方法研究水中倒影问题
计算物理基于matlab方法研究水中倒影问题 基于 Matlab 方法研究水中倒影问题[摘 要] 本文介绍了用 matlab 研究倒影问题的方法,利用 matlab 可视化的优点可 以直观的得出结果. ...
- 只有APE文件的情况下自己制作CUE文件的方法-转,经过本人验证真实可靠good!20101128终极解决版...
先去下载一个叫Exact Audio Copy的软件 然后将ape转换为wav, 打开Eac--工具--处理wav--找到转换后的wav--(等待扫描)--cue节目单--生成CUE节目单--(等待扫 ...
- matlab 图片转化为avi,在matlab中将tiff图像转换为avi
我正在尝试使用VideoWriter将大量的tiff图像转换为avi视频.我在使用for循环将图像转换为视频时遇到了麻烦.这里是我到目前为止的代码:在matlab中将tiff图像转换为avi func ...
- MATLAB怎么生成一个周期信号,matlab产生方波脉冲和周期性方波信号
周期性矩形波(方波)信号:在MATLAB中用square函数来表示,其调用形式为 y=square(t,DUTY) 其作用类似于sin(t),用以产生一个时长为t.幅值为±1的周期性方波信号,其中的D ...
- matlab图片差异度的比较,Matlab进行图像相似度比较,使用欧式距离
实验内容在网上或者提前准备10张(或以上)图像,使用matlab提取图像直方图特征并进行显示:将图像特征进行保存(保存为矩阵形式.mat格式),并进行图像相似度比较(使用欧式距离).clear,clc ...
- matlab 图片保存失真,如何将matlab画出的图片保存为要求精度
杂志社对投稿图片的分辨率通常有如下要求: TIFF: Colour or greyscale photographs (halftones): always use a minimum of 300 ...
- 学习笔记_ncl_读取nc文件中的变量_制作nc文件的方法
由于生成的文件较大较多,在超算上不方便使用matlab,只好向ncl势力低头 目的是在超算上对相关结果进行第一步简单处理后,下载到pc上再进行其他处理 ncl新手 如果是从已有的nc文件中读取变量到新 ...
- gnuplot 文件_如何使用gnuplot制作eps文件
gnuplot 文件 How to make gnuplot generate eps files instead of plot the figures on screen? 如何使gnuplot生 ...
- patch文件格式 patch文件的结构 使用和制作patch文件
创建补丁文件: 代码: diff -Naur 旧的目录 新的目录 > patch文件 或者 diff -Naur 旧的文件 新的文件 > patch文件 对于目录层数的一些限制 在创建pa ...
- 种子文件多服务器,使用bitcomet制作torrent文件 [BitComet]
此处填写tracker服务器地址和DHT网络节点. BitComet多服务器规范 服务器分组:是指互相联通并且信息共享的服务器为一组,比如同一个服务器的多个端口.同一组的服务器只要有一个连通了就不需要 ...
最新文章
- jQuery中的文档操作处理(五):append()、prepend()、after()、before()、wrap()、wrapAll()、wrapInner()、clone()等...
- 一周一论文(翻译)——[SIGMOD 2016] RDMA over Commodity Ethernet at Scale
- 童年真的回来了么?《摩尔庄园》手游深度分析
- [译文] C# 8 已成旧闻, 向前, 抵达 C# 9!
- 【转】SVN冲突出现场景
- c字符串分割成数组_excel这个复杂数组公式怎么读?
- 实现二叉树的三种非递归遍历算法
- php laravel导入excel,Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
- python符号表_根据第一个字符分割列表-Python
- ORACLE中null的排序问题
- 如何阅读python源码_如何阅读源代码(转)
- 卡方检验与方差分析的区别
- 吃大闸蟹 非得阳澄湖吗?
- 8051单片机(STC89C52)定时器实现10ms精准定时
- V3S-Zero 网络篇章 Linux5.2
- 不看绝对血亏!docker镜像下载不下来
- 用arduino IDE开发esp8266 wifi
- Python实现增值税发票OCR(带源码)
- 我的五大开仓点与五大平仓点 开仓点
- 移动邮箱(@139.com):启用IMAP/SMTP服务+获取授权码
热门文章
- 第10章第4节:使用iSlide的统一色彩命令统一修改某个颜色 [PowerPoint精美幻灯片实战教程]
- c语言程序求200以内的全部素数,求100~200之间的全部素数
- 易网云授权php,网易云音乐热评api php源码
- WiFi 2.4G和5G国家及信道分布
- 蘑菇战争2显示没有连接服务器,蘑菇战争2新手怎么玩?四步带你解决新手难关[多图]...
- 数据可视化大屏demo制作(画图)
- 怎么修改打印机服务器权限,Win7如何设置网络打印机管理权限
- 实践系列:分销平台的技术架构
- tiny4412 uboot 2020.10版本移植(三)——uboot初步启动
- 用c语言判断一个数是否是素数(质数)