《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于CycloneII系列FPGA的DDFS信號(hào)源實(shí)現(xiàn)
基于CycloneII系列FPGA的DDFS信號(hào)源實(shí)現(xiàn)
摘要: 本設(shè)計(jì)在不向外擴(kuò)展ROM存儲(chǔ)器的情況下,對(duì)DDFS設(shè)計(jì)進(jìn)行優(yōu)化,充分利用Cyclone II系列FPGA的片上資源,其輸出正弦信號(hào)最高頻率可達(dá)4 MHz以上。只要采用更好的方案進(jìn)行設(shè)計(jì),使采樣點(diǎn)可以做到232個(gè)及以上,頻率分辨率可以做到0.015 Hz,達(dá)到mHz量級(jí),進(jìn)一步提高信號(hào)源的輸出信號(hào)頻率范圍及頻率分辨率等技術(shù)指標(biāo),可利用Cyclone II系列芯片設(shè)計(jì)出性能優(yōu)良的信號(hào)源,達(dá)到實(shí)用信號(hào)源的要求。
關(guān)鍵詞: FPGA Cyclone DDFS 信號(hào)源
Abstract:
Key words :

  0 引言

  在電子信息領(lǐng)域,函數(shù)發(fā)生器(信號(hào)源" title="信號(hào)源">信號(hào)源)是通用的設(shè)備。近年來(lái)電子信息技術(shù)的飛速發(fā)展,使得各領(lǐng)域?qū)π盘?hào)源的要求在不斷提高。不但要求其頻率穩(wěn)定度和準(zhǔn)確度高,要求頻率改變的方便性,而且還要求可以產(chǎn)生任意波形,輸出不同幅度的信號(hào)等。而實(shí)現(xiàn)頻率合成方法有許多種,但基本上可以歸納為直接頻率合成和間接頻率合成兩大類方法。采用傳統(tǒng)的頻率合成技術(shù)要實(shí)現(xiàn)上述要求,幾乎是不可能的。DDFS" title="DDFS">DDFS技術(shù)是自21世紀(jì)70年代出現(xiàn)的一種新型的直接頻率合成技術(shù)。DDFS技術(shù)是在信號(hào)的采樣定理的基礎(chǔ)上提出來(lái)的,從“相位”的概念出發(fā),進(jìn)行頻率合成,不但可利用晶體振蕩的高頻率穩(wěn)定度、高準(zhǔn)確度,且頻率改變方便,轉(zhuǎn)換速度快,便于產(chǎn)生任意波形等,因此,DDFS技術(shù)是目前高精密度信號(hào)源的核心技術(shù)。目前已有專用的DDFS芯片,如美國(guó)AD公司的AD9850等可用于DDS信號(hào)源的開(kāi)發(fā),但其成本較高。本設(shè)計(jì)將采用DDFS技術(shù),在FPGA" title="FPGA">FPGA上進(jìn)行信號(hào)源的設(shè)計(jì),其成本大大降低,且設(shè)計(jì)靈活方便,易于各種功能的擴(kuò)展等。

  1 DDFS技術(shù)原理

  DDFS技術(shù)的原理:將對(duì)正弦等各種信號(hào)的采樣量化數(shù)據(jù)存入ROM存儲(chǔ)器中,在時(shí)鐘的控制下,依次或隔一定步進(jìn)讀取ROM中的數(shù)據(jù),再通過(guò)D/A轉(zhuǎn)換芯片及后級(jí)的低通濾波器來(lái)實(shí)現(xiàn)頻率合成的一種方法。其原理框圖如圖1所示。其主要的組成部分包括:相位累加器(也可理解為ROM存儲(chǔ)單元的讀地址發(fā)生單元)、正弦信號(hào)采樣量化數(shù)據(jù)存儲(chǔ)ROM表、D/A轉(zhuǎn)換及低通濾波器。

原理框圖

  DDFS參數(shù)計(jì)算:DDFS的主要參數(shù)包括正弦信號(hào)的采樣點(diǎn)數(shù),最高輸出頻率fomax,最低輸出頻率fomax及頻率分辨率△fo等。根據(jù)DDFS原理可知,在時(shí)鐘控制下將所有ROM存儲(chǔ)數(shù)據(jù)依次讀出,則輸出的信號(hào)周期最長(zhǎng)Tomax=NTc,即輸出頻率最低為fomax;只讀出兩個(gè)點(diǎn)(∏/2和3∏/2)的采樣數(shù)據(jù),則輸出的信號(hào)周期最短Tomin=2Tc,即輸出頻率最高為fomax。其中Tc為時(shí)鐘周期。相應(yīng)計(jì)算如下。

  (1)輸出信號(hào)頻率通式:fo=Sfc/2n,其中2n為采樣點(diǎn)個(gè)數(shù)N,故可知n為采樣后ROM的地址位數(shù);其中S為步進(jìn)長(zhǎng)度,即每S個(gè)地址取一個(gè)采樣點(diǎn);

  (2)輸出最低頻率公式

  (3)輸出最高頻率公式雖然根據(jù)奈奎斯特采樣定理,一個(gè)周期采樣兩個(gè)點(diǎn)即可保證信號(hào)的頻譜信息不丟失,但為了輸出信號(hào)濾波后失真較小,一個(gè)周期至少采樣8個(gè)點(diǎn);故可知S的取值范圍應(yīng)該為1~2n-3;

  (4)頻率分辨率△fo:△fo=fc/2n,與最低頻率一致。

  2 DDFS的FPGA實(shí)現(xiàn)的參數(shù)計(jì)算

  本設(shè)計(jì)充分利用Cyclone" title="Cyclone">CycloneII系列FPGA芯片EP2C35的片上資源來(lái)實(shí)現(xiàn)一個(gè)基于DDFS的正弦信號(hào)源。由于此芯片的片上可用ROM單元為483,840位二進(jìn)制,因此,片上ROM資源只能夠存儲(chǔ)215(32768)個(gè)8位二進(jìn)制采樣點(diǎn)的數(shù)據(jù)。

  (1)ROM資源優(yōu)化:由于是正弦信號(hào),因此只要采樣其(0,n/2)區(qū)間上的函數(shù)值,即可根據(jù)其周期性及對(duì)稱性,求出其他區(qū)間上的相應(yīng)的函數(shù)值。故,雖然片上資源只能存儲(chǔ)215(32768)個(gè)8位二進(jìn)制數(shù)據(jù),但利用正弦信號(hào)的對(duì)稱性,可實(shí)現(xiàn)217點(diǎn)采樣。由于正弦信號(hào)在(n~2n)間為負(fù)值,因此輸出函數(shù)值時(shí),需要進(jìn)行補(bǔ)碼轉(zhuǎn)換;

  (2)地址位長(zhǎng)度:ROM的尋址地址為15位二進(jìn)制數(shù);

  (3)步進(jìn)位長(zhǎng)度:步進(jìn)最大應(yīng)為217/23=214,即步進(jìn)為14位的二進(jìn)制數(shù);

  (4)相位控制字:相位是指讀取數(shù)據(jù)時(shí),應(yīng)該屬于(0,2n)上的哪個(gè)區(qū)間,由于共有4個(gè)不同的區(qū)間。故可采用2位的二進(jìn)制數(shù)來(lái)標(biāo)識(shí);不同的相位區(qū)間,決定著地址的讀取方向及輸出函數(shù)值是否取補(bǔ)碼運(yùn)算;

  (5)任意波形的產(chǎn)生:要產(chǎn)生任意波形,可利用任意波形如矩形脈沖、三角波、鋸齒波等的傅利葉級(jí)數(shù)分解表達(dá)式,取其前有限次(如10次)諧波進(jìn)行求和并存入指定的RAM單元,再依次讀出數(shù)據(jù),即可產(chǎn)生任意的信號(hào)。也可以將相應(yīng)波形的數(shù)據(jù)進(jìn)行采樣,存入ROM中,按一定步進(jìn)進(jìn)行讀取。通過(guò)以上分析,在充分利用片上存儲(chǔ)單元,不擴(kuò)展外部存儲(chǔ)器,地址時(shí)鐘為10 MHz的基礎(chǔ)上,可得頻率分辨率為△f=78 Hz,輸出信號(hào)最高頻率(一個(gè)周期最少采樣8個(gè)點(diǎn))為fomax=fc/8=1.25 MHz;輸出信號(hào)最低頻率為fomin=Sfc/2n|s=1=fc/217=78 Hz。若采樣點(diǎn)達(dá)到232個(gè)及以上,頻率分辨率可以做到0.015 Hz,達(dá)到mHz量級(jí)??梢?jiàn)利用Cyclone II系列芯片設(shè)計(jì)出性能優(yōu)良的信號(hào)源。

  3 DDFS的FPGA實(shí)現(xiàn)

  根據(jù)DDFS的原理,其FPGA設(shè)計(jì)原理如圖2所示。其中控制單元由有限狀態(tài)機(jī)構(gòu)成。雖然整個(gè)系統(tǒng)的控制不一定需要使用有限狀態(tài)機(jī),但由于使用的FPGA芯片不支持異步的ROM,即從地址鎖存進(jìn)入ROM單元,到數(shù)據(jù)從ROM中讀出有至少一個(gè)時(shí)鐘周期以上的延時(shí)。因此采用狀態(tài)機(jī)來(lái)進(jìn)行控制,可以達(dá)到較好的輸出與時(shí)鐘同步??刂屏鞒虨椋簳r(shí)鐘信號(hào)進(jìn)入控制單元,由它產(chǎn)生地址發(fā)生單元的輸入時(shí)鐘adrclk,地址發(fā)生單元在時(shí)鐘adrclk的驅(qū)動(dòng)下,結(jié)合輸入的步進(jìn)信號(hào)Step,產(chǎn)生地址及此地址所對(duì)應(yīng)的象限Phase,此地址產(chǎn)生后立即輸入到ROM單元中,過(guò)兩個(gè)時(shí)鐘周期后,控制單元從ROM存儲(chǔ)單元中讀出輸入地址對(duì)應(yīng)的數(shù)據(jù),并在時(shí)鐘的控制下,將前面所產(chǎn)生的象限值Phase與ROM數(shù)據(jù)一起送到補(bǔ)碼轉(zhuǎn)換單元,補(bǔ)碼轉(zhuǎn)換單元根據(jù)Phase的值來(lái)決定是否需要進(jìn)行補(bǔ)碼轉(zhuǎn)換,若需要,則進(jìn)行補(bǔ)碼運(yùn)算并將數(shù)據(jù)輸出,若不需要,則直接將數(shù)據(jù)輸出。下面給出各模塊的具體設(shè)計(jì)細(xì)節(jié)。

 

FPGA設(shè)計(jì)原理

  (1)控制單元:控制單元是整個(gè)系統(tǒng)的核心部件。由一個(gè)簡(jiǎn)單的有限狀態(tài)機(jī)構(gòu)成。其狀態(tài)轉(zhuǎn)換圖如圖3所示。

狀態(tài)轉(zhuǎn)換圖

  (2)地址發(fā)生單元:設(shè)計(jì)思路為根據(jù)輸入的Step值,計(jì)算出總共四個(gè)象限所需取值的點(diǎn)數(shù),也就可以計(jì)算出一個(gè)象限所要取值的點(diǎn)數(shù)m,然后在時(shí)鐘作用下進(jìn)行計(jì)數(shù),當(dāng)計(jì)數(shù)值達(dá)m個(gè)時(shí),說(shuō)明一個(gè)象限內(nèi)已經(jīng)取完點(diǎn),此時(shí)phase自加1,計(jì)數(shù)變量重新置零。由于在(0,π/2)sin的函數(shù)值為從0→1變化;(π/2,π)函數(shù)值從1→0變化;(π,3π/2)函數(shù)值從0→-1變化;(3π/2,2π)函數(shù)值從-1→0變化。故在(0,π/2)和(π,3π/2)地址值從0→32767,每隔一個(gè)步進(jìn)Step讀一個(gè)數(shù)據(jù),當(dāng)然后者的數(shù)據(jù)要經(jīng)過(guò)補(bǔ)碼單元的處理;而在(π/2,π)和(3π/2,2π)象限,地址值則從32767→0,每隔一個(gè)步進(jìn)Step讀一個(gè)數(shù)據(jù)即可,同樣的,后者的數(shù)據(jù)也要經(jīng)過(guò)補(bǔ)碼單元的處理。

  (3)ROM存儲(chǔ)單元:ROM存儲(chǔ)單元的數(shù)據(jù)可以通過(guò)Matlab進(jìn)行計(jì)算獲得,并將其存儲(chǔ)為*.mif的文件格式。在進(jìn)行ROM設(shè)計(jì)時(shí),調(diào)用此mif文件作為ROM的初始數(shù)據(jù)文件即可。

  (4)補(bǔ)碼轉(zhuǎn)換單元:根據(jù)目前地址所處象限來(lái)決定是否需要進(jìn)行補(bǔ)碼轉(zhuǎn)換。如產(chǎn)生正弦信號(hào)時(shí),(0,π)象限sin函數(shù)值為正,而(π,2π)象限上sin函數(shù)值為負(fù),因此在(π,2π)象限時(shí),需要對(duì)輸出數(shù)據(jù)進(jìn)行補(bǔ)碼轉(zhuǎn)換。補(bǔ)碼轉(zhuǎn)換單元較簡(jiǎn)單,根據(jù)二進(jìn)制數(shù)取補(bǔ)的原理進(jìn)行設(shè)計(jì)即可。

  4 結(jié)果分析

  本設(shè)計(jì)在QuartusII6.0的平臺(tái)上完成設(shè)計(jì)工作,其仿真波形如圖4所示。在仿真波形中設(shè)置的步進(jìn)長(zhǎng)度為1024點(diǎn)。由于有狀態(tài)機(jī)進(jìn)行流程控制,產(chǎn)生的波形較平滑,元多滑毛刺產(chǎn)生。若要進(jìn)一步提高輸出信號(hào)頻率范圍,則設(shè)計(jì)過(guò)程中,不應(yīng)對(duì)時(shí)鐘信號(hào)進(jìn)行分頻。

仿真波形

  同時(shí),還可以利用QuartusII的SigTapII工具對(duì)所設(shè)計(jì)的程序進(jìn)行硬件驗(yàn)證,設(shè)置好相應(yīng)步進(jìn)后,相應(yīng)的輸出波形如圖5及圖6所示??梢?jiàn)所產(chǎn)生的低頻正弦信號(hào)波形平滑,而頻率較高時(shí)有一定的毛刺,這可以通過(guò)后級(jí)的低通濾波電路(如切比雪夫低通濾波網(wǎng)絡(luò)等)來(lái)進(jìn)行濾除。

輸出波形

  本設(shè)計(jì)使用的邏輯單元只占FPGA片上資源的1%,存儲(chǔ)單元占54%,I/O口占13%。可見(jiàn)主要資源為片上的存儲(chǔ)單元,如果提高一位地址位,則數(shù)據(jù)量翻倍,F(xiàn)PGA片上ROM不夠用。通過(guò)QuartusII6.0的時(shí)鐘分析,本設(shè)計(jì)可達(dá)到的最高時(shí)鐘為149.41 MHz,而地址發(fā)生的時(shí)鐘為時(shí)鐘的4分頻,故地址發(fā)生單元的最高時(shí)鐘可達(dá)37.352 5 MHz,相應(yīng)的輸出信號(hào)最高頻率可達(dá)4.665 MHz,相應(yīng)的最低頻率及頻率步進(jìn)為284.976 Hz。

  5 結(jié)束語(yǔ)

  本設(shè)計(jì)在不向外擴(kuò)展ROM存儲(chǔ)器的情況下,對(duì)DDFS設(shè)計(jì)進(jìn)行優(yōu)化,充分利用Cyclone II系列FPGA的片上資源,其輸出正弦信號(hào)最高頻率可達(dá)4 MHz以上。只要采用更好的方案進(jìn)行設(shè)計(jì),使采樣點(diǎn)可以做到232個(gè)及以上,頻率分辨率可以做到0.015 Hz,達(dá)到mHz量級(jí),進(jìn)一步提高信號(hào)源的輸出信號(hào)頻率范圍及頻率分辨率等技術(shù)指標(biāo),可利用Cyclone II系列芯片設(shè)計(jì)出性能優(yōu)良的信號(hào)源,達(dá)到實(shí)用信號(hào)源的要求。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。