文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2015)01-0057-03
0 引言
在現(xiàn)代的科學(xué)實(shí)驗(yàn)、雷達(dá)、通信、測試與控制系統(tǒng)中,往往需要高精度的多路數(shù)字脈沖信號(hào)[1]作為測試或者時(shí)序控制信號(hào)。目前科研領(lǐng)域使用的數(shù)字可編程數(shù)字延遲脈沖發(fā)生器有DG535、BNC Model555以及DEL PDG-2510等進(jìn)口儀器,其中應(yīng)用最多的是DG535。DG535作為一種多用途脈沖發(fā)生器,精度高達(dá)5 ps,延遲范圍達(dá)到0~999.999 999 999 995 s,可輸出TTL、ECL、NIM和VAR 4種電平且幅度與極性可調(diào),但是DG535僅有4路延遲輸出(脈寬固定),如要同時(shí)調(diào)節(jié)脈寬,只能輸出兩路脈沖,適合于需要通道數(shù)目不多的實(shí)驗(yàn)領(lǐng)域,且價(jià)格高。綜合考慮,本文采取單片機(jī)+可編程邏輯器件的方案,設(shè)計(jì)一套多路可編程數(shù)字延遲脈沖發(fā)生器系統(tǒng)。該系統(tǒng)可同時(shí)輸出7路脈沖,通過串口與上位機(jī)連接后,可以實(shí)現(xiàn)輸出脈沖的延遲和寬度以及頻率的實(shí)時(shí)調(diào)節(jié),且能夠多臺(tái)設(shè)備級(jí)聯(lián)使用,必要時(shí)還可以脫機(jī)工作。
1 系統(tǒng)設(shè)計(jì)方案
多通道數(shù)字可編程脈沖發(fā)生器典型輸出信號(hào)模式如圖1所示。T0是基準(zhǔn)門控信號(hào),其他通道CHn(n為1~6)輸出由T0信號(hào)的上升沿觸發(fā)。系統(tǒng)主要由單片機(jī)、可編程邏輯器件、可編程延遲線和脈沖驅(qū)動(dòng)電路組成。
1.1 可編程邏輯器件
目前主流的可編程邏輯器件主要是復(fù)雜可編程邏輯器件(CPLD)和現(xiàn)場可編程門陣列(FPGA)。FPGA的內(nèi)部資源多為觸發(fā)器,適合大規(guī)模的時(shí)序電路;而CPLD內(nèi)部寄存器資源豐富,適合組合邏輯多的應(yīng)用。CPLD內(nèi)部邏輯塊互聯(lián)是集總式的,其特點(diǎn)是等延時(shí),設(shè)計(jì)完成的電路延時(shí)固定,且可預(yù)測。FPGA內(nèi)部互聯(lián)為分布式,延時(shí)和布局有關(guān)。FPGA大部分是基于SRAM編程,編程信息在系統(tǒng)斷電時(shí)丟失,每次上電后需從器件外部將編程數(shù)據(jù)重新寫入SRAM,電路也重新布局從而導(dǎo)致延遲不固定,無法預(yù)測。
本系統(tǒng)最終采用Altera公司的MAXⅡ系列CPLD-EPM1270T144C3N[2]作為數(shù)字定時(shí)器,其包含1 270個(gè)邏輯單元(LE),典型等價(jià)宏單元數(shù)目為980,速度等級(jí)為3級(jí),支持高達(dá)300 MHz的內(nèi)部時(shí)鐘頻率,其I/O口擺率和驅(qū)動(dòng)能力均可編程,并且可以配置為施密特觸發(fā)器從而提高信號(hào)完整性,使用非常方便。時(shí)鐘源選用100 MHz的外部有源晶振以減小時(shí)鐘抖動(dòng)從而改善時(shí)序品質(zhì)。
可編程邏輯器件的編程語言采用VerilogHDL[3],它是一種基本語法與C語言非常類似的硬件描述語言。設(shè)計(jì)和仿真平臺(tái)分別選擇QuartusⅡ和ModelSim-Altera。前者是Altera公司開發(fā)的PLD設(shè)計(jì)軟件,后者則是Mentor Graphics公司專為Altera開發(fā)的仿真工具,可以與QuartusⅡ下的工程文件無縫對(duì)接,極大提升仿真效率。
1.2 可編程延遲線
高精度的延遲調(diào)節(jié)通常采用可編程延遲線IC,本系統(tǒng)采用的是Maxim公司的DS1020-15[4]??删幊萄舆t線是一種數(shù)字模擬混合電路,它對(duì)于輸入脈沖的延時(shí)作用由其內(nèi)部的數(shù)字寄存器和斜坡產(chǎn)生器決定。DS1020延遲產(chǎn)生結(jié)構(gòu)如圖2所示。
DS1020是一款8位可編程延時(shí)電路,共有256級(jí)延時(shí),步進(jìn)調(diào)節(jié)為0.15 ns,它可以通過3線串行或并行模式來編程。DS1020工作時(shí)序如圖3所示。圖3中的輸入是待延遲的脈沖信號(hào),參考電壓Vref是其8比特的輸入寄存器(8-bit input register)經(jīng)過DAC后的電壓值。當(dāng)輸入端出現(xiàn)上升沿時(shí),上方的斜坡發(fā)生器開始工作,輸出由低至高逐漸上升的電壓;當(dāng)此電壓值跨越參考電壓Vref后,上方的比較器輸出產(chǎn)生由低至高的翻轉(zhuǎn),使鎖存器輸出高電平。輸入信號(hào)的下降沿到達(dá)之后,下方的斜坡產(chǎn)生器開始工作,待其輸出電壓跨越Vref后,下方的比較器輸出低電平翻轉(zhuǎn),復(fù)位鎖存器輸出低電平。
分析DS1020延遲電路工作原理可知,如果脈沖高電平寬度小于所設(shè)的延遲時(shí)間值tD,則上升沿斜坡產(chǎn)生器輸出電壓沒有足夠時(shí)間充電至Vref,致使延遲失效;另外輸入脈沖高電平寬度必須大于所設(shè)延遲時(shí)間。
1.3 系統(tǒng)硬件構(gòu)成
本系統(tǒng)硬件主要由ATmega8A[5]、EPM1270T144C3N、DS1020、ADM3251E和鍵盤等模塊構(gòu)成,如圖4所示。
單片機(jī)負(fù)責(zé)系統(tǒng)控制,通過EPM1270對(duì)輸出脈沖的脈寬和延遲進(jìn)行配置,通過DS1020對(duì)輸出脈沖延遲進(jìn)行精細(xì)調(diào)節(jié),通過RS232與上位機(jī)PC通信,也可脫機(jī)后改由鍵盤控制操作。除T0外,本系統(tǒng)共有6路子通道輸出,延遲和脈沖寬度的最小分度均為10 ns,能夠勝任大部分應(yīng)用場合。為了適應(yīng)對(duì)延遲精度有更高要求的場合,增加兩路延遲細(xì)調(diào)環(huán)節(jié)。
2 系統(tǒng)軟件
2.1 單片機(jī)與CPLD的通信
單片機(jī)ATmega8A內(nèi)部帶有兩線串行接口TWI模塊,支持高達(dá)400 kHz的數(shù)據(jù)傳輸率,只需稍加配置即可與下游器件CPLD通信。CPLD使用QuartusⅡ軟件的宏模塊工具M(jìn)agaWizrad Plug-In Manager生成虛擬I2C接口,也可手動(dòng)編寫程序模擬I2C接口完成與單片機(jī)的通信[6]。本系統(tǒng)采用手動(dòng)編程以模擬I2C接口通信,通信速率為40 kHz。控制程序主要任務(wù)是起始信號(hào)、結(jié)束信號(hào)的命令和檢測、數(shù)據(jù)的接收等。I2C模塊結(jié)構(gòu)如圖5所示。
CPLD的I2C模塊時(shí)鐘源CLK_I2C為100 MHz,采用3個(gè)寄存器REG1、REG2和REG3來緩沖從SDA讀入的電平值。當(dāng)時(shí)鐘線SCL為低電平時(shí),3個(gè)寄存器全部變?yōu)楦咦钁B(tài),當(dāng)SCL為高電平時(shí), 數(shù)據(jù)線SDA上的電平值會(huì)依次從REG1傳遞至REG3。起始、結(jié)束信號(hào)甄別模塊內(nèi)部主要是組合邏輯電路,根據(jù)SCL、REG1和REG3的電平鑒別出起始和結(jié)束信號(hào)。采用3個(gè)寄存器以防止干擾信號(hào),即當(dāng)SCL為高電平時(shí)SDA的低電平持續(xù)3個(gè)時(shí)鐘才認(rèn)為起始信號(hào)到來。數(shù)據(jù)處理模塊在起始信號(hào)和結(jié)束信號(hào)的控制下從數(shù)據(jù)線SDA接收數(shù)據(jù),并從接收到的一連串?dāng)?shù)據(jù)中解析出命令和數(shù)據(jù)送至下級(jí)處理模塊。
2.2 CPLD脈沖信號(hào)的產(chǎn)生
本系統(tǒng)有兩種觸發(fā)方式:內(nèi)部觸發(fā)和外部觸發(fā)。外觸發(fā)信號(hào)來自于外部同步設(shè)備,內(nèi)觸發(fā)信號(hào)則由CPLD內(nèi)部提供。系統(tǒng)脈沖波形發(fā)生結(jié)構(gòu)如圖6所示。
圖6中,主通道模塊負(fù)責(zé)選擇合適的觸發(fā)模式,并且產(chǎn)生內(nèi)觸發(fā)信號(hào)。REG_DELAY是27位的延遲時(shí)間寄存器,REG_WIDTH是27位的脈沖寬度時(shí)間寄存器,計(jì)數(shù)器模塊內(nèi)部是一個(gè)27位計(jì)數(shù)器,如此高位數(shù)的計(jì)數(shù)器占用了CPLD大部分資源,為了節(jié)省資源,采用分時(shí)復(fù)用的方法完成延遲和脈寬時(shí)間的計(jì)數(shù)。具體工作過程為:使能計(jì)數(shù)器模塊后,觸發(fā)信號(hào)的上升沿跳變會(huì)使Delay_en信號(hào)置位,計(jì)數(shù)器模塊裝入REG_LEDAY中的數(shù)據(jù)并開始計(jì)數(shù),子通道輸出低電平。計(jì)數(shù)達(dá)到延遲時(shí)間值后子通道輸出翻轉(zhuǎn)為高電平,Delay_en信號(hào)清零,同時(shí)Width_en信號(hào)置位,計(jì)數(shù)器模塊裝入REG_WIDTH中的數(shù)據(jù)并開始計(jì)數(shù)。計(jì)數(shù)達(dá)到脈沖寬度值后輸出翻轉(zhuǎn)為低電平,同時(shí)With_en信號(hào)清零,Delay_en置位以等待下一次觸發(fā),并發(fā)送一路脈沖完成信號(hào)至主通道模塊。子通道輸出的脈沖信號(hào)經(jīng)過DS1020的精細(xì)延遲調(diào)節(jié)后再由驅(qū)動(dòng)電路增強(qiáng)驅(qū)動(dòng)能力后成為最終輸出。
2.3 上位機(jī)控制軟件
脈沖發(fā)生器通過外觸發(fā)可級(jí)聯(lián)工作,控制多達(dá)十余臺(tái)設(shè)備同步工作,連接各設(shè)備的電纜可達(dá)數(shù)十米,例如一個(gè)基體輔助激光解吸/電離飛行時(shí)間質(zhì)譜儀(TOF)系統(tǒng)中有激光器、脈沖電源等高壓強(qiáng)電裝置,其浪涌幅度可達(dá)上千伏,可能會(huì)損壞由RS232與脈沖發(fā)生器連接的PC,其通信接口采用全隔離RS232通信芯片ADM3251E,可用于各種復(fù)雜而惡劣的電氣環(huán)境。
上位機(jī)控制臺(tái)采用C語言編寫的基于API的Windows程序,主通道、各個(gè)子通道和延遲細(xì)調(diào)的參數(shù)均可調(diào)整,觸發(fā)方式和計(jì)算機(jī)串口號(hào)均可隨時(shí)切換,每路子通道的參數(shù)可以單獨(dú)裝載也可一鍵裝載,而且各個(gè)子通道配備獨(dú)立開關(guān)。該控制臺(tái)還可以把當(dāng)前下位機(jī)的工作狀態(tài)保存起來至本地或者下位機(jī)存儲(chǔ)區(qū),并且能夠一鍵讀取本地或者下位機(jī)保存的配置文件?!肮ぷ鳡顟B(tài)”顯示區(qū)用來實(shí)時(shí)顯示下位機(jī)當(dāng)前狀態(tài),分別為:未連接、待機(jī)和工作中。用戶可以通過“工作”和“停止”按鈕來啟動(dòng)和關(guān)閉下位機(jī)。
3 系統(tǒng)測試
考慮到可能的現(xiàn)場強(qiáng)流設(shè)備干擾,所有7路數(shù)字脈沖經(jīng)由驅(qū)動(dòng)電路輸出,增加箝位和短路保護(hù)。脈沖高度最大5 V,可有效驅(qū)動(dòng)50 ?贅負(fù)載,短路電流達(dá)50 mA。本設(shè)備輸出端從左至右依次為主通道T0、子通道CH1~CH6共7個(gè)輸出通道。其中子通道CH5和通道CH6帶有可編程的延遲細(xì)調(diào),細(xì)調(diào)步長為0.15 ns,最大為255×0.15=38.25 ns。主通道周期T0:2~134 217 728,步長精度100 ns。子通道延遲:0~134 217 728,步長精度10 ns。子通道脈寬:1~134 217 728,步長精度10 ns。
圖7是由數(shù)字熒光示波器DPO5204采集到的主通道TO(圖中C1所示)和子通道(圖中C2所示)的波形圖。圖中顯示系統(tǒng)工作頻率為200 Hz,延遲設(shè)置為零,脈寬設(shè)置為10 ns,上升沿時(shí)間(Rising Time)平均值為3.42 ns。子通道CH1-6相對(duì)于主通道T0的固有延遲時(shí)間,其平均值為710 ps,抖動(dòng)標(biāo)準(zhǔn)差為60 ps。
數(shù)字延遲脈沖發(fā)生器的重要參數(shù)是各子通道輸出脈沖相對(duì)于TO主通道觸發(fā)脈沖的延遲時(shí)間精度,系統(tǒng)誤差主要來自:系統(tǒng)PCB布線、時(shí)鐘誤差、器件溫漂、DS1020的誤差等。系統(tǒng)中CPLD輸出的脈沖電平為3.3 V LVTTL電平,通過電平轉(zhuǎn)換芯片LVC3254后再由驅(qū)動(dòng)器輸出。DS1020的延遲時(shí)間由內(nèi)部的斜坡發(fā)生器產(chǎn)生,對(duì)電源噪聲和高速開關(guān)噪聲十分敏感[4],其電源入口處須用1 ?滋F電容濾波,接地引腳與數(shù)字地平面隔開。輸出波形失真主要是由阻抗不匹配引起的多次反射造成的“振鈴”噪聲,以及相鄰信號(hào)線的串?dāng)_。CPLD的引腳間距僅10 mil,相鄰傳輸線上的開關(guān)動(dòng)作會(huì)產(chǎn)生明顯的串?dāng)_攻擊“噪聲”[7]。
圖8是該系統(tǒng)用于一個(gè)典型飛行時(shí)間質(zhì)譜儀(TOF)的脈沖時(shí)序圖。
圖8中CH1~5分別為驅(qū)動(dòng)樣品噴氣閥、激光器、脈沖電源、偏轉(zhuǎn)電極和數(shù)據(jù)采集的控制脈沖。首先CH1打開噴氣閥門開始噴入樣品氣體,一定時(shí)間(例如200 ?滋s)后氣體到達(dá)指定位置,此時(shí)CH2啟動(dòng)激光器電離氣體并由CH3啟動(dòng)脈沖電源給離子加速,再經(jīng)過一定時(shí)間(例如300 ?滋s)后由CH4啟動(dòng)偏轉(zhuǎn)電極控制離子軌道,最后離子到達(dá)信號(hào)采集板CH5啟動(dòng)數(shù)據(jù)采集。
4 結(jié)論
脈沖發(fā)生器是現(xiàn)代測控領(lǐng)域里不可缺少的設(shè)備,本系統(tǒng)采用MCU+CPLD的方法設(shè)計(jì)出一款數(shù)字可編程延遲脈沖發(fā)生器,實(shí)用可靠。本系統(tǒng)可同步輸出7個(gè)通道脈沖方波(最大5 V), 最小延時(shí)分辨為0.15 ns,重復(fù)觸發(fā)周期最大可達(dá)13 s、脈沖輸出延遲、脈寬調(diào)節(jié)最大可達(dá)1.3 s,并提供4種時(shí)序觸發(fā)方式。
目前該系統(tǒng)已成功應(yīng)用于中科院北京化學(xué)所、合肥國家同步輻射實(shí)驗(yàn)室、中科院合肥物質(zhì)科學(xué)研究院等多家高校和研究單位的飛行時(shí)間質(zhì)譜儀(TOF)系統(tǒng),用戶反映良好。
參考文獻(xiàn)
[1] 高輝,陳文通,王金祥,等.可編程器件在納秒級(jí)多通道數(shù)字延遲/脈沖發(fā)生器中的應(yīng)用[J].分析儀器,2002(3):13-17.
[2] Altera Corporation.MAXⅡ device handbook[Z].2008.
[3] Samir Palnitkar.VerilogHDL:A guide to design and syn-thesis[M].北京:電子工業(yè)出版社,2012.
[4] Maxim Corporation.DS1020 programmable 8-bit Silicon delay line[Z].1998.
[5] Atmel Corporation.8-bit Atmel Microcontroller with 8 KB in-system Programmable Flash ATmega8A[Z].2013.
[6] EDA先鋒工作室,王誠,蔡海寧,吳繼華,等.Altera FPGA/CPLD設(shè)計(jì)基礎(chǔ)篇[M].北京:人民郵電出版社, 2011.
[7] Eric Bogatin.Signal integrity:Simplified[M].北京:電子工業(yè)出版社,2005.