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