DDS(DiFeet Digital Frequency Synthesis)即直接數(shù)字式頻率合成,,是從相位概念出發(fā)直接合成所需波形的一種頻率合成技術。與傳統(tǒng)信號源所采用的用模擬方式生成信號不同,,它是將先進的數(shù)字信號處理理論與方法引入信號合成領域,。DDS技術在精確度、靈活度等方面都超過模擬信號發(fā)生器,。并且DDS可實現(xiàn)相位連續(xù)變化,,且具有良好頻譜的信號,這是傳統(tǒng)方法無法實現(xiàn)的,。
FPGA的迅速發(fā)展為DDS提供了更加優(yōu)良的技術手段,,它具有處理速度快、可靠性高等特點,。SOPC(System On Programmable Chip,,片上可編程系統(tǒng))是一種靈活、高效的SOC解決方案,。它以IP Core為基礎,,將處理器、存儲器,、IO口等系統(tǒng)設計需要的功能模塊集成到一個FPGA器件上,,構建成一個可編程的片上系統(tǒng),具有靈活的設計方式,。本設計綜合以上軟硬件可編程協(xié)同設計技術,,使得DDS電路在靈活性,可行性,,精確性等方面得到很大提高,。
1 DDS的基本原理
DDS信號發(fā)生器是由:頻率控制字,、相位累加器、ROM表,、D/A轉換器以及模擬低通濾波器LPF組成,原理框圖如圖1所示,。
首先對波形的一個周期進行連續(xù)采樣,,通過計算得到每一點對應的幅度值,然后以二進制格式存放在數(shù)據(jù)文件中,。在時鐘脈沖fclk驅動下,,每個時鐘周期內頻率控制字與相位累加器累加一次,產生ROM查找表的地址值,,隨后通過查表變換,,地址值被轉化為信號波形的數(shù)字幅度序列,即可得到幅度上離散的波形,,再由數(shù)模變換器(D/A)將表示波形幅度的數(shù)字序列轉化為模擬量,。最后經由LPF將D/A輸出的階梯狀波形平滑為所需的連續(xù)波形。理論上,,采樣點數(shù)越多,,生成波形精確度越高。
2 基于FPGA的DDS設計
本設計在Altera的EP2C35F672C8芯片的基礎上,,在SOPCBuilder和OuartusⅡ開發(fā)環(huán)境下,,利用SOPC技術,在FPGA中集成Altera的嵌入式軟核處理器NiosⅡ和其他外設,,將硬件系統(tǒng)與軟件集成在單一可編程芯片中,,從而實現(xiàn)片上的系統(tǒng)級設計。系統(tǒng)框圖如圖2所示,,由DDS基本單元(由頻率控制字,,相位累加器,ROM,,DAC,,LPF構成),F(xiàn)PGA外部硬件資源(撥扭開關SWTCH,、鍵盤KEY,、LCD12864)和NiosⅡ處理器系統(tǒng)等構成了基本電路。四位撥扭開關選擇輸出波形,,鍵盤控制輸出波形信號頻率,,LCD12864顯示波形信號參數(shù),各硬件模塊之間的協(xié)調工作通過NiosⅡ微處理器在圖形化開發(fā)環(huán)境NiosⅡIDE下用C語言來編程實現(xiàn)控制,。
3 各模塊設計
3.1 波形數(shù)據(jù)存儲方式
通過對DDS基本原理的分析得知只需更換波形存儲器中的波形采樣數(shù)據(jù),,就可以得到所需波形的信號,。波形數(shù)據(jù)存儲方式包括順序存儲方式和間隔存儲方式,本設計采用順序存儲方式將方波,,三角波,,正弦波,鋸齒波4種波形采樣數(shù)據(jù)全部依次存儲在一個查找表里,,數(shù)據(jù)分布情況如表1所示,。通過改變尋址首地址,并在該波形數(shù)據(jù)存儲地址范圍內循環(huán)尋址,,從而實現(xiàn)對所需信號波形的輸出,。具體實現(xiàn)方法在累加控制模塊中有介紹。
DDS模塊中的波形數(shù)據(jù)存儲器是用QuartusⅡ中的MegaWizard Plug_In Manager工具添加的LPM_ROM IP核,,此存儲器ROM是用波形存儲文件.mif進行初始化,,波形數(shù)據(jù)可以用matlab等工具生成,用matlab生成4種波形的波表數(shù)據(jù)程序如下:
由以上代碼生成的.mif文件即可存E盤目錄下找到,,將.mif文件加載到ROM中,,實現(xiàn)對ROM的初始化。
3.2 累加控制模塊
累加控制模塊如圖3所示,,為了實現(xiàn)波形選擇性輸出,,本設計在累加控制部分增加了選擇器,即圖3的sel模塊,,作為系統(tǒng)尋址地址的高兩位,,實現(xiàn)對波形查找表的范圍選擇功能。累加器Altaccumulate0的輸出做為累加控制模塊的低32位的輸出,,實現(xiàn)在指定范圍內對查找表進行尋址,。此設計方法相當于做了一個多路數(shù)據(jù)選擇器。四位撥扭開關作為sel模塊的輸入控制,,將尋址地址轉換成所需波形首地址,,即可實現(xiàn)對波形選擇的控制。Adder模塊將sel和Altaccumulate0模塊輸出進行位拼接運算,。其部分代碼如下:
always@(posedge clk)
begin
addr<={q,,32’b0}+{2’b0,result},;
end
設計中為了節(jié)省ROM的容量而采用相位截斷的方法,,取累加器輸出的高十位作為ROM的尋址地址來進行查表。
3.3 LCD 12864口核設計
對于Altera SOPC Builder未提供的一些外設接口模塊,,用戶可以通過自定義邏輯方法在SOPC設計中添加自己開發(fā)的IP核,,通過Avalon的讀寫時序對各個設備進行操作。本設計通過構建IP核來直接控制NiosⅡ和LCD12864的接口,,按照指定的時序將波形參數(shù)顯示在LCD上,。在SOPC Builder中自己定義component,,并把液晶顯示模塊看成外部存儲器,直接做成Avalon總線Slave設備,,IP核設計包含軟件部分和硬件部分,,需要寫HDL模塊,定義控制狀態(tài),、數(shù)據(jù)寄存器和控制位,,描述組件與Avalon總線的接口以及組件與液晶屏的接口。系統(tǒng)編輯器從文件中讀取I/O信號和參數(shù)信息,。其次對LCD模塊進行初始化,由于SOPC Builder中的LCD12864控制模塊已經考慮了LCD的讀寫時序,,所以使用NIOSⅡ IDE進行LCD驅動和控制時只需對LCD進行初始化,。
3.4 NiosⅡ嵌入式處理器系統(tǒng)
NiosⅡ是Altera針對其FPGA設計的嵌入式軟核處理器,它與其他IP核可構成SOPC系統(tǒng)的主要部分,。它具有靈活的自定義指令集和自定義硬件加速單元,,以及圖形化開發(fā)環(huán)境NiosⅡIDE。經由SOPC Builder生成NiosⅡ嵌入式處理器系統(tǒng),,其CPU模塊框圖如圖4所示,。
利用NIOSⅡIDE開發(fā)工具完成所有軟件開發(fā)任務,系統(tǒng)接收撥扭開關掃描模塊發(fā)來的4位掃描碼,,根據(jù)掃描碼數(shù)值的不同進入不同的子程序,,然后再通過FPGA的鍵盤掃描模塊向NIOSⅡ處理器發(fā)送鍵盤掃描碼,軟核處理器根據(jù)接收到的掃描碼產生相應的信號數(shù)據(jù)以及控制信號,,并通過PIO傳送給FPGA中的DDS模塊,,實現(xiàn)頻率控制字的變化,即輸出頻率可調,,并將信號數(shù)據(jù)顯示在LCD上,。同時DAC器件將DDS產生的8位信號數(shù)據(jù)進行數(shù)模轉換,從而產生頻率可調的方波,、三角波,、正弦波、鋸齒波,。
4 結束語
該信號源能夠很好地滿足對不同波形,、不同頻率的信號的需求,具有很強的實用性,,并且可以方便地通過液晶顯示器直觀地觀察到波形信號的參數(shù)信息,。由FPGA實現(xiàn)的DDS信號發(fā)生器不僅可實現(xiàn)頻率可調波形變換且具有頻率切換快,信號的質量和精度高于模擬方式的特點,。<