新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 牛人業(yè)話 > 小梅哥和你一起深入學(xué)習(xí)FPGA之mif文件的制作

小梅哥和你一起深入學(xué)習(xí)FPGA之mif文件的制作

作者: 時(shí)間:2015-07-02 來(lái)源:網(wǎng)絡(luò) 收藏

  本文檔主要講解實(shí)現(xiàn)一個(gè)1024點(diǎn)的16位正弦波數(shù)據(jù)的生成,并將該數(shù)據(jù)制作成quartus II使用的文件,使用此文件,我們便可以使用,基于直接數(shù)字合成(DDS)原理生成標(biāo)準(zhǔn)的正弦波,即實(shí)現(xiàn)信號(hào)發(fā)生器的功能。小梅哥的DDS實(shí)驗(yàn)已經(jīng)做完,目前還沒(méi)有進(jìn)行文檔的編寫(xiě)。朋友今天邀請(qǐng)我為他制作一個(gè)1024點(diǎn)的16位的正弦波文件,實(shí)現(xiàn)之后,發(fā)現(xiàn)過(guò)程中涉及到MATLAB軟件、Excel軟件、Quartus II軟件的使用,每個(gè)過(guò)程簡(jiǎn)單,但是步驟較多,因此在這里以文檔的方式記錄下來(lái),分享給需要的朋友。

本文引用地址:http://2s4d.com/article/276733.htm

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

  F1=1; %信號(hào)的頻率

  Fs=1024;%采樣頻率

  P1=0;%信號(hào)初始相位

  N=1023;%采樣點(diǎn)數(shù)為N+1

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

  ADC=32767;%直流分量

  A=32767;%信號(hào)幅度

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

  plot(s);%繪制圖形

  即可生成我們所需要的數(shù)據(jù),其中最后一行為繪制圖形,是為了驗(yàn)證我們所生成的數(shù)據(jù)是否滿(mǎn)足要求,不是一定需要。輸入完成以后,點(diǎn)擊“save and run”按鈕,如下圖所示。

  

 

  將文件保存在你自己的路徑下面,命一個(gè)有意義的名字,這里我暫時(shí)保存在桌面,命名為sin16_1024。保存后會(huì)彈出如下所示的對(duì)話框,選擇Add to Path即可。

  

 

  隨后,會(huì)彈出如下所示的界面,該界面便是以我們生產(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)掉該界面即可。

  

 

  這個(gè)時(shí)候,我們?cè)贛ATLAB主界面中,右側(cè)的workspace欄中,選中name為s的一項(xiàng),雙擊,便可打開(kāi)該數(shù)組的值,如下所示:

  

 

  將該表格中的所有數(shù)據(jù)選中(可選中第一個(gè)數(shù)據(jù),然后將進(jìn)度條拉到最后一個(gè)數(shù)據(jù)的位置,按下鍵盤(pán)上的shift鍵,鼠標(biāo)點(diǎn)擊最后一個(gè)數(shù)據(jù),便可全選了),單擊右鍵,復(fù)制即可。然后打開(kāi)execl軟件,選中A1單元格,ctrl+V(粘貼),即可。

  在表格中,我們會(huì)發(fā)現(xiàn),這些數(shù)據(jù)是帶有2位小數(shù)位的,如下圖所示:

  

 

  而我們的文件不支持小數(shù),因此需要將這些數(shù)據(jù)進(jìn)行四舍五入。四舍五入的方法非常簡(jiǎn)單我們只需要選中行1(在數(shù)字1處點(diǎn)擊鼠標(biāo)左鍵即可選中),單擊鼠標(biāo)右鍵,選擇設(shè)置單元格格式,如下圖所示:

  

 

  在彈出的界面中選中“數(shù)字”選項(xiàng)卡,選擇“數(shù)值”,在“小數(shù)位數(shù)”處輸入0,點(diǎn)擊確定,即可。具體如下圖所示:

  

 

  設(shè)置完成之后我們?cè)倏?,發(fā)現(xiàn)表格中的數(shù)據(jù)已經(jīng)全部被四舍五入了,此時(shí)的數(shù)據(jù),就是我們可以使用的數(shù)據(jù)了。如下所示:

  

 

  此時(shí),我們已經(jīng)完成了mif文件所需數(shù)據(jù)的生成工作,我們可以將這個(gè)表格文件保存,也可以直接開(kāi)著,不用關(guān)閉就行,因?yàn)檫@個(gè)文件只是一個(gè)中轉(zhuǎn)。下一步,就是將這些數(shù)據(jù)生成我們所需要用到的mif文件了。

  打開(kāi)quartus II軟件,選擇file—>New,在打開(kāi)的選項(xiàng)卡中,選擇Memory Initialization File,點(diǎn)擊OK。在彈出的mif文件大小設(shè)置選項(xiàng)卡中,設(shè)置Number of Words為1024,Word Size為16,點(diǎn)擊OK即可,詳細(xì)如下所示:

  

 

  此時(shí),就會(huì)建立好一個(gè)空白的mif文件,其中所有內(nèi)容均為0,如下圖所示:

  

 

  我們將excel表格中的數(shù)據(jù)選中(可選中第一個(gè)數(shù)據(jù),然后將進(jìn)度條拉到最后一個(gè)數(shù)據(jù)的位置,按下鍵盤(pán)上的shift鍵,鼠標(biāo)點(diǎn)擊最后一個(gè)數(shù)據(jù),便可全選了),單擊右鍵,復(fù)制即可。然后回到quartus II的mif編輯界面,在mif文件的任意一個(gè)數(shù)據(jù)位置點(diǎn)擊鼠標(biāo)左鍵,然后按下鍵盤(pán)上的組合鍵ctrl + A(也就是全選),然后單擊鼠標(biāo)右鍵,選擇paste即可。如下圖

  

 

  此時(shí),我們發(fā)現(xiàn),所有數(shù)據(jù)便依次存入了相應(yīng)的地址中,如下圖所示:

  

 

  我們點(diǎn)擊quartus II軟件界面上的file—>save,選擇你需要存儲(chǔ)的路徑,這里小梅哥暫時(shí)存儲(chǔ)在桌面上,將文件名命名為sin16_1024,即完成了我們所有的工作。因?yàn)樾∶犯邕@里沒(méi)有創(chuàng)建工程,所以保存完成后quartus II軟件會(huì)彈出以下界面,問(wèn)你是否需新建工程,這里小梅哥只是做演示用,不需要新建工程,因此這里選擇NO。

  

 

  最后,附上朋友采用該mif文件生成的正弦波的仿真波形圖:

  

 

  利用此文件,就可以開(kāi)始你的DDS設(shè)計(jì)啦。

fpga相關(guān)文章:fpga是什么




關(guān)鍵詞: FPGA mif

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉