李 鴻,左右清
(湘潭醫(yī)衛(wèi)職業(yè)技術(shù)學(xué)院,湖南 湘潭 411102)
心電信號(Electrocardiogram,ECG)數(shù)字處理及控制模塊是心電監(jiān)護(hù)儀的重要組成部分,實(shí)現(xiàn)ECG的濾波、儲存、回放、通信和顯示等數(shù)字處理及控制。目前大多采用DSP+MCU或DSP+ARM的雙CPU結(jié)構(gòu)設(shè)計(jì),通過編寫復(fù)雜的程序?qū)崿F(xiàn)模塊的功能。其協(xié)同性差、穩(wěn)定性低,運(yùn)算速度慢,分析時(shí)響應(yīng)不高,影響診斷結(jié)果的準(zhǔn)確性,不易執(zhí)行復(fù)雜的心電信號分析算法,同時(shí),隨著模塊功能實(shí)現(xiàn)的增加,硬件設(shè)計(jì)更加復(fù)雜,軟件編寫煩瑣,體積龐大,研制成本提高[1],與產(chǎn)品微型化、多功能化和低功耗要求相背。
本研究旨在用FPGA(Field Programmable Gate Arrary)“片上系統(tǒng)”結(jié)構(gòu)來取代目前心電監(jiān)護(hù)儀所采用的DSP和MCU或ARM微處理器雙CPU結(jié)構(gòu),實(shí)現(xiàn)對ECG信號的數(shù)字處理和控制。FPGA是在硬件上實(shí)現(xiàn)全部控制邏輯,比MCU或DSP的軟件處理速度快,實(shí)時(shí)性好,效率高。同時(shí)FPGA支持NiosⅡ嵌入式軟核處理器,對各種算法的實(shí)現(xiàn)和數(shù)據(jù)的處理能力大大增強(qiáng)。其次,基于SOPC的FPGA系統(tǒng)設(shè)計(jì)具有研制周期短、制作成本低,可靠性高,特別是可以很方便地對設(shè)計(jì)進(jìn)行在線修改,同時(shí)器件少、功耗低,很適應(yīng)可穿戴設(shè)備和移動(dòng)醫(yī)療的需要。
ECG數(shù)字處理及控制模塊基于FPGA芯片EP2C35F672C6N構(gòu)建,接收A/D轉(zhuǎn)換輸出的數(shù)字ECG信號,對信號再次除雜,分析處理并存儲,實(shí)現(xiàn)與各個(gè)接口間的通信,包括AD控制器、心率處理器、FIR(Finite Impluse Response)濾波器以及寄存器編碼等子模塊。
首先,在FPGA內(nèi)部定制1個(gè)NiosⅡ軟核處理器,實(shí)現(xiàn)總體控制,上述子模塊通過寄存器編碼子模塊掛載到Avalon總線上作為NiosⅡ系統(tǒng)的外設(shè),并采用統(tǒng)一的同步時(shí)鐘,構(gòu)成一個(gè)基于32位嵌入式NiosⅡ軟核CPU的嵌入式系統(tǒng),實(shí)現(xiàn)信號的采集、處理、回放、存儲和顯示功能??傮w框架結(jié)構(gòu)如圖1所示。
圖1 模塊整體結(jié)構(gòu)框圖
NiosⅡ軟核處理器采用Avalon交換式總線[2],通過Avalon總線控制心率處理器、FIR濾波器等子模塊對輸入的ECG進(jìn)行數(shù)字濾波和心率檢測,得到信噪比更高的數(shù)字心電信號,轉(zhuǎn)換成可視波形和數(shù)據(jù)放入寄存器模塊中存儲。同時(shí),通過對寄存器的設(shè)置或讀取,直接獲得心率大小、心電波形縮放系數(shù)等心電信息的相關(guān)數(shù)據(jù),進(jìn)而實(shí)現(xiàn)心電信號的實(shí)時(shí)顯示、遠(yuǎn)程傳輸,用于分析和診斷。
模塊設(shè)計(jì)采用軟硬件協(xié)同設(shè)計(jì)的思想,在FPGA上采用SOPC定制IP核技術(shù)單獨(dú)完成各個(gè)子模塊的設(shè)計(jì),實(shí)現(xiàn)相關(guān)邏輯功能,再將各個(gè)子模塊整合在一起形成一個(gè)系統(tǒng),達(dá)到對數(shù)字ECG的處理與控制,CPU采用Altera公司提供的NiosⅡ軟核處理器,本設(shè)計(jì)在QuartusⅡ9.0版本下完成。
圖2為ECG數(shù)字處理及控制模塊在QuartusⅡ9.0開發(fā)軟件中設(shè)計(jì)生成的封裝效果圖。iDATA為從CPU發(fā)出的16位數(shù)據(jù)輸入,iWrite和iRead是CPU控制ECG模塊進(jìn)行寫、讀操作的使能信號,iAddr為寄存器偏移地址,CPU通過發(fā)送偏移地址獲取存儲在該地址內(nèi)的內(nèi)容,iClock和iReset為ECG控制模塊的時(shí)鐘信號和復(fù)位信號,iAds Data是從ADS7816采集到的數(shù)據(jù);oDATA為輸入到CPU的16位數(shù)據(jù)輸出,oAds Enable和oAds Clock為控制ADS7816進(jìn)行采樣的使能信號和時(shí)鐘信號。
圖2 ECG控制器模塊
AD控制器根據(jù)ADS7816芯片的時(shí)序要求,輸出控制信號實(shí)現(xiàn)對ADS7816的模數(shù)轉(zhuǎn)換控制、時(shí)鐘分頻,同時(shí)接收ADS7816輸出的12位串行數(shù)字信號數(shù)據(jù),通過串/并轉(zhuǎn)換,實(shí)現(xiàn)12位并行數(shù)字信號數(shù)據(jù)的輸出至數(shù)字濾波和心率檢測子模塊。
AD控制器的封裝效果如圖3所示,行為仿真如圖4所示。ADS_DATA為ADS7816輸出的12位串行數(shù)據(jù)輸入,oDATA為12位的并行數(shù)據(jù)輸出,SYS_CLK為系統(tǒng)時(shí)鐘,ADS_CLK和ADS_CE為用于ADS7816采樣控制的時(shí)鐘信號和使能信號。根據(jù)心電信號的采樣要求,AD控制器設(shè)計(jì)的主要參數(shù)為:系統(tǒng)時(shí)鐘為50MHz,通過模塊內(nèi)分頻電路將采樣時(shí)鐘設(shè)定為20 kHz,采樣頻率設(shè)為1 kHz,每20個(gè)時(shí)鐘周期采樣一次,其中17個(gè)時(shí)鐘周期為數(shù)據(jù)采集時(shí)間,剩下的3個(gè)時(shí)鐘周期為復(fù)位時(shí)間。從仿真圖可以看出AD控制器準(zhǔn)確產(chǎn)生了時(shí)鐘信號ADS_CLK、使能信號ADS_CE,并且ADS_DATA串行輸入數(shù)據(jù)經(jīng)過串并轉(zhuǎn)換后能準(zhǔn)確的并行輸出。
圖3 AD控制器
圖4 AD控制器行為仿真圖
數(shù)字濾波器實(shí)現(xiàn)對ECG信號的數(shù)字濾波,濾除模擬帶通濾波器(通頻帶為0.05~100 Hz,消除基線漂移和電路內(nèi)部噪聲干擾)很難濾除在ECG頻率范圍內(nèi)的50Hz工頻干擾,得到更為精確的ECG信號,同時(shí),通過波形轉(zhuǎn)換程序,將數(shù)字信號轉(zhuǎn)換成波形輸出。工頻干擾是影響比較顯著的噪聲之一,由50 Hz市電電壓及其諧波構(gòu)成的一種固定干擾,與心電信號的頻帶重疊,影響心電信號分析,嚴(yán)重的甚至?xí)蜎]有用的信號,因此必須采取一定的方法和措施加以抑制。根據(jù)數(shù)字濾波器沖激響應(yīng)的時(shí)域特征,可分為FIR濾波器和IIR(Infinite Impluse Response)濾波器。IIR濾波器計(jì)算量小,幅頻特性精度高,但它的相位是非線性的,應(yīng)用于能夠容忍相位失真的系統(tǒng)中。FIR濾波器計(jì)算量較大,幅頻特性的精度較低,但相比于IIR濾波器具有嚴(yán)格的線性相位,沒有相位失真,系統(tǒng)穩(wěn)定,同時(shí)它的單位響應(yīng)也有利于對數(shù)字信號的處理,便于編程,計(jì)算時(shí)延也小,在便攜式和低功耗的背景下容易實(shí)現(xiàn)??紤]到ECG信號對濾波器相位的線性有要求,結(jié)合FIR數(shù)字濾波器的優(yōu)點(diǎn),我們選用FIR數(shù)字濾波器中的帶阻濾波器為ECG信號進(jìn)行49~51 Hz帶阻濾波,濾除其中50Hz的工頻信號。FIR數(shù)字濾波器常用的設(shè)計(jì)方法有窗函數(shù)法、頻率采樣法和等紋波最佳逼近法等[3]。綜合三種設(shè)計(jì)方法的優(yōu)缺點(diǎn)及設(shè)計(jì)帶阻濾波器的目的,考慮到窗函數(shù)法設(shè)計(jì)比較簡單,實(shí)現(xiàn)的性能完全可以達(dá)到設(shè)計(jì)要求,同時(shí)由于帶阻濾波器要求過渡帶盡量的窄,可以快速的從通帶到阻帶。因此選擇窗函數(shù)法下的矩形窗來設(shè)計(jì)FIR數(shù)字濾波器。目前,F(xiàn)IR濾波器的實(shí)現(xiàn)常采用設(shè)計(jì)優(yōu)化好的FIR濾波器IP核,采用IP核的方法可以保證性能,極大地縮短設(shè)計(jì)時(shí)間[4],用戶使用這種IP核,根據(jù)實(shí)際需要進(jìn)行簡單的開發(fā)即可,Altera公司提供了FIR濾波器的IP核,所以該數(shù)字濾波器的實(shí)現(xiàn)采用Altera公司提供的FIR濾波器IP核,采取一種基于DSP Builder的FPGA設(shè)計(jì)方法[5]。首先利用MATLAB中濾波器設(shè)計(jì)工具FDAtool工具設(shè)計(jì)FIR濾波器系數(shù),再利用Matlab中的Simulink庫文件下的DSP Builder庫中的各個(gè)模塊搭建FIR濾波器系統(tǒng),然后在Simulink里進(jìn)行了仿真,并編譯生成VHDL語言,再通過QuartusⅡ軟件對生成的VHDL程序進(jìn)行編譯和仿真,并利用Matlab對仿真結(jié)果進(jìn)行了分析,證明所設(shè)計(jì)的FIR濾波器功能的正確性,最后實(shí)現(xiàn)硬件系統(tǒng)。其設(shè)計(jì)界面如圖5所示。
心率處理器對心率進(jìn)行計(jì)算。經(jīng)過濾波后的ECG數(shù)據(jù)可準(zhǔn)確地進(jìn)行R波的檢測,進(jìn)而計(jì)算心率。心率的計(jì)算通常是通過計(jì)算相鄰兩個(gè)R波峰值之間的時(shí)間間隔求出RR間期來得到(兩個(gè)R波之間的間隔即為一個(gè)RR間期)[6]。計(jì)算公式:心率=60/RR間期。然兒在少數(shù)異常波形中,T波的幅值會(huì)超過R波,如果把T波誤判為R波來進(jìn)行心率計(jì)算,則會(huì)產(chǎn)生很大的誤差。為了在心率計(jì)算時(shí)消除T波可能引起的干擾,考慮到R波通常位于0~33 Hz的頻率范圍內(nèi),而T波位于0~9 Hz的頻率范圍內(nèi)[7]。因此,我們設(shè)計(jì)了一個(gè)中心頻率f0=12.867 Hz,帶寬B=f0/Q=5.629 Hz,下限截止頻率f1=10.356 5 Hz,上限截止頻率f2=15.985 5 Hz的帶通濾波器,首先將ADS控制器輸出的12位并行ECG信號通過帶通濾波器,以獲取信噪比比較高的QRS波群信息,然后通過采樣(初始采樣頻率設(shè)為100 Hz)計(jì)算得出瞬時(shí)心率,輸出到寄存器中。
圖6為3輸入2輸出心率計(jì)算模塊封裝效果圖。ADSDATA為并行12位的ECG信號輸入端,連接到AD控制模塊的數(shù)據(jù)輸出端;iCLK為模塊的時(shí)鐘控制信號,輸入的是AD控制模塊的采樣頻率,即為1 kHz;RST為復(fù)位端;ODATA為26位的信號輸出,在進(jìn)行波形顯示時(shí),只取高16位作為波形輸入的數(shù)據(jù),ORATE為心率輸出。
寄存器編碼模塊實(shí)現(xiàn)對心率處理器和FIR濾波器輸出的數(shù)據(jù)進(jìn)行編碼,將這些數(shù)據(jù)放在指定地址的寄存器中方便CPU的讀取或設(shè)置。我們?yōu)镋CG控制器設(shè)置了3位地址寬度寄存器,占用8個(gè)地址空間,每個(gè)偏移地址對應(yīng)具體的功能,如偏移地址“0”對應(yīng)寄存器功能“輸出波形縮放系數(shù)”,偏移地址“1”對應(yīng)寄存器功能“輸出波形Y軸偏移量”……。CPU通過發(fā)送偏移地址來獲取存儲在該地址內(nèi)的內(nèi)容。
基于FPGA的心電信號數(shù)字處理與控制模塊利用其高速并行處理數(shù)據(jù)的能力實(shí)時(shí)地對信號進(jìn)行處理。模塊設(shè)計(jì)采用軟硬件協(xié)同設(shè)計(jì)的思想,在QuartusⅡ開發(fā)環(huán)境中,通過硬件描述語言(VHDL)或采用SOPC定制IP核技術(shù)完成AD控制器、心率處理器、FIR濾波器以及寄存器編碼等子模塊的設(shè)計(jì),實(shí)現(xiàn)相關(guān)邏輯功能。該模塊研制周期短,成本低,精度高、體積小、功耗低,具有較好的實(shí)用性和可擴(kuò)展性,特別適應(yīng)可穿戴設(shè)備和移動(dòng)醫(yī)療的需要。