劉 邈郭佳明
(天津大學(xué)醫(yī)學(xué)工程與轉(zhuǎn)化醫(yī)學(xué)研究院,天津300072)
事件相關(guān)誘發(fā)電位(Event-Related Potential,ERP)是一種特殊的腦電誘發(fā)電位,它的出現(xiàn)必須要有特殊的刺激施加,如聲音刺激、視覺(jué)刺激[1]。因?yàn)镋RP與刺激之間存在嚴(yán)格的鎖時(shí)關(guān)系,所以在記錄腦電數(shù)據(jù)的同時(shí)還需精準(zhǔn)地記錄下刺激所發(fā)生的時(shí)點(diǎn)。
ERP能夠協(xié)助診斷神經(jīng)系統(tǒng)的功能異常[2-4]且反應(yīng)認(rèn)知過(guò)程中的不同方面[5],在臨床應(yīng)用和腦機(jī)接口(Brain Computer Interface,BCI)領(lǐng)域被廣泛研究[6]。由于ERP與刺激之間存在嚴(yán)格鎖時(shí)的特性,在設(shè)計(jì)ERP采集系統(tǒng)時(shí)對(duì)腦電數(shù)據(jù)和刺激事件的同步采集的時(shí)間精度是衡量系統(tǒng)整體性能的重要指標(biāo)。目前針對(duì)ERP的腦電采集系統(tǒng)通常采用有線的數(shù)據(jù)傳輸方式,以視覺(jué)刺激為例,通常在計(jì)算機(jī)運(yùn)行刺激程序,通過(guò)高刷新率的顯示器呈現(xiàn)視覺(jué)刺激。為了確保腦電與刺激采集時(shí)點(diǎn)的同步性,通常在給出視覺(jué)刺激的同時(shí)通過(guò)采集計(jì)算機(jī)的并口(LPT)輸出脈沖以記錄刺激時(shí)點(diǎn)[7]。受限于計(jì)算機(jī)操作系統(tǒng)本身的延時(shí),這種由計(jì)算機(jī)產(chǎn)生刺激并同步發(fā)送刺激事件信號(hào)的方法存在隨機(jī)性的時(shí)間誤差。一些研究者,如何超文[1],辛如宇[8]等利用FPGA作為刺激發(fā)生器,驅(qū)動(dòng)由高刷新頻的顯示器呈現(xiàn)刺激事件的同時(shí)向腦電采集設(shè)備發(fā)送同步信號(hào)觸發(fā)腦電采集;鄭璞潔[9]利用DSP芯片在刺激產(chǎn)生的時(shí)點(diǎn)通過(guò)I/O口觸發(fā)腦電設(shè)備的采集。這些設(shè)計(jì)都是通過(guò)繞開(kāi)計(jì)算機(jī)多任務(wù)操作以避免系統(tǒng)的延時(shí)從而提高ERP采集的時(shí)間精度。
有線的ERP采集系統(tǒng)有其固有的限制,無(wú)論是在臨床應(yīng)用還是基于ERP的腦機(jī)接口研究,有線系統(tǒng)都受限于環(huán)境約束,一般只能在特定的場(chǎng)合完成腦電的采集。隨著穿戴式醫(yī)療的需求上升和無(wú)線通信技術(shù)的發(fā)展,ERP采集系統(tǒng)向無(wú)線采集的方向發(fā)展能夠真正推動(dòng)BCI從研究向現(xiàn)實(shí)生活應(yīng)用。然而,目前針對(duì)ERP的無(wú)線采集的公開(kāi)方案非常少,有鑒于目前所使用的無(wú)線腦電采集系統(tǒng)中普遍存在刺激事件時(shí)點(diǎn)同步記錄的時(shí)間誤差。數(shù)據(jù)無(wú)線傳輸過(guò)程中存在的延時(shí)和抖動(dòng)影響事件同步精度,限制了ERP的研究。
無(wú)線傳輸過(guò)程中的延時(shí)指單次數(shù)據(jù)包發(fā)送和接收之間的時(shí)間差,主要由網(wǎng)絡(luò)傳輸協(xié)議本身、數(shù)據(jù)丟包及網(wǎng)絡(luò)擁塞等問(wèn)題導(dǎo)致,無(wú)法消除,只能盡量降低。延時(shí)抖動(dòng)是指數(shù)據(jù)包在信道傳輸過(guò)程中延時(shí)的不同,目前常用無(wú)線傳輸產(chǎn)生的延時(shí)抖動(dòng)主要是由于觸發(fā)信息傳輸用無(wú)線信道(如2.4G ISM Band)使用率過(guò)高而導(dǎo)致大量數(shù)據(jù)在此信道傳輸時(shí)有效時(shí)隙變短,頻繁觸發(fā)規(guī)避算法,甚至造成空中沖突導(dǎo)致傳輸錯(cuò)誤并在協(xié)議控制下重傳造成的延時(shí)突然增大。
對(duì)于無(wú)線數(shù)據(jù)傳輸過(guò)程中的延時(shí)和延時(shí)抖動(dòng)的問(wèn)題,目前公開(kāi)的解決方案非常少。為了避免因信道擁塞產(chǎn)生的延時(shí)抖動(dòng),M.Foerster[10]采用了刺激事件信息和腦電數(shù)據(jù)分信道傳輸?shù)姆桨福煌膫鞲衅鱽?lái)檢測(cè)不同種類(lèi)的事件產(chǎn)生與否,在事件發(fā)生時(shí)通過(guò)對(duì)刺激事件編碼無(wú)線發(fā)送至主控芯片,多個(gè)事件之間通過(guò)算法不斷糾正各設(shè)備晶振因漂移帶來(lái)的誤差。U.Ghoshdastider[11]對(duì)刺激器、腦電采集器外加硬件同步模塊,在采集之前由同步中央控制器發(fā)送等時(shí)間間隔的同步信號(hào)使各同步模塊對(duì)齊時(shí)間完成同步。數(shù)據(jù)采集時(shí),腦電數(shù)據(jù)通過(guò)Wi-Fi傳給上位機(jī),同步模塊通過(guò)藍(lán)牙將同步事件信息先傳給同步中央控制器再經(jīng)過(guò)整合傳給上位機(jī)。但由于同步模塊傳輸采用了藍(lán)牙協(xié)議,每次采集都需要依靠較為復(fù)雜的算法同步對(duì)齊,不同設(shè)備的晶振誤差使得系統(tǒng)在無(wú)線同步時(shí)的魯棒性得不到保證。
為了保證時(shí)間同步的精度,系統(tǒng)設(shè)計(jì)上一方面需要盡量減少時(shí)鐘源,避免多時(shí)鐘源同步操作,最好以一個(gè)時(shí)鐘源作同步;另一方面,需要規(guī)避使用復(fù)雜的傳輸協(xié)議以避免延時(shí)抖動(dòng),以保持延時(shí)恒定為設(shè)計(jì)目標(biāo)。本文在上述方案的基礎(chǔ)上,提出了一種以接收端主機(jī)為時(shí)鐘基準(zhǔn)的,將腦電數(shù)據(jù)和事件信息采用獨(dú)立的雙頻段收發(fā)的方案,利用自定義無(wú)線傳輸協(xié)議保證傳輸鏈路固定的延時(shí),通過(guò)回溯以實(shí)現(xiàn)事件時(shí)點(diǎn)精密同步。方案簡(jiǎn)單易于實(shí)現(xiàn),在對(duì)硬件要求不高的情況下能夠達(dá)到微秒級(jí)的事件同步精度。
無(wú)線腦電采集中事件時(shí)點(diǎn)精密同步記錄系統(tǒng)設(shè)計(jì)的通用框架如圖1所示,系統(tǒng)分為無(wú)線采集端和無(wú)線接收端兩部分。
圖1 系統(tǒng)整體結(jié)構(gòu)圖
在無(wú)線采集端,腦電采集模塊對(duì)人體腦電信號(hào)進(jìn)行實(shí)時(shí)采集;刺激器產(chǎn)生刺激事件的同時(shí)觸發(fā)微處理器對(duì)事件種類(lèi)信息按自定義協(xié)議編碼,編碼完成后的事件信號(hào)經(jīng)射頻發(fā)送模塊調(diào)制發(fā)送。腦電數(shù)據(jù)傳輸由于單位時(shí)間數(shù)據(jù)量較大,采用主流的2.4 GHz ISM頻段,事件信號(hào)傳輸采用433 MHz頻段,兩者傳輸頻段相互獨(dú)立以避免沖突。
根據(jù)無(wú)線采集端的設(shè)計(jì),腦電數(shù)據(jù)的采樣時(shí)點(diǎn)和刺激事件發(fā)生的時(shí)點(diǎn)到無(wú)線接收端獲取對(duì)應(yīng)數(shù)據(jù)的時(shí)點(diǎn)存在固定延時(shí),且兩者延時(shí)不同。為此,需要事先對(duì)兩者的延時(shí)進(jìn)行精準(zhǔn)測(cè)量再對(duì)事件發(fā)生時(shí)點(diǎn)進(jìn)行回溯,最終按照?qǐng)D2所示的數(shù)據(jù)包格式向上位機(jī)發(fā)送。具體做法為:以無(wú)線接收端的微處理器的時(shí)鐘為基準(zhǔn),每次接收到一樣本的腦電數(shù)據(jù),記錄其接收的時(shí)點(diǎn),減去預(yù)先測(cè)得的延時(shí)作為該樣本的時(shí)間戳。接收端微處理器應(yīng)緩存足夠多樣本的腦電數(shù)據(jù)以便刺激事件的回溯。當(dāng)有刺激事件發(fā)生,射頻接收模塊接收到事件信號(hào)時(shí),微處理器記錄事件信號(hào)接收的時(shí)點(diǎn),解碼事件信號(hào)并進(jìn)行回溯。最后,將回溯后的刺激事件時(shí)點(diǎn)和腦電數(shù)據(jù)樣本時(shí)間戳比對(duì)并在對(duì)應(yīng)樣本的事件標(biāo)記打上事件種類(lèi)信息。經(jīng)過(guò)整合的數(shù)據(jù)包最后發(fā)送給上位機(jī)處理。整個(gè)過(guò)程中因?yàn)橹簧婕敖邮斩宋⑻幚砥鲿r(shí)鐘源,故能夠保證刺激事件和腦電數(shù)據(jù)的精密同步。
圖2 接收端數(shù)據(jù)包格式
在刺激事件信號(hào)的無(wú)線傳輸方面,基于實(shí)際應(yīng)用中刺激事件發(fā)生的頻率不高、數(shù)據(jù)流量小的特點(diǎn),采用低功耗、低成本、可自定義數(shù)據(jù)傳輸協(xié)議的射頻收發(fā)模塊實(shí)現(xiàn)。本方案中采用的射頻收發(fā)模塊為OOK調(diào)制方式,模塊的數(shù)據(jù)引腳兼容CMOS標(biāo)準(zhǔn),可以直接連接單片機(jī)I/O口。
根據(jù)系統(tǒng)設(shè)計(jì)要求,為了保證刺激事件時(shí)點(diǎn)的精密同步,刺激器產(chǎn)生刺激事件的時(shí)點(diǎn)與射頻發(fā)送事件信號(hào)的時(shí)點(diǎn)之間的延時(shí)需要保持恒定可測(cè)。
微處理器片上的支持脈沖寬度調(diào)制(Pulse Width Modulation,PWM)的輸出比較模式的通用定時(shí)器可靈活輸出微秒級(jí)至毫秒級(jí)周期,指定占空比的波形。[11]同時(shí),支持輸入捕獲模式的通用定時(shí)器,可以通過(guò)外部邊沿觸發(fā)使能內(nèi)部的計(jì)數(shù)器。因此,對(duì)于某一種類(lèi)的刺激事件標(biāo)記,可以通過(guò)設(shè)置一個(gè)定時(shí)器的通道輸入與刺激器相連,令刺激器產(chǎn)生刺激事件的同時(shí)輸出一個(gè)脈沖信號(hào),脈沖信號(hào)的第一個(gè)邊沿為刺激事件發(fā)生的真實(shí)時(shí)點(diǎn)。定時(shí)器對(duì)該信號(hào)進(jìn)行邊沿檢測(cè),觸發(fā)其內(nèi)部從模式控制器使能計(jì)數(shù)連續(xù)輸出特定的PWM波形作為編碼信號(hào)[12]。編碼信號(hào)的設(shè)計(jì)需要能夠既反應(yīng)刺激事件發(fā)生的真實(shí)時(shí)點(diǎn),又能夠編碼刺激事件的種類(lèi),如圖3所示,編碼信號(hào)采用“同步碼+引導(dǎo)碼+數(shù)據(jù)碼+校驗(yàn)碼”的碼組格式。同步碼長(zhǎng)12 ms以避免背景噪聲;用3 ms前導(dǎo)碼來(lái)標(biāo)記數(shù)據(jù)碼讀取位置供接收端通過(guò)延時(shí)回溯刺激事件發(fā)生的真實(shí)時(shí)點(diǎn);數(shù)據(jù)碼表示刺激事件種類(lèi),可以根據(jù)事件種類(lèi)總數(shù)調(diào)整碼長(zhǎng),本文用8位數(shù)據(jù)碼表示刺激事件種類(lèi)可表示總計(jì)256種刺激事件;校驗(yàn)碼采用奇偶校驗(yàn),數(shù)據(jù)碼和校驗(yàn)碼采用同樣的編碼方式,數(shù)據(jù)小端對(duì)齊。上述碼彼此的周期,占空比不盡相同,便于解碼時(shí)區(qū)分,同時(shí)不至于脈寬過(guò)長(zhǎng)或過(guò)窄導(dǎo)致誤碼。PWM信號(hào)設(shè)置為高電平有效,確保無(wú)數(shù)據(jù)發(fā)送時(shí)輸出為低電平以降低整體功耗。最后,射頻發(fā)送模塊將該編碼信號(hào)發(fā)送至射頻接收模塊。
圖3 編碼信號(hào)波形(以數(shù)據(jù)碼0xAA為例)
上述編碼方案中的延時(shí)由兩部分組成:一是由于通用定時(shí)器的外部邊沿檢測(cè)器為時(shí)序電路實(shí)現(xiàn),存在兩個(gè)時(shí)鐘周期的固定延時(shí),其余部分為邏輯電路實(shí)現(xiàn),延時(shí)可忽略不計(jì);二是外部觸發(fā)微處理器中斷處理的延時(shí)和延時(shí)抖動(dòng)。對(duì)腦電采集通常采用的毫秒級(jí)采樣間隔而言微處理器中主時(shí)鐘和掛載通用定時(shí)器的時(shí)鐘在MHz級(jí)別時(shí),上述的延時(shí)都在微秒級(jí),可以忽略不計(jì)。綜上所述,本編碼方案能夠保證刺激事件發(fā)生的時(shí)點(diǎn)到編碼事件信號(hào)發(fā)送的時(shí)點(diǎn)間延時(shí)恒定。
基于上述編碼方案,無(wú)線接收端的微處理器只要獲取PWM編碼信號(hào)的周期和占空比即可完成解碼。按照?qǐng)D4的流程圖所示,接收端的微處理器需要開(kāi)啟兩個(gè)通用定時(shí)器,其中一個(gè)定時(shí)器用于解碼,其通過(guò)輸入捕獲模式獲取一組完整的PWM編碼信號(hào),對(duì)數(shù)據(jù)碼進(jìn)行解碼以獲取刺激事件種類(lèi)信息。第二個(gè)定時(shí)器作為接收端的主時(shí)鐘,在前導(dǎo)碼讀取完成時(shí)記錄主時(shí)鐘的當(dāng)前值用于時(shí)點(diǎn)回溯,也即用讀取完成前導(dǎo)碼的時(shí)點(diǎn)減去前導(dǎo)碼和同步碼的固定延時(shí)共15 ms、無(wú)線收發(fā)空中的延時(shí)即可得到刺激事件發(fā)生的精準(zhǔn)時(shí)點(diǎn)信息。其中無(wú)線收發(fā)空中的延時(shí)可以通過(guò)高精度的雙蹤示波器測(cè)得,以保證時(shí)間精度。
圖4 無(wú)線接收端解碼流程圖
為了驗(yàn)證上述方案的可行性,實(shí)驗(yàn)采用可編程信號(hào)源模擬刺激器輸出端,每1 s觸發(fā)一次刺激事件產(chǎn)生;微處理器采用STM32。為了驗(yàn)證信號(hào)傳輸?shù)目煽啃?,編碼的刺激事件種類(lèi)設(shè)置為十六進(jìn)制的0xAA(8位碼長(zhǎng))。接收端需要以自身的主時(shí)鐘為基準(zhǔn)完成進(jìn)行事件時(shí)點(diǎn)的回溯工作,同時(shí)需要完成誤碼的校驗(yàn),并在上位機(jī)顯示事件信息(包括事件種類(lèi)和時(shí)點(diǎn))。
測(cè)試實(shí)驗(yàn)選用RIGOL MSO4034雙蹤示波器測(cè)量系統(tǒng)延時(shí)。在對(duì)無(wú)線收發(fā)空中延時(shí)測(cè)量時(shí),如圖5所示,上方為射頻發(fā)送模塊輸出信號(hào),下方為射頻接收模塊輸出信號(hào),以發(fā)送端信號(hào)輸出通道作為觸發(fā)源通道以觀察延時(shí)。經(jīng)多次測(cè)量其延時(shí)在43μs(±1μs)。
圖5 無(wú)線收發(fā)空中延時(shí)
由上述測(cè)量可知,在整個(gè)過(guò)程中的延時(shí)只包括無(wú)線收發(fā)空中延時(shí)43μs(±1μs),在進(jìn)行事件回溯時(shí),需要以接收端主時(shí)鐘標(biāo)記的前導(dǎo)碼讀取完畢的時(shí)點(diǎn)減去12 ms同步碼、3 ms前導(dǎo)碼的固定延時(shí)和43μs(±1μs)的空中延時(shí)即可獲得刺激事件產(chǎn)生的真實(shí)時(shí)點(diǎn)。
在對(duì)上述延時(shí)進(jìn)行測(cè)量后,需要對(duì)信號(hào)源RIGOL DG4162和STM32主頻時(shí)鐘進(jìn)行測(cè)量,以確保收發(fā)端時(shí)間精度。采用示波器的頻率計(jì)為基準(zhǔn)對(duì)上述儀器進(jìn)行測(cè)試。對(duì)于信號(hào)源時(shí)間精度的測(cè)試,令信號(hào)源輸出1 MHz的測(cè)試方波。對(duì)于開(kāi)發(fā)板主頻時(shí)鐘的測(cè)試,由于主頻時(shí)鐘由板載外部晶振提供,實(shí)際是對(duì)外部晶振的精度進(jìn)行性能測(cè)試。
測(cè)試結(jié)果如表1所示,可知信號(hào)源可以提供精準(zhǔn)的1 s觸發(fā)信號(hào),而受負(fù)載電容和晶振精度等情況的影響,由外部晶振提供的HSE時(shí)鐘輸出偏快。以本方案所用的定時(shí)器的時(shí)鐘為例,時(shí)鐘是由HSE倍頻再分頻得1 MHz的頻率(即1μs的計(jì)數(shù)節(jié)拍),實(shí)際值為1.000 041 25 MHz。經(jīng)計(jì)算,在對(duì)信號(hào)源產(chǎn)生1 s輸出計(jì)數(shù)時(shí),實(shí)際每次將產(chǎn)生41.25μs的計(jì)數(shù)誤差,即多計(jì)數(shù)41~42次。同時(shí),連續(xù)計(jì)數(shù)時(shí)會(huì)產(chǎn)生線性的累計(jì)誤差。而對(duì)于編碼信號(hào)來(lái)說(shuō),誤差低于1μs且不存在誤差的累計(jì),在本系統(tǒng)精度要求下可以忽略不計(jì)。
表1 時(shí)間精度測(cè)試數(shù)據(jù)
基于此測(cè)量結(jié)果,由信號(hào)源每隔1 s精準(zhǔn)觸發(fā)產(chǎn)生了100次脈沖信號(hào)模擬刺激事件,提取了接收端主時(shí)鐘記錄的時(shí)點(diǎn)信息做分析。將100次事件時(shí)點(diǎn)數(shù)據(jù)導(dǎo)入MATLAB處理,因?yàn)榫д褚鸬恼`差在μs級(jí)別,舍棄整數(shù)部分并作圖,如圖6所示,可以看出其時(shí)間增長(zhǎng)呈線性變化,結(jié)果符合預(yù)期。對(duì)累計(jì)誤差做線性擬合[13]并做殘差分析,如圖7所示,結(jié)果表明其殘差分布在±10μs附近,該隨機(jī)誤差可能由于程序中斷、晶振溫漂等原因產(chǎn)生。上述實(shí)驗(yàn)表明,對(duì)于收發(fā)端提供外部時(shí)鐘的晶振偏差帶來(lái)的時(shí)點(diǎn)累計(jì)誤差的問(wèn)題,可以通過(guò)①精選晶振基礎(chǔ)頻率;②利用基礎(chǔ)頻率不準(zhǔn)確但穩(wěn)定性好的晶振馴服微處理器內(nèi)部高頻RC振蕩器輸出更精確的計(jì)數(shù)頻率;③對(duì)采樣結(jié)果進(jìn)行線性回歸并事后校正使誤差降低在可接受的微秒級(jí)的范圍內(nèi)。這些方案均可滿(mǎn)足準(zhǔn)確輸出事件發(fā)生時(shí)點(diǎn)的目的。
圖6 晶振累計(jì)誤差統(tǒng)計(jì)圖
圖7 殘差分析圖
本文介紹了一種無(wú)線腦電采集中事件時(shí)點(diǎn)精密同步記錄系統(tǒng)的設(shè)計(jì)原理和實(shí)現(xiàn)方法。本文提出了一種基于低成本通用微處理器的方案:將刺激事件通道從腦電數(shù)據(jù)采集通道中獨(dú)立出來(lái)以不同信道傳輸并設(shè)計(jì)底層低延遲通信協(xié)議,再通過(guò)采集器軟硬件聯(lián)合保障系統(tǒng)固定延時(shí),最終以無(wú)線接收端時(shí)鐘為基準(zhǔn),通過(guò)延時(shí)回溯標(biāo)記事件對(duì)應(yīng)時(shí)點(diǎn)以獲得高精度事件時(shí)點(diǎn)同步。該方案在消除延時(shí)抖動(dòng)的同時(shí),通過(guò)對(duì)延時(shí)測(cè)量并再回溯的方式,以簡(jiǎn)單且通用的實(shí)現(xiàn)方案達(dá)到了高精度的事件時(shí)間同步。對(duì)于任何集成支持輸入捕獲、輸出比較功能的單片機(jī)都能夠?qū)崿F(xiàn)本方案的編解碼設(shè)計(jì)。通過(guò)實(shí)際測(cè)試得到的數(shù)據(jù)表明,在對(duì)硬件精度要求不高的情況下能夠做到微秒級(jí)的事件時(shí)點(diǎn)的精密同步。該系統(tǒng)能夠支持便攜式、低功耗的無(wú)線腦電采集的應(yīng)用場(chǎng)景,服務(wù)于ERP類(lèi)BCI研究與應(yīng)用。