楊成禹,王琦,畢偉權(quán),肖作江
(1.長(zhǎng)春理工大學(xué) 光電工程學(xué)院,長(zhǎng)春 130022;2.吉林東光精密機(jī)械廠,長(zhǎng)春 130013)
青光眼是我國(guó)當(dāng)前重要致盲眼病之一,眼壓升高是其主要致病機(jī)理。眼科界倡導(dǎo)以采用空氣脈沖檢測(cè)法的非接觸式眼壓檢測(cè)取代接觸式眼壓檢測(cè)[1],來(lái)避免產(chǎn)生眼部感染、減少患者痛苦[2]。在非接觸式眼壓檢測(cè)系統(tǒng)中,角膜變形信號(hào)峰值時(shí)刻檢測(cè)在整個(gè)系統(tǒng)中起著至關(guān)重要的作用,決定系統(tǒng)最終的測(cè)量精度以及時(shí)間分辨率[3]。目前普遍采用由比較器、DAC以及ARM組成的角膜峰值時(shí)刻檢測(cè)系統(tǒng),由DAC與輸入信號(hào)經(jīng)比較器進(jìn)行比較,主控芯片負(fù)責(zé)DAC和比較器的電壓輸出控制以及峰值時(shí)刻判定,但由于程序順序運(yùn)行且器件自身具有一定延遲性產(chǎn)生延時(shí),導(dǎo)致獲得的峰值時(shí)刻不夠精準(zhǔn)。只有獲得兩次精準(zhǔn)的峰值時(shí)刻,才能準(zhǔn)確得到對(duì)應(yīng)時(shí)刻下來(lái)自壓力傳感器的眼壓壓力信號(hào),最終完成眼壓檢測(cè)??梢娫O(shè)計(jì)一套高精度的角膜變形信號(hào)尋峰系統(tǒng)對(duì)非接觸式眼壓檢測(cè)技術(shù)具有重要意義。FPGA具有并行處理、邏輯資源豐富等優(yōu)勢(shì)[4],可減少延時(shí)誤差且不需比較器及DAC電路部分便可完成峰值檢測(cè)功能,可減少硬件電路的設(shè)計(jì)。因此,提出一種基于FPGA的非接觸式角膜變形信號(hào)峰值時(shí)刻檢測(cè)系統(tǒng),選用Altera公司的Cyclone IV系列的EP4CE15F17C8N作為主控制器,通過(guò)FPGA狀態(tài)機(jī)來(lái)實(shí)現(xiàn)閾值比較尋峰算法,達(dá)到了檢測(cè)角膜變形信號(hào)峰值以及確定峰值精準(zhǔn)發(fā)生時(shí)刻的效果。
檢測(cè)系統(tǒng)主要由FPGA主控器、紅外發(fā)射器、紅外探測(cè)器、壓力傳感器、A/D轉(zhuǎn)換器以及SDRAM存儲(chǔ)器構(gòu)成。檢測(cè)系統(tǒng)整體結(jié)構(gòu)如圖1所示,紅外探測(cè)器放在紅外發(fā)射器相對(duì)測(cè)試軸線的對(duì)稱位置上,由氣體脈沖噴嘴噴出的氣體脈沖作用于角膜表面使角膜產(chǎn)生形變,發(fā)射器發(fā)出的光經(jīng)不同形態(tài)下的角膜反射后,由探測(cè)器接收反射光信號(hào)并進(jìn)行光電轉(zhuǎn)換,得到角膜變形信號(hào)。
圖1 檢測(cè)系統(tǒng)整體結(jié)構(gòu)
當(dāng)角膜被壓至平時(shí),探測(cè)器輸出角膜變形峰值信號(hào),此時(shí)壓力傳感器測(cè)得氣體脈沖將眼膜壓平的眼壓壓力,即為眼內(nèi)壓值。對(duì)角膜變形信號(hào)與壓力傳感器輸出的眼壓壓力信號(hào)進(jìn)行信號(hào)調(diào)理后,經(jīng)由A/D轉(zhuǎn)換器,將兩路轉(zhuǎn)換后的信號(hào)送入FPGA主控器,由FPGA進(jìn)行角膜變形信號(hào)的尋峰處理以及精準(zhǔn)峰值時(shí)刻的確定,并由SDRAM完成相關(guān)數(shù)據(jù)存儲(chǔ)。
對(duì)基于FPGA非接觸式角膜變形信號(hào)峰值時(shí)刻系統(tǒng)進(jìn)行功能模塊化的系統(tǒng)設(shè)計(jì),圖2為峰值時(shí)刻檢測(cè)原理,如圖2所示,系統(tǒng)主要分為角膜變形信號(hào)檢測(cè)模塊、A/D轉(zhuǎn)換模塊、FPGA主控模塊以及SDRAM存儲(chǔ)模塊。
圖2 峰值時(shí)刻檢測(cè)原理
其中,F(xiàn)PGA主控模塊采用了自頂向下的方法,依據(jù)功能劃分為時(shí)鐘分頻模塊、FIFO緩存模塊、峰值檢測(cè)模塊以及ADC時(shí)序控制模塊幾部分。利用Verilog HDL語(yǔ)言對(duì)相關(guān)模塊進(jìn)行設(shè)計(jì),采用Quartus II開發(fā)環(huán)境對(duì)各個(gè)模塊集成的頂層設(shè)計(jì)文件進(jìn)行綜合,實(shí)現(xiàn)對(duì)信號(hào)的采集和處理等操作。
角膜變形信號(hào)檢測(cè)模塊由紅外發(fā)射器、紅外探測(cè)器和信號(hào)調(diào)理電路幾部分組成。由于1550nm波長(zhǎng)位于人眼安全激光波段且處于大氣傳輸窗口是作為檢測(cè)眼部信息的理想波長(zhǎng),故前端紅外發(fā)射器和紅外探測(cè)器分別采用SEALAND公司發(fā)射波長(zhǎng)為1550nm的XL503320IRC以及接收波長(zhǎng)范圍在800-1750nm的XL2835PD13。前置運(yùn)放采用ADI公司20MHZ軌到軌高輸出電流放大器AD8616。角膜變形信號(hào)檢測(cè)電路如圖3所示,紅外探測(cè)器與運(yùn)放的連接方法屬于電流放大型,兩個(gè)輸入端同極性相連,電阻R1作為反饋電阻。XL2835PD13的光電流Isc為22μA,R1=100kΩ,輸出電壓可滿足A/D轉(zhuǎn)換器模擬量輸入范圍。紅外探測(cè)器工作在兩端無(wú)偏壓的光電池狀態(tài),此狀態(tài)下紅外探測(cè)器沒(méi)有反向偏置電壓,故暗電流非常小減小了輸出噪聲[5]。
圖3 角膜變形信號(hào)檢測(cè)電路
當(dāng)氣體脈沖噴嘴向角膜噴射氣體時(shí),紅外探測(cè)器接收到的光信號(hào)強(qiáng)弱隨角膜狀態(tài)的改變而發(fā)生變化,圖4為角膜變形過(guò)程。
圖4 角膜變形過(guò)程
其中圖4a)為初始狀態(tài)角膜,此時(shí)來(lái)自發(fā)射器的基本準(zhǔn)直光束在被彎曲的角膜表面反射后發(fā)散,使紅外探測(cè)器接收到的信號(hào)相對(duì)較弱。隨著空氣脈沖的推進(jìn),角膜產(chǎn)生圖4b)的第一壓平狀態(tài),光束由曲率半徑無(wú)限大的角膜表面反射后,使得更多的光到達(dá)紅外探測(cè)器形成峰值。空氣脈沖因慣性繼續(xù)推進(jìn),角膜會(huì)向內(nèi)凹陷形成圖4c)狀態(tài),紅外探測(cè)器接收到的光信號(hào)減弱。隨著空氣脈沖的消退,角膜恢復(fù)至圖4d)的第二壓平狀態(tài)產(chǎn)生第二次峰值信號(hào),最終恢復(fù)圖4e)的角膜自然狀態(tài)。故只有當(dāng)角膜處于兩次壓平狀態(tài)時(shí),探測(cè)器輸出電壓值最大的峰值信號(hào)。
A/D轉(zhuǎn)換芯片采用ADI公司12位逐次逼近型A/D轉(zhuǎn)換器AD7928,最高采樣速率為1Msps。AD7928轉(zhuǎn)換模塊如圖5所示,先選通VIN0通道對(duì)角膜變形信號(hào)進(jìn)行采集,再選通VIN1通道采集來(lái)自壓力傳感器的眼壓壓力信號(hào)。轉(zhuǎn)換結(jié)果通過(guò)DOUT串行輸出,采用標(biāo)準(zhǔn)SPI協(xié)議。系統(tǒng)采用12位ADC可達(dá)到1mv的測(cè)量精度,實(shí)現(xiàn)高精度角膜變形信號(hào)的轉(zhuǎn)換。
圖5 AD7928轉(zhuǎn)換模塊
2.3.1 時(shí)鐘分頻模塊
為確保ADC所采集到的數(shù)據(jù)能夠被FPGA實(shí)時(shí)接收并處理,F(xiàn)PGA的各功能模塊時(shí)鐘頻率和AD7928 1MHz的采樣率應(yīng)保持一致[6]。本模塊設(shè)計(jì)了一個(gè)由時(shí)鐘脈沖上升沿觸發(fā)的50分頻計(jì)數(shù)器,通過(guò)控制計(jì)數(shù)器循環(huán)計(jì)數(shù)來(lái)實(shí)現(xiàn)分頻,為FPGA內(nèi)部模塊提供了1MHz的工作時(shí)鐘;其次,由于AD7928需要20MHz的輸入時(shí)鐘源SCLK,通過(guò)調(diào)用FPGA內(nèi)部IP核PLL對(duì)50MHZ時(shí)鐘進(jìn)行2倍頻,再經(jīng)5分頻處理得到20MHz時(shí)鐘為ADC提供訪問(wèn)器件數(shù)據(jù)所需的串行時(shí)鐘以及轉(zhuǎn)換過(guò)程的時(shí)鐘源。
2.3.2 ADC時(shí)序控制模塊
由FPGA對(duì)AD7928進(jìn)行時(shí)序控制,協(xié)調(diào)FPGA控制A/D采樣時(shí)序[7],AD7928工作時(shí)序如圖6所示,A/D在通電后,首先FPGA需對(duì)AD7928的控制寄存器進(jìn)行操作,完成輸入通道選擇、輸入電壓范圍設(shè)置以及輸出數(shù)據(jù)編碼格式設(shè)置等,由時(shí)鐘分頻模塊提供20MHz輸入時(shí)鐘源SCLK,數(shù)據(jù)在SCLK的下降沿從DIN引腳載入ADC,F(xiàn)PGA在轉(zhuǎn)換和數(shù)據(jù)采集過(guò)程中對(duì)和串行時(shí)鐘信號(hào)進(jìn)行控制,輸入信號(hào)在的下降沿進(jìn)行采樣,而轉(zhuǎn)換同時(shí)在此處啟動(dòng),無(wú)流水線延遲,數(shù)據(jù)轉(zhuǎn)換一次需要16個(gè)周期,轉(zhuǎn)換后的數(shù)據(jù)從DOUT引腳送入FIFO緩存模塊。
圖6 AD7928工作時(shí)序
2.3.3 FIFO緩存模塊
AD7928每1μs輸出一個(gè)角膜變形信號(hào),空氣脈沖作用下角膜變形信號(hào)從產(chǎn)生到結(jié)束大概需要25ms,ADC輸出約25000個(gè)數(shù)據(jù)量。為防止數(shù)據(jù)量大引發(fā)數(shù)據(jù)丟失、提高系統(tǒng)工作效率設(shè)計(jì)了本模塊。通過(guò)配置FPGA內(nèi)部的IP核FIFO,設(shè)置位數(shù)為12,深度為32768的同步FIFO,可滿足25ms內(nèi)連續(xù)的角膜變形信號(hào)數(shù)據(jù)流進(jìn)行緩存,實(shí)現(xiàn)對(duì)數(shù)據(jù)先采集后處理的工作模式。圖7為FIFO緩存結(jié)構(gòu),clock是FIFO的寫/讀時(shí)鐘,與AD7928采樣時(shí)鐘一致,即為1MHz的工作時(shí)鐘,由時(shí)鐘分頻模塊提供該時(shí)鐘。data為FIFO輸入數(shù)據(jù),即AD7928的輸出數(shù)據(jù)。q為FIFO的輸出數(shù)據(jù),wrreq和rdreq分別為寫使能和讀使能,通過(guò)full/empty(滿/空標(biāo)志)控制數(shù)據(jù)的寫入/讀出。將寫滿的25ms數(shù)據(jù)送至峰值檢測(cè)模塊,由SDRAM存儲(chǔ)模塊完成FIFO輸出數(shù)據(jù)的存儲(chǔ)。
圖7 FIFO緩存結(jié)構(gòu)
2.3.4 峰值檢測(cè)模塊
考慮到角膜變形信號(hào)在采集過(guò)程中會(huì)夾雜一定的信號(hào)噪聲,可能產(chǎn)生“毛刺”或“假峰”影響尋峰精度[8],對(duì)FIFO緩存送入的數(shù)據(jù)通過(guò)數(shù)字濾波進(jìn)行預(yù)處理,采用異常值判斷濾波法,根據(jù)相鄰兩點(diǎn)數(shù)據(jù)無(wú)跳變的理論,比較相鄰兩次采樣值如變化超過(guò)閾值,則說(shuō)明為異常值,通過(guò)去除最近一個(gè)數(shù)據(jù)消除尖峰噪聲對(duì)峰值檢測(cè)的影響。圖8為角膜變形信號(hào)峰值,將角膜變形信號(hào)和眼壓壓力信號(hào)擬合在同一坐標(biāo)軸下,A1、A2為兩次角膜變形信號(hào)的峰值,P1、P2為對(duì)應(yīng)于兩次峰值時(shí)刻TI、T2的眼壓壓力信號(hào)。如果直接進(jìn)行尋峰檢測(cè)數(shù)據(jù)量較大,而且大部分?jǐn)?shù)據(jù)均為冗余數(shù)據(jù)[9],為減少FPGA處理數(shù)據(jù)量,提高處理速度,采用閾值比較尋峰算法排除掉離峰值電壓較遠(yuǎn)的低電壓浮動(dòng)。
圖8 角膜變形信號(hào)峰值
通過(guò)Verilog HDL編寫狀態(tài)機(jī)來(lái)實(shí)現(xiàn)峰值檢測(cè),圖9為RTL峰值檢測(cè)。在FPGA內(nèi)部設(shè)置兩個(gè)寄存器,分別存儲(chǔ)兩次角膜峰值信號(hào)。FIFO每1μs送入一個(gè)ad_adta,通過(guò)計(jì)數(shù)器對(duì)輸入信號(hào)進(jìn)行計(jì)數(shù)。首先對(duì)輸入信號(hào)進(jìn)行閾值比較,若大于所定閾值X1點(diǎn)的值時(shí)(如圖7所示),則初始化第一峰值寄存器,進(jìn)入峰值比較狀態(tài)并將輸入值存入該寄存器。若下個(gè)進(jìn)入的值大于該寄存器值,則將該值更新為寄存器值,否則該寄存器值不變。
圖9 RTL峰值檢測(cè)
依次判斷采集的信號(hào)值,直到輸入信號(hào)值小于寄存器值時(shí),判斷當(dāng)前寄存器值是否為有效峰值。如果此后到X2點(diǎn)之前的信號(hào)均呈下降狀態(tài),則該寄存器值為有效峰值;反之,由于有效峰值幅度較大,通過(guò)去掉幅值達(dá)不到要求的無(wú)效峰值得到ad_data_peak1,并通過(guò)計(jì)數(shù)器提取出峰值時(shí)刻time_peak1[10]。狀態(tài)轉(zhuǎn)移到對(duì)第二次峰值的檢測(cè),檢測(cè)機(jī)制與第一峰值檢測(cè)相同,將檢測(cè)得到ad_data_peak2存入第二峰值寄存器,并得到峰值時(shí)刻time_peak2。將得到的角膜峰值時(shí)刻值送入SDRAM存儲(chǔ)模塊內(nèi)進(jìn)行存儲(chǔ)。
對(duì)所獲得的角膜峰值時(shí)刻進(jìn)行誤差分析,不僅要考慮角膜變形信號(hào)測(cè)量過(guò)程中的高斯噪聲誤差[11],還要考慮A/D量化誤差所帶來(lái)的影響。設(shè)角膜變形真實(shí)信號(hào)s1(t)疊加高斯噪聲z1(t)后為:
A/D量化誤差與高斯噪聲不相關(guān),式(1)經(jīng)A/D量化誤差q1(n)疊加后為:
設(shè)AD7928位數(shù)為b位,量化寬度即為B=2-b,采用舍入處理,舍入量化噪聲q(n)的均值與方差分別為:
用Δλ表示角膜變形接收信號(hào)r1(n)與角膜變形真實(shí)信號(hào)s1(n)在量化噪聲引起的相位偏移。對(duì)s1(t)進(jìn)行傅里葉變換得S(k)=x(k)+jy(k)。記在最大譜線對(duì)應(yīng)的k為m,Δλ表達(dá)式為:
將信號(hào)的幅度記為A,由式(5)可以得到相位差的方差為:
記采樣次數(shù)為N,高斯白噪聲背景下角膜變形信號(hào)FFT相位差法估計(jì)誤差的方差的下限為:
峰值時(shí)間誤差Δτ可表示為:
角膜變形信號(hào)f為1MHz,AD7928的位數(shù)b=12,采樣次數(shù)N=3,SNR=15dB時(shí),得到角膜變形信號(hào)峰值時(shí)刻誤差結(jié)果為0.157μs,可知角膜變形信號(hào)峰值時(shí)刻檢測(cè)誤差小于0.2μs。
采用Micron公司的32Bit MT48LC4M32B2P-6作為SDRAM存儲(chǔ)芯片,SDRAM具有體積小、存儲(chǔ)空間大等優(yōu)點(diǎn)。通過(guò)FPGA對(duì)SDRAM狀態(tài)控制器進(jìn)行配置,SDRAM控制器針對(duì)SDRAM的指令操作特點(diǎn),為SDRAM提供同步命令接口和時(shí)序邏輯控制,采用讀、寫FIFO和讀寫邏輯控制模塊,優(yōu)化接口封裝[12]。SDRAM的每次寫操作可將數(shù)據(jù)存儲(chǔ)在指定位置,讀操作根據(jù)需求讀出指定位置的數(shù)據(jù),完成角膜變形信號(hào)以及角膜峰值時(shí)刻的寫入/讀出以及存儲(chǔ)。
為了驗(yàn)證本系統(tǒng)能夠完成對(duì)兩次峰值信號(hào)的提取以及確定兩次峰值時(shí)刻,使用Modelsim進(jìn)行了仿真,峰值檢測(cè)仿真結(jié)果如圖10所示。其中,clk為外部時(shí)鐘信號(hào),rst為復(fù)位信號(hào),clk_50為時(shí)鐘分頻模塊產(chǎn)生的1MHz時(shí)鐘,ad_adta為FIFO輸入信號(hào),ad_data_peak1和ad_data_peak2為兩次峰值信號(hào),time_peak1和time_peak2為兩次峰值信號(hào)對(duì)應(yīng)的峰值時(shí)刻。可見系統(tǒng)完成了從ad_data輸入信號(hào)中提取出兩次峰值信號(hào),ad_data_peak1和ad_data_peak2最終輸出為兩次峰值信號(hào),并由time_peak1和time_peak2輸出了兩次峰值信號(hào)對(duì)應(yīng)的時(shí)刻。
圖10 峰值檢測(cè)仿真結(jié)果
通過(guò)理論分析與仿真驗(yàn)證,基于FPGA實(shí)現(xiàn)的角膜變形信號(hào)峰值時(shí)刻檢測(cè)系統(tǒng)完成了對(duì)兩次峰值時(shí)刻的檢測(cè),對(duì)產(chǎn)生25ms左右的角膜變形信號(hào)可達(dá)到1μs的峰值檢測(cè)精度,且檢測(cè)誤差小于0.2μs,實(shí)現(xiàn)了對(duì)角膜變形信號(hào)峰值時(shí)刻精度較高的檢測(cè)。與傳統(tǒng)峰值時(shí)刻檢測(cè)電路相比,本系統(tǒng)通過(guò)FPGA作為主控芯片,不需采用比較器及DAC電路部分,便實(shí)現(xiàn)了數(shù)據(jù)采集與峰值檢測(cè),減少了峰值檢測(cè)硬件電路的設(shè)計(jì),在時(shí)間精度和采樣速率上均有提高,系統(tǒng)運(yùn)行穩(wěn)定可靠。