這里講解實(shí)現(xiàn)一個(gè)16384(2^14)點(diǎn)的14位正弦波數(shù)據(jù)mif格式文件的生成,使用此文件,我們便可以在FPGA上基于直接數(shù)字合成(DDS)原理生成標(biāo)準(zhǔn)的正弦波,即實(shí)現(xiàn)信號(hào)發(fā)生器的功能。
關(guān)于DDS原理的相關(guān)內(nèi)容,請(qǐng)參考由北航出版社出版的《FPGA自學(xué)筆記——設(shè)計(jì)與驗(yàn)證》一書第六章第6.2節(jié)—— “雙通道幅頻相可調(diào)DDS信號(hào)發(fā)生器” 一節(jié)的內(nèi)容。
在很早之前,我曾編寫過(guò)一個(gè)生成1024點(diǎn)16位正弦波mif文件的方法,不過(guò)那時(shí)候我的matlab技術(shù)還特別特別菜(現(xiàn)在也很菜),只是在matlab中簡(jiǎn)單的實(shí)現(xiàn)了正弦波數(shù)據(jù)的生成,關(guān)于四舍五入取整以及mif文件的最終生成,我用了excel和quartus兩個(gè)軟件經(jīng)過(guò)了復(fù)雜的操作才最終完成。
如今,自己都對(duì)那種方法沒(méi)有了耐心,剛好新做的一個(gè)雙通道14位高速DAC模塊在做DDS實(shí)驗(yàn)時(shí)需要用到14位的mif數(shù)據(jù),因此今天對(duì)matlab的腳本文件重新編寫了下,實(shí)現(xiàn)了僅通過(guò)Matlab就可以一鍵生成mif文件的功能。
首先,打開(kāi)MATLAB軟件,小梅哥這里使用的版本為MATLAB 2012b。新建一個(gè)Script文件,操作為File —>New—>Script。在該文件中輸入以下內(nèi)容:
F1=1;%信號(hào)的頻率
Fs=2^14;%采樣頻率
P1=0;%信號(hào)初始相位
N=2^14;%采樣點(diǎn)數(shù)為N
t=[0:1/Fs:(N-1)/Fs];%采樣時(shí)刻
ADC=2^13 - 1;%直流分量
A=2^13;%信號(hào)幅度
s=A*sin(2*pi*F1*t +pi*P1/180) + ADC;%生成信號(hào)
plot(s);%繪制圖形
fild =fopen('d:/sin14bit_16384.mif','wt');%創(chuàng)建mif文件
%寫入mif文件文件頭
fprintf(fild,'%s ','WIDTH=14;');%位寬
fprintf(fild,'%s ','DEPTH=16384;');%深度
fprintf(fild,'%s ','ADDRESS_RADIX=UNS;');%地址格式
fprintf(fild,'%s ','DATA_RADIX=HEX;');%數(shù)據(jù)格式
fprintf(fild,'%s ','CONTENT');%地址
fprintf(fild,'%s ','BEGIN');%
fori= 1:N
s2(i) =round(s(i));%對(duì)小數(shù)四舍五入以取整
ifs2(i) <0?????%強(qiáng)制將負(fù)1置0,
s2(i) = 0
end
% addr : data;
fprintf(fild,' %g ',i-1);%地址,從0開(kāi)始編碼
fprintf(fild,'%s ',':');
fprintf(fild,'%x',s2(i));
fprintf(fild,'%s ',';');
end
用戶如果想自己生成其他深度和位寬的數(shù)據(jù),只需要對(duì)應(yīng)修改采樣頻率(Fs)、采樣點(diǎn)數(shù)(N)、直流分量(ADC)和信號(hào)幅度(A)即可。
保存文件,點(diǎn)擊運(yùn)行按鈕,即可生成我們所需要的正弦波數(shù)據(jù),并在電腦的D盤根目錄生成一個(gè)名為“sin14bit_16384 .mif”的文件。
隨后,會(huì)彈出如下圖1所示的界面,該界面便是以我們生產(chǎn)的數(shù)據(jù)為值,t為時(shí)間軸繪制出來(lái)的波形,從波形可知為標(biāo)準(zhǔn)的正弦波,你也可以通過(guò)放大縮小來(lái)具體查看幾個(gè)頂點(diǎn)的值,以確定數(shù)據(jù)是否在自己預(yù)期的范圍內(nèi)。這里,我們直接關(guān)掉該界面即可。
下圖2為使用該文件設(shè)計(jì)的DDS信號(hào)發(fā)生器系統(tǒng),輸出頻率為3.448Mhz(隨機(jī)設(shè)置的一個(gè)值),通過(guò)示波器的FFT功能可以看到,諧波量并不大。
-
matlab
+關(guān)注
關(guān)注
185文章
2976瀏覽量
230474 -
mif文件
+關(guān)注
關(guān)注
0文章
3瀏覽量
6250
原文標(biāo)題:使用MATLAB一鍵制作mif文件
文章出處:【微信號(hào):gh_bee81f890fc1,微信公眾號(hào):面包板社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論