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