基於fpga的高精度任意波形發生器的製作方法
2023-09-13 16:30:55 1
專利名稱:基於fpga的高精度任意波形發生器的製作方法
技術領域:
本發明涉及一種波形發生器,特別是指一種基於FPGA的高精度任意波形發生器。
背景技術:
基於DDS的任意波形發生器具有硬體要求低、頻率切換速度快、很容易提高頻率解析度等優點,現已廣泛應用於自動測控系統、儀器儀表、通訊等領域。然而DDS波形存儲空間不可能很大,因而由於相位截斷、非均勻採樣在重構波形時產生「寄生效應」的同時,也勢必造成時域參數如頻率、周期、初相、佔空比的誤差,當信號頻率很低和較高時尤為突出。此外,在實際測量時,頻率計測頻測周一般為被測信號在設定的閘門時間或多個周期內的平均值,因此頻率計測量值並不能反映微觀單個周期的誤差,而反映多周期的宏觀效應。DDS任意波形發生器的頻率微觀(單周期)相對精度曲線見圖4,從圖中可看出,其頻率相對精度在頻率較低及較高時很不理想。
發明內容
本發明的目的在於提供一種高精度的任意波形發生器。
為實現上述目的,本發明包括PC、EPC2、接口電路、晶振、時標控制器、相位累加器、波形RAM區、波形個數控制器、幅度直流分量控制電路、D/A轉換器、低通濾波器,所述PC用於輸入波形參數數據、顯示波形及控制波形的產生;EPC2為串行配置晶片,用於FPGA上電轉載文件;接口電路,用於完成PC高速並行口EPP信號到FPGA內部三總線的轉換和地址解碼;晶振,用於產生一個精確的時鐘信號,作為時標控制器的基準信號;時標控制器,用於對晶振輸出的信號進行分頻;相位累加器,用於在用戶頻率控制字、初相字的控制下,產生滿足用戶頻率、初相要求的準相位字;波形RAM區,用於存儲量化的波形幅值;波形個數控制器,用於預置波形個數的控制;幅度直流分量控制電路,用於輸出幅度與直流分量的控制;D/A轉換器,用於將幅度直流分量控制電路數字波形信號轉換成模擬信號;低通濾波器,用於將D/A轉換器的輸出信號進行濾波。
上述的時標控制器是按z=fr/frz=fr/2p0f0]]>進行分頻,式中f0為用戶所需信號頻率,fr為系統時標信號頻率;p0=2x,x為相位累加器位數。
由於本發明中的時標控制器是按z=fr/frz=fr/2p0f0]]>對晶振信號進行分頻,其輸出信號在低頻段的頻率相對精度可達到很高,並保持一致,大大提高了DDS任意波形發生器在低頻段的頻率相對精度。
下面結合附圖及具體實施例對本發明作進一步的說明。
圖1為本發明的原理框圖。
圖2為本發明的具體電路圖(EDA)。
圖3為本發明的頻率單周期相對精度曲線圖。
圖4為現有DDS任意波形發生器的頻率單周期相對精度曲線圖。
具體實施例方式
參見圖1,本發明包括包括PC1、EPC2 2、接口電路3、晶振4、時標控制器5、相位累加器6、波形RAM區7、波形個數控制器8、幅度直流分量控制電路9、D/A轉換器10、低通濾波器11,所述PC1用於輸入波形參數數據、顯示波形及控制波形的產生;EPC2 2為串行配置晶片,用於FPGA上電轉載文件;接口電路3,用於完成PC高速並行口EPP信號到FPGA內部三總線的轉換和解碼;晶振4,用於產生一個精確的時鐘信號,作為時標控制器的基準信號;時標控制器5,用於對晶振輸出的信號進行分頻;相位累加器6,用於輸出滿足用戶頻率、初相要求的準相位字;波形RAM區7,用於存儲量化的波形幅值;波形個數控制器8,用於預置波形個數的控制;幅度直流分量控制電路9,用於輸出幅度與直流分量的控制;D/A轉換器10,用於將幅度直流分量控制電路數字波形信號轉換成模擬信號;低通濾波器11,用於將D/A轉換器的輸出信號進行濾波。
參見圖2,圖2為FPGA核中各模塊的具體實施電路圖,圖中接口轉換模塊ZIEKOU完成PC機高速並行接口EPP模式信號到FPGA三總線的轉換,在該模塊中還對地址總線進行解碼,輸出其它模塊所需的片選信號CS[63..0],在AA[1..0]的配合下共有256個I/O地址。
WR32-2模塊為2×32位寫模塊,它通過對埠D[7..0]的分時寫入實現輸出頻率控制字k與輸出信號初相字M(=nk)的32位數字預置。ADD32A、ADD32B為2個32位加法器,DFF32為32位鎖存器,ADD32與DFF32在CLK時鐘下構成了準相位字(n+n)k生成電路,COUT為32位加法器溢出端,當Q[31..0]大於232-1時,COUT自動輸出一個正跳變脈衝用於計數,可用來控制輸出波形個數。
該相位累加器的時鐘頻率,來自分頻模塊C1的輸出,CPU根據用戶所需頻率不同通過給C1預置相應分頻係數,來輸出不同的時標頻率,這樣可以通過調節DFF32相位累加速度和LPM-RAM的抽樣頻率,達到提高低頻段信號的頻率/周期相對精度的目的。
LPM-RAM為FPGA中的可重構RAM存儲器,現設計成4K×12bit的存儲器,RDEN為三態輸出控制端,RDCLK為讀時鐘端,來自C1輸出,WRAD[11..0]為寫入地址,CNT12為寫入地址產生器,D8-12是寫入數據裝配器,將ZIEKOU分2次送來的12位數據,通過雙級緩衝後同步輸出12位數據到LPM_RAM的DD[11..0],CPU通過CS25產生一個寫時鐘WRCLK將數據寫入,寫入完畢WR產生的上跳使CNT12地址自動加1。在用戶輸入初相、頻率、信號類型、幅度等參數後,CPU則自動產生一個4K×12bit的資料庫存入LPM_RAM中,這一過程大約需50ms的時間,寫完後在FPGA的控制下自動產生用戶所需的信號,用戶每改一次信號參數,RAM中數據都將被刷新。
WR32為預置波形個數模塊,COM32為一個32位比較器,在C[31..0]≥D[31..0]時有A=0,否則A=1,DFF為波形方式選擇器,在DFF輸出0時,在用戶將周期個數輸入到WR32後,隨著CNT32A對COUT的計數,當D[31..0]>C[31..0]時,A=1,OUTEN=1,使波形連續輸出,當D[31..0]=C[31..0]時A=0,則OUTEN為零,LPM-RAM的Q[11..0]變為三態禁止LPM-RAM輸出;DFF輸出1時恆有OUTEN=1,故使DDS波形連續輸出。
MD32為輸出幅度和直流分量控制模塊,通過對MD32寫入輸出幅度控制字N(0到4095)和直流分量控制字VOZ(0到4095),我們在MD32內部設計了一個12位乘法器和1個12位加法器,乘法器實現N與LPM-RAM輸出的12位抽樣值相乘,得到24位結果,我們只取前12位即可完成它與4096的相除,再與12位直流分量控制字相加即為MD32的輸出,這樣實現了輸出幅度與直流分量的控制,巧妙地實現了除數為212的除法操作,避免了極其耗時且耗用FPGA大量資源的除法操作。
經實驗驗證,本基於FPGA的高精度任意波形發生器性能指標為波形利類為正弦波、方波、矩形波、三角波及用戶自定義的任意波形;頻率範圍為0.0116Hz~5MHz,步進0.0116Hz,頻率小於539Hz時頻率微觀(單周期)和宏觀(多周期)精度均為2.5×10-5,頻率大於539Hz時頻率宏觀(多周期)精度為1.5×10-5;輸出幅度為-8V~8V、步進5mV;初相0°~360°、步進0.088°,初相誤差小於0.088°;佔空比0~1,步進0.025%,在頻率小於200KHz時佔空比絕對誤差小於1%,400KHz~1MHz時佔空比絕對誤差小於4.1%;波形個數和直流分量步進可調。
權利要求
1.一種基於FPGA的高精度任意波形發生器,其特徵在於包括PC、EPC2、接口電路、晶振、時標控制器、相位累加器、波形RAM區、波形個數控制器、幅度直流分量控制電路、D/A轉換器、低通濾波器,所述PC用於輸入波形參數數據、顯示波形及控制波形的產生;EPC2為串行配置晶片,用於FPGA上電轉載文件;接口電路,用於完成PC高速並行口EPP信號到FPGA內部三總線的轉換和地址解碼;晶振,用於產生一個精確的時鐘信號,作為時標控制器的基準信號;時標控制器,用於對晶振輸出的信號進行分頻;相位累加器,用於在用戶頻率控制字、初相字的控制下,按其輸入的時鐘產生滿足用戶頻率、初相要求的準相位字;波形RAM區,用於存儲量化的波形幅值;波形個數控制器,用於預置波形個數的控制;幅度直流分量控制電路,用於輸出幅度與直流分量的控制;D/A轉換器,用於將幅度直流分量控制電路數字波形信號轉換成模擬信號;低通濾波器,用於將D/A轉換器的輸出信號進行濾波。
2.根據權利要求1所述的基於FPGA的高精度任意波形發生器,其特徵在於所述的時標控制器按z=fr/frz=fr/2p0f0]]>進行分頻,式中f0為用戶所需信號頻率,fr為系統時標信號頻率;p0=2x,x為相位累加器位數。
全文摘要
一種基於FPGA的高精度任意波形發生器,包括PC、EPC2、接口電路、晶振、時標控制器、相位累加器、波形RAM區、波形個數控制器、幅度直流分量控制電路、D/A轉換器、低通濾波器,其中波形發生器的核心電路如接口電路、時標控制器、相位累加器、波形RAM區、波形個數控制器、幅度直流分量控制電路集成於FPGA中,且波形發生器中的時標控制器是按
文檔編號H03K3/02GK1469547SQ0312452
公開日2004年1月21日 申請日期2003年6月10日 優先權日2003年6月10日
發明者宋躍, 周明輝, 張小平, 宋 躍 申請人:湘潭師範學院