《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的DDS設計及實現(xiàn)
基于FPGA的DDS設計及實現(xiàn)
維庫開發(fā)網(wǎng)
摘要: 0引言隨著現(xiàn)代電子技術的不斷發(fā)展,,在通信系統(tǒng)中往往需要在一定頻率范圍內提供一系列穩(wěn)定和準確的...
關鍵詞: FPGA DDS
Abstract:
Key words :

  隨著現(xiàn)代電子技術的不斷發(fā)展,,在通信系統(tǒng)中往往需要在一定頻率范圍內提供一系列穩(wěn)定和準確的頻率信號,,一般的振蕩器己不能滿足要求,這就需要頻率合成技術,。直接數(shù)字頻率合成(Direct DIGITAL Frequency Synthesis,,DDS)是把一系列數(shù)據(jù)量形式的信號通過D/A轉換器轉換成模擬量形式的信號合成技術。DDS具有相對帶寬寬,、頻率轉換時間短,、頻率分辨率高、輸出相位連續(xù),、可產(chǎn)生寬帶正交信號及其他多種調制信號等優(yōu)點,已成為現(xiàn)代頻率合成技術中的姣姣者,。目前在高頻領域中,,專用DDS芯片在控制方式、頻率控制等方面與系統(tǒng)的要求差距很大,,利用FPGA來設計符合自己需要的DDS系統(tǒng)就是一個很好的解決方法,。

  現(xiàn)場可編程門陣列(FPGA)器件具有工作速度快、集成度高,、可靠性高和現(xiàn)場可編程等優(yōu)點,,并且FPGA支持系統(tǒng)現(xiàn)場修改和調試,由此設計的DDS電路簡單,,性能穩(wěn)定,,也基本能滿足絕大多數(shù)通信系統(tǒng)的使用要求。

  1 DDS的結構原理

  DDS的基本原理是利用有限的離散數(shù)據(jù),,通過查表法得到信號的幅值,,通過數(shù)模轉換器D/A后生成連續(xù)波。DDS的原理框圖如圖1所示,。

  其中:頻率控制字為fword,;相位累加器的位數(shù)為N。相位累加器以步長fword做累加,,產(chǎn)生所需的頻率控制數(shù)據(jù),;把得到的頻率控制數(shù)據(jù)作為地址對ROM存儲器進行尋址。數(shù)據(jù)存儲器(ROM)實質是一個相位/幅度轉換電路,,ROM中存儲二進制碼表示所需合成信號的相位/幅度值,,相位寄存器每尋址一次ROM,就輸出一個相對應的信號相位/幅度值,。

  理想情況下,,累加器的N位全部用來尋址時,DDS的合成頻率為:

  式中:fword為頻率控制字,;N為相位累加器位數(shù),;fclk為輸入時鐘,。當fworld=1時,得DDS的最小分辨率,。如果改變頻率控制字,,就可以改變合成的頻率的頻偏。

  2 DDS調頻系統(tǒng)在FPGA中的實現(xiàn)

  2.1 累加控制模塊的設計

  累加控制模塊通過調用QuartusⅡ中模塊化庫LPM進行設計,。即由加法器lpm_add_sub和乘法器lpm_mult及累加器altaccumulate模塊構成,。若要求DDS系統(tǒng)精度高,相位累加器的位數(shù)N須較大?,F(xiàn)在大多數(shù)專用的DDS芯片的位數(shù)都在24~32位之間,,這里取N=32。累加控制模塊如圖2所示,。

  ADC轉換芯片處理后的8位數(shù)字信號,,為了使DDS合成的頻率較大,末尾補4個O作為參數(shù)化模塊lpm_add_sub的12位輸入datai,。由于ADC信號輸出的是8位二進制偏移碼,,與計算機處理的二進制補碼形式不同,需將二進制偏移碼轉換成二進制補碼,,在這里與另一路輸入信號常數(shù)2 048做減法,,就能達到求補的目的,并輸出12位有符號數(shù),。

  12位的輸出接入lpm_mult模塊,,lpm_mult的另一路輸入為12位任意數(shù)輸入。乘法器的輸出直接影響累加器累加相位的速度,。當乘以一個比較大的數(shù),,則頻率變化加快。

  同理,,為了使合成頻率較大,,乘法器的24位輸出在末尾補O成為32位數(shù)datab送到累加模塊altaccumulate中。為了節(jié)省ROM容量,,最后取altaccumulate輸出的高10位作為ROM查找表的地址信號,。累加控制模塊的時序仿真如圖3所示。

  2.2 ROM查找表的設計

  針對不同的可編程器件,,ROM查找表的設計采用的方法也不相同,。主要是基于lpm_rom和VHDL選擇語句這兩種方法。使用lpm_rom的波形存儲表只需要產(chǎn)生數(shù)據(jù)文件*.mif,,然后直接在定制lpm_rom時,,添加數(shù)據(jù)文件即可。不過這種方法在FPGA支持內部嵌入式陣列塊(EAB)時才可以使用;使用VHDL選擇語句比較直觀,,但當輸入數(shù)據(jù)量大的時候,,這種方法是比較繁瑣的。此次設計采用第一種方法,。

  mif文件是在編譯和仿真過程中作為存儲器(ROM或RAM)初始化輸入的文件,,即memory initializatiON file。創(chuàng)建mif文件的方式有很多種,,在這次設計中,,在Matlab中采用C語言來生成mif文件。mif文件編寫格式如下:

  通常相位累加器的位數(shù)N很大,,實際設計中受到體積和成本的限制,。為了節(jié)省ROM的容量采用相位截斷的方法,一般只取累加器輸出的高幾位作為ROM的尋址地址,。設計中取累加結果的高10(M=10)位來進行查表,,也就是說正余弦ROM有210=1 024個尋址地址,數(shù)據(jù)寬度為12,。如圖4所示,設計了2個lpm_rom模塊,,分別是sin波形存儲器和cos波形存儲器,。

  3 單片機控制電路

  此次選擇的FPGA芯片為Altera公司的ACEXlK系列的EPlK30TTl44-2。它可以采用專用的配置器件來配置,,也可以采用單片機來配置,。前者價格昂貴,而且專用配置器件的ROM為一次性編程,,不易實現(xiàn)FPGA的系統(tǒng)功能轉換,。采用單片機C8051F330D對FPGA進行被動串行(PS方式)配置,使用可多次修改的AT24C512(E2PROM)作為配置文件存儲器,,真正做到“現(xiàn)場可編程”,,對提高生產(chǎn)率、降低生產(chǎn)成本均有好處,。

  系統(tǒng)的配置電路如圖5所示,。其電路的工作過程為:經(jīng)QuartusⅡ編譯生成的配置文件(.rbf),利用PC機端的控制程序,,通過PC機的串行通信口,,經(jīng)U1存儲在U2中,U1再根據(jù)系統(tǒng)的要求通過P0.6,,P1.O,,P1.1,P1.6和P1.7等5個I/O口將其存儲在U2中的配置數(shù)據(jù)下載到電路中的FPGA器件U3中。PC機的控制程序在此略,。

  4 設計結果

  累加控制器,、ROM查找表組成一個整體,實現(xiàn)了一個基本的DDS系統(tǒng),。DDS系統(tǒng)的最后仿真結果如圖6所示,。

  圖6中的pllclk,acum,,dai,,daq分別代表時鐘輸入、累加輸出及正弦波和余弦波輸出,。把O~2π的相位分成3FF段,,取出相應的幅度值存儲于ROM中。ROM中存儲數(shù)據(jù)如下,,相位數(shù)據(jù)(O~3FF),,幅度數(shù)據(jù)(O~FFF)。從仿真圖可以看出dai[11..O]輸出從EFF~FFF~0~EFF變化,,daq[11..O]輸出從FFF~O~FFF變化,。最后通過單片機配置FPGA運行,把得出的信號通過D/A轉換和濾波能夠得到所需的正弦波和余弦波信號,。

  5 結語

  給出了基于FPGA的DDS設計的實現(xiàn)方案,。通過仿真分析可以看出,DDS輸出信號具有如下特點:

  (1)頻率穩(wěn)定性好,,轉換時間短,,分辨率高,相位變化連續(xù),。

  (2)設計者只需要通過改變測試輸入數(shù)據(jù),,就能夠快速準確地實現(xiàn)不同波形并且驗證正確性,使得測試工作更加全面高效,,從而提高了調試效率和成功率,。

  (3)整個信號實現(xiàn)過程較為簡單,實用性較強,。

  限于實驗條件,,此次設計在降低相位截斷誤差等方面仍有改進的空間,還可以進一步優(yōu)化,,限于篇幅,,在此不多做介紹。

此內容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權禁止轉載,。