張 凡,黃 浩,朱鐵柱
(1.淮陰工學(xué)院電子信息工程學(xué)院,江蘇淮安 223001;2.淮陰工學(xué)院江蘇省湖泊環(huán)境遙感技術(shù)工程實(shí)驗(yàn)室,江蘇 淮安 223001)
基于FPGA 的數(shù)字示波器在功能控制和數(shù)據(jù)處理性能的優(yōu)越性突出。從數(shù)字系統(tǒng)方面來(lái)說(shuō),系統(tǒng)性能取決于系統(tǒng)參數(shù),通過(guò)改變參數(shù)很容易實(shí)現(xiàn)為不同的應(yīng)用場(chǎng)景選擇合適的數(shù)字系統(tǒng)[1-3]。數(shù)字示波器可以靈活地適應(yīng)多路信號(hào),通過(guò)時(shí)分復(fù)用一套示波器就可以通過(guò)片選信號(hào),分時(shí)處理幾路模擬信號(hào),有效地減少了電路資源浪費(fèi);還可以根據(jù)面向?qū)ο蟮牟煌约坝脩舻牟煌枨筮x擇不同的算法[4-6]。此外,數(shù)字示波器具有精度高、抗干擾能力強(qiáng)的優(yōu)點(diǎn),可以實(shí)現(xiàn)數(shù)字編程等模擬示波器無(wú)法實(shí)現(xiàn)的功能[7-8]。
文中設(shè)計(jì)了一款智能數(shù)字化數(shù)字示波器系統(tǒng),設(shè)計(jì)指標(biāo)如下:采樣精度12 位、幅值范圍-5~+5 V、測(cè)量頻率范圍100~10 MHz、水平靈敏度20 mV/div,垂直靈敏度0.1 μs/div。
以FPGA 作為核心的主控芯片,其外圍電路比較簡(jiǎn)單,因?yàn)镕PGA 內(nèi)部集成了大量電路模塊,不需要外接太多的電路就可以實(shí)現(xiàn)想要的功能,如產(chǎn)生分頻的鎖相環(huán)。FPGA 內(nèi)部嵌入式軟核處理器MicroBlaze、DSP 資源,所以FPGA 既可以使用DSP 資源實(shí)現(xiàn)相關(guān)算法,又可以實(shí)現(xiàn)控制功能。此外,F(xiàn)PGA 可實(shí)現(xiàn)并行處理,協(xié)調(diào)控制能力強(qiáng),可在內(nèi)部實(shí)現(xiàn)通信接口等功能[9-11]。所以,該方案相對(duì)于MCU和模擬示波器方案有著獨(dú)特的優(yōu)勢(shì)。
信號(hào)首先經(jīng)過(guò)信號(hào)調(diào)理電路即程控衰減放大電路和過(guò)壓保護(hù)電路進(jìn)行處理,AD 轉(zhuǎn)換電路對(duì)外部信號(hào)進(jìn)行采樣,將模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)。FPGA 開(kāi)發(fā)板外接控制交互電路(如按鍵、撥碼開(kāi)關(guān)、旋轉(zhuǎn)編碼器等)、片內(nèi)存儲(chǔ)電路、VGA 顯示電路。硬件設(shè)計(jì)框圖如圖1 所示。
圖1 硬件框圖
此次設(shè)計(jì)所采用的是型號(hào)為AD9266 的高速AD模塊,兩塊65 MPS 的AD 芯片集成在一塊電路板上,既可以實(shí)現(xiàn)多通道的功能,也可以為之后的欠采樣技術(shù)等效采樣提供硬件支持,還可以滿足高速數(shù)據(jù)采集與處理的要求。FPGA 完成對(duì)雙路AD 轉(zhuǎn)換的時(shí)序控制和數(shù)據(jù)讀取功能。
AD9266 采用多級(jí)差分流水線架構(gòu),可以通過(guò)一定的時(shí)序控制實(shí)現(xiàn)FPGA 開(kāi)發(fā)板的通信功能,控制時(shí)序如圖2 所示。用戶可以選擇硬件如SENSE引腳的外接電壓值,從而改變輸入信號(hào)的范圍和直流分量[12-13]。
圖2 AD9266時(shí)序圖
AD9266 芯片內(nèi)部自帶采樣保持放大器,在中頻段,通過(guò)等效采樣和欠采樣技術(shù),實(shí)現(xiàn)更高頻率的模擬信號(hào)采集。設(shè)計(jì)中選擇單端輸入的模式,采用SMA 接口直接接入信號(hào)。
芯片生產(chǎn)廠商在內(nèi)部集成了片內(nèi)基準(zhǔn)電壓源和高性能的占空比穩(wěn)定器,可以實(shí)現(xiàn)任意占空比的時(shí)鐘,完成對(duì)信號(hào)的采樣和采樣保持,具有高效和方便的優(yōu)點(diǎn)。
輸入阻抗也是示波器的關(guān)鍵指標(biāo),輸入阻抗高可以降低對(duì)待測(cè)電路的影響。AD9266 輸阻抗很高,電源電壓范圍靈活,相位誤差和差分增益可忽略,在示波器應(yīng)用中適合作示波器的前級(jí)信號(hào)調(diào)理。
根據(jù)原理圖,配置的AD9266 基準(zhǔn)電壓只有2 V,但是2 V 的電壓在正常的示波器使用中是遠(yuǎn)遠(yuǎn)不夠的,所以設(shè)計(jì)了一款電路,如圖3 所示,可以將輸入范圍擴(kuò)大至-4~+4 V。
圖3 不使用運(yùn)放的電壓衰減電路
在另一種方案中,采用帶寬為145 MHz 的快速場(chǎng)效應(yīng)管電壓反饋放大器,該放大器的工作噪聲低,屬于單電源供電,與單極性ADC 配合單路放大器使用,所以非常適合用來(lái)作示波器的前級(jí)衰減運(yùn)放。通過(guò)運(yùn)放將-5~+5 V 衰減到-2~+2 V 的范圍內(nèi)。
電壓計(jì)算公式如下:
當(dāng)Vi=-5 V 時(shí),對(duì)應(yīng)Vo=1 V,當(dāng)Vi=5 V 時(shí),對(duì)應(yīng)Vo=3 V。輸入電壓就可實(shí)現(xiàn)從10 V 衰減到參考電壓配置的2 V。
示波器系統(tǒng)工作流程圖如圖4 所示。系統(tǒng)上電時(shí),F(xiàn)LASH 中的程序會(huì)由配置電路配置到FPGA 中,顯示界面初始化,ADC 開(kāi)始采集數(shù)據(jù)。
圖4 軟件流程圖
判斷觸發(fā)條件,如果滿足觸發(fā)條件就開(kāi)始保存ADC 的數(shù)據(jù),采集的數(shù)據(jù)存入RAM1 和RAM2,分別供FFT 模塊和波形顯示模塊調(diào)用,數(shù)據(jù)的前后差值存入RAM3,啟動(dòng)測(cè)頻模塊和測(cè)幅模塊。
測(cè)頻模塊通過(guò)濾波將ADC 采集到的信號(hào)變?yōu)榉讲ㄐ盘?hào),并計(jì)算周期。如果是自動(dòng)控制模式,則根據(jù)周期更改顯示模塊和測(cè)幅模塊的參數(shù),如果不是,則根據(jù)按鍵或者旋轉(zhuǎn)編碼器的值更改參數(shù)。
下一步進(jìn)行快速傅里葉變換,并將結(jié)果存入RAM4。顯示界面調(diào)用RAM2 和RAM3 的數(shù)據(jù)顯示波形,存入RAM4 中的數(shù)據(jù)顯示傅里葉變換的結(jié)果。
頻率計(jì)數(shù)常用的方法有兩種:周期法測(cè)定頻率和直接測(cè)量頻率。示波器測(cè)量的信號(hào)頻率范圍大、頻率高,所以采用周期法測(cè)頻[14]。
為了排除噪聲信號(hào)的干擾和減少外圍的器件,沒(méi)有選擇過(guò)零比較器,而是利用軟件實(shí)現(xiàn)了一個(gè)施密特觸發(fā)器,將離散的正弦波信號(hào)濾波為方波信號(hào),這樣就可以通過(guò)軟件實(shí)現(xiàn)計(jì)數(shù)濾波后的上升沿次數(shù),計(jì)數(shù)值就是信號(hào)的頻率,如圖5 所示。
圖5 頻率計(jì)框圖
測(cè)得的頻率信號(hào)會(huì)被采樣模塊和波形顯示模塊調(diào)用,根據(jù)頻率的值更改采樣模塊的參數(shù)。因?yàn)椴捎玫氖堑刃Р蓸?,需要產(chǎn)生與信號(hào)頻率相差1 時(shí)鐘周期的方波,作為ADC 的時(shí)鐘信號(hào),因此在測(cè)量中最好采用等精度測(cè)頻,以避免產(chǎn)生的時(shí)鐘信號(hào)因此受影響。
測(cè)幅模塊記錄每一個(gè)周期的峰峰值,最后計(jì)算平均值。為了提高計(jì)算的精度,引入了周期參數(shù),如圖6 所示。在實(shí)際應(yīng)用中,信號(hào)往往會(huì)疊加周期性的噪聲。當(dāng)噪聲頻率低于信號(hào)頻率時(shí),根據(jù)測(cè)頻模塊測(cè)得的周期,可以只在一個(gè)周期內(nèi)尋找最大值和最小值,這樣可以一定程度上避免低頻信號(hào)對(duì)測(cè)幅模塊的影響。連續(xù)10 次測(cè)得這樣的信號(hào)后,就可以計(jì)算平均值,輸出信號(hào)的幅度值。
圖6 測(cè)幅框圖
PLL(鎖相環(huán))是FPGA 內(nèi)部重要的時(shí)鐘資源。利用鎖相環(huán)可以對(duì)時(shí)鐘進(jìn)行分頻、倍頻、相位調(diào)整。PLL 基于壓控振蕩器VCO 獲得實(shí)際想要的輸出頻率,而MMCM(混合模式時(shí)鐘管理器)基于可變延時(shí)線技術(shù),當(dāng)時(shí)鐘信號(hào)特別純凈時(shí),分頻操作不用PLL和MMCM,因?yàn)闀?huì)引入延遲和偏斜[15-16]。而PLL 可以自身通過(guò)壓控振蕩器產(chǎn)生震蕩,輸入時(shí)鐘用來(lái)產(chǎn)生基準(zhǔn)。在設(shè)計(jì)中,ADC 實(shí)時(shí)采樣時(shí)鐘頻率為50 MHz,等效采樣頻率為125 MHz,故需要65 MHz 的時(shí)鐘,并使用VGA 顯示時(shí)鐘,如圖7 所示。
圖7 PLL框圖
設(shè)計(jì)的緩存模塊使用FPGA 內(nèi)部BRAM 資源。在賽靈思FPGA 內(nèi)部,有兩種RAM:資源塊RAM 和分布式RAM。分布式RAM 是消耗賽靈思特有的SLICEM,會(huì)消耗邏輯資源但時(shí)序性能好,是非常珍貴的資源。文中設(shè)計(jì)對(duì)時(shí)序要求不高,且片上資源足夠,所以不采用分布式RAM。
緩存框圖如圖8 所示,中例化了4 個(gè)雙口RAM,分別作為波形數(shù)據(jù)、波形差值數(shù)據(jù)、FFT 輸入數(shù)據(jù)、FFT 輸出數(shù)據(jù)存儲(chǔ)緩存。波形數(shù)據(jù)和波形差值為八位,深度為1 024,每512 個(gè)數(shù)據(jù)顯示一個(gè)周期的波形。另外,IP 核選擇配置額外的輸出寄存器,提高存儲(chǔ)器使用性能,但讀取值要延時(shí)一個(gè)周期。為避免沖突,采用異步時(shí)鐘。讀數(shù)據(jù)采用VGA 接口以65 MHz 的頻率讀取,寫(xiě)數(shù)據(jù)采用ADC 采樣時(shí)鐘,配置為讀優(yōu)先,這樣可以保證當(dāng)一個(gè)端口執(zhí)行寫(xiě)操作時(shí),讀取無(wú)效。
圖8 緩存框圖
示波器的采樣功能由采樣模塊實(shí)現(xiàn),提供對(duì)AD芯片的時(shí)鐘控制和數(shù)據(jù)處理功能,輸入測(cè)頻信號(hào)的數(shù)值來(lái)對(duì)AD 芯片進(jìn)行自動(dòng)控制。當(dāng)被測(cè)信號(hào)頻率高于示波器實(shí)時(shí)采樣預(yù)設(shè)的頻率閾值時(shí),示波器采用等效采樣;否則,示波器采用實(shí)時(shí)采樣。
實(shí)時(shí)采樣的原理簡(jiǎn)單,AD 芯片內(nèi)部自帶了采樣保持穩(wěn)定功能,實(shí)時(shí)采樣時(shí)只需將時(shí)鐘信號(hào)分頻給AD 芯片,就可以按照想要的次序進(jìn)行采樣。
采樣模塊框圖如圖9 所示。當(dāng)?shù)刃Р蓸訒r(shí),PLL通過(guò)壓控振蕩器倍頻到125 MHz,根據(jù)測(cè)得的頻率生成和信號(hào)相差一個(gè)PLL 輸出時(shí)鐘周期的信號(hào)。這樣根據(jù)差頻法的性質(zhì),采樣的等效采樣率即為125 MHz,因此可以在AD 芯片性能不夠的情況下實(shí)現(xiàn)對(duì)信號(hào)的欠采樣。
圖9 采樣模塊框圖
Xilinx 提供了FFT IP 核,可以直接例化使用。FFT IP 核具有12 個(gè)通道,不同的通道可以針對(duì)不同的計(jì)算點(diǎn)數(shù)和信號(hào)頻率等計(jì)算參數(shù)實(shí)現(xiàn)不同的工作模式。通過(guò)設(shè)置數(shù)據(jù)類型、數(shù)據(jù)位寬、相位因子、輸出指令來(lái)調(diào)整輸入輸出的格式,可以根據(jù)用戶的需求方便地實(shí)現(xiàn)FFT 算法[17]。
傅里葉變換框圖如圖10 所示,這里選擇1 通道,對(duì)1 024 個(gè)點(diǎn)進(jìn)行操作。選擇工作模式時(shí),IP 核可以根據(jù)所需要的處理速度,配置成基2、基4、突發(fā)模式、流水線模式,通過(guò)面積和資源的互換實(shí)現(xiàn)自動(dòng)配置。文中根據(jù)資源和性能的取舍選擇基4 模式。
圖10 傅里葉變換框圖
在使用時(shí),存在三類信號(hào):基本的時(shí)鐘和復(fù)位信號(hào)、AXI 的總線信號(hào)和狀態(tài)線信號(hào)。AXI 的總線信號(hào)負(fù)責(zé)命令的輸入和數(shù)據(jù)的交互。狀態(tài)線信號(hào)包括started 開(kāi)始轉(zhuǎn)換信號(hào)、溢出的overflow 信號(hào)等。
文中通過(guò)testbench 來(lái)驗(yàn)證FFT 模塊的結(jié)果,系統(tǒng)時(shí)鐘(即FFT 計(jì)算時(shí)鐘)為100 MHz,因此頻譜范圍為0~50 MHz。使用Matlab 生成低頻與頻率更高的正弦波信號(hào)A 和B,分別寫(xiě)入txt 文件。通過(guò)讀取文件的正弦波信號(hào),并轉(zhuǎn)換為testbench 的輸入信號(hào),對(duì)電路進(jìn)行仿真,分析FFT 的功能。
信號(hào)的頻率越高,經(jīng)過(guò)變換后尖峰要比信號(hào)更靠近中間。在有效信號(hào)持續(xù)的時(shí)間內(nèi),很明顯可以看到低頻信號(hào)的采樣結(jié)果要比高頻信號(hào)采樣的結(jié)果更加精確,因?yàn)関ivado 仿真工具會(huì)對(duì)信號(hào)的值進(jìn)行壓縮顯示,頻譜圖實(shí)際波形與Matlab 仿真類似。
界面模塊由VGA 時(shí)序生成模塊和網(wǎng)格生成模塊組成,VGA 時(shí)序模塊主要由計(jì)數(shù)器組成,計(jì)數(shù)單位是顯示一個(gè)像素所需要的時(shí)鐘。文中VGA 模塊像素大小為1 024*768,每秒刷新60 次,每次刷新行有效和場(chǎng)有效信號(hào)計(jì)數(shù)器分別計(jì)數(shù)1 024 次和768 次,同步信號(hào)可以通過(guò)查詢資料設(shè)定相關(guān)參數(shù),顯示模塊框圖如圖11 所示。
圖11 顯示模塊框圖
在滿足VGA 時(shí)序的基礎(chǔ)下,網(wǎng)格疊加模塊根據(jù)橫縱坐標(biāo)網(wǎng)格表達(dá)式更改VGA544 顏色參數(shù)的值,從而顯示橫向和豎向網(wǎng)格。
波形和頻譜圖顯示模塊如圖12 所示。該模塊用于接受已經(jīng)生成的網(wǎng)格VGA 時(shí)序。PLL 生成的65 MHz 的時(shí)鐘作為RAM2 和RAM3 的讀取時(shí)鐘。
圖12 波形和頻率譜模塊框圖
在實(shí)時(shí)采樣模式下,采樣多個(gè)周期的波形會(huì)超出顯示所具有的功能。系統(tǒng)具有自動(dòng)控制的功能,頻率計(jì)模塊已經(jīng)測(cè)得了頻率,因此示波器可以在不外接輸入調(diào)整頻率的情況下對(duì)波形進(jìn)行調(diào)整[18]。在模塊中根據(jù)輸入信號(hào)的時(shí)鐘頻率表達(dá)式控制ADC采樣存儲(chǔ)的間隔,這樣屏幕就可以始終顯示兩個(gè)周期的波形。
上述過(guò)程實(shí)現(xiàn)了基于FPGA 的數(shù)字示波器設(shè)計(jì),但是對(duì)于實(shí)際采集系統(tǒng)的精度和系統(tǒng)留下來(lái)的缺陷無(wú)法確定,為此選擇用FPGA 和DA 芯片通過(guò)DDS 的方式模擬正弦波、方波、三角波的功能[19]。在實(shí)驗(yàn)過(guò)程中,將AD 和DA 直接相連,將待測(cè)信號(hào)的生成參數(shù)和實(shí)驗(yàn)數(shù)據(jù)進(jìn)行對(duì)比,分析示波器系統(tǒng)測(cè)量的效果。實(shí)驗(yàn)結(jié)果在測(cè)量信號(hào)頻率低于50 MHz 時(shí),誤差不超過(guò)0.1%,測(cè)幅誤差在校準(zhǔn)后誤差不超過(guò)5%,波形和頻譜顯示效果分別如圖13、14 所示,可見(jiàn)基本實(shí)現(xiàn)了示波器的功能。
圖13 正弦波波形圖
圖14 正弦波頻譜圖
文中通過(guò)Artix-7 FPGA 開(kāi)發(fā)板和高精度ADC芯片實(shí)現(xiàn)了數(shù)字存儲(chǔ)式示波器,實(shí)時(shí)采樣可以達(dá)到65 MHz,通過(guò)等效采樣還可以提高示波器的采樣頻率,并提高示波器的數(shù)字處理能力,降低示波器的成本,提高示波器的集成度。