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