王元華
(齊魯師范學院物理系,山東濟南 250200)
直接數字頻率合成或DDS(Direct Digital Frequeney Synthesis)技術是近年發展起來的一種新的頻率合成技術[1]。它具有頻率分辨率高、頻率轉換速度快、輸出頻率范圍寬、相位變化連續、輸出波形靈活和易于集成等優點[2]。隨著FPGA/CPLD技術的發展,DDS系統完全可以用可編程邏輯器件來實現,這樣不僅降低了成本,而且設計者可以按照自己的需要來設計系統的功能。
Cyclone系列FPGA是Altera公司推出的一款低成本、中等密度的現場可編程門陣列產品。它平衡了邏輯、存儲器、鎖相環和高級I/O接口,是對價格敏感應用時的最佳選擇。本文采用Cyclone系列中的EP1C3T144C8芯片來設計DDS系統以及DDS系統與上位機的接口部分[3]。EP1C3的內部整體設計結構如圖1所示。

圖1 EP1C3的內部整體設計結構圖
從整體上看,EP1C3實現的功能包括兩部分:接口電路和波形產生電路(DDS模塊)。其中接口電路部分包括數據/地址分離模塊、地址譯碼器、邏輯控制模塊和數據寄存器等。DDS模塊主要實現的是相位累加器和波形存儲器的功能。DDS模塊主要是由相位累加器、波形存儲器ROM、數/模轉換器DAC和低通濾波器組成[4]。
接口電路的設計就是使用增強性并口(EPP)[5]所提供的 nWrite、nDstrobe 和 nAstrobe 控制信號線,進行一定的組合邏輯產生計算機所需要的應答信號nWait,以及按照系統設計的要求,組合出數據寫信號 DWR和地址寫信號 AWR。總線收發器74LS245的DIR信號線是由 nWrite來控制的,當nWrite為低電平時,74LS245的數據傳輸方向是從B到A的,此時進行EPP寫操作。
由于EPP并口的地址線和數據線共用,所以利用nDstrobe和nAstrobe作為片選信號來分離地址和數據信號。并且使用 nWrite和 nDstrobe、nAstrobe分別進行“或”運算產生數據寫 DWR和地址寫AWR信號,以此來控制數據寄存器和地址譯碼器的工作。地址譯碼器采用3-8譯碼器,它的輸入地址信號是數據/地址線經過數據/地址分離模塊后得到的。數據/地址分離模塊及地址譯碼器的功能仿真結果如圖2所示。

圖2 數據/地址分離模塊及地址譯碼器的功能仿真圖
相位累加器在時鐘的作用下,對頻率控制字進行累加,其輸出作為ROM的尋址地址,然后進行相位-幅度轉換得到離散的幅度數據,再經過DAC轉換和濾波得到模擬信號。對頻率控制字進行累加,其輸出作為ROM的尋址地址,然后進行相位/幅度轉換得到離散的幅度數據,再經過DAC轉換和濾波得到模擬信號。
為了獲得較高的頻率分辨率,相位累加器的字長設計為32位,同時為了盡量減少由幅度量化誤差引起的DDS雜散分量,本設計采用了分辨率為10位的DAC,即波形存儲器的數據寬度是10位的。由于本設計使用的是8位數據傳輸,所以頻率控制字必須分4次進行傳輸,波形數據必須分2次進行傳輸。
相位累加器由全加器和相位寄存器組成。全加器是相位累加器結構中的關鍵部分,為了提高相位累加器的工作速度,本文采用了4位超前進位加法器來設計全加器。
為了進一步提高相位累加器的工作速度,本設計采用流水線技術來設計相位累加器[6]。32位的相位累加器采用8級4位的流水線結構,其中每一級的加法器都采用4位超前進位加法器結構,寄存器采用帶有異步復位的D觸發器DFF來構成。由于采用了8級流水線,所以數據從輸入到輸出要經過8個4位D觸發器才能得到運算結果,也就是說要經過8個時鐘周期后才能得到累加結果。但由于在每個時鐘中都有數據輸入到各級流水線,各級同時進行累加,并將結果同時輸出,因此從總體來看,完成一個32位的累加運算只需一個時鐘周期,從而使得累加速度等于參考時鐘頻率。相位累加器的功能仿真圖如圖3所示。

圖3 相位累加器的功能仿真圖
由圖可見,在輸入與輸出之間增加了8個寄存器,并且在高8位輸出端又增加了一個8位的數據寄存器,所以在系統復位后,要經過9個時鐘周期才有數據輸出。并且當頻率控制字進行切換時,輸入數據需要保持9個時鐘周期才能刷新頻率控制字,這就降低了頻率轉換速率,這也是采用流水線設計相位累加器的缺點之一。
為了增加系統的靈活性,本設計采用EP1C3內嵌的RAM塊來實現波形存儲器的功能[7]。根據系統的需要,采用Quartus II軟件提供的參數化RAM模塊LPM_RAM_DQ,LPM_RAM_DQ的輸入與輸出端口分離,讀寫數據共用一個地址端口,并且由于LPM_RAM_DQ讀寫數據共用一個地址端口,所以需要增加一個2選1的地址選擇器來選擇LPM_RAM_DQ的地址來源。圖4給出了波形存儲器的電路原理圖,其中 wavedata[9..0]是10位的波形數據,add[7..0]是地址信號,fre[31..24]是相位累加器輸出的高8位。由于地址信號經過地址選擇器時產生了一個時鐘周期的延遲,因此為了保證波形數據寫入正確的地址單元,將控制信號寄存器的D2位和波形數據 wavedata[9..0]用 D觸發器也延遲一個時鐘周期。同時為了保證系統的同步,所有的時鐘信號與系統時鐘相連。

圖4 波形存儲器的電路原理圖
波形存儲器的功能仿真圖如圖5所示,從圖中可以看出,當wren為高電平(即D2為低電平)時,波形數據寫入RAM,此時輸出端一直為低電平,沒有數據輸出。只有wren為低電平時,輸出端才有數據輸出,并且由于波形數據從輸入到輸出需要經過三個時鐘周期的延時,所以波形數據經過三個時鐘周期后才能輸出。

圖5 波形存儲器的功能仿真圖
設計完成后,對設計的功能進行實驗測量。圖6給出了頻率為100KHz,幅值為4V的正弦波、方波的輸出波形,其中方波的占空比為50%(實驗結果均由Tektronix公司的數字存儲示波器TDS2012測量所得)。從圖中可以看出,輸出波形的頻率和幅值準確度高,波形無明顯失真。
當對不同頻率的正弦波進行連續測量時,每次的測量值和預置值幾乎相等,在此只取某次的測量值進行分析,測量數據及誤差分析如表1所示。從表中可以看出,頻率穩定度達到了10-5(即10ppm)數量級。

圖6 頻率為100KHz、幅值為4V的輸出波形

表1 輸出頻率的數據分析
本文介紹了利用FPGA器件設計DDS系統的設計思想、電路結構和改進優化方法,從實驗結果可以看出,采用FPGA器件設計DDS系統是可行的。本設計尚存在一些問題,比如采用EPP并口進行數據傳輸,限制了波形頻率的切換速度不會很高,在以后的研究工作中,可以考慮USB串行總線進行上位機和FPGA之間的數據通信。
[1] J.Tierney,C.M.Rader,and B.Gold.A Digital Frequency Synthesizer[J].IEEE Transactions on Audio and Electro acoustics,1971,19(1):48-57
[2] 羅柏明,張雷.一種有效的DDS相位截斷雜散抑制方法[J].北京:電子技術應用,2008,34(11):97-99
[3] 王誠,吳繼華.Altera FPGA/CPLD設計(基礎篇)[M].北京:人民郵電出版社,2005
[4] 鄭毅.一種高精度直接數字式頻率源的設計[J].南京:電氣電子教學學報,2003,25(4):45-47
[5] 謝庭軍,劉少君,黃道平.EPP模式下的并口與FPGA的高速數據通信[J].沈陽:控制工程,2008,15(4):440-442
[6] G.W.Kent and N.H.Sheng,A High Purity,High Speed Direct Digital Synthesizer,IEEE International Frequency Control Symposium[J],1995:207-211
[7] 潘松,黃繼業.EDA技術使用教程[M].北京:科技出版社,2005