基于FPGA和LabVIEW的任意波形發(fā)生器設(shè)計(jì)_第1頁
基于FPGA和LabVIEW的任意波形發(fā)生器設(shè)計(jì)_第2頁
基于FPGA和LabVIEW的任意波形發(fā)生器設(shè)計(jì)_第3頁
基于FPGA和LabVIEW的任意波形發(fā)生器設(shè)計(jì)_第4頁
基于FPGA和LabVIEW的任意波形發(fā)生器設(shè)計(jì)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、1 緒論波形發(fā)生器是一種常用的信號(hào)源,廣泛應(yīng)用于通信、雷達(dá)、測控、電子對抗以及現(xiàn)代化儀器儀表等領(lǐng)域,是一種為電子測量工作提供符合嚴(yán)格技術(shù)要求的電信號(hào)設(shè)備。隨著現(xiàn)代電子技術(shù)的飛速發(fā)展,現(xiàn)代電子測量工作對波形發(fā)生器的性能提出了更高的要求,不僅要求能產(chǎn)生正弦波、方波等標(biāo)準(zhǔn)波形,還能根據(jù)需要產(chǎn)生任意波形,且操作方便,輸出波形質(zhì)量好,輸出頻率范圍寬,輸出頻率穩(wěn)定度、準(zhǔn)確度及分辨率高,頻率轉(zhuǎn)換速度快且頻率轉(zhuǎn)換時(shí)輸出波形相位連續(xù)等??梢姡瑸檫m應(yīng)現(xiàn)代電子技術(shù)的不斷發(fā)展和市場需求,研究制作高性能的任意波形發(fā)生器十分有必要,而且意義重大。11 波形發(fā)生器的發(fā)展及現(xiàn)狀波形發(fā)生器的核心技術(shù)是頻率合成技術(shù),主要方法有:

2、直接模擬頻率合成、鎖相環(huán)頻率合成(PLL),直接數(shù)字合成技術(shù)(DDS)。傳統(tǒng)的波形發(fā)生器一般基于模擬技術(shù)。它首先生成一定頻率的正弦信號(hào),然后再對這個(gè)正弦信號(hào)進(jìn)行處理,從而輸出其他波形信號(hào)。早期的信號(hào)發(fā)生器大都采用諧振法,后來出現(xiàn)采用鎖相環(huán)等頻率合成技術(shù)的波形發(fā)生器。但基于模擬技術(shù)的傳統(tǒng)波形發(fā)生器能生成的信號(hào)類型比較有限,一般只能生成正弦波、方波、三角波等少數(shù)的規(guī)則波形信號(hào)。隨著待測設(shè)備的種類越來越豐富,測試用的激勵(lì)信號(hào)也越來越復(fù)雜,傳統(tǒng)波形發(fā)生器已經(jīng)不能滿足這些測試需要,任意波形發(fā)生器(AWG)就是在這種情況下,為滿足眾多領(lǐng)域?qū)τ趶?fù)雜的、可由用戶自定義波形的測試信號(hào)的日益增長的需要而誕生的。隨

3、著微處理器性能的提高,出現(xiàn)了由微處理器、DA以及相關(guān)硬件、軟件構(gòu)成的波形發(fā)生器。它擴(kuò)展了波形發(fā)生器的功能,產(chǎn)生的波形也比以往復(fù)雜。實(shí)質(zhì)上它采用了軟件控制,利用微處理器控制DA,就可以得到各種簡單波形。但由于微處理器的速度限制,這種方式的波形發(fā)生器輸出頻率較低。目前的任意波形發(fā)生器普遍采用DDS(直接數(shù)字頻率合成)技術(shù)?;贒DS技術(shù)的任意波形發(fā)生器(AWG)利用高速存儲(chǔ)器作為查找表,通過高速DA轉(zhuǎn)換器對存儲(chǔ)器的波形進(jìn)行合成。它不僅可以產(chǎn)生正弦波、方波、三角波和鋸齒波等規(guī)則波形,而且還可以通過上位機(jī)編輯,產(chǎn)生真正意義上的任意波形。12 FPGAFPGA是英文Field Programmable

4、GateArray的縮寫,即現(xiàn)場可編程門陣列,它是在PAL、GAL、EPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)8。FPGA采用了邏輯單元數(shù)組LCA(Logic Cell Array)這樣一個(gè)新概念,內(nèi)部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊lOB(InputOutput Block)和內(nèi)部聯(lián)機(jī)(Interconnect)三個(gè)部分。FPGA的基本特點(diǎn)主要有:(1)采用FPGA設(shè)計(jì)ASIC電路,用戶不需要投片生產(chǎn),就能得到合用的

5、芯片。(2)FPGA可做其他全定制或半定制ASIC電路的中試樣片。(3)FPGA內(nèi)部有豐富的觸發(fā)器和IO引腳。(4)FPGA是ASIC電路中設(shè)計(jì)周期最短、開發(fā)費(fèi)用最低、風(fēng)險(xiǎn)最小的器件之一。(5)FPGA采用高速CHMOS工藝,功耗低,可以與CMOS、TTL電平兼容。因此,F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。FPGA具有靜態(tài)可重復(fù)編程和動(dòng)態(tài)在系統(tǒng)重構(gòu)的特性,使得硬件功能可以像軟件一樣通過編程來修改。在FPGA實(shí)際應(yīng)用中,設(shè)計(jì)的保密和設(shè)計(jì)的可升級(jí)是十分重要的,用單片機(jī)束配置FPGA可以很好的解決上述問題。用單片機(jī)配置FPGA器件時(shí),關(guān)鍵在于產(chǎn)生合適的時(shí)序。可編程邏輯芯片的

6、發(fā)展,特別是高速FPGA的推出,給DDS的開發(fā)應(yīng)用提供了一個(gè)非常合適的契機(jī)。利用FPGA,普通用戶也可以根據(jù)需要開發(fā)自己的DDS芯片。FPGA一般使用HDL語言進(jìn)行開發(fā)。HDL語言軟件式的硬件設(shè)計(jì)方法可以給DDS芯片的設(shè)計(jì)帶來高度的靈活性,可以根據(jù)需要方便的實(shí)現(xiàn)所需的功能。同時(shí),F(xiàn)PGA的速度也越來越快,現(xiàn)在的FPGA已經(jīng)可以輕松的工作在上百M(fèi)Hz的時(shí)鐘頻率之下,這樣就給實(shí)現(xiàn)高速DDS芯片提供了有利條件。13 虛擬儀器1986年,美國國家儀器公司提出了虛擬儀器的概念。虛擬儀器是以通用計(jì)算機(jī)作為系統(tǒng)控制器,由軟件來實(shí)現(xiàn)人機(jī)交互和大部分儀器功能的一種計(jì)算機(jī)儀器系統(tǒng)。虛擬儀器利用個(gè)人計(jì)算機(jī)強(qiáng)大的圖形

7、環(huán)境來建立虛擬儀器面板,從而完成對儀器的控制、數(shù)據(jù)分析與顯示功能。它可以代替?zhèn)鹘y(tǒng)儀器,改變傳統(tǒng)儀器的使用方式,提高儀器的功能、使用效率,大幅度降低儀器價(jià)格,使用戶可以根據(jù)自己的需要定義儀器的功能10。虛擬儀器的出現(xiàn)代表著儀器發(fā)展的最新方向和潮流,是信息技術(shù)的一個(gè)重要領(lǐng)域,對科學(xué)技術(shù)的發(fā)展和工業(yè)生產(chǎn)將產(chǎn)生不可估量的影響。與傳統(tǒng)儀器相比,虛擬儀器有以下一些特點(diǎn):軟件是核心,靈活性和可擴(kuò)展性,性價(jià)比高,良好的人機(jī)界面,與其他設(shè)備互聯(lián)的能力。LabVlEW是美國國家儀器公司推出的基于圖形編程的虛擬儀器軟件,它不僅是一種開發(fā)語言,更是一個(gè)具有擴(kuò)展性和通用性的軟件開發(fā)平臺(tái)。LabVIEW強(qiáng)大的硬件驅(qū)動(dòng)、圖

8、形顯示能力和便捷的快速程序設(shè)計(jì),為過程控制和工業(yè)自動(dòng)化應(yīng)用提供了優(yōu)秀的解決方案。同時(shí),LabVIEW提供了功能強(qiáng)大的高級(jí)數(shù)學(xué)分析庫,包括統(tǒng)計(jì)、估計(jì)、回歸分析、線型代數(shù)、信號(hào)生成算法、時(shí)域和頻域算法眾多科學(xué)領(lǐng)域,可滿足各種計(jì)算和分析需要。2 系統(tǒng)方案設(shè)計(jì)21 總體方案設(shè)計(jì)設(shè)計(jì)方案如圖2.1所示。上位機(jī)(PC機(jī))下位機(jī)D/A轉(zhuǎn)換波形輸出串口圖2.1 方案設(shè)計(jì)圖由上位機(jī)的人機(jī)交互界面通過串口發(fā)送指令到下位機(jī),由下位機(jī)產(chǎn)生波形,經(jīng)過數(shù)模轉(zhuǎn)換、低通濾波后輸出所需要的波形。22 上位機(jī)和下位機(jī)上位機(jī)是指:人可以直接發(fā)出操控命令的計(jì)算機(jī),一般是PC,屏幕上顯示各種信號(hào)。下位機(jī)是直接控制設(shè)備獲取設(shè)備狀況的的計(jì)

9、算機(jī),一般是PLC/單片機(jī)之類的。上位機(jī)發(fā)出的命令首先給下位機(jī),下位機(jī)再根據(jù)此命令解釋成相應(yīng)時(shí)序信號(hào)直接控制相應(yīng)設(shè)備。下位機(jī)不時(shí)讀取設(shè)備狀態(tài)數(shù)據(jù)(一般模擬量),轉(zhuǎn)化成數(shù)字信號(hào)反饋給上位機(jī)。在概念上控制者和提供服務(wù)者是上位機(jī),被控制者和被服務(wù)者是下位機(jī),也可以理解為主機(jī)和從機(jī)的關(guān)系,但上位機(jī)和下位機(jī)是可以轉(zhuǎn)換的。兩機(jī)如何通訊,一般取決于下位機(jī)。下位機(jī)一般處于底層控制,上位機(jī)可以編程后,傳入下位機(jī)或者集中管理下位機(jī),下位機(jī)在有存儲(chǔ)控制程序的情況下,可脫離上位機(jī)工作。在本設(shè)計(jì)中,上位機(jī)安裝有用LabVIEW 開發(fā)的具有良好人機(jī)交互的信號(hào)源面板,可以完成任意波形的數(shù)據(jù)編輯、參數(shù)設(shè)置和波形數(shù)據(jù)的下載。下

10、位機(jī)通過串口與上位PC機(jī)構(gòu)成波形產(chǎn)生系統(tǒng)。3 上位機(jī)部分3.1 LabVIEW軟件設(shè)計(jì)LabVIEW部分軟件設(shè)計(jì)是采用圖形化的方法設(shè)計(jì)的。在前面板上控件主要有:波形選擇,頻率旋鈕,頻段調(diào)節(jié),幅度調(diào)節(jié)。這四部分的調(diào)節(jié)直接影響波形信號(hào)的改變,在程序框圖中,每一種調(diào)節(jié)都對應(yīng)一種波形參數(shù),當(dāng)前面板中相應(yīng)的控件值改變時(shí),參數(shù)也隨之改變,并把這些調(diào)節(jié)參數(shù)連接起來通過串口發(fā)送出去。其軟件流程圖如圖3.1所示。峰峰值參數(shù)幅度調(diào)節(jié)頻段參數(shù)頻段選擇頻系參數(shù)頻率旋鈕波形選擇波形參數(shù)VISA寫入比較是否相同并連接?YN開始圖3.1 LabVIEW軟件設(shè)計(jì)流程圖3.2 前面板設(shè)計(jì)如圖3.2所示,前面板可以操作界面:波形

11、選擇,頻率控制,占空比調(diào)節(jié),幅度調(diào)節(jié)。圖3.2 LabVIEW軟件前面板圖3.3 程序框圖設(shè)計(jì)3.3.1 程序設(shè)計(jì)如圖3.3所示,程序框圖提供VI 的圖形化源程序。圖3.3 LabVIEW軟件程序框圖在程序框圖中對VI 編程,以控制和操縱定義在前面板上的輸入和輸出功能??梢钥吹匠绦蚩驁D中包括了前面板上的開關(guān)、旋鈕、數(shù)值顯示等控件的連線端子,還有一些CIN節(jié)點(diǎn),if循環(huán)結(jié)構(gòu)及程序的循環(huán)結(jié)構(gòu)。整個(gè)程序框圖設(shè)置了一個(gè)While Loop 循環(huán),使它持續(xù)工作下去。由電源開關(guān)控制這一循環(huán)的結(jié)束。整個(gè)程序主要有以下幾個(gè)模塊: 波形類型模塊;頻率選擇模塊;頻段選擇模塊;幅值選擇模塊;串口發(fā)送模塊設(shè)計(jì)。3.3

12、.2 波形類型設(shè)計(jì) 波形類型模塊如圖3.4所示。圖3.4 波形類型設(shè)計(jì)圖波形類型模塊的主要功能是得到波形參數(shù)當(dāng)前面板中的三角控件按下時(shí),參數(shù)為0,正弦控件按下時(shí)參數(shù)為1,方波控件按下時(shí)參數(shù)為2。首先,由于三角,方波,正弦都是輸入控件,在程序框圖中相當(dāng)于普通編程語言的輸入?yún)?shù),只有輸出端子,沒有輸入端子,且輸出值為布爾量,通過布爾轉(zhuǎn)(0,1)VI,可以把輸出值轉(zhuǎn)換為0 或1,分別送到一CIN節(jié)點(diǎn),對其編程如圖三角輸入量設(shè)為 a; 方波輸入量設(shè)為 b; 正弦輸入量設(shè)為 c;輸出為d。CIN節(jié)點(diǎn)功能就是當(dāng)a=1時(shí),輸出d0,表示三角波;當(dāng)b=1時(shí),輸出d=2,表示方波;當(dāng)c=1時(shí),輸出d=1,表示正

13、弦波。之后把d的值送至一數(shù)值轉(zhuǎn)十進(jìn)制字符VI,等待打包發(fā)送。CIN節(jié)點(diǎn)程序如下:if(a=1)d=0;elseif(b=1)d=2;elseif(c=1)d=1;3.3.3 頻率選擇模塊設(shè)計(jì)頻率選擇模塊如圖3.5所示。圖3.5 頻率選擇模塊設(shè)計(jì)圖頻率選擇模塊的主要功能是由頻段按鈕與頻率調(diào)節(jié)選鈕的的值作為輸入計(jì)算出頻率值并且得到頻率系數(shù)和頻段參數(shù)。頻率旋鈕調(diào)節(jié)輸出是一0359之間的數(shù)值假設(shè)為a,頻段的判斷方法與波形選擇模塊相似,可分別用06七個(gè)數(shù)字來分別表示2M2Hz這七個(gè)頻段,則頻率的值為pinlv=205+a*5/(10n)Khz。這些數(shù)值轉(zhuǎn)換也在一個(gè)CIN公式接點(diǎn)內(nèi)完成。3.3.4 峰峰值

14、調(diào)節(jié)設(shè)計(jì)如圖3.6所示,峰峰值的調(diào)節(jié)是由幅侄調(diào)節(jié)旋鈕完成的,主要功能是調(diào)節(jié)信號(hào)的峰峰值大小,峰峰值的調(diào)節(jié)輸出直接送到峰峰值的顯示控件,范圍為08.5V,步進(jìn)為0.1v。但其參數(shù)為真實(shí)值的十倍,以085代表08.5v之間的數(shù)值。圖3.6 峰峰值調(diào)節(jié)設(shè)計(jì)圖3.3.5 串口發(fā)送設(shè)計(jì)串口的發(fā)送是很重要的一部分,主要功能是完成把波形指令發(fā)送到串口上。如圖3.7所示,串口采用的是LabVIEW自帶的串口發(fā)送模塊VISA,可以很方便的調(diào)用。在LabVIEW的VISA面板中有VISA配置、VISA讀取、VISA寫入、VISA關(guān)閉、VISA打開等關(guān)于VISA串口操作的模塊。 圖3.7 串口配置與發(fā)送設(shè)計(jì)圖首先要

15、先調(diào)用一個(gè)VISA配置VI,此VI的功能是完成串口的配置,如波特率,數(shù)據(jù)位數(shù),有無奇偶校驗(yàn)等,在這里設(shè)置的是波特率為9600,一位起始位,八位數(shù)據(jù)位,一位停止位,無奇偶校驗(yàn),無握手協(xié)議。其次,調(diào)用一VISA寫入VI,此VI是將連接好的一包數(shù)據(jù)按指定格式,速率發(fā)送的串口上。最后,調(diào)用VISA關(guān)閉VI,關(guān)閉串口。4 下位機(jī)部分4.1 DDS原理直接數(shù)字頻率合成即DDS,是目前最新的產(chǎn)生頻率源的頻率合成技術(shù)。目前用的最多的是查表法。這種合成技術(shù)具有相對帶寬很寬,頻率切換時(shí)問短(ns級(jí)),分辨率高(uHz),相位變化連續(xù),低相位噪聲和低漂移,數(shù)字調(diào)制功能,可編程及數(shù)字化易于集成,易于調(diào)整等一系列性能指

16、標(biāo),遠(yuǎn)遠(yuǎn)超過了傳統(tǒng)頻率合成技術(shù)所能達(dá)到的水平,為各種電子系統(tǒng)提供了優(yōu)于模擬信號(hào)源性能的高質(zhì)量的頻率源。目前它正朝著系統(tǒng)化、小型化、模塊化和工程化的方向發(fā)展,性能越來越好,使用越來越方便,是目前應(yīng)用最廣泛的頻率合成器之一。其基本結(jié)構(gòu)主要由相位累加器、波形ROM、DA轉(zhuǎn)換器和低通濾波器四個(gè)部分構(gòu)成,如圖41所示。輸出頻率foD/A轉(zhuǎn)換波形Rom 頻率控制字K時(shí)鐘頻率fc相位累加器低通濾波器圖4.1 DDS的結(jié)構(gòu)原理圖DDS的結(jié)構(gòu)表明:DDS輸出信號(hào)的頻率分辨率是由相位累加器的位數(shù)決定;相位分辨率由ROM的尋址位數(shù)決定;幅值分辨率由DA的位數(shù)決定。DDS的核心就是相位累加器,利用它來產(chǎn)生信號(hào)遞增的相

17、位信息,整個(gè)DDS系統(tǒng)在統(tǒng)一的參考時(shí)鐘下工作,每個(gè)時(shí)鐘周期相位累加器作加法運(yùn)算一次。加法運(yùn)算的步進(jìn)越大,相應(yīng)合成的相位值變化越快,輸出信號(hào)的頻率也就越高。對于幅值歸一化的正弦波信號(hào)的瞬時(shí)幅值完全由瞬時(shí)相位來決定,相位變化越快,信號(hào)的頻率越高。ROM表完成將累加器相位信息轉(zhuǎn)換為幅值信息的功能。再由DA完成數(shù)字抽樣信號(hào)到連續(xù)時(shí)域信號(hào)的轉(zhuǎn)換,DA輸出的臺(tái)階信號(hào)再經(jīng)低通濾波器平滑可以得到精確的連續(xù)正弦信號(hào)波形。用相位累加器輸出的數(shù)據(jù)作為波形存儲(chǔ)器的相位取樣地址,這樣就可以把存儲(chǔ)在波形存儲(chǔ)器內(nèi)的波形抽樣值(二進(jìn)制編碼)經(jīng)查找表查出,完成相位到幅值轉(zhuǎn)換。波形存儲(chǔ)器的輸出送到DA轉(zhuǎn)換器,DA轉(zhuǎn)換器將數(shù)字量形

18、式的波形幅值轉(zhuǎn)換成所要求合成頻率的模擬量形式信號(hào)。低通濾波器用于濾除不需要的取樣分量,以便輸出頻譜純凈的正弦波信號(hào)。直接數(shù)字頻率合成技術(shù)是根據(jù)奈奎斯特取樣,從連續(xù)信號(hào)的相位驢出發(fā)將一個(gè)正弦信號(hào)取樣、量化、編碼,形成一個(gè)正弦函數(shù)表,存于ROM中。合成時(shí),通過改變相位累加器的頻率控制字,來改變相位增量,而相位增量的不同將導(dǎo)致一個(gè)周期內(nèi)取樣點(diǎn)的不同,改變頻率。在采樣頻率不變的情況下,通過改變相位累加器的頻率控制字,將這種變化的相位幅值量化的數(shù)字信號(hào)通過DA變換及低通濾波器(LPF)即可得到合成的相位變化的模擬信號(hào)頻率。根據(jù)奈奎斯特采樣定理,對于任意一個(gè)頻率帶寬為f的連續(xù)信號(hào)f(t),可以用一系列離散

19、的取樣值f(t),f(t+T),f(t+2T)、表示,只要這些取樣點(diǎn)的時(shí)間間隔T小于1/2f,則這樣的表示是完整的,包含了連續(xù)信號(hào)f(t)的全部信息。因此,對于一個(gè)周期的正弦波連續(xù)信號(hào),可以沿其相位軸方向,以等量的相位間隔對其進(jìn)行相位幅值取樣,得到一個(gè)周期的正弦波信號(hào)的離散相位幅值序列。由于這個(gè)取樣過程所得到的取樣幅值是隨正弦波信號(hào)幅度連續(xù)變化的,仍然是一個(gè)模擬量,根據(jù)合成波形的精度要求,可以采用最接近的整數(shù)值來表示,即對模擬幅值進(jìn)行量化,量化后的幅值采用相應(yīng)的二進(jìn)制數(shù)據(jù)進(jìn)行編碼。這樣就把一個(gè)周期的正弦波連續(xù)信號(hào)轉(zhuǎn)換成為一系列離散的二進(jìn)制表示的數(shù)字量,然后通過一定的手段固化在ROM中,每一個(gè)存

20、儲(chǔ)單元的地址即是相位取樣地址,存儲(chǔ)單元的內(nèi)容就是已經(jīng)量化的正弦波形幅值。這樣的ROM就構(gòu)成了一個(gè)與幼周期內(nèi)相位取樣相對應(yīng)的正弦函數(shù)功能表,因它存儲(chǔ)的是正弦波形幅值,所以又稱作正弦波形存儲(chǔ)器。在直接數(shù)字合成器中,正弦波形存儲(chǔ)器的字節(jié)數(shù)決定了相位量化誤差。DDS頻率合成器具有以下優(yōu)點(diǎn):(1)頻率分辨率高,輸出頻點(diǎn)多,可達(dá)2N個(gè)頻點(diǎn)(假設(shè)DDS相位累加器的字長是N);(2)頻率切換速度快,可達(dá)US量級(jí);(3)頻率切換時(shí)相位連續(xù);(4)可以輸出寬帶正交信號(hào);(5)輸出相位噪聲低,對參考頻率源的相位噪聲有改善作用;(6)可以產(chǎn)生任意波形;(7)全數(shù)字化實(shí)現(xiàn),偏于集成,體積小,重量輕。4.1.1 相位累加

21、器如圖4.2所示,相位累加器由一個(gè)N位的加法器和N位的寄存器構(gòu)成,通過把上一個(gè)時(shí)鐘的累加結(jié)果反饋回加法器的輸入端實(shí)現(xiàn)累加功能,從而使輸出結(jié)果每一個(gè)時(shí)鐘周期遞增頻率控制字K。加法器相位寄存器時(shí)鐘源頻率控制字K相位量化序列圖4.2 相位累加器結(jié)構(gòu)4.1.2 波形ROM如圖4.3所示,當(dāng)ROM地址線上的地址(相位)改變時(shí),數(shù)據(jù)線上輸出相應(yīng)的量化值(幅度量化序列)。需要指出的是因?yàn)椴ㄐ蜶OM的存儲(chǔ)容量有限,相位累加器的字長一般不等于ROM地址線的位數(shù)。地址 數(shù)據(jù)波形ROM相位量化序列幅度量化序列圖4.3 波形ROM示意圖4.1.3 DA轉(zhuǎn)換器DA轉(zhuǎn)換器將波形ROM輸出的幅度量化序列轉(zhuǎn)化成對應(yīng)的電平輸出

22、。將數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào)。4.1.4 低通濾波器由于輸出波形是一個(gè)階梯波形,必須經(jīng)過抗鏡像濾波,濾除輸出波形中的鏡像才能得到一個(gè)平滑的波形??圭R像濾波器一般是一個(gè)低通濾波器,它要求在輸出信號(hào)的帶寬內(nèi)有較平坦的幅頻特性,在輸出鏡像頻率處有足夠的抑止。4.2 基于FPGA的DDS模塊早期的DDS系統(tǒng)使用分離的數(shù)字器件搭接,隨著整個(gè)電路系統(tǒng)運(yùn)行頻率的升高,采用分離器件構(gòu)建的DDS電路有其自身無法克服的缺點(diǎn),主要表現(xiàn)在電磁兼容和系統(tǒng)工作頻率上。后來出現(xiàn)的專用DDS芯片極大的推動(dòng)了DDS技術(shù)的發(fā)展,但專用DDS芯片價(jià)格昂貴,且無法實(shí)現(xiàn)任意波形輸出,近來,CPLD及FPGA的發(fā)展為實(shí)現(xiàn)DDS提供了更好的

23、技術(shù)手段。FPGA的應(yīng)用不僅使得數(shù)字電路系統(tǒng)的設(shè)計(jì)非常方便,并且還大大縮短了系統(tǒng)研制的周期,縮小了數(shù)字電路系統(tǒng)的體積和所用芯片的品種。而且它的時(shí)鐘頻率已可達(dá)到幾百兆赫茲,加上它的靈活性和高可靠性,非常適合用于實(shí)現(xiàn)波形發(fā)生器的數(shù)字電路部分。用FPGA設(shè)計(jì)DDS電路比采用專用DDS芯片更為靈活。因?yàn)?,只要改變FPGA中的ROM數(shù)據(jù),DDS就可以產(chǎn)生任意波形,因而具有相當(dāng)大的靈活性。相比之下FPGA的功能完全取決于設(shè)計(jì)需求,可以復(fù)雜也可以簡單,而且FPGA芯片還支持在系統(tǒng)現(xiàn)場升級(jí),雖然在精度和速度上略有不足,但也能基本滿足絕大多數(shù)系統(tǒng)的使用要求。用FPGA可以非常方便的實(shí)現(xiàn)DDS系統(tǒng)的數(shù)字電路環(huán)節(jié),

24、且可現(xiàn)場編程進(jìn)行電路的修改。在DDS系統(tǒng)中,F(xiàn)PGA的主要完成:(1)保存頻率字;(2)保存相位字;(3)構(gòu)成相位累加器,產(chǎn)生波形RAM的地址;(4)形成波形RAM。PLL倍頻頻率字累加器尋址累加器波形選擇寄存器頻率字寄存器相位字寄存器波形數(shù)據(jù)存儲(chǔ)波形選擇控制字相位控制字頻率控制字外部時(shí)鐘圖4.4 FPGA設(shè)計(jì)框圖系統(tǒng)可實(shí)現(xiàn)常規(guī)固定波形輸出和任意波形輸出。其中相位累加器是一個(gè)帶有累加功能的32位加法器,它以設(shè)定的頻率控制字K作為步長來進(jìn)行加法運(yùn)算,當(dāng)其和滿時(shí)清零,并進(jìn)行重新運(yùn)算。相位寄存器是一個(gè)8位寄存器,它接受相位控制字?jǐn)?shù)據(jù)并進(jìn)行寄存,當(dāng)下一個(gè)時(shí)鐘到來時(shí),輸入寄存的數(shù)據(jù),對輸出波形的頻率和相

25、位進(jìn)行控制。波形查找表ROM是DDS的關(guān)鍵部分,設(shè)計(jì)時(shí)首先需對時(shí)域波形進(jìn)行采樣,將采樣的波形數(shù)據(jù)儲(chǔ)存到波形查找表ROM中,每一位地址對應(yīng)一個(gè)波形點(diǎn)的數(shù)值,任意波形數(shù)據(jù)寄存器接受任意波形數(shù)據(jù)。整個(gè)系統(tǒng)各模塊是在同步時(shí)鐘信號(hào)CLK的控制下協(xié)調(diào)工作的。43 任意波形發(fā)生器的FPGA實(shí)現(xiàn)為了實(shí)現(xiàn)任意波功能,我們可以用FPGA按照DDS的基本原理和結(jié)構(gòu)設(shè)計(jì)來實(shí)現(xiàn)一個(gè)任意波形發(fā)生器。用FPGA實(shí)現(xiàn)的任意波形發(fā)生器還是基于DDS的基本原理,所以DDS的幾個(gè)基本部分都是應(yīng)當(dāng)具備的。431 串口接收串口接收正確與否決定了以后產(chǎn)生波形是否正確,作用是把串口上的串行數(shù)據(jù)接收并轉(zhuǎn)換成并行數(shù)據(jù),串口接收模塊如圖4.5所

26、示。圖4.5 串口接收圖串口接收輸入有兩個(gè),一個(gè)為時(shí)鐘輸入,另一個(gè)為串行數(shù)據(jù)輸入;輸出也有兩個(gè)一個(gè)是轉(zhuǎn)換好的并行數(shù)據(jù),一個(gè)是轉(zhuǎn)換結(jié)束標(biāo)志。數(shù)據(jù)在串口的發(fā)送中先發(fā)送低位時(shí)先接受到的就是低位,在發(fā)送8位比特的過程中還會(huì)出現(xiàn)高四位與低四位的互換。在本設(shè)計(jì)中實(shí)現(xiàn)方法是每當(dāng)有8個(gè)時(shí)鐘輸入clk,且接收數(shù)據(jù)rx全為0時(shí),再計(jì)16個(gè)clk,把串口值rx存入一個(gè)9位寄存器tmpreg8的低位,并此后每接一個(gè)二進(jìn)制數(shù)據(jù)就tmpreg8的數(shù)據(jù)左移一位,一直接夠八位后,sig信號(hào)為一個(gè)下降沿,并把tmpreg8的低八位給輸出q。432 寄存器設(shè)計(jì)輸入寄存器模塊主要是為了接收單片機(jī)寫入的頻率控制字和相位控制字。在設(shè)計(jì)

27、中DDS采用了32位的相位累加器和16位的相位控制器。當(dāng)使能為高,異步清零也為高的時(shí)候,CLK的上升沿將數(shù)據(jù)線上的8bit數(shù)據(jù)鎖存進(jìn)該模塊中,當(dāng)鎖存完4個(gè)字節(jié)的數(shù)據(jù)后,自動(dòng)將這四個(gè)字節(jié)按照先寫入的在高位的順序組合成一個(gè)32bit的數(shù)輸出在DOUT31O上。該模塊的VHDL語言描述如下:library ieee;use ieee.std_logic_l164.all;use ieee.std_logic_unsigned.all;entity 1nputregaaa isport(din:in std logic_vector(7 downto 0);dout:out std_logic_vec

28、toF(31 downto 0);clr:in std_logic;en:in std_logic;clk:in std_logic);end entity;architecture behav of inputregaaa issignal temp:std_logic_vector(23 downto O);type nature is range 0 to 3;beginprocess(clk,en)variable step:nature:=O;beginif(clr=0 thendouttemp(23 downto 16)temp(15 downto 8)temp(7 downto

29、0)temp(7 downto O)dout=temp&din;step:=step十l;end case:elsestep:=O;end if;end if;end process;end behave;433 地址發(fā)生器設(shè)計(jì)地址發(fā)生器模塊包含相位累加器和相位控制器,其中相位累加器是一個(gè)帶有累加功能的32位加法器。該模塊有三個(gè)輸入一個(gè)輸出, 共有12位地址線,如圖4.6所示。根據(jù)頻率系數(shù)n的不同,產(chǎn)生不同步進(jìn)的地址間隔。圖4.6 地址發(fā)生器模塊累加器采用流水線結(jié)構(gòu)來實(shí)現(xiàn),簡單而言,就是把一個(gè)位數(shù)很長的加法,拆成N個(gè)位數(shù)較短的加法,在N個(gè)時(shí)鐘周期內(nèi)做完,然后輸出結(jié)果,N就是流水線的級(jí)數(shù)。采用流

30、水線結(jié)構(gòu)以后,由于加法器的字長變短了,對于FPGA來講,加法器字長變短,對于提高工作頻率是十分有幫助的。當(dāng)然,流水線結(jié)構(gòu)的使用,并不能無限制地提高電路的工作速度,這是因?yàn)椋魉€結(jié)構(gòu)是一種用電路規(guī)模換取工作速度的設(shè)計(jì)方法,提高工作速度的代價(jià)是電路設(shè)計(jì)的復(fù)雜化。流水線結(jié)構(gòu)累加器要比普通的累加器結(jié)構(gòu)復(fù)雜得多,由于累加不在一個(gè)時(shí)鐘周期內(nèi)完成,內(nèi)部需要大量的寄存器保存中間變量。隨著流水級(jí)數(shù)的提高,電路復(fù)雜程度將大大增加,當(dāng)電路的復(fù)雜程度達(dá)到一定量級(jí)的時(shí)候,流水線所帶來的性能改進(jìn),和電路本身由于結(jié)構(gòu)復(fù)雜所帶來的性能下降相抵消的時(shí)候,流水線結(jié)構(gòu)就不再具有提高電路工作頻率的作用了。采用基于流水線技術(shù)的加法器

31、與寄存器結(jié)合在一起的相位累加器設(shè)計(jì)。八位相位累加器的四級(jí)流水線設(shè)計(jì),加法器采用5級(jí)鎖存,4級(jí)加法,最前的一級(jí)實(shí)現(xiàn)2位數(shù)的相加,后面3級(jí)加法器實(shí)現(xiàn)2位數(shù)與一個(gè)進(jìn)位的相加,整個(gè)加法器的速度由2位加法器決定。434 波形數(shù)據(jù)存儲(chǔ)器設(shè)計(jì)波形數(shù)據(jù)ROM就是存放波形數(shù)據(jù)的存儲(chǔ)器,如圖4.7所示。圖4.7 ROM模塊大多波形發(fā)生器產(chǎn)品都將波形數(shù)據(jù)存放在外部的ROM中,這樣使得各部分結(jié)構(gòu)清晰,測試、維護(hù)更加方便,但由于ROM本身讀取速度慢的缺點(diǎn),使得整個(gè)系統(tǒng)性能下降,工作頻率F降,為了解決以上問題,本設(shè)計(jì)使用的是用FPGA設(shè)計(jì)出ROM,在FPGA中存放波形數(shù)據(jù)。當(dāng)在波形ROM中固化所需波形的一個(gè)周期的幅度值后

32、,由地址發(fā)生器產(chǎn)生的地址對波形ROM尋址,依次可取出送至DA轉(zhuǎn)換及濾波后即可得到所需的模擬波形輸出。4.3.5 DA轉(zhuǎn)換器電路的設(shè)計(jì)從波形ROM中讀出的幅度量化數(shù)據(jù)還只是一個(gè)數(shù)字信號(hào),要得到最后的輸出信號(hào)必須經(jīng)過數(shù)模轉(zhuǎn)換器。因此在波形ROM之后要設(shè)計(jì)一個(gè)DA轉(zhuǎn)換電路。將數(shù)據(jù)用時(shí)鐘的上升沿打入輸入鎖存器,相應(yīng)的模擬數(shù)據(jù)就會(huì)立即更新。DDS輸出的幅度量化序列經(jīng)過波形量化序列轉(zhuǎn)化成了差分信號(hào)。再經(jīng)過一個(gè)低通濾波器,就可以得到一個(gè)光滑的波形。4.4 外圍電路設(shè)計(jì)4.4.1 外圍電路圖圖4.8 FPGA外圍電路如圖4.7所示,是由DAC0832芯片構(gòu)成FPGA輸出的數(shù)模轉(zhuǎn)換電路。4.4.2 差分放大電路

33、圖4.9 差分放大電路圖結(jié) 論 本文完成了任意波形發(fā)生器的設(shè)計(jì),使用LabVIEW圖形化語言完成了任意波形的生成,利用了計(jì)算機(jī)的強(qiáng)大功能,把傳統(tǒng)儀器的設(shè)計(jì)、編輯都放到計(jì)算機(jī)上完成,并通過串口傳輸數(shù)據(jù)。對數(shù)字直接頻率合成技術(shù)進(jìn)行了研究,數(shù)字直接頻率合成技術(shù)在相對帶寬、頻率轉(zhuǎn)換時(shí)間、相位連續(xù)性、正交輸出、高分辨率及集成化等一系列性能指標(biāo)方面遠(yuǎn)遠(yuǎn)超過了傳統(tǒng)頻率合成技術(shù)所能達(dá)到的水平。用FPGA來實(shí)現(xiàn)任意波形發(fā)生器的核心部分,掌握了基于FPGA的硬件電路設(shè)計(jì),將整個(gè)系統(tǒng)分成若干個(gè)模塊進(jìn)行設(shè)計(jì),模塊采用VHDL語言編程來實(shí)現(xiàn)。 致 謝在畢業(yè)論文完成之時(shí),首先要感謝我的導(dǎo)師吳健老師。吳健老師以其淵博的學(xué)識(shí)

34、,豐富的經(jīng)驗(yàn)在本課題的開題、研究過程、及論文撰寫各個(gè)階段給予了我悉心的指導(dǎo)。在課題的進(jìn)展過程中,吳老師傾注了大量心血,吳老師嚴(yán)謹(jǐn)求實(shí)的治學(xué)態(tài)度,腳踏實(shí)地的工作作風(fēng)給我留下了深刻的印象,使我受益匪淺,我的進(jìn)步離不開吳老師的教誨。感謝測控班的同學(xué)們,他們解決了我設(shè)計(jì)過程中遇到的許多問題,是我克服了困難,順利完成了課題設(shè)計(jì)。感謝所有幫助過我的人。參 考 文 獻(xiàn)1 林占江, 林放,等. 電子測量儀器原理與使用M. 北京:電子工業(yè)出版社,2006.2 張世箕. 自動(dòng)測試系統(tǒng)M. 成都: 電子科技大學(xué)出版社,1994.3 劉慶雄. 低頻信號(hào)發(fā)生器M. 北京:水利電力出版社,1987.4 張倫. 現(xiàn)代電子測

35、量基礎(chǔ)M. 北京:中國計(jì)量出版社,1995.5 袁淵,古軍虛擬儀器基礎(chǔ)教程M西安:西安電子科技大學(xué)出版社,2002.6 王執(zhí)泉基于Web服務(wù)的虛擬儀器J儀表技術(shù),2003(2):37-39.7 江偉, 王元中. 基于FPGA的DDS的設(shè)計(jì)與實(shí)現(xiàn)J. 電子技術(shù),2007(2): 24-25, 40.8 朱明程FPGA原理及應(yīng)用設(shè)計(jì)M. 北京:北京電子工業(yè)出版社,1994.9 王敏銀. 數(shù)字電路邏輯設(shè)計(jì)(脈沖與數(shù)字電路第三版)M. 北京: 高等教育出版社,1999.10 胡生清,幸罔全未來的儀器儀表虛擬儀器J自動(dòng)化與儀表,1999,14(6):5-7.11 EDA先鋒工作室. Altera FPG

36、A/CPLD設(shè)計(jì)(基礎(chǔ)篇)M. 北京:人民郵電出版社,2005.12 徐志軍CPLDFPGA的開發(fā)與運(yùn)用M北京:電子工業(yè)出版社,2OO2.13 楊樂平自動(dòng)化測試與虛擬儀器技術(shù)M北京:科學(xué)出版社,2004.14 李洪偉,袁斯華基于Quartus的FPGACPID設(shè)計(jì)M北京:電子工業(yè)出版社,2006.15 褚振勇,齊亮,等. FPGA設(shè)計(jì)及應(yīng)用(第二版)M. 西安:電子科技大學(xué)出版社,2006.16 Nasatdm,E1sadekha,GhalihSingle feed compact quadband PIFA antenna for wireless communication applica

37、tionsJIE EE Trans Antennas Propagat Lett,2005,53(8):263l一263517 Liu ZD,Hall P,Wake DDual-frequency planar inverted-F antennaJ. IEEE Trans Antennas Propagat,1997,45(10):1451-1459.附 錄:FPGA 總體設(shè)計(jì)程序Library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entit

38、y mine4 is port(clk : in std_logic; set, clr, up, down, zu, zd : in std_logic; posting : in std_logic; u0,d0,sw : in std_logic; ss : in std_logic_vector( 3 downto 0 ); sss: in std_logic_vector( 4 downto 0 ); Data3, Data2, Data1,Data0 : in std_logic_vector( 3 downto 0 ); P180 : out std_logic; lcd :ou

39、t std_logic_vector(7 downto 0); shift : out std_logic_vector(3 downto 0); dd, a : out std_logic_vector(7 downto 0);end mine4;architecture behav of mine4 issubtype word is std_logic_vector(7 downto 0);type unit is array(63 downto 0) of word;signal ram :unit;signal qqq : integer range 0 to ;signal qq

40、: integer range 0 to ;signal tmp : integer range 0 to 9999;signal coun : integer range 0 to ;signal coun0 : integer range 0 to ;signal b : integer range 0 to ;signal c : integer range 0 to ;signal z, con : integer range 0 to 63;signal f : std_logic_vector (7 downto 0);signal amp, amp0, d : std_logic

41、_vector(7 downto 0);signal bcd0,bcd1,bcd2,bcd3 : integer range 0 to 9;signal bcd01,bcd11,bcd21,bcd31 : integer range 0 to 9;signal bcd00,bcd10,bcd20,bcd3o : integer range 0 to 9;signal y:integer range 0 to 9;signal addr :integer range 0 to 63;beginqq= when ss=1000else when ss=0100else when ss=0010el

42、se 78125;qqq= when ss=1000else when ss=0100else when ss=0010else 50000;process(clk)variable count4 : integer range 0 to ;variable count : integer range 0 to ;variable count3 : integer range 0 to ;variable count1 : integer range 0 to ;variable count0 : integer range 0 to ;variable ddd : std_logic_vec

43、tor( 9 downto 0 );variable dd0,dd1,dd2,dd3,dd4 : integer range 0 to 255;variable adr : integer range 0 to 63;begin if rising_edge(clk) then if posting=1 then if count4= then count4:=0; adr:=conv_integer(Data3)*10+conv_integer(Data2); if adr64 then if set=1 then ram(adr)=conv_std_logic_vector(conv_in

44、teger(Data1)*10 +conv_integer(Data0)*2,8);elsif clr = 1 then adr:=0; for i in 0 to 63 loop ram(i)0); end loop; end if; end if;else count4:=count4+1;end if;else if set=1 then coun=0; b=0; coun0=0;c=0;z=31;amp0=;addr=0; tmp=conv_integer(Data3)*1000+conv_integer(Data2)*100+conv_integer(Data1)*10+conv_i

45、nteger(Data0); amp0 then if sw=0 then if counqq then coun=coun+tmp;b=b+1; else if count=b then count:=1; if f =63 then f=; else f=f+1; end if; if sss=00010 then if con=z then dd=amp0; con=con+1; elsif con=63 then con=0;dd=; else con=con+1;dd=; end if; elsif sss= 10000then dd=d; elsif sss=00100 then

46、dd31 then dd=(-f(5 downto 0)&00; else dd=f(5 downto 0)&00;end if;elsif sss=00001 thenif addr63 then dd=ram(addr) ;addr=addr +1;elsif addr = 63 then dd = ram(63); addr = 0;end if;else if sss(1) =1 then if con z then con = con+1; dd0 :=conv_integer(amp0); else con 31 then dd3:=conv_integer(-f(5 downto

47、 0)&00); else dd3:=conv_integer(f(5 downto 0)&00);end if; end if; if sss(0)= 1 then if addr63 then dd4:=conv_integer(ram(addr); addr=addr+1; elsif addr=63 then dd4:=conv_integer(ram(63); addr=0;end if; end if; ddd:= conv_std_logic_vector(dd0+dd1+dd2+dd3+dd4),10); dd=ddd(9 downto 2); end if; else cou

48、nt:=count + 1; end if; end if;else if coun0qqq then coun0=coun0+tmp;c=c+1; else if count3=c/2 then count3:=count3+1;dd=amp0; elsif count3=c then count3:=1;dd=; else count3:=count3+1; dd=; end if; end if; end if; if count1 = then count1:=0; if zu=1 then if z63 then z=z+1; else z0 then z=z-1; else z=0; end if; end if; else count1:=count1+1; end if; if count0= then count0:=0; if u0=1 then if amp0 then amp0=amp0+1 ; else amp0 then amp0=amp0-1 ; else amp0=; end if; elsif up=1 then if amp0 then amp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論