基于SoPC的DDS信號(hào)發(fā)生器設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:直接數(shù)字頻率合成技術(shù)是一種新型的信號(hào)產(chǎn)生方法,是現(xiàn)代信號(hào)源的發(fā)展方向。該系統(tǒng)由FPGA控制模塊、鍵盤(pán)、LED顯示組成,結(jié)合DDS的結(jié)構(gòu)和原理,采用SOPC和DDS技術(shù),設(shè)計(jì)出具有頻率設(shè)置功能的多波形信號(hào)發(fā)生器。以Altera公司的CycloneⅡ的核心器件EP2C35為例,NIOSⅡCPU通過(guò)讀取按鍵的值,實(shí)現(xiàn)任意步進(jìn)、不同波形的輸出顯示功能。
關(guān)鍵詞:SOPC;NIOS;DDS;FPGA
0 引言
直接數(shù)字頻率合成(Direct Digital Frequency Synthesis,DDS)是一種新型的頻率合成技術(shù),它把信號(hào)發(fā)生器的頻率穩(wěn)定度、準(zhǔn)確度提高到與基準(zhǔn)頻率相同的水平,并且可以在很寬的頻率范圍內(nèi)進(jìn)行精細(xì)的頻率調(diào)節(jié)。在現(xiàn)代通信領(lǐng)域中,DDS的應(yīng)用極其廣泛。實(shí)現(xiàn)DDS常用的方法是采用專(zhuān)用的DDS芯片,控制部分采用獨(dú)立的MCU,這樣設(shè)計(jì)出來(lái)的系統(tǒng)的集成度和擴(kuò)展性不盡人意。隨著大規(guī)?,F(xiàn)場(chǎng)可編程門(mén)陣列的推出,SOPC的不斷發(fā)展,設(shè)計(jì)人員可以在FPGA的嵌入式軟核處理器上設(shè)計(jì)各種系統(tǒng),滿足用戶需求。本文基于SOPC技術(shù)設(shè)計(jì)直接數(shù)字頻率合成器,選用Altera公司的新一代FPGA(CycloneⅡ)為核心,利用FPGA的邏輯單元實(shí)現(xiàn)相位累加等數(shù)字邏輯功能,在ROM中分別放入正弦表、方波表、三角波表、鋸齒波表,用軟核CPU做控制,實(shí)現(xiàn)頻率、相位、波形選擇等。這樣可以大大減小處理器外圍擴(kuò)展電路數(shù)目,還提高了系統(tǒng)的穩(wěn)定性和抗干擾能力,節(jié)省了內(nèi)部資源。
1 系統(tǒng)方案設(shè)計(jì)
系統(tǒng)采用SOPC設(shè)計(jì)方案。整體系統(tǒng)框圖如圖1所示,它由頻率預(yù)置電路、波形選擇、波形頻率控制、累加器、存儲(chǔ)波形數(shù)據(jù)的存儲(chǔ)器和D/A轉(zhuǎn)換電路、濾波電路組成。累加器模塊由10位加法器與10位寄存器級(jí)聯(lián)而成。波形存儲(chǔ)器中放入正弦波、方波、三角波、鋸齒波的數(shù)據(jù)。
1.1 DDS基本工作原理
DDS的基本原理是利用采樣定理,通過(guò)查表法產(chǎn)生波形。一個(gè)完整DDS結(jié)構(gòu)圖如圖2所示。
相位累加器在每一個(gè)時(shí)鐘上升沿與頻率控制字K累加一次,當(dāng)累加器計(jì)數(shù)大于2N時(shí),相位累加器相當(dāng)于進(jìn)行一次取模運(yùn)算。在每一個(gè)時(shí)鐘周期內(nèi),根據(jù)送給ROM的地址,取出ROM中與該地址相對(duì)應(yīng)的波形的數(shù)據(jù),讀取出ROM中的數(shù)據(jù)后通過(guò)D/A轉(zhuǎn)換器,將數(shù)字量轉(zhuǎn)換成模擬量,通過(guò)低通濾波電路,可輸出一個(gè)平滑的波形。
當(dāng)K=1時(shí),DDS有最小頻率輸出,因此DDS的步長(zhǎng)為fclk/2N,最大輸出頻率為fclk/2。在本設(shè)計(jì)中,將N設(shè)定為10位,M設(shè)定為12位,相位累加器在時(shí)鐘的控制下,以步長(zhǎng)K進(jìn)行累加,輸出N位二進(jìn)制碼,并以其作為波形ROM的地址,對(duì)波形存儲(chǔ)器ROM尋址,波形存儲(chǔ)器ROM輸出的數(shù)據(jù)經(jīng)過(guò)D/A轉(zhuǎn)換成階梯波后,經(jīng)過(guò)低通濾波器平滑后,便得到合成后的波形了,合成后的波形形狀取決于波形選取和ROM中的數(shù)據(jù)。[!--empirenews.page--]
1.2 D/A轉(zhuǎn)換器
從DDS核輸出的是一個(gè)數(shù)字信號(hào),需要將數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào),才能便于觀察。DAC有電壓和電流輸出兩種,其輸出的信號(hào)并不能真正連續(xù)可變,而是以其絕對(duì)分辨率為最小單位,所以它的輸出實(shí)際上是一個(gè)階梯模擬信號(hào),所以需要將D/A輸出的信號(hào)通過(guò)低通濾波器平滑后得到純凈的模擬信號(hào)。在該設(shè)計(jì)中用到型號(hào)為AD9742的D/A轉(zhuǎn)換器,AD9742是具有12位、低功耗、轉(zhuǎn)換速度可達(dá)到100 Mb/s的D/A轉(zhuǎn)換器。
1.3 基于SOPC的硬件架構(gòu)
系統(tǒng)開(kāi)發(fā)包括硬件部分和軟件部分,而硬件部分是由SOPC開(kāi)發(fā)工具搭建而成。SOPC Builder生成NIOS嵌入式處理器,NIOS嵌入式處理器開(kāi)發(fā)工具允許用戶配置多個(gè)CPU,在標(biāo)準(zhǔn)庫(kù)中添加外圍電路,也可以由用戶自定義外設(shè),綜合處理自定義系統(tǒng),這樣使設(shè)計(jì)變得更加靈活。
打開(kāi)SOPC Builder后分別添加CPU,PIO輸入(10個(gè)按鍵用作頻率字的輸入、1個(gè)按鍵用作確認(rèn)、4個(gè)按鍵用作波形的選擇),存儲(chǔ)器(FLAS-H,SRAM和SDRAM),PIO輸出(10位作為ROM的地址、2位作為ROM塊的選擇、7位為L(zhǎng)ED段碼、1位為L(zhǎng)ED的選通端)和定時(shí)器。所有組件添加完后的硬件架構(gòu)圖如圖3所示。
SOPC Builder生成之后,在QuartusⅡ軟件中可以添加生成之后的CPU模塊,而DDS模塊是用VHDL語(yǔ)言編寫(xiě)而成,DDS模塊圖如圖4所示。其中的ROM大小為12×1 024,共設(shè)置4塊ROM分別存儲(chǔ)正弦波、方波、三角波、鋸齒波。波形數(shù)據(jù)是由Matlab軟件計(jì)算出來(lái)的,并將數(shù)據(jù)以.mif文件格式存儲(chǔ)。累加器的輸出為波形存儲(chǔ)器的地址,進(jìn)行波形的相位一幅值轉(zhuǎn)換后,作為輸出的波形的幅值。10位的尋址ROM相當(dāng)于將一個(gè)周期的信號(hào)進(jìn)行離散化,形成具有1 024個(gè)樣值的序列。累加器產(chǎn)生的地址通過(guò)波形的地址分配讀取不同存儲(chǔ)器中的數(shù)據(jù),然后將讀出來(lái)的數(shù)據(jù)經(jīng)過(guò)D/A轉(zhuǎn)換器,轉(zhuǎn)換成模擬信號(hào)輸出。
[!--empirenews.page--]
2 軟件設(shè)計(jì)
NIOSⅡ完整的開(kāi)發(fā)環(huán)境是NIOSⅡ處理器與用戶的接口界面。使用NIOSⅡIDE可以完成所有的軟件開(kāi)發(fā)任務(wù),包括程序的編輯,編譯和調(diào)試。硬件提取層(HAL)支持通用I/O器件,可以通過(guò)編寫(xiě)標(biāo)準(zhǔn)C程序訪問(wèn)硬件,HAL減少了對(duì)硬件寄存器的訪問(wèn),直接與外圍器件進(jìn)行通信或控制。不同的外圍硬件需要不同程度的HAL的支持,需要運(yùn)行HAL的軟件驅(qū)動(dòng)器。DDS系統(tǒng)控制在NIOSⅡIDE環(huán)境下用標(biāo)準(zhǔn)C語(yǔ)言實(shí)現(xiàn),通過(guò)編寫(xiě)代碼、編譯、鏈接、調(diào)試、下載幾個(gè)步驟完成整個(gè)設(shè)計(jì)。
打開(kāi)IDE開(kāi)發(fā)環(huán)境后,第一步需要做的就是新建一個(gè)工程,將SOPC Builder生成的.ptf添加之后,系統(tǒng)根據(jù)該硬件的地址分配情況自動(dòng)生成相應(yīng)的頭文件,該頭文件定義了各個(gè)組件的基地址。當(dāng)SOPC系統(tǒng)發(fā)生變化,IDE將在用戶編譯和運(yùn)行應(yīng)用程序時(shí)重新對(duì)HAL進(jìn)行編譯。整個(gè)軟件編寫(xiě)的流程圖如圖5所示。
3 系統(tǒng)調(diào)試過(guò)程與結(jié)果
系統(tǒng)時(shí)鐘為50 MHz,當(dāng)波形選擇鍵選為正弦波,頻率字設(shè)置為5時(shí),數(shù)碼管上顯示5,按下確認(rèn)鍵后,數(shù)碼管顯示“—”,通過(guò)示波器,可以觀察到輸出波形如圖6所示,橫軸為時(shí)間檔,縱軸為幅值。當(dāng)波形選擇鍵選為方波,頻率字設(shè)置為10時(shí),數(shù)碼管上先顯示1,后顯示0,按下確認(rèn)鍵之后,數(shù)碼管顯示“—”,這樣在示波器上觀察到的波形如圖7所示。按照上面的操作過(guò)程,三角波和鋸齒波的波形分別如圖8,圖9所示。
4 結(jié)論
本文所設(shè)計(jì)的是頻率字的預(yù)置與波形的選擇,是通過(guò)鍵盤(pán)輸入的,因此能夠得到規(guī)定范圍內(nèi)的任意頻率的波形,這樣可以很好地滿足變頻信號(hào)的情況,實(shí)用性較強(qiáng)。實(shí)驗(yàn)所調(diào)試出的波形清晰,干擾小。采用SOPC方法實(shí)現(xiàn),使設(shè)計(jì)變得非常靈活。該設(shè)計(jì)只實(shí)現(xiàn)了任意頻率的波形輸入,還需要實(shí)現(xiàn)相位累加,設(shè)計(jì)才會(huì)變得更加完美。