波形發(fā)生器實(shí)例篇,DDS任意波形發(fā)生器設(shè)計(jì)下篇
波形發(fā)生器在生活中不可或缺,在往期文章中,小編曾對(duì)各類型波形發(fā)生器予以介紹,如任意波形發(fā)生器、Arduino波形發(fā)生器、pwm波形發(fā)生器等。本文對(duì)波形發(fā)生器的講解,承接于《波形發(fā)生器實(shí)例篇,DDS波形發(fā)生器設(shè)計(jì)上篇》一文,將對(duì)DDS任意波形發(fā)生器設(shè)計(jì)的后續(xù)部分加以介紹。如果你對(duì)本文即將闡述的內(nèi)容存在一定興趣,不妨繼續(xù)往下閱讀哦。
一、固定波形輸出
在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位的頻率字長(zhǎng),輸出為20位。
下面為STC89C52RC與EPlC3T144C8的接口程序,用控制字:
二、加法器
加法器為20位,自動(dòng)累加,它以設(shè)定的頻率控制字k作為步長(zhǎng)來進(jìn)行加法運(yùn)算,當(dāng)其和滿時(shí)清零,并進(jìn)行重新運(yùn)算。電路圖如下:
程序如下:
三、高十位寄存器
實(shí)現(xiàn)數(shù)據(jù)輸入為20位,輸出為10位,實(shí)現(xiàn)高位截?cái)?。程序?yàn)椋?/p>
四、波形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ò)展。
五、時(shí)鐘分頻
時(shí)鐘分頻電路如下,所以模塊在同步時(shí)鐘下協(xié)調(diào)工作,電路圖如下:
程序如下:
六、任意波形輸出
關(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的字長(zhǎng)也為8位,因此波形RAM的地址線的位數(shù)取lO位。為了實(shí)現(xiàn)任意波形數(shù)據(jù)的更新,波形RAM設(shè)計(jì)成為雙口RAM。
以上便是小編此次帶來的“波形發(fā)生器”所有相關(guān)內(nèi)容,通過本文,希望大家可結(jié)合小編前期帶來的《波形發(fā)生器實(shí)例篇,DDS波形發(fā)生器設(shè)計(jì)上篇》內(nèi)容,對(duì)DDS任意波形發(fā)生器設(shè)計(jì)的全流程有所了解。如果你對(duì)波形發(fā)生器存在濃厚興趣,可嘗試自己動(dòng)手哦。最后,十分感謝大家的閱讀,have a nice day!