段雄風(fēng),張 鵬
(1.中北大學(xué)儀器與電子學(xué)院,山西 太原 030051;2.中北大學(xué)電子測(cè)試技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,山西 太原 030051)
信號(hào)源能產(chǎn)生多種可調(diào)的激勵(lì)信號(hào),在電子電路、雷達(dá)遙測(cè)和軍工航天等領(lǐng)域有著廣泛的應(yīng)用[1]。對(duì)壓力信號(hào)采集測(cè)試儀器而言,一方面信號(hào)源為自測(cè)試設(shè)備模擬真實(shí)環(huán)境,產(chǎn)生測(cè)試波形信號(hào),用于測(cè)試設(shè)備的正常功能指標(biāo);另一方面高精度的信號(hào)源激勵(lì)被測(cè)系統(tǒng)用于校準(zhǔn)測(cè)試系統(tǒng)[2]。傳統(tǒng)的信號(hào)源輸出類型單一、精度低、誤差較大、電路設(shè)計(jì)冗雜。目前,大多采用直接數(shù)字式頻率合成器(direct digital synthesis,DDS)技術(shù)設(shè)計(jì)信號(hào)源系統(tǒng)。實(shí)現(xiàn)DDS信號(hào)生成的方案有2種。第一種是采用專用DDS芯片。這種方案控制簡(jiǎn)單、穩(wěn)定性高,但是波形數(shù)據(jù)在內(nèi)部存儲(chǔ)器中固化,無(wú)法充分滿足用戶的各種需求。第二種是在現(xiàn)場(chǎng)可編程門陣列(field programmable gate array,FPGA)中根據(jù)需求實(shí)時(shí)產(chǎn)生任意可調(diào)波形。這種方案具有很強(qiáng)的靈活性[3]。
本文采用第二種方案,通過在FPGA中編程實(shí)現(xiàn)多功能高精度信號(hào)的發(fā)生(其中包括幾種常用的基本信號(hào)與調(diào)制信號(hào)),并可根據(jù)用戶需求通過上位機(jī)實(shí)時(shí)發(fā)送波形數(shù)據(jù)到FPGA,以產(chǎn)生任意波形的信號(hào)。在FPGA的可編程邏輯基礎(chǔ)上,該方案靈活使用DDS與有限長(zhǎng)單位沖激響應(yīng)(finite impulse response,F(xiàn)IR)濾波器的相關(guān)知識(shí)產(chǎn)權(quán)(intellectual property,IP)核,針對(duì)信號(hào)雜散的產(chǎn)生原因進(jìn)行分析處理,使輸出信號(hào)滿足高精度、低雜散的需求。另外,該方案通過高速串行計(jì)算機(jī)擴(kuò)展總線(peripheral component interconnect express,PCIe)標(biāo)準(zhǔn)接口傳輸指令和波形數(shù)據(jù),實(shí)現(xiàn)信號(hào)源的標(biāo)準(zhǔn)化和實(shí)時(shí)性,提供1種頻率分辨率高、易于集成和小型化的多功能精密信號(hào)源產(chǎn)品。該產(chǎn)品方便集成在信號(hào)采集系統(tǒng),用以輸出穩(wěn)定信號(hào),并用于儀器自測(cè)試。
基于FPGA實(shí)現(xiàn)的信號(hào)源系統(tǒng)含上位機(jī)、主控制器FPGA、信號(hào)數(shù)模(digital to analog,D/A)轉(zhuǎn)換和信號(hào)輸出調(diào)理部分。上位機(jī)對(duì)要輸出的波形數(shù)據(jù)進(jìn)行量化,將量化后的數(shù)據(jù)和控制指令分別通過PCIe存入FPGA內(nèi)的波形存儲(chǔ)器和命令控制器,并采用控制頻率控制字與相位控制字對(duì)查找表尋址提取對(duì)應(yīng)數(shù)據(jù),再由數(shù)字模擬轉(zhuǎn)換器(digital to analog converter,DAC)和輸出調(diào)理電路轉(zhuǎn)為要求電壓范圍內(nèi)的模擬信號(hào)[4]。PCIe的物理接口采用金手指插入主機(jī)卡槽。邏輯功能通過Xilinx公司提供的XDMA IP核實(shí)現(xiàn),可配置AXI4-Lite 選項(xiàng)來(lái)訪問用戶邏輯側(cè)寄存器。信號(hào)源系統(tǒng)整體如圖1所示。
圖1 信號(hào)源系統(tǒng)整體框圖
當(dāng)信號(hào)源工作時(shí),設(shè)定的頻率控制字FW決定了輸出信號(hào)的頻率,而相位控制字PW決定了信號(hào)的初始相位。信號(hào)的最小頻率分辨率受相位累加器位數(shù)的影響,滿足式(1):
(1)
當(dāng)系統(tǒng)基準(zhǔn)時(shí)鐘不變、累加器的位數(shù)一定時(shí),DDS輸出信號(hào)的最小頻率分辨率不會(huì)改變[5]。通常,為了獲得較好的頻率分辨率,會(huì)將相位N設(shè)置得比較大。
在FPGA的信號(hào)發(fā)生邏輯設(shè)計(jì)中,波形隨機(jī)存取存儲(chǔ)器(ramdom access memory,RAM)存儲(chǔ)的是連續(xù)數(shù)字量,需要經(jīng)過D/A轉(zhuǎn)換才能輸出對(duì)應(yīng)的模擬信號(hào)[6]。為滿足設(shè)計(jì)需求,本文選擇TI公司的低功耗4通道DAC8544芯片搭建D/A轉(zhuǎn)換電路,以實(shí)現(xiàn)在初始化和復(fù)位時(shí)同步操作內(nèi)部的轉(zhuǎn)換器。該芯片采用并行輸出接口,轉(zhuǎn)換精度高達(dá)16位,內(nèi)部含有精密輸出放大器實(shí)現(xiàn)電壓輸出,并具有超低的串?dāng)_;采用雙電源供電,同時(shí)具有模擬和數(shù)字接地引腳,可以更好地控制返回電流,對(duì)輸出誤差影響較小。本文設(shè)計(jì)的D/A 轉(zhuǎn)換電路如圖2所示。
圖2 D/A轉(zhuǎn)換電路
DAC8544芯片通過外部參考電壓來(lái)設(shè)置DAC的輸出范圍。其計(jì)算式為:
(2)
式中:UOUT為轉(zhuǎn)換器輸出電壓,V;D為轉(zhuǎn)換器輸入數(shù)字量。
根據(jù)所設(shè)計(jì)的UREF+為+5 V、UREF-接地為0 V,可得DAC輸出范圍為0~5 V。輸入數(shù)據(jù)D經(jīng)并行數(shù)據(jù)線DAC_D0~DAC_D15進(jìn)入轉(zhuǎn)換器,輸出4路電壓信號(hào)VOUTA~VOUTD。
DAC8544芯片的雙極性電源中,VCC-5 V模擬電源由PCIe插槽提供,同時(shí)經(jīng)過SGM3204電壓逆變器后,有效提供VCC-5 V負(fù)極性電源。電源轉(zhuǎn)換電路如圖3所示。
圖3 電源轉(zhuǎn)換電路
為了獲得雙極性±5 V電壓輸出,要在輸出的UOUT信號(hào)后接1個(gè)運(yùn)算發(fā)大器OPA703,配置R1=R2=10 kΩ。此時(shí),雙極性輸出Uk(k=1,2,3,4)可由式(3)得到。
(3)
經(jīng)DAC轉(zhuǎn)換后的模擬信號(hào)需要經(jīng)過濾波處理,濾除輸出信號(hào)中不必要的諧波分量[7]。本設(shè)計(jì)采用7階橢圓濾波器,截止頻率為10 MHz。該濾波器具有陡峭的衰減性,過度效果良好。雙極性輸出電路如圖4所示。
圖4 雙極性輸出電路
信號(hào)源系統(tǒng)的軟件設(shè)計(jì)內(nèi)容包括PCIe接口邏輯、信號(hào)發(fā)生邏輯、雜散處理與上位機(jī)軟件。根據(jù)PCIe傳輸協(xié)議和DDS信號(hào)發(fā)生原理,在VIVADO軟件中采用Verilog硬件描述語(yǔ)言進(jìn)行設(shè)計(jì)。該系統(tǒng)采用Xilinx公司7系列的XC7K325T作為主芯片,具有豐富的邏輯存儲(chǔ)資源[8]。在VIVADO開發(fā)平臺(tái)中,可調(diào)用內(nèi)部提供的XDMA IP核、RAM IP核與DDS Compiler IP核,從而降低系統(tǒng)的設(shè)計(jì)難度。
PCIe接口用于實(shí)現(xiàn)上位機(jī)與FPGA之間的高速數(shù)據(jù)和命令的傳輸。本方案采用PCIe2.0 ×8接口,理論傳輸帶寬可達(dá)到4 GB/s。Xilinx公司提供的XDMA IP核不僅對(duì)數(shù)據(jù)鏈路層和物理層的數(shù)據(jù)包進(jìn)行了封裝,而且處理了事務(wù)層傳輸線脈沖發(fā)生器(transmission line pulse,TLP)的組包解包。XDMA IP核的接口中,M_AXI和 M_AXI_ LITE接口都是數(shù)據(jù)傳輸接口。前者一般與先入先出(first input first ouput,FIFO)隊(duì)列或雙倍速率(double data rate,DDR)通信。后者一般用于配置信息,將數(shù)據(jù)存于雙極隨機(jī)存取存儲(chǔ)器(bipolar access memory,BRAM)中。
對(duì)XDMA IP核進(jìn)行配置時(shí),選擇×8通道、AXI接口數(shù)據(jù)位寬為128位、參考時(shí)鐘為100 MHz。啟動(dòng)一次直接存儲(chǔ)器訪問(direct memory access,DMA)操作,總線開始傳輸多個(gè)非連續(xù)存儲(chǔ)塊數(shù)據(jù),并在主機(jī)上對(duì)寄存器進(jìn)行處理[9]??刂菩畔⑼ㄟ^M_AXI_ LITE接口映射到BRAM用戶邏輯地址。波形數(shù)據(jù)下發(fā)到DAC8544之前,通過M_AXI接口接到異步FIFO緩存,以保證信號(hào)發(fā)送的連續(xù)性。
在本文設(shè)計(jì)中,基本信號(hào)類型的發(fā)生需按地址查詢RAM中的波形數(shù)據(jù)表,調(diào)用Block Memory Generator IP核,申請(qǐng)1塊BRAM地址空間。1個(gè)周期的波形數(shù)據(jù)以.coe文件存儲(chǔ)在該空間中。同時(shí),使用Xilinx公司的DDS IP核。DDS IP核集成了相位發(fā)生器和正余弦查找表的功能,可以設(shè)置成單獨(dú)或組合使用,能產(chǎn)生連續(xù)的相位值尋址存儲(chǔ)RAM。
調(diào)制波形的實(shí)現(xiàn)原理是在高頻的載波信號(hào)中攜帶根據(jù)幅度或頻率變化的低頻信息[10]。調(diào)幅(ampltude modulation,AM)采用雙DDS結(jié)構(gòu),分別產(chǎn)生調(diào)制信號(hào)Modulate_out與載波信號(hào)Carrier_out。調(diào)制信號(hào)經(jīng)乘法器IP核與調(diào)制深度depth相乘,再經(jīng)加法器IP核與直流分量A相加。調(diào)制深度在0~1之間,以0.1為間隔分為11個(gè)等級(jí)。加法器輸出的信號(hào)與載波信號(hào)相乘就可以得到AM調(diào)制波形。該調(diào)制波形的幅度變化表示了調(diào)制信號(hào)內(nèi)容,而其頻率為載波信號(hào)頻率。
AM信號(hào)實(shí)現(xiàn)邏輯如圖5所示。
圖5 AM信號(hào)實(shí)現(xiàn)邏輯框圖
調(diào)頻(frequency modulation,F(xiàn)M)調(diào)制波形的頻率是隨調(diào)制信號(hào)幅度變化而改變的,且幅值保持不變。設(shè)計(jì)時(shí),設(shè)置FM調(diào)制波形的中心頻率f0為5 MHz,最大頻偏fd為4 MHz。該中心頻率即為載波的頻率。當(dāng)輸入調(diào)制信號(hào)幅度最大(即+215)時(shí),將其與頻偏設(shè)置值相乘,輸出FM頻率最大值為9 MHz。反之,當(dāng)輸入調(diào)制信號(hào)幅度最小(即-215)時(shí),輸出FM頻率最小值為1 MHz。頻偏后的頻率控制字經(jīng)加法器運(yùn)算輸出給DDS IP核,得到頻率變化的FM調(diào)制波。FM信號(hào)實(shí)現(xiàn)邏輯如圖6所示。
圖6 FM信號(hào)實(shí)現(xiàn)邏輯框圖
任意波形的實(shí)現(xiàn)均采用上位機(jī)下發(fā)自定義波形數(shù)據(jù)。上位機(jī)將自定義的波形數(shù)據(jù)存入主機(jī)寄存器,通過PCIe以DMA方式下發(fā)到用戶邏輯側(cè)寄存器,存入RAM后經(jīng)過DAC輸出。信號(hào)源的控制寄存器地址說明如表1所示。
表1 寄存器地址說明
經(jīng)過分析,DDS信號(hào)源系統(tǒng)的雜散源自相位截?cái)嘁约胺盗炕倪^程。為了獲得較好的頻率分辨率,本文設(shè)計(jì)系統(tǒng)時(shí)鐘為100 MHz、DDS查找表相位寬度N為32位,再根據(jù)式(1)可得頻率最小分辨率為0.023 Hz。但由于太高的相位寬度占用了很大的存儲(chǔ)容量,會(huì)消耗芯片存儲(chǔ)資源,本文使用相位截?cái)?,選擇累加器的高16位進(jìn)行波形數(shù)據(jù)表的尋址。由于相位截?cái)嘣斐煽蓪ぶ返南辔稽c(diǎn)變少,此時(shí)便引入了相位截?cái)嗾`差,使得輸出波形引入雜散,并且分析相位誤差序列可知其與輸出的雜散均具有周期性[11]。另外,波形查找表中存儲(chǔ)的是二進(jìn)制數(shù)據(jù),需要量化為波形的幅值。而在一般DDS方案中,并非波形存儲(chǔ)器中的每個(gè)單獨(dú)點(diǎn)都在結(jié)果輸出波形中表示。相反,DDS輸出波形的最佳近似值部分或完全跳過了波形中的小特征,嚴(yán)重時(shí)會(huì)導(dǎo)致失真。
針對(duì)相位截?cái)嘁鸬碾s散具有周期性的特點(diǎn),Xilinx提出1種相位抖動(dòng)解決方案,即在DDS IP核中提供1種隨機(jī)化信號(hào),打破地址錯(cuò)誤的規(guī)律性,提供約12 dB的無(wú)雜散動(dòng)態(tài)范圍[12]。設(shè)計(jì)者只需在配置IP核時(shí),在系統(tǒng)參數(shù)的噪聲整形選項(xiàng)中選中增加相位抖動(dòng),即可極大程度地提高輸出信號(hào)的質(zhì)量。針對(duì)幅值量化引起的雜散,本設(shè)計(jì)方案采用了插值濾波處理,使用Xilinx提供的FIR IP核,可對(duì)波形存儲(chǔ)器輸出的值實(shí)時(shí)內(nèi)插,并實(shí)現(xiàn)低通濾波。FIR IP核中可導(dǎo)入帶有濾波器設(shè)置參數(shù)的.coe文件。此文件可由MATLAB軟件中的Filter Designer產(chǎn)生。在軟件中的參數(shù)上選取采樣頻率為200 MHz、截止頻率為10 MHz、濾波窗函數(shù)為Hamming、插值倍數(shù)為10倍。所設(shè)計(jì)的FIR歸一化幅頻特性曲線如圖7所示。
圖7 FIR 歸一化幅頻特性曲線
插值濾波過后的波形數(shù)據(jù)在不提高芯片分辨率的情況下,既節(jié)省了存儲(chǔ)容量,又能通過DAC精確地反映信號(hào)的頻率特性。
上位機(jī)軟件基于LabVIEW平臺(tái)設(shè)計(jì),可實(shí)現(xiàn)人機(jī)交互功能。通過PCIe下發(fā)指令和波形數(shù)據(jù),在選中并初始化信號(hào)源測(cè)試板卡后,對(duì)是否運(yùn)行程序作出判斷。若在運(yùn)行狀態(tài)下,則選擇信號(hào)輸出通道、信號(hào)的波形種類及幅值頻率等參數(shù)。參數(shù)數(shù)據(jù)存放在規(guī)定地址的主板寄存器中。如4個(gè)通道的輸出電壓幅值寄存器地址范圍為0x20、0x24、0x28、0x2C,對(duì)應(yīng)地址處寫入數(shù)值0~0x7FFF,即可輸出幅值為0~5 V的電壓。寄存器中的數(shù)據(jù)通過PCIe的DMA操作,直接與FPGA的存儲(chǔ)單元進(jìn)行傳輸,從而控制信號(hào)源的輸出。上位機(jī)設(shè)計(jì)流程如圖8所示。
圖8 上位機(jī)設(shè)計(jì)流程圖
在上位機(jī)界面中,用戶使用鼠標(biāo)點(diǎn)擊布爾開關(guān)使能輸出通道,通過鍵盤可寫入幅值、頻率等參數(shù)值。用戶選擇板卡及通道并設(shè)定參數(shù)后,可以在波形顯示界面預(yù)覽輸出信號(hào)特征,以便使用。
PCIe具有高帶寬、高速數(shù)據(jù)傳輸能力的特點(diǎn),通過上位機(jī)向FPGA發(fā)起DMA寫操作,發(fā)送含目的地址、傳輸大小及數(shù)量信息的TLP配置寄存器。配置信息完成后,在上位機(jī)終端測(cè)試將一個(gè)大小為8 MB的bin文件傳輸?shù)紽PGA,同時(shí)再以二進(jìn)制文件形式讀取文件。經(jīng)測(cè)試,8 388 608 B大小的數(shù)據(jù)寫入時(shí)間為0.002 556 s,寫數(shù)據(jù)速度為3 129.9 MB/s。此外,讀取文件中的數(shù)據(jù)與發(fā)送數(shù)據(jù)一致,表明數(shù)據(jù)傳輸正確,具有很高的完整性。
將設(shè)計(jì)的信號(hào)源輸出端連接到示波器后進(jìn)行觀察,可以在示波器上觀察到波形輸出。頻率控制字FW設(shè)置為42 950時(shí)的正弦波,則測(cè)得波形輸出頻率為近似1 KHz,輸出幅值為近似5 V,且波形無(wú)明顯失真。
通過波形輸出驗(yàn)證,本文設(shè)計(jì)的信號(hào)源輸出頻率范圍為10 Hz~10 MHz,三角波與鋸齒波頻率最高為5 MHz,在范圍內(nèi)無(wú)明顯失真情況。分別設(shè)置頻率控制字為42 950、85 900、214 748、429 497,正弦波輸出頻率在1 kHz、2 kHz、5 kHz、10 kHz連續(xù)變化。正弦波變頻輸出曲線如圖9所示。
圖9 正弦波變頻輸出曲線
分析各頻率點(diǎn)測(cè)量值與設(shè)置值的誤差,雖然相對(duì)誤差隨頻率變化波動(dòng),但都維持在0.01%~0.05%之間,精度高于傳統(tǒng)信號(hào)源。正弦波輸出頻率誤差分析如表2所示。
表2 正弦波輸出頻率誤差分析
使用ROHDE&SCHWARZ示波器對(duì)信號(hào)的無(wú)雜散動(dòng)態(tài)范圍進(jìn)行測(cè)試,使信號(hào)源輸出5 MHz正弦信號(hào)。近端雜散測(cè)試范圍在100 MHz以內(nèi),無(wú)雜散動(dòng)態(tài)范圍可達(dá)76.96 dB。輸出信號(hào)雜散測(cè)試結(jié)果如表3所示。
表3 輸出信號(hào)雜散測(cè)試結(jié)果
本文設(shè)計(jì)的高精度低雜散信號(hào)源基于FPGA與DAC8544芯片,利用Xilinx豐富的IP核資源,實(shí)現(xiàn)了4通道的任意信號(hào)輸出。該信號(hào)源擁有多種波形輸出類型及幅度頻率可調(diào)的功能,通過PCIe發(fā)送波形數(shù)據(jù),具備根據(jù)用戶要求實(shí)時(shí)輸出信號(hào)的能力。在信號(hào)發(fā)生邏輯中,創(chuàng)新使用FIR插值濾波技術(shù),采用DDS IP核設(shè)計(jì),利用相位抖動(dòng)技術(shù),輸出信號(hào)頻譜質(zhì)量較好。輸出信號(hào)頻率誤差比一般信號(hào)源誤差更小、精度更高,同時(shí)電路體積與復(fù)雜程度更小。經(jīng)試驗(yàn)驗(yàn)證,該信號(hào)源的功能豐富、使用方便,具有PCIe標(biāo)準(zhǔn)化接口,可制成板卡,集成于儀器儀表,用于壓力測(cè)試系統(tǒng),為測(cè)試系統(tǒng)提供模擬信號(hào)源。目前,該信號(hào)源模塊已實(shí)現(xiàn)產(chǎn)品設(shè)計(jì),并已應(yīng)用于某沖擊波壓力測(cè)試儀。但本文設(shè)計(jì)還存在一些不足之處,后續(xù)研究還可以考慮提升輸出信號(hào)的帶寬,同時(shí)保證高頻輸出信號(hào)的頻譜質(zhì)量。