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