基于FPGA的直接數(shù)字頻率合成技術(shù)設(shè)計
摘要:介紹了利用現(xiàn)場可編程邏輯門陣列FPGA實現(xiàn)直接數(shù)字頻率合成(DDS)的原理、電路結(jié)構(gòu)和優(yōu)化方法。重點介紹了DDS技術(shù)在FPGA中的實現(xiàn)方法,給出了采用ALTERA公司的ACEX系列FPGA芯片EP1K30TC進行直接數(shù)字頻率合成的VHDL源程序。
關(guān)鍵詞:直接數(shù)字頻率合成(DDS);現(xiàn)場可編程邏輯門陣列(FPGA);EP1K30TC-144 直接數(shù)字頻率合成(Direct Digital Fraquency Syn-thesis?即DDFS,一般簡稱DDS)是從相位概念出發(fā)直接合成所需波形的一種新的頻率合成技術(shù)。它在相對帶寬、頻率轉(zhuǎn)換時間、相位連續(xù)性、正交輸出、高分辨率以及集成化等一系列性能指標方面已遠遠超過了傳統(tǒng)頻率合成技術(shù)。當累加器的N很大時,最低輸出頻率可達Hz、mHz?甚至μHz。也就是說:DDS的最低合成頻率接近于零頻。如果fc為50MHz, 那么當N為48位時,其分辨率可達179nHz。轉(zhuǎn)換時間最快可達10ns的量級,這都是傳統(tǒng)頻率合成所不能比擬的。但它的不足之處是最高工作頻率會受限、噪聲和雜波不夠理想。 本設(shè)計采用ALTERA 公司的FPGA芯片EP1K30TC-144來實現(xiàn)DDS技術(shù)。EP1K30芯片屬ALTERA 公司的ACEX系列,該系列是ALTERA公司著眼于通信、音頻處理及類似場合應(yīng)用而推出的FPGA器件系列芯片,它采用0.22/0.18微米混合工藝,密度從10000門到100000門。所有ACEX系列器件均兼容64bit、66MHz的PCI,并支持鎖相環(huán)電路。ACEX 1K采用查找表(LUT)和EAB(嵌入式陣列塊)相結(jié)合的結(jié)構(gòu),可用來實現(xiàn)存儲器、專用邏輯功能和通用邏輯功能,每個EBA能提供4096比特的存儲空間,每個LE包含4個輸入LUT、一個可編程的觸發(fā)器、進位鏈和一個層疊鏈。合理運用進位鏈能夠提高系統(tǒng)運行速度。 EP1K30TC-144的最大系統(tǒng)門數(shù)為119000,它有1728個邏輯宏單元數(shù)和5個嵌入式陣列塊,最大可提供2kB的ROM/RAM位,因而可完全滿足DDS設(shè)計的要求。 圖1為DDS系統(tǒng)的基本原理圖,圖中的相位累加器由N位全加器和N位累加寄存器級聯(lián)而成,可對頻率控制字的2進制碼進行累加運算,是典型的反饋電路,產(chǎn)生的累加結(jié)果的高M位作為ROM查找表的取樣地址值,而此查找表中儲存了一個周期的正弦波幅度值。顯然,此處存儲器ROM可以看作一個從相位到正弦幅值的轉(zhuǎn)換器。這樣,用ROM的輸出值來驅(qū)動DAC,然后經(jīng)濾波即可轉(zhuǎn)換成所需要的模擬正弦波形;同時N位累加輸出又可作為全加器的下一輪數(shù)據(jù)與頻率數(shù)據(jù)相加,直到相位累加器加滿產(chǎn)生溢出,從而完成一個周期,也就是DDS信號的頻率周期。 考慮到本系統(tǒng)的規(guī)模以及以后的擴展需要,該系統(tǒng)中的DDS電路采用VHDL硬件描述語言來實現(xiàn),因為VHDL語言設(shè)計的電路模塊可以方便地移植到不同的FPGA芯片中。由于硬件原因,本系統(tǒng)的最高頻率為100kHz,因此,采用常規(guī)設(shè)計即可滿足要求,但若要應(yīng)用于高速系統(tǒng),還要采用一些提高系統(tǒng)運行速度的措施,如采用流水線技術(shù),即在設(shè)計中把延時較大的組合邏輯塊切割成兩塊大致相等的組合邏輯塊,并在這兩個邏輯塊中插入觸發(fā)器,也可通過多個觸發(fā)器時鐘來提高系統(tǒng)速度,還可以采用ALTREA 公司的FPGA器件所特有的進位鏈來設(shè)計高速電路。 2.1 ROM查找表的設(shè)計 ROM查找表在整個設(shè)計中是一個比較重要的部分。為了保證波形的平滑,設(shè)計時可將一個周期分為1024個點。但是,點數(shù)太多時,用文本方式輸入可能有很多困難。因此,應(yīng)當用C語言描述正弦方程式,最后再將其轉(zhuǎn)化為所需的mif文件。以下是其C語言的源程序: main() {int i;float s; for(i=0;i<1024;i++) { s = sin(atan(1)*8*i/1024); ...... 2.2 DDS主模塊設(shè)計 DDS主模塊部分可根據(jù)上述原理,采用VHDL來描述,以下是部分源程序: BEGIN PROCESS (clk) BEGIN IF(clk'event AND clk='1') THEN \\時鐘上升沿觸發(fā) freqw<=freqin; acc<=acc+freqw; \\開始累加 END IF; END PROCESS; romaddr<=acc(adder width-1 downto adder width-10);? \\累加結(jié)果的高11位作為 查找表的地址位 i_rom:lpm_rom \\調(diào)用ROM查找表 ...... 2.3 DDS控制模塊設(shè)計 DDS部分的系統(tǒng)控制是根據(jù)所需要的功能(如相位調(diào)制、幅度調(diào)制等)要求而設(shè)計的,這一點也是利用了FPGA的靈活性。其部分程序如下: COMPONENT ddsc IS \調(diào)用DDS主模塊 ...... END COMPONENT ; SIGNAL clkcnt :integer RANGE 4 DOWNTO 0; \\內(nèi)部信號定義 SIGNAL clk:std_logic; SIGNAL freqind:std_logic_vector(15 DOWNTO 0);? BEGIN i_ddsc:ddsc \\調(diào)用DDS主模塊 PORT MAP(clk=>clk,ddsout =>ddsout,freqin=>freqind); clk<=sclk; \\連接內(nèi)部端口 PROCESS (sclk) BEGIN IF?sclk'event AND sclk='1'? THEN \\系統(tǒng)時鐘的上升沿觸發(fā) freqind<=fpin; END IF; 本系統(tǒng)在頻率不高于100kHz時能產(chǎn)生精確的正弦波形,而且十分穩(wěn)定。由于基準時鐘為50MHz,且分辨率為16位,因此,該系統(tǒng)能產(chǎn)生的最低頻率為500Hz,若要產(chǎn)生更低頻率及更精確的波形,可以提高分辨率并相應(yīng)減小基準時鐘,這在FPGA中實現(xiàn)起來相當容易。 實踐證明:用FPGA設(shè)計DDS電路較采用專用DDS芯片更為靈活。因為,只要改變FPGA中的ROM數(shù)據(jù),DDS就可以產(chǎn)生任意波形,因而具有相當大的靈活性。相比之下:FPGA的功能完全取決于設(shè)計需求,可以復(fù)雜也可以簡單,而且FPGA芯片還支持在系統(tǒng)現(xiàn)場升級,雖然在精度和速度上略有不足,但也能基本滿足絕大多數(shù)系統(tǒng)的使用要求。另外,將DDS設(shè)計嵌入到FPGA芯片所構(gòu)成的系統(tǒng)中,其系統(tǒng)成本并不會增加多少,而購買專用芯片的價格則是前者的很多倍。因此,采用FPGA來設(shè)計DDS系統(tǒng)具有很高的性價比。 |