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