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