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