




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、FPGA產(chǎn)生正弦波方法(1/4周期)COE文件 本文主要介紹通過查表法產(chǎn)生正弦波。涉及利用matlab生成四分之一周期的正弦相位、幅值對(duì)應(yīng)表,生成COE文件的IP核方法,F(xiàn)PGA編程產(chǎn)生數(shù)字正弦信號(hào)。 正弦信號(hào),是一個(gè)模擬信號(hào)。FPGA只能產(chǎn)生數(shù)字信號(hào)。因此需要用DA將數(shù)字量轉(zhuǎn)化為模擬量。這里采用modelsim的模擬波形顯示,不敘述DA轉(zhuǎn)換相關(guān)知識(shí)了。產(chǎn)生正弦信號(hào)的方法有很多,這里用的是查找rom的方法,產(chǎn)生正弦信號(hào)。正弦信號(hào),是一個(gè)幅值介于-1和1之間周期變化的模擬量,因此只需要將1/4周期的值存進(jìn)rom里,其波形就可以根據(jù)這1/4周期幅值的變化得到。 matlab產(chǎn)生正弦信號(hào)的值。以0.
2、01為步長,從0采集到pi/2,共158個(gè)點(diǎn)。x = linspace(0, pi/2,158); 因sin的幅值值是小數(shù),而FPGA不能表示小數(shù),我們把幅值乘以12位二進(jìn)制后取整實(shí)現(xiàn)幅值整數(shù)化。即幅值放大4096倍。例如幅值為0.3,而0.3*212=1228.8,取整為1229。當(dāng)然這樣表示會(huì)有一定誤差,但可以根據(jù)精度需要調(diào)整參數(shù),使誤差可接受。 生成ROM。這里rom用的是ISE的IP rom。將matlab生成的數(shù)據(jù)存入rom里面,讀取rom的值,即可生成正弦信號(hào)。首先是生成rom的初始化文件。Xilinx的rom的初始化文件的后綴為.coe。這個(gè)特殊文件有固定的格式如下: 文件前面兩
3、行的內(nèi)容是固定的。MEMORY_INITIALIZATION_RADIX=10;表示下面的數(shù)字是10進(jìn)制數(shù),后面的數(shù)據(jù)是依次存入rom的值,以逗號(hào)分開,最后以一個(gè)分號(hào)結(jié)束。生成初始化文件的matlab程序如下所示:fid = fopen('sin_rom.txt','w');fprintf(fid,'MEMORY_INITIALIZATION_RADIX = 10;n');fprintf(fid,'MEMORY_INITIALIZATION_VECTOR =n');for i = 0:1:pi/2*100y = sin(i/100
4、);rom =floor( y * 212);if i = 157fprintf(fid,'%d;',rom);elsefprintf(fid,'%d,',rom);endif mod(i,10)=0 && i = 0fprintf(fid,'n');endendfclose(fid); matlab生成的文件是.txt文件。將后綴直接改為.coe即可。然后復(fù)制到ISE分工程目錄下。 初始化文件生成后,剩下就是編寫verilog代碼。 首先建一個(gè)工程,然后新建一個(gè)IP。 找到rom,打開。設(shè)置按如下設(shè)置:這里是設(shè)置位寬,采用的是1
5、3位(第一位為符號(hào)位,后面12位為數(shù)據(jù)位)來顯示sin的值。因此這里是設(shè)置為13.深度是因?yàn)橐?58個(gè)值,所以這里設(shè)置為158. 將剛剛生成的.coe文件載入,生成即可。接著就是編寫verilog代碼了。首次查看用ip生成的rom的例化代碼.sin_rom your_instance_name (.clka(clka), / input clka.addra(addra), / input 7 : 0 addra.douta(douta) / output 12 : 0 douta);從上面的程序可看出,只需要給時(shí)鐘信號(hào),和輸入地址,就可以了。輸出的就是正弦的數(shù)字信號(hào)了。分析正弦信號(hào),前1/
6、4個(gè)周期,地址從0自加,一直加到157(1/4個(gè)周期的點(diǎn)數(shù))。然后再自減,減到0。然后進(jìn)入到負(fù)半周,負(fù)數(shù)的表示是以二進(jìn)制的補(bǔ)碼來表示的,即絕對(duì)值數(shù)的二進(jìn)制取反在加1。 編寫地址自加自減的代碼,然后再根據(jù)地址的值,判斷輸出值的正負(fù),如為負(fù)數(shù),則取反加1后再輸出。代碼,如下所示:module sin_top(input clk, /輸入時(shí)鐘信號(hào)input 9:0 address, /輸入地址信號(hào)output reg 12:0 data_out /輸出sin的數(shù)字值);reg 7:0 add;wire 12:0 douta;/ 以下是判斷地址的值always * beginif( address &
7、lt;= 157 )add = address;else if( address <= 314 )add = 10'd314 - address;else if( address <= 471 )add = address - 10'd314;else if( address <= 628 )add = 10'd628 - address;elseadd = 0;end/例化之前生成的sin_romsin_rom u1_sin_rom (.clka(clk), / input clka.addra(add), / input 7 : 0 addra.d
8、outa(douta) / output 12 : 0 douta);/ 判斷輸出值是正數(shù)還是負(fù)數(shù)。always * beginif( address <= 314)data_out = douta;else if( address <= 628 )data_out = douta + 1'b1;elsedata_out = 0;endendmodule程序?qū)懞昧?,剩下就是要仿真了。仿真的testbench,只需要輸入時(shí)鐘和地址信號(hào)就可以了。地址信號(hào)一直加一,直到不小于628,剛好一個(gè)周期結(jié)束。就返回0值,在繼續(xù)自加。測(cè)試代碼如下所示:module sin_top_test
9、;/ Inputsreg clk;reg 9:0 address;/ Outputswire 12:0 data_out;/ Instantiate the Unit Under Test (UUT)sin_top uut (.clk(clk),.address(address),.data_out(data_out);always#5 clk = clk;initial begin/ Initialize Inputsclk = 0;address = 0;/ Wait 100 ns for global reset to finishwhile(1)begin(negedge(clk);if( address < 628 )
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業(yè)光譜儀定期檢查與維修保養(yǎng)服務(wù)合同
- 二年級(jí)第一學(xué)期班主任工作總結(jié)模版
- 校招游戲運(yùn)營面試題目及答案
- 機(jī)器人自動(dòng)化生產(chǎn)線示教器租賃及操作培訓(xùn)協(xié)議
- 案件犯罪收益分割與分配協(xié)議書
- 基因治療醫(yī)學(xué)院
- 留學(xué)生行李國際運(yùn)輸及意外保險(xiǎn)補(bǔ)充協(xié)議
- 股權(quán)激勵(lì)計(jì)劃與員工職業(yè)發(fā)展支持協(xié)議
- 稅費(fèi)優(yōu)惠型商業(yè)車險(xiǎn)服務(wù)協(xié)議
- 資產(chǎn)評(píng)估機(jī)構(gòu)合伙人合作協(xié)議及業(yè)務(wù)風(fēng)險(xiǎn)控制協(xié)議
- 中國低空經(jīng)濟(jì)發(fā)展指數(shù)報(bào)告(2025版)
- 禁毒社工考試試題及答案
- 裝卸服務(wù)外包協(xié)議書范本
- 2025防撞緩沖車標(biāo)準(zhǔn)
- 廉潔課件教學(xué)課件
- 幼兒園管理 試題及答案
- 江蘇省南京市、鹽城市2025屆高三年級(jí)5月第二次模擬考試英語試題及答案(南京鹽城二模)
- 《公共資源交易法規(guī)概要》課件
- 2025年4月版安全環(huán)境職業(yè)健康法律法規(guī)標(biāo)準(zhǔn)文件清單
- 2025年美容師初級(jí)技能水平測(cè)試卷:秋季美容院服務(wù)禮儀試題
- 2025甘肅省農(nóng)墾集團(tuán)有限責(zé)任公司招聘生產(chǎn)技術(shù)人員145人筆試參考題庫附帶答案詳解
評(píng)論
0/150
提交評(píng)論