FPGA實現的任意波形發(fā)生器的設計
波形發(fā)生器廣泛應用于電子電路、自動控制和科學試驗領域,是一種為電子測量工作提供符合嚴格技術要求的電信號設備,和示波器、電壓表、頻率計等儀器一樣是最普通、最基本也是應用最為廣泛的電子儀器之一,幾乎所有電參量的測量都要用到波形發(fā)生器。隨著通信、雷達的不斷發(fā)展,對信號源的頻率穩(wěn)定度、頻譜純度、頻率范圍和輸出頻率的個數以及信號波形的形狀也提出越來越多的要求。不僅要求能產生正弦波、方波等標準波形,還能根據需要產生任意波形,且操作方便,輸出波形質量好,輸出頻率范圍寬,輸出頻率穩(wěn)定度、準確度及分辨率高,頻率轉換速度快且頻率轉換時輸出波形相位連續(xù)等??梢?,研究制作高性能的任意波形發(fā)生器十分有必要,而且意義重大。
1 任意波形發(fā)生器的FPGA實現
系統框架如圖1所示,上位機產生任意波形數據,經USB2.0控制器CY7C68013A與FPGA(現場可編程門陣列)相連。將數據下載到FPGA的RAM當中,再通過硬件電路依次從波形存儲器中讀取出來,經D/A轉換及濾波后得到所需信號波形輸出。
關于DDS的基本原理與結構在這里就不再加以闡述,用FPGA按照DDS的基本原理和結構設計和實現一個任意波形發(fā)生器,所以DDS的幾個基本部分都是應當具備的。實現任意波形發(fā)生的關鍵在于把存放波形量化表的ROM換成了可以改寫的RAM,這樣通過與RAM的接口可以改變存放在波形RAM中的數據從而實現任意波形發(fā)生。這里主要介紹控制部分、相位累加器、波形RAM幾個模塊來敘述任意波形發(fā)生器的實現。
1.1 控制部分
這個部分主要是要解決DDS模塊與單片機的接口問題。在FPGA的實現中,主要設計了2個模塊,一個是輸入寄存器模塊,為了接收單片機寫入的頻率控制字。另外一個是地址分配模塊,這樣單片機就可以通過不同的地址來選通FPGA各個模塊工作。設計中DDS采用了32位的相位累加器。這樣對于一個頻率控制字,單片機要分4次分別寫入4個字節(jié);基于這樣的要求,設計了輸入寄存器模塊如圖2,這個部分主要是要解決DDS模塊與單片機的接口問題。
din[7..0]是該模塊與單片機數據線的接口,clr是低電平異步清零,en是高電平使能,elk為數據寫入時鐘,dout[31..O]是寄存器輸出的32位頻率控制字。該模塊工作過程為:當en為高電平,clr也為高電平時,elk的上升沿將輸入的8位數據鎖存進該模塊中,當鎖存完4個字節(jié)的數據后,自動將該4個字節(jié)的數據按照先寫入的在高位的順序組合成一個32 bit的數據輸出到dout[31..0]。
該模塊的功能仿真圖如圖3所示,看到當clr=‘1’并且en=‘1’時,經過4個時鐘,dout上將前4個時鐘的值‘00’、‘01’、‘02’、‘03’組成32位的‘00010203’數值輸出在dout上。
評論