




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 1摘要:本文主要探索了應用FPGA 靈活可重復編程和方便在系統重構的特性,以Verilog HDL 為設計語言,將硬件功能以軟件設計來描述,提高了產品的集成度,縮短開發周期。所設計的波形發生器可產生正弦波(sina_wave)、鋸齒波(swat_wave)、矩形波(squr_wave)、三角波(trig_wave)四種信號,能夠實現信號的轉換并且頻率可調;設計的頻率計以1Hz 為基準信號,測量的范圍是1Hz 9999Hz ,測量的結果以四位十進制的形式輸出。并且給出了實現D/A轉換和動態顯示的硬件外圍電路,而FPGA 作為控制中心。最后還針對設計中可以提高、改進的地方進行了探討,如:頻率計的
2、結果可用字符LCD 顯示,頻率計的測量范圍可通過選擇不同的基準頻率(比如10Hz 、100Hz 、1KHz )來擴展,利用頻率計電路來顯示波形發生器的輸出波形的頻率及形狀標識,這樣就實現了實驗室中函數發生器的雛形:能實現任意波形的輸出并且能夠測量外來信號的頻率,這也是本文的設計思路。關鍵字:任意波形發生器 頻率計 FPGA Verilog HDL QuartusII基于FPGA 的任意波形發生器&數字頻率計設計設計的思路主要是以實驗室中常用的函數發生器為雛形,及既能輸出任意波形,并且頻率可調,還可以測量外部信號的頻率。實現這兩種功能設計的方式有很多種,這里采用FPGA 設計來實現,驗證
3、設計的芯片采用Cyclone 系列,具體芯片可根據實驗室的配置來確定。語言采用Verilog HDL ,軟件以QuartusII 為主 。其中任意波形發生器的實現采用模塊設計,這樣很好的利用了QuartusII 軟件中的LPM_ROM模塊,能夠達到最優設計;頻率計的功能完全采用HDL 語言描述,最后的頂層文件采用模塊設計來完成。最終的頂層文件如下圖所示:2 一、任意波形發生器的實現要實現的功能:可產生正弦波(sina_wave)、鋸齒波(swat_wave)、矩形波(squr_wave)、三角波(trig_wave)四種信號,能夠實現信號的轉換(select )并且頻率可調。主要由三部分組成:
4、地址指針控制模塊,四種波形數據存儲模塊,D/A轉換模塊。前面2個模塊在FPGA 中實現,D/A轉換通過外圍電路實現。該部分的實現框圖如下:數據ROM 中存儲正弦波、鋸齒波、矩形波、三角波4種信號各一個周期的波形數據(一個周期選擇128個數據采樣值),地址指針讀取ROM 中不同區域的數據,即可產生不同的波形。通過控制讀取時間間隔的不同,可實現頻率的調整。 1、波形數據存儲ROM 模塊的設計首先應建立ROM 初始化數據文件Wave_gen.mif。由于每一種波形一個周期取128 3個數據,故共有512個數據。在QuartusII LPM_ROM中配置如下: 四種波形在ROM 中的存儲地址分別為:正
5、弦波(sina_wave):0127;鋸齒波(swat_wave):128255; 矩形波(squr_wave):256383; 三角波(trig_wave):384511; 每個波形各占16Byte 區域。通過對各個波形128點采樣(用C 語言計算),得到各個波形一周期的數據,填寫到對應的ROM 存儲區域后,即完成了ROM 數據初始化文件。Wave_gen.mif文件內容如下:正弦波(sina_wave)波形數據: 鋸齒波(swat_wave)波形數據 矩形波(squr_wave)波形數據: 三角波(trig_wave)波形數據:建立好了Wave_gen.mif文件以后,在原理圖輸入界面下插
6、入LPM_ROM模塊,然后利用MegaWizard Plug-In Manager, 對其進行編輯,主要是完成初始化工作。主要界面如下: 通過以上兩步操作,及完成了波形數據存儲模塊的設計。2、指針控制模塊的設計該模塊的功能采用Verilog HDL 來描述,程序Wave_gen.v請見附件1。程序實現的主要功能是:根據不同的波形選擇(select1:0), 來改變送入ROM中的地址指針address 。四種波形一個周期的數據各占不同的16B ,每次波形改變使address 指向各段數據首地址。編譯正確后將其創建為Wave_gen.bsf模塊(見頂層文件中所示),然后采用圖形編輯方式,完成波形發
7、生器這部分電路的設計。該部分設計完成框圖見頂層文件框圖(如第2頁上圖所示)。該部分功能驗證的波形仿真結果如下:產生正弦波(sina_wave)時送到DAC0832的數據: 產生鋸齒波(swat_wave)時送到DAC0832的數據: 產生矩形波(squr_wave)時送到DAC0832的數據: 產生三角波(trig_wave)時送到DAC0832的數據: 由仿真結果可知,改變select1:0的值,能夠正確的將對應的波形數據送到DAC0832,從而完成了整體設計的第一部分。二、數字頻率計的實現要實現的功能:設計一個四位數字顯示的頻率計,標準基準時鐘采用1Hz (即1s ),可以測量1Hz 99
8、99Hz 的信號頻率。完全采用文本設計,模擬的硬件功能有三部分組成:控制部分、計數測量部分、輸出顯示數據鎖存部分。頻率計的程序總體框圖及內部部分,內部的握手信號等信息的框圖表示如下: 1、信號的定義與說明如下:輸入部分input_fre: 輸入的待測信號;inclk : 系統的時鐘信號。在計數測量部分,其被分頻為1Hz 信號;在動態掃描部分,其被分頻為動態掃描脈沖。在這里,inclk 假設為實驗室的4MHz ; rst :系統的復位時鐘,高電平有效。:輸出部分Qout15:0: 若打算通過數碼管靜態顯示,則Qout15:12為千位,Qout11:8為百位,Qout7:4為十位,Qout3:0為
9、個位,都是十進制形式;warning: 超過量程時輸出的警示信號;decodeout6:0: 動態掃描顯示時的譯碼輸出,在掃描脈沖的作用下,循環的輸出四位數據;ctr_seg3:0: 四個數碼管的未選信號,在掃描脈沖的作用下,與相應位的譯碼信號對應輸出。:中間握手信號count_en: 計數允許信號;count_clr: 在新的一次測量開始時,清除上一次的測量數據,是數碼管上的顯示數據隨時得到更新;load : 計數數據鎖存信號。2、控制部分各信號的時序關系輸入的系統脈沖經過分頻后得到1Hz 的計數基準信號,在基準信號每兩個時鐘周期經行一次頻率測量。該部分產生3個控制信號:count_en,c
10、ount_clr,load。count_clr對計數模塊進行復位,持續半個時鐘周期;count_en上升沿時刻計數部分開始對輸入信號頻率進行測量,測量時間恰為一個基準時鐘(1Hz ),這段時間對輸入信號的脈沖進行計數,結果即為信號色頻率。load 即為產生鎖存信號。各控制信號的時序關系如下圖所示: 3、計數部分的設計通過控制部分送來的控制時序,計數部分可以在一個基準時鐘周期內對輸入的信號進行頻率測量,在計數的同時通過程序控制,使輸出都為BCD 碼。4、鎖存部分設計在load 信號的時序作用下,完成輸出數據鎖存。5、動態掃描部分的設計在掃描時序的作用下,送出每一位的譯碼數據(decodeout6
11、:0)及對應的字位選通控制信號(ctr_seg3:0 。設計實現:該模塊的功能采用Verilog HDL 來描述,程序fre_measure.v請見附件2。 編譯正確后將其創建為fre_measure.bsf模塊(見第2頁上圖頂層文件中所示),然后采用圖形編輯方式,完成頻率計這部分電路的設計。該部分設計完成后框圖見頂層文件框圖(如第1頁上圖所示)。該部分功能驗證的波形仿真結果如下:當input_fre設置為40Hz 時,仿真的波形如下: 如上圖所示,Qout 顯示數據為:0040,即40Hz 。同時將input_fre與clk_1Hz對照比較,亦可數出clk_1Hz一個周期內input_fre
12、為40(圖中clk_1Hz半個周期內input_fre為20)。同時譯碼輸出為3F 、66,分別代表0、4的字型碼。 :當input_fre設置為200Hz 時,仿真的波形如下: 如上圖所示,Qout 顯示數據為:0200,即40Hz 。同時將input_fre與clk_1Hz對照比較,亦可數出clk_1Hz一個周期內input_fre為200(圖中clk_1Hz半個周期內input_fre為100)。同時譯碼輸出為3F 、5B ,分別代表0、2的字型碼。【說明】:為了仿真時減輕CPU 的運算量,程序中的1Hz 分頻數據改為199(原數據是1999999),動態掃描時鐘分頻改為9(原數據是49
13、99),不影響研究問題的實質。由上面的仿真結果可知,頻率計能夠正確的測量出輸入信號的頻率,從而完成了整體設計的第二部分。三、頂層電路設計及外圍電路設計完成了任意波形發生器的設計與4位數字頻率計的設計后,可以利用Quartus II軟件的原理圖編輯方式完成最后的設計。由于前面的工作已經創建了Wave_gen.bsf模塊,fre_measure.bsf模塊,調用LPM_ROM模塊,并用Wave_gen.mif對其經行初始化(前面已經敘述過),完成最后的頂層文件設計。頂層文件模塊連接圖如第2頁上圖所示。外圍電路設計:FPGA 作為控制中心,配合外圍D/A轉換電路、數碼管顯示電路,則上述設計就能進行硬
14、件測試。下圖是利用Proteus 軟件方便的作圖功能畫出的外圍電路: 【注明】:這樣的電路Proteus 是不能仿真的,這里僅借助Proteus 直觀形象的圖形表示。四、系統設計有待提高和改進的地方頻率計的結果可用字符LCD 顯示,讓FPGA 送出相應的LCD 控制信號;頻率計的測量范圍可通過選擇不同的基準頻率(比如10Hz 、100Hz 、1KHz )來擴展,即可以實現“可選量程”的數字頻率計;利用頻率計電路來顯示波形發生器的輸出波形的頻率及波形標識,這樣就實現了實驗室中函數發生器的雛形:能實現任意波形的輸出及頻率顯示并且能夠測量外來信號的頻率,這也是本文最初的設計思路,那樣設計就更加完美。
15、參考文獻:【1】 王金明.Verilog HDL程序設計教程. 北京. 人民郵電出版社,2004【2】 Altera 公司.Quartus II 7.2簡易用戶使用入門指南【3】 王金明. 數字系統設計與Verilog HDL教程. 第二版,2005【4】 曾繁泰.EDA 工程理論與實踐-SOC 系統芯片設計. 電子工業出版社,2004,6附件【1】:Wave_gen.v程序如下:module Wave_gen(address,inclk,select,freq;output8:0 address; /輸出控制ROM 的地址input inclk; /系統始終,時間應該保證D/A能轉換完畢 i
16、nput1:0 select; /波形選擇,具體值代表的波形見下面定義 input3:0 freq; /控制輸出波形的頻率reg7:0 Qout;reg8:0 address;reg7:0 k,m;parameter sina_wave=2'b00,swat_wave=2'b01,squr_wave=2'b10,trig_wave=2'b11;always (posedge inclkbegincase(selectsina_wave:beginif(select=1 address<=128;if(select=2 address<=256;if(
17、select=3 address<=384;if(freq=0|freq=1beginif(address>=127 address<=0;else address<=address+1; endelsebegink<=127/freq;m<=freq*k;if(address>=maddress<=0;elseaddress<=address+freq; endendswat_wave:beginif(select=0 address<=0;if(select=2 address<=256;if(select=3 addres
18、s<=384;if(address<128 address<=128;elsebeginif(freq=0|freq=1beginif(address>=255 address<=128;else address<=address+1;endelsebegink<=127/freq;m<=freq*k;if(address>=(m+128address<=128;elseaddress<=address+freq;endendendsqur_wave:beginif(select=0 address<=0;if(selec
19、t=1 address<=128;if(select=3 address<=384;if(address<256 address<=256;elsebeginif(freq=0|freq=1beginif(address>=383 address<=256;else address<=address+1;endelsebegink<=127/freq;m<=freq*k;if(address>=(m+256address<=256;elseaddress<=address+freq;endendendtrig_wave:b
20、eginif(select=1 address<=128;if(select=2 address<=256;if(select=3 address<=384;if(address<384 address<=384;elsebeginif(freq=0|freq=1beginif(address>=511 address<=384;else address<=address+1; endelsebegink<=127/freq;m<=freq*k;if(address>=(m+384address<=384;elseaddr
21、ess<=address+freq;endendendendcaseendendmodule附件【2】fre_measure.v程序如下:module fre_measure(Qout,warning,ctr_seg,decodeout,inclk,rst,input_fre; input inclk,rst,input_fre;output15:0 Qout;output warning;output3:0 ctr_seg;output6:0 decodeout;reg3:0 ctr_seg,out_seg;reg6:0 decodeout;reg15:0 Qout,temp;reg
22、clk_1Hz,count_en,load,warning,temp1,clk_scan;reg1:0 state_scan;reg21:0 count;reg16:0 count2;always ( posedge inclk beginif(count=1999999 /假設inclk 為4M ,分頻得到1Hz 信號 begincount=0;clk_1Hz=!clk_1Hz;endelsebegincount=count+1;clk_1Hz=clk_1Hz;endendalways (posedge clk_1Hz /控制部分設計beginif(rstbegin count_en=0;
23、load=1; endelsebegincount_en=count_en;load=count_en;endendassign count_clr=clk_1Hz&load;always (posedge input_fre or posedge count_clr /計數部分設計 beginif(count_clr=1begin temp<=0;temp1<=0; endelsebeginif(count_en=1beginif(temp=16'h9999begin temp<=0;temp1<=1; endelsebeginif(temp3:0=9
24、begintemp3:0<=0;if(temp7:4=9begintemp7:4<=0;if(temp11:8=9begintemp11:8<=0;if(temp15:12=9temp15:12<=0;elsetemp15:12<=temp15:12+1; endelsetemp11:8<=temp11:8+1; endelsetemp7:4<=temp7:4+1;endelsetemp3:0<=temp3:0+1;endendelsebegin temp<=temp;temp1<=temp1; endendendalways (posedge load /輸出鎖存部分設計beginQout<=temp;warning<=temp1;endalways ( posedge inclk /分頻得到掃描脈沖beginif(count2=4999begincount2=0;clk_scan=!clk_scan;endelsebegincount2=count2+1; clk_scan=clk_scan; end end always (posedge clk_scan / 動態掃描部分設計 begin case(sta
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年LED電子顯示屏制作及安裝合同
- 2025企業合同保障女性職工孕期權益為她們在工作中提供堅強后盾
- 2025蘇州市家庭居室裝飾裝修工程委托監理合同
- 電動車配件購銷合同協議
- 電纜買賣合同違約協議
- 申通快遞發貨合同協議
- 電商加盟抽成合同協議
- 《文化傳統與現代文明》(首都師范大學)章節測試答案
- 瓷磚廠拆除合同協議
- 男女朋友房內合同協議
- 2025年江蘇省南京市中考《二次函數綜合》專題復習講義
- 采油工程 試題及答案
- 西醫臨床基因組學應用試題及答案
- (二調)武漢市2025屆高中畢業生二月調研考試 政治試卷(含標準答案)
- 2025年共青團團課考試題庫及答案
- T-CECS120-2021套接緊定式鋼導管施工及驗收規程
- 2024年四川省成都市中考地理+生物試卷真題(含答案解析)
- 2024年湖北省武漢市高考數學一調試卷
- ThingsBoard IOT 物聯網平臺的介紹與應用演示
- PDCA模板(完整版)
- SWIFT信用證代碼表及詳解
評論
0/150
提交評論