尹自強(中國電子科技集團公司第四十七研究所,沈陽 110032)
?
基于DDS的三角函數(shù)發(fā)生器的數(shù)字實現(xiàn)
尹自強
(中國電子科技集團公司第四十七研究所,沈陽110032)
摘 要:函數(shù)信號發(fā)生器是一種常用的信號源,廣泛應(yīng)用于各種電子系統(tǒng)中,三角函數(shù)發(fā)生器是函數(shù)發(fā)生器中最為常用的一種。隨著電子技術(shù)的發(fā)展,傳統(tǒng)的函數(shù)發(fā)生器已經(jīng)不能滿足電子系統(tǒng)應(yīng)用的需要,基于直接頻率合成技術(shù)的函數(shù)發(fā)生器,由于可以獲得很高的頻率穩(wěn)定度以及精確度,因此發(fā)展迅速。介紹了一種基于FPGA的三角函數(shù)信號發(fā)生器,具體分析了DDS算法原理,用verilog語言實現(xiàn)了相位累加器和波形存儲器兩個模塊的設(shè)計,借助MATLAB軟件生成了波形存儲器中的三角函數(shù)波形數(shù)值,利用Synplify和ModelSim作為軟件平臺,對設(shè)計進行了綜合和仿真。
關(guān)鍵詞:DDS技術(shù);三角函數(shù);相位累加器;波形存儲器;Verilog語言
三角函數(shù)數(shù)字發(fā)生器有多種實現(xiàn)方法,例如用分立元件實現(xiàn),用單片集成芯片的函數(shù)發(fā)生器實現(xiàn)或者用基于DDS的函數(shù)發(fā)生器實現(xiàn)[1]。其中DDS技術(shù)是一種純數(shù)字的頻率合成方法[2],隨著數(shù)字集成電路和微電子工藝技術(shù)的發(fā)展,DDS技術(shù)日益顯露出它的優(yōu)越性。與傳統(tǒng)的函數(shù)發(fā)生器相比,DDS具有低功耗、高分辨率以及轉(zhuǎn)換速度快等優(yōu)點[3],同時方便在FPGA電路中實現(xiàn),可以廣泛應(yīng)用于各類電子系統(tǒng)中。
DDS主要由四個部分組成[4],如圖1所示,分別為相位累加器、波形存儲器、D/A轉(zhuǎn)換器和低通濾波器。它的工作原理為:在時鐘fclk驅(qū)動下,頻率控制字K通過相位累加器進行累加,輸出結(jié)果給波形存儲器進行尋址,得到相應(yīng)的輸出幅度碼,再經(jīng)過模數(shù)轉(zhuǎn)換器得到相應(yīng)的階梯波,最后再通過低通濾波器對波形進行平滑化處理,得到連續(xù)平滑的波形[5]。
圖1 DDS原理框圖
圖1中的DDS算法,前兩個部分可以在FPGA電路中實現(xiàn),D/A轉(zhuǎn)換器和濾波器一般在FPGA電路的外圍電路來實現(xiàn)。D/A轉(zhuǎn)換器是波形數(shù)據(jù)產(chǎn)生單元之后,將數(shù)字量形式的波形幅值轉(zhuǎn)換成所要求的合成頻率的模擬量信號形式。濾波器可以使有用頻率信號通過,同時抑制無用的頻率信號。主要討論相位累加器和波形存儲器在FPGA中的具體實現(xiàn)。
2.1相位累加器
相位累加器由N位加法器與N位寄存器級聯(lián)組成[6],結(jié)構(gòu)如圖2所示,加法器將頻率控制字和寄存器輸出相加,一個時鐘脈沖后,相加結(jié)果輸入到寄存器中,同時加法器繼續(xù)相加的操作。這樣,相位累加器在時鐘作用下,不斷對頻率控制字進行線性累加,輸出一組相位量化序列。
圖2 相位累加器框圖
2.2波形存儲器
相位累加器輸出的相位量化序列作為波形存儲器(ROM)的相位取樣地址,通過地址讀出ROM里存儲的波形值,完成相位到幅值的轉(zhuǎn)換,如圖3所示。
圖3 相位累加器框圖
波形存儲器所儲存的幅度值和余弦信號有關(guān)[7]。一個N位的相位累加器對應(yīng)2N個相位點,相位分辨率為Δφ=2π/2N。若N =4,則共有16種相位值與16種幅度值相對應(yīng),并將相應(yīng)的幅度值存儲于波形存儲器[8]。余弦信號幅度值用MATLAB軟件產(chǎn)生。
DDS模塊的輸出頻率fout是系統(tǒng)工作頻率fclk、相位累加器位數(shù)N以及頻率控制字K三者的一個函數(shù),其數(shù)學(xué)關(guān)系式為:
波形存儲器的輸出送到D/A轉(zhuǎn)換器,將數(shù)字量形式的波形幅值轉(zhuǎn)換為模擬量形式的信號,然后經(jīng)過低通濾波,濾除不需要的取樣分量。
主要討論了三角函數(shù)發(fā)生器在FPGA上的具體實現(xiàn),也就是圖1中前2個部分相位累加器和波形存儲器的具體實現(xiàn)。
3.1相位累加器的實現(xiàn)
相位累加器可以認為是一個不斷累加頻率控制字的加法器。每來一個時鐘脈沖CLK,加法器就將頻率控制字K與累加寄存器輸出相累加。相位累加器的溢出頻率就是DDS的輸出信號頻率。這樣就可以使DDS輸出頻率可調(diào)。
具體實現(xiàn)用verilog語言描述,如圖4所示。
圖4 相位累加器的verilog實現(xiàn)
3.2波形存儲器的實現(xiàn)
波形存儲器較為簡單,首先用matlab軟件生成正余弦的ROM文件,然后通過相位累加器產(chǎn)生的地址去ROM中尋址,將得到的值輸出即為波形存儲器的輸出值。
具體實現(xiàn)用verilog語言描述,如圖5所示。左邊為對ROM尋址,右邊為尋址得到的輸出值(只給出了余弦,正弦類似)。
3.3整體電路的實現(xiàn)
用verilog語言實現(xiàn)了基于DDS技術(shù)的三角函數(shù)發(fā)生器中相位累加器和波形存儲器兩個模塊的設(shè)計,如圖6所示。設(shè)計共分為三個部分,一個頂層模塊dds,實現(xiàn)DDS的主體功能,另外兩個部分為rom_ cose和ron_sine,這兩個模塊是三角函數(shù)波形存儲器,分別存儲了余弦和正弦的波形幅度值。頂層模塊調(diào)用另外兩個模塊。
圖5 波形存儲器的verilog實現(xiàn)
圖6 DDS三角函數(shù)發(fā)生器的verilog實現(xiàn)
圖7為程序經(jīng)過軟件綜合后的RTL結(jié)構(gòu)示意圖。
圖7 三角函數(shù)發(fā)生器的RTL結(jié)構(gòu)圖
圖8為在ModelSim中進行仿真得到的仿真結(jié)果,從圖中可以看到,實現(xiàn)了輸出正弦和余弦三角函數(shù)波形,證明了設(shè)計的三角函數(shù)發(fā)生器是正確的。
圖8 DDS三角函數(shù)發(fā)生器的仿真結(jié)果
分析了DDS的算法原理以及各個部分的功能,進一步對三角函數(shù)發(fā)生器的數(shù)字模塊進行了分析及實現(xiàn)介紹,在此基礎(chǔ)上完成了基于FPGA的三角函數(shù)發(fā)生器設(shè)計,通過Synplify軟件對設(shè)計進行了綜合,用ModelSim軟件對設(shè)計進行了仿真,驗證了設(shè)計的正確性。
參考文獻:
[1]張厥盛,曹麗娜.鎖相與頻率合成技術(shù)[M].成都:電子科技大學(xué)出版社,2000.ZHANG Juesheng,CAO Lina.Phase Locking and Frequency Synthesis Technology[M].Chengdu:University of Electronic Science and Technology Press,2000.
[2]田大方,祝忠明.一種基于FPGA的信號發(fā)生器的設(shè)計方法[J].電子質(zhì)量,2012(4):27-30.TIAN Dafang,ZHU Zhongming.Design of Signal Generator Based on FPGA[J].Electronics Technology and Quality Engineering,2012(4):27-30.
[3]劉光輝.并行DDS頻率源技術(shù)研究[D].成都:電子科技大學(xué),2002.LIU Guanghui.Study of Coordinate DDSs Technology [D].Chengdu:University of Electronic Science and Technology,2002.
[4]陶益凡.基于DDS的信號發(fā)生器的研制[D].南京:南京信息工程大學(xué),2006.Tao Yifan.Research about Signal Synthesizer Based on DDS[D].Nanjing:Nanjing University of Information Science and Technology,2006.
[5]屈新建,常義林.基于DDS + PLL頻率合成源的設(shè)計[J].現(xiàn)代電子技術(shù),2005(3):115-117.QU Xinjian,CHANG Yilin.Frequency Synthesizer of DDS Plus PLL[J].Modern Electronic Technique,2005(3):115-117.
[6]欒寶寬,方蕾,馮永浩.基于DDS的信號發(fā)生器的設(shè)計與實現(xiàn)[J].電子工程師,2005(10):38-39.LUAN Baokuan,F(xiàn)ANG Lei,F(xiàn)ENG Yonghao.Design and Implementation of Signal Generator Based on DDS[J].Electronic Engineer,2005(10):38-39.
[7]王曉升,沙勝賢.基于DDS的任意波形發(fā)生器實現(xiàn)[J].長春工程學(xué)院學(xué)報(自然科學(xué)版),2005(2):56-58.WANG Xiaosheng,Sha Shengxian.Realization of a ware Waves Generator Based on DDS[J].Changchun Inst.Tech.(Nat.Sci.Edi.),2005(2):56-58.
[8]薛文.DDS任意波形的設(shè)計與實現(xiàn)[D].南京:南京信息工程大學(xué),2004.XUE Wen.Design and Realization of DDS Arbitrary Waveform[D].Nanjing:Nanjing University of Information Science and Technology,2004.
Realization of Trigonometric Function Generator Based on DDS
Yin Ziqiang
(The 47th Research Institute of China Electronics Technology Group Corporation,Shenyang 110032,China)
Abstract:The signal generator,as a common signal source,is widely used in electronic system.The trigonometric function generator,as one of the signal generators,is used commonly.With the development of electronic technology,traditional function generator doesn't meet the needs of electronic systems.The function generator based on DDS,because of the high stability and accuracy of frequency,is developed rapidly.This paper introduces a trigonometric function generator based on FPGA,concretely analyzes the algorithm of DDS,designs the phase accumulator and ROM with verilog language,uses MATLAB to generate wave value of trigonometric function in ROM,and applies Synplify and ModelSim as the soft platform to synthesize and simulate the design.
Key words:DDS technology;Trigonometric function;Phase accumulator;Wave memory;Verilog language
DOI:10.3969/j.issn.1002-2279.2016.02.004
中圖分類號:TP346
文獻標識碼:A
文章編號:1002-2279(2016)02-0011-03
作者簡介:尹自強(1983-),男,內(nèi)蒙古包頭市人,工程師,碩士研究生,主研方向:集成電路設(shè)計。
收稿日期:2015-09-16