搞不明白波形發(fā)生器?教你一文看懂任意波形發(fā)生器
波形發(fā)生器種類很多,如Arduino波形發(fā)生器、任意波形發(fā)生器等。本文中,主要為大家講解任意波形發(fā)生器,并為大家?guī)碓敿?xì)的DDS任意波形發(fā)生器的設(shè)計(jì)流程。如果你癡迷于波形發(fā)生器,不妨繼續(xù)往下看哦。
任意波形發(fā)生器是現(xiàn)代電子測(cè)試領(lǐng)域應(yīng)用最為廣泛的通用儀器之一,它的功能遠(yuǎn)比函數(shù)發(fā)生器強(qiáng),可以產(chǎn)生各種理想及非理想的波形信號(hào),對(duì)存在的各種波雷達(dá)、導(dǎo)航、宇航等領(lǐng)域。形都可以模擬,廣泛應(yīng)用于測(cè)試、通信、雷達(dá)、導(dǎo)航、宇航等領(lǐng)域。
一、任意波形發(fā)生器的功能
任意波形發(fā)生器既具有其他信號(hào)源的信號(hào)生成能力,又可以通過各種編輯手段產(chǎn)生任意的波形采樣數(shù)據(jù),方便地合成其他信號(hào)源所不能生成的任意波形,從而滿足測(cè)試和實(shí)驗(yàn)的要求。任意波形發(fā)生器的主要功能包括:
(1)函數(shù)發(fā)生功能
基礎(chǔ)實(shí)驗(yàn)中,為了驗(yàn)證電路功能、穩(wěn)定性和可靠性,需要給它施加理想波形,任意波形發(fā)生器能替代函數(shù)發(fā)生器提供正弦波、方波、三角波、鋸齒波等波形,還具有各種調(diào)制和掃頻能力。利用任意波形發(fā)生器的這一基礎(chǔ)功能就能滿足一般實(shí)驗(yàn)的信號(hào)需求。
(2)任意波形生成
出于各種干擾的存在以及環(huán)境的變化,實(shí)際運(yùn)行在實(shí)際電子環(huán)境中的設(shè)備,電路中往往存在各種信號(hào)缺陷和瞬變信號(hào),例如過脈沖、尖峰、阻尼瞬變、頻率突變等。任意波形發(fā)生器可以模擬這些特殊信號(hào),以測(cè)試系統(tǒng)的實(shí)際性能。
(3)信號(hào)還原功能
在一些軍事、航空等領(lǐng)域,有些電路運(yùn)行環(huán)境很難估計(jì),在設(shè)計(jì)完成之后,在現(xiàn)實(shí)環(huán)境中還需要更進(jìn)一步的實(shí)驗(yàn)驗(yàn)證,而有些實(shí)驗(yàn)的成本很高或者風(fēng)險(xiǎn)性很大(如飛機(jī)試飛時(shí)發(fā)動(dòng)機(jī)的運(yùn)行情況),人們不可能重復(fù)作實(shí)驗(yàn)來判斷所設(shè)計(jì)產(chǎn)品的可行性和穩(wěn)定性。此時(shí),可以利用任意波形發(fā)生器的信號(hào)還原功能。在做一些高耗費(fèi)、高風(fēng)險(xiǎn)實(shí)驗(yàn)時(shí),可以通過數(shù)字示波器把現(xiàn)實(shí)中的實(shí)際波形記錄下來,再通過計(jì)算機(jī)接口下載到任意波形發(fā)生器,通過任意波形發(fā)生器還原實(shí)驗(yàn)中的實(shí)際做進(jìn)一步的實(shí)驗(yàn)驗(yàn)證工作。
二、硬件結(jié)構(gòu)說明
三、設(shè)計(jì)過程
在本系統(tǒng)中,DDS是任意波形實(shí)現(xiàn)的技術(shù)關(guān)鍵,其核心為相位累加器(全加器與數(shù)字寄存器)與ROM波形查詢表構(gòu)成。那么我們?cè)O(shè)計(jì)DDS的框圖如下
建立一個(gè)模塊實(shí)現(xiàn)從單片機(jī)接收來的頻率控制字的寄存功能,作為寄存器。全加器實(shí)現(xiàn)20位的相位累加,通過頻率控制字作為步長進(jìn)行控制。由于FPGA內(nèi)輸出位數(shù)有限,因此建立一個(gè)模塊進(jìn)行高位截?cái)啵蝗「呤唬邮绽奂悠鬏敵龅臄?shù)據(jù)。然后再通過波形ROM完成波形的查找與輸出。這部分為固定的正弦波、三角波、方波與鋸齒波等常規(guī)波形的輸出部分。任意波形部分,則需要一個(gè)能隨時(shí)接受數(shù)據(jù)更新的RAM,其數(shù)據(jù)的寫入由單片機(jī)控制,接收上位機(jī)的下傳數(shù)據(jù),其數(shù)據(jù)的讀取由DDS中的地址發(fā)生器控制,這樣即可產(chǎn)生任意波形輸出。
1.固定波形輸出
在FPGA內(nèi)部實(shí)現(xiàn)高速的多位數(shù)相位累加器,輸出地址信號(hào),控制讀出波形存儲(chǔ)器中存放的波形幅度數(shù)字信號(hào)。通過改變相位累加器的相位增量M,即地址間隔的改變,控制讀出波形存儲(chǔ)器一個(gè)周期正弦波幅值的數(shù)目,達(dá)到輸出頻率的控制。其輸出的頻率為 :
其中fclk為系統(tǒng)時(shí)鐘頻率,N為相位累加器的位數(shù),M為相位增量--頻率控制字,由公式可知fout與肘成正比,控制M就可以控制輸出的頻率。如要頻率步進(jìn)為l0Hz,則要求。
保證在輸出最高頻率輸出時(shí)有32個(gè)點(diǎn)的波表數(shù)據(jù)輸出,則要求時(shí)鐘為3.2MHz。將50MHz的時(shí)鐘10分頻,得到5MHz的信號(hào)作為累加器的計(jì)數(shù)信號(hào)。則fclk=5MHz,2N=500000,因此,N可取20,2N=1048576。則fout=-4.77M,M=0.21fout。利用計(jì)算機(jī)輸入要輸出的頻率,發(fā)送到單片機(jī),單片機(jī)將對(duì)接收到的數(shù)據(jù)進(jìn)行預(yù)算處理后發(fā)送給FPGA。
頻率輸入電路如圖所示,接收8位的頻率字長,輸出為20位。
下面為STC89C52RC與EPlC3T144C8的接口程序,用控制字:
2.加法器
加法器為20位,自動(dòng)累加,它以設(shè)定的頻率控制字k作為步長來進(jìn)行加法運(yùn)算,當(dāng)其和滿時(shí)清零,并進(jìn)行重新運(yùn)算。電路圖如下:
程序如下:
3.高十位寄存器
實(shí)現(xiàn)數(shù)據(jù)輸入為20位,輸出為10位,實(shí)現(xiàn)高位截?cái)?。程序?yàn)椋?/p>
4.波形ROM及選擇
本設(shè)計(jì)使用幾個(gè)8bit的ROM,存儲(chǔ)深度為1024點(diǎn),用來存儲(chǔ)正弦波等波形數(shù)據(jù)。每個(gè)波形數(shù)據(jù)存儲(chǔ)在一個(gè)固定的ROM里,如下圖。其中SineROM為正弦波存儲(chǔ)模塊,SquareROM為方波存儲(chǔ)模塊,Triangle-ROM為三角波存儲(chǔ)模塊,SwtoothROM為鋸齒波存儲(chǔ)模塊。它們通過一個(gè)使能模塊控制,采取低電平有效的方式,選擇性讀取任意模塊的波形。一般每個(gè)模塊都為高電平狀態(tài),即為不工作狀態(tài)。每次輸出波形時(shí),僅有單獨(dú)一個(gè)ROM_T_作(即工作模塊為低電平,其他模塊均為高電平),這樣不僅保證可以按照需要輸出固定波形,還可以避免波形輸出發(fā)生非控制性的混雜。使能模塊的輸入端為行列式鍵盤,鍵盤中每一鍵單獨(dú)使用,當(dāng)某一鍵按下,則對(duì)應(yīng)某一波形輸入。因?yàn)?×4的鍵盤輸出線為8位,僅為一根,因此輸入端設(shè)為一根8位輸入端口。通過設(shè)定,實(shí)現(xiàn)單鍵控制某~波形輸出。本設(shè)計(jì)僅設(shè)定了4個(gè)固定波形ROM輸出,即正弦波、方波、三角波和鋸齒波,因此使能模塊的選擇輸出線為4條,若增加新波形模塊,可以更改輸出端口的數(shù)量,進(jìn)行擴(kuò)展。
5.時(shí)鐘分頻
時(shí)鐘分頻電路如下,所以模塊在同步時(shí)鐘下協(xié)調(diào)工作,電路圖如下:
程序如下:
6.任意波形輸出
關(guān)于根據(jù)需要而產(chǎn)生的任意波形的設(shè)計(jì)如下:因?yàn)樵撊我獠ㄐ问怯缮衔粰C(jī)下傳的波形數(shù)據(jù),由單片機(jī)控制,所以必須設(shè)計(jì)一個(gè)能隨時(shí)接受數(shù)據(jù)更新的RAM。數(shù)據(jù)傳至任意波形的寄存器里,然后便可實(shí)現(xiàn)任意波形的輸出。
選用的DA轉(zhuǎn)換器為8位,所以RAM的字長也為8位,因此波形RAM的地址線的位數(shù)取lO位。為了實(shí)現(xiàn)任意波形數(shù)據(jù)的更新,波形RAM設(shè)計(jì)成為雙口RAM。