賈俊偉
(上海海事大學(xué) 信息工程學(xué)院,上海 201306)
腦電信號(hào)是人體重要的生理信號(hào),近年來,隨著腦機(jī)接口的逐步興起和使用,腦電信號(hào)的實(shí)時(shí)性處理要求也越來越高,腦電信號(hào)實(shí)時(shí)處理的應(yīng)用,使人們可以直接通過腦來表達(dá)想法或操作其他設(shè)備,而不需要通過語言或肢體的動(dòng)作,這對(duì)肢體殘缺的人來說有著極其重要的意義。
目前,國(guó)內(nèi)外對(duì)腦電信號(hào)的處理基本上都是基于上位機(jī)進(jìn)行處理。文中提出了一種全新的設(shè)計(jì)方案:基于SOPC的腦電信號(hào)實(shí)時(shí)處理。SOPC(System on a Programmable Chip)稱為可編程片上系統(tǒng),是基于可編程邏輯器件(FPGA或CPLD)的可重構(gòu)的SOC。利用FPGA的可編程邏輯資源,按照系統(tǒng)功能需求來添加接口功能模塊,既能實(shí)現(xiàn)目標(biāo)系統(tǒng)功能,又能降低系統(tǒng)的成本和功耗。這樣就使得FPGA靈活的硬件設(shè)計(jì)與處理器的強(qiáng)大軟件功能有機(jī)地結(jié)合在一起,高效地實(shí)現(xiàn)SOPC系統(tǒng);同時(shí),嵌入式NiosⅡ軟核又可以方便的完成對(duì)數(shù)字信號(hào)處理模塊的控制和數(shù)據(jù)的讀寫和存儲(chǔ)。
文中的設(shè)計(jì)系統(tǒng)主要有信號(hào)預(yù)處理模塊、A/D轉(zhuǎn)換模塊和數(shù)據(jù)處理與存儲(chǔ)模塊3大部分組成。其中A/D轉(zhuǎn)換模塊和數(shù)據(jù)處理與存儲(chǔ)模塊是基于SOPC系統(tǒng)實(shí)現(xiàn),是本文重點(diǎn)。核心控制芯片采用ALTERA公司生產(chǎn)的CycloneⅡ系列的FPGA,它實(shí)現(xiàn)對(duì)外圍電路的控制和數(shù)據(jù)的處理與存儲(chǔ)。系統(tǒng)總體結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)總體結(jié)構(gòu)圖Fig.1 Overall system structure diagram
腦電信號(hào)是很微弱的差模信號(hào),具有低頻率,低幅度的特點(diǎn)。并且具有很強(qiáng)的背景噪聲和干擾,因此在采集前必須經(jīng)過必要的預(yù)處理,使其達(dá)到AD轉(zhuǎn)換的精度要求。所以前端預(yù)處理模塊有:前置放大器、50 Hz陷波器、高低通濾波器和主放大器等組成。人腦神經(jīng)活動(dòng)自發(fā)產(chǎn)生的生物電信號(hào)通過腦電極進(jìn)入儀器的前置放大器,在經(jīng)過低通濾波器濾波,50 Hz陷波器和固定增益放大,最終抑制50 Hz以上的干擾信號(hào),提取腦電信號(hào)。
本系統(tǒng)選用ADS1258作為模數(shù)轉(zhuǎn)換器,ADS1258是TI公司推出的一款高精度、低功耗、低噪聲的16通道(多路復(fù)用的)24位Δ-∑型模數(shù)轉(zhuǎn)換器 (ADC),其內(nèi)部集成了輸入多路復(fù)用器、模擬低通濾波器、數(shù)字濾波器等功能。內(nèi)部有多種控制寄存器,用戶通過不同的配置得到不同的A/D采樣速率、采樣模式、A/D轉(zhuǎn)換精度等。
ADSl258在自動(dòng)通道掃描工作模式下最高轉(zhuǎn)換速率可達(dá)每通道23.7 kSPS,是目前轉(zhuǎn)換速率極高的模數(shù)轉(zhuǎn)換器;轉(zhuǎn)換時(shí)功耗僅42 mW,24位分辨率,可在5 V單電源條件下工作,參考電壓可以設(shè)置為0~5 V。 模擬輸入多路復(fù)用器可配置成8路差分輸入或16路單極輸入,多路復(fù)用器的輸出可通過外部獲得,這就能在ADC輸入之前采用共享的信號(hào)調(diào)節(jié)通道。使用SPI接口進(jìn)行功能配置和數(shù)據(jù)傳輸,實(shí)驗(yàn)證明它能滿足信號(hào)采集與處理的系統(tǒng)需求 。
腦電信號(hào)傳統(tǒng)處理方法有Wigner分布、小波分析、神經(jīng)網(wǎng)絡(luò)、非線性動(dòng)力學(xué)以及獨(dú)立分量,而腦電信號(hào)通常還會(huì)產(chǎn)生基線漂移和50 Hz交流及高次諧波干擾,因此還需要對(duì)信號(hào)進(jìn)行數(shù)字濾波,以增強(qiáng)抗干擾能力。與傳統(tǒng)的DSP相比,F(xiàn)PGA具有可重構(gòu)、低成本和低功耗的優(yōu)勢(shì),尤其是在多通道數(shù)據(jù)的采集和處理上,F(xiàn)PGA利用天然的并行架構(gòu),將發(fā)揮出一個(gè)至幾個(gè)數(shù)量級(jí)的優(yōu)勢(shì)。ALTERA公司的SOPCBuilder可以幫助開發(fā)者很容易完成系統(tǒng)的SOPC硬件平臺(tái)。用戶根據(jù)已有的硬件系統(tǒng)結(jié)構(gòu)編寫信號(hào)處理的算法程序,最終在FPGA上實(shí)現(xiàn)。
文中的核心控制芯片采用ALTERA公司的CycloneⅡ系列型號(hào)為EP2C8Q208I8N的FPGA芯片。該芯片有8 256個(gè)邏輯單元,內(nèi)置 18個(gè)嵌入式 18×18乘法器,2個(gè) PLLs,完全滿足本設(shè)計(jì)的需要。此系列芯片支持NiosⅡ32位嵌入式軟核處理器,該處理器系統(tǒng)包括一個(gè)可配置NiosⅡCPU軟核、與CPU相連接的片內(nèi)外設(shè)和存儲(chǔ)器以及與片外存儲(chǔ)器和外設(shè)相連的接口等。所有組件在一個(gè)FPGA芯片上實(shí)現(xiàn)。SOPC硬件系統(tǒng)結(jié)構(gòu)如圖2所示。
圖2 SOPC硬件系統(tǒng)電路圖Fig.2 SOPChardware system diagram
整個(gè)系統(tǒng)以 NiosⅡ軟核處理器為主,Avalon總線為核心,各個(gè)外設(shè)端口掛接在Avalon總線上。通過Avalon總線,NiosⅡ主設(shè)備控制各從設(shè)備。Avalon總線支持多個(gè)總線主外設(shè),允許在單個(gè)總線事務(wù)中在外設(shè)之間傳輸多個(gè)數(shù)據(jù)單元。這一多主設(shè)備結(jié)構(gòu)為構(gòu)建SOPC系統(tǒng)提供了極大的靈活性,并且能夠適應(yīng)高帶寬的外設(shè)。
在設(shè)計(jì)過程中,充分考慮SOPC系統(tǒng)的特色,充分發(fā)揮了SOPC系統(tǒng)在數(shù)字信號(hào)處理中的并行運(yùn)算優(yōu)勢(shì)和NiosⅡ自定義指令加快程序運(yùn)行速度的優(yōu)勢(shì)。圖3為本系統(tǒng)的SOPC builder組件列表圖:主要是用SOPC Builder選取合適的CPU、存儲(chǔ)器、及外圍器件,外圍器件包含系統(tǒng)自帶的如定時(shí)器,SPI接口核等,也包含用戶自定義的外設(shè)組件(AD,DA)。
本系統(tǒng)的軟件設(shè)計(jì)包括兩個(gè)部分,一部分是基于Verilog的用戶自定義外設(shè)組件,另一部分是基于NiosⅡIDE開發(fā)環(huán)境的各外設(shè)組件的驅(qū)動(dòng)和配置程序,以及處理腦電信號(hào)的FFT算法程序。
用戶自定義外設(shè)組件包括AD轉(zhuǎn)換和DA轉(zhuǎn)換模塊,用Verilog語言編寫AD和DA的控制模塊,編譯、綜合后實(shí)現(xiàn)其功能并留下與Avalon interface的寄存器接口。
軟件開發(fā)使用NiosⅡIDE,它是一個(gè)基于Eclipse IDE構(gòu)架的集成開發(fā)環(huán)境,包括:
1)GNU開發(fā)工具(標(biāo)準(zhǔn)GCC編譯器、連接器、匯編器和makefile工具等);
2)基于GDB的調(diào)試器,包括軟件仿真和硬件調(diào)試;
3)提供用戶一個(gè)硬件抽象層HAL(Hardware Abstraction Layer);
4)提供嵌入式操作系統(tǒng)MicroC/OS-Ⅱ和LwTCP/IP協(xié)議棧的支持;
5)提供幫助用戶快速入門的軟件模板;
6)提供 Flash下載支持(Flash Programmer和 QuartusⅡProgrammer)。
NiosⅡIDE可以完成NiosⅡ處理器系統(tǒng)的所有軟件開發(fā)任務(wù)。SOPCBuilder生成系統(tǒng)后,可以直接使用NiosⅡIDE開始設(shè)計(jì)C應(yīng)用程序代碼。Altera提供外設(shè)驅(qū)動(dòng)程序和硬件抽象層 (HAL),使用戶能夠快速編寫與低級(jí)硬件細(xì)節(jié)無關(guān)的NiosⅡ程序。除了應(yīng)用代碼,用戶還可以在NiosⅡIDE工程中設(shè)計(jì)和重新使用定制庫。
基于C編寫的算法程序是腦電信號(hào)數(shù)字處理的核心程序。該程序包括6個(gè)相關(guān)文件,分別是math.h,register.h,LF2407.CMD,RTS2XX.LIB,process.c和 cvectors.asm。 其中需要用到的數(shù)學(xué)公式庫文件是math.h,CPU內(nèi)部的寄存器及其相關(guān)定義文件是register.h,連接命令文件是LF2407.CMD,指示編譯器如何進(jìn)行程序空間和數(shù)據(jù)空間的分配,系統(tǒng)提供RTS2XX.LIB庫文件,向量表文件cvectors.asm定義所需的復(fù)位和中斷向量,process.c主要是完成用戶期望的功能,是整個(gè)程序的核心部分。
FFT部分算法如下:
圖3 SOPCbuilder組件列表圖Fig.3 SOPCbuilder component list in figure
Fs=1000; %Fs是采樣頻率,值越大,得到的圖像越清晰
Read X(1,1024); % 將要處理的腦電數(shù)據(jù)讀入到X中,共1 024個(gè)數(shù)據(jù)
% 以下是對(duì)原始的腦電數(shù)據(jù)進(jìn)行1 024點(diǎn)的快速傅里葉變換:
for m=1:Fs
w(m)=m*2*pi/Fs;
y(m)=0;
temp=0;
for n=1:1024
y(m)=temp+x(n)*exp(-j*(w(m)*(n-1)));
temp=y(m);
end % n循環(huán)結(jié)束
h(m)=abs(y(m));
end % m循環(huán)結(jié)束
fre=w*Fs/(2*pi); % 得到頻率陣 fre(1,1000)
Am=h/max(h); % 得到原始信號(hào)的歸一化譜幅度
相關(guān)算法的說明:
1)采樣頻率Fs根據(jù)實(shí)際情況調(diào)整,仿真時(shí)為1 000 Hz;2)快速傅里葉變換的計(jì)算公式為:
N是傅里葉變換的點(diǎn)數(shù),此處為1 024點(diǎn)。
3)由于只計(jì)算相對(duì)功率,故在計(jì)算功率時(shí)沒有除點(diǎn)數(shù)N;
4)本計(jì)算的步長(zhǎng)取1 ms,將與采樣頻率對(duì)應(yīng),給計(jì)算帶來方便。
系統(tǒng)軟件流程圖如圖4所示。
圖4 系統(tǒng)軟件流程圖Fig.4 System software flow chart
腦電信號(hào)是一種低頻且極其微弱的信號(hào),一般為5~1 000μV。腦電信號(hào)的采集又常常伴隨著很大的噪聲干擾,尤其是50 Hz的工頻干擾。實(shí)驗(yàn)結(jié)果如圖5所示。
經(jīng)實(shí)驗(yàn)結(jié)果分析,本設(shè)計(jì)可以有效完成對(duì)腦電信號(hào)的去噪及濾除50 Hz的工頻干擾,并能精確提取腦電信號(hào)的特征,為腦電信號(hào)的進(jìn)一步研究做準(zhǔn)備。
圖5 實(shí)驗(yàn)前后結(jié)果圖Fig.5 Before and after the experiment results in figure
本設(shè)計(jì)的硬件實(shí)現(xiàn)都是在SOPC Builder環(huán)境下完成的,SOPCBuilder提供的圖形化系統(tǒng)架構(gòu)平臺(tái)極為方便地給設(shè)計(jì)人員提供了系統(tǒng)構(gòu)建的優(yōu)越性。SOPCBuilder采用軟件搭建硬件系統(tǒng)的方法,突破了硬件系統(tǒng)難裁剪,不易升級(jí),開發(fā)周期長(zhǎng),維護(hù)困難等諸多缺陷。而且SOPC Builder可根據(jù)搭建的硬件系統(tǒng)自動(dòng)生成對(duì)應(yīng)的代碼,可使各部件通過Avalon總線有序的連接和工作,將設(shè)計(jì)人員解放到系統(tǒng)框架的總體設(shè)計(jì)和用戶程序的設(shè)計(jì),大大地促進(jìn)了開發(fā)效率,縮短了開發(fā)流程。此外SOPC中也極為方便的為設(shè)計(jì)人員提供了加入自己設(shè)計(jì)的組建和自己定制的指令的功能,這樣可使開發(fā)人員可以通過自己定制的指令更加高效地完成設(shè)計(jì)。SOPC系統(tǒng)具有在硬件的可重構(gòu)與可重配置,這是FPGA在硬件開發(fā)過程中獨(dú)一無二的特點(diǎn)。
[1]肖志俊,朱國(guó)懷.基于DSP的腦電信號(hào)處理系統(tǒng)設(shè)計(jì)[J].微計(jì)算機(jī)信息,2007(10):3-5.XIAOZhi-jun,ZHUGuo-huai.Based on EEGsignal processing in DSP system design[J].Conrol and Automation Pubilcation Group,2007(10):3-5.
[2]方煒圓,陳亞光.基于SOPC的多通道動(dòng)態(tài)腦電采集系統(tǒng)[J].現(xiàn)代科學(xué)儀器,2008(12):11-12.FANG Wei-yuan,CHEN Ya-guang.Multi-channel dynamic EEG acquisition system based on SOPC[J].Modern Scientific Instruments,2008(12):11-12.
[3]馬登程.基于實(shí)時(shí)嵌入式系統(tǒng)的腦電信號(hào)采集儀器設(shè)計(jì)[D].山東:山東大學(xué),2006.
[4]謝松云,張振中,楊金,等.腦電信號(hào)的若干處理方法研究與評(píng)價(jià)[J].計(jì)算機(jī)仿真,2007(2):15-17.XIE Song-yun,ZHANG Zhen-zhong,YANG Jin,et al.EEG and processing methods research and evaluation[J].Computer Simularion,2007(2):15-17.
[5]徐棟君.腦電信號(hào)采集系統(tǒng)設(shè)計(jì)與研究[D].江蘇:江蘇大學(xué),2006.
[6]古良玲.基于可編程邏輯器件的腦電信號(hào)自適應(yīng)濾波技術(shù)的研究[D].重慶:重慶大學(xué),2006.