文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.180064
中文引用格式: 張夢新,廖遠(yuǎn),劉文涵,等. 基于SOPC的多導(dǎo)聯(lián)ECG實(shí)時監(jiān)測系統(tǒng)[J].電子技術(shù)應(yīng)用,2018,44(8):56-59.
英文引用格式: Zhang Mengxin,Liao Yuan,Liu Wenhan,et al. Multi-lead real-time ECG monitoring system based on SOPC[J]. Application of Electronic Technique,2018,44(8):56-59.
0 引言
目前,心血管疾病的發(fā)病率迅速上升,已經(jīng)成為威脅人類身體健康的主要因素之一。常規(guī)的心電監(jiān)護(hù)儀需要患者在有限時間內(nèi),到固定的醫(yī)療場所進(jìn)行監(jiān)護(hù)診斷,無法滿足患者長期實(shí)時監(jiān)護(hù)的需求,因此家用心電監(jiān)護(hù)儀在人們的生活中發(fā)揮著越來越重要的作用[1]?,F(xiàn)今,絕大多數(shù)的家用心電監(jiān)護(hù)儀或是通過采集電路,將心電數(shù)據(jù)經(jīng)互聯(lián)網(wǎng)發(fā)送到醫(yī)院監(jiān)護(hù)中心進(jìn)行遠(yuǎn)程監(jiān)護(hù)[2-3],或是實(shí)現(xiàn)多體征參數(shù)的監(jiān)護(hù),計算心率,畫出波形等[4]。這些都沒有對復(fù)雜的心血管疾病進(jìn)行實(shí)時分析診斷。因此本文提出了一種針對家用的、可對心血管疾病實(shí)時分析診斷的心電監(jiān)測系統(tǒng)。
本文使用內(nèi)嵌了ARM Cortex A9雙核處理器的FPGA,其運(yùn)算處理能力強(qiáng),可實(shí)時分析處理心電數(shù)據(jù)。通過軟硬件協(xié)同設(shè)計,在ARM上實(shí)現(xiàn)了難以硬件化的QRS檢測算法,心率變異性分析和基于卷積神經(jīng)網(wǎng)絡(luò)的心梗檢測算法;在FPGA中實(shí)現(xiàn)FIR濾波器和LMS自適應(yīng)陷波及數(shù)據(jù)緩存,減輕ARM處理負(fù)擔(dān),提高數(shù)據(jù)處理效率。
1 系統(tǒng)設(shè)計
基于SOPC的多導(dǎo)聯(lián)ECG監(jiān)測系統(tǒng)框架如圖1所示,系統(tǒng)包括心電信號采集前端和心電數(shù)據(jù)處理后端兩部分,兩者之間通過ZigBee進(jìn)行數(shù)據(jù)傳輸與控制。
2 系統(tǒng)各模塊原理及設(shè)計
2.1 心電信號采集前端
為了達(dá)到心電信號采集前端便攜化的目的,使用了TI公司推出的專門針對ECG信號采集的ADS1298芯片。ADS1298內(nèi)部集成了8通道24位帶符號的模數(shù)轉(zhuǎn)換模塊,分別用來測量I、Ⅱ?qū)?lián)及V1~V6的6個胸導(dǎo)聯(lián)信號[5]。根據(jù)這8個導(dǎo)聯(lián)的信號經(jīng)過一定的運(yùn)算處理可得到十二導(dǎo)聯(lián)心電信號[6]。其采樣頻率可在250 S/s~32 kS/s之間。
系統(tǒng)通過AgCl電極片拾取心電信號,ADS1298每完成一次采樣轉(zhuǎn)換,STM32控制ZigBee模塊將所用到的導(dǎo)聯(lián)的心電數(shù)據(jù)發(fā)送到心電數(shù)據(jù)處理后端。其軟件控制流程如圖2所示。
2.2 無線傳輸模塊
本系統(tǒng)使用UART接口的ZigBee模塊。雖然ZigBee傳輸距離較短,速率慢,但由于系統(tǒng)AD采樣速率較低,并且針對家用,傳輸距離限于幾十米范圍,再加上ZigBee功耗低,因此ZigBee滿足設(shè)計要求[7]。首先系統(tǒng)上電后要檢測前端與后端是否建立連接。圖3所示為判斷是否建立連接流程。
2.3 心電數(shù)據(jù)處理后端
心電數(shù)據(jù)處理后端的主要任務(wù)是通過FPGA與ARM完成對心電數(shù)據(jù)的預(yù)處理與算法處理。
FPGA中設(shè)計結(jié)構(gòu)如圖4所示。用多路并行處理的方式處理心電數(shù)據(jù),且每一路的設(shè)計遵從流水線的設(shè)計思路,提高系統(tǒng)處理速度,實(shí)現(xiàn)實(shí)時處理。
2.3.1 UART模塊
為靈活接收ZigBee的數(shù)據(jù)并將數(shù)據(jù)傳送到后端處理,本系統(tǒng)在FPGA中用Verilog采用有限狀態(tài)機(jī)的方式實(shí)現(xiàn)了UART接口。
2.3.2 數(shù)據(jù)格式轉(zhuǎn)換模塊
由于FIR濾波與LMS自適應(yīng)濾波均為浮點(diǎn)數(shù)運(yùn)算,因此該模塊的主要功能是將心電采集前端發(fā)送的24位整型數(shù)據(jù)轉(zhuǎn)換成對應(yīng)的32位浮點(diǎn)型數(shù)據(jù)。其結(jié)構(gòu)如圖5所示。
2.3.3 FIR濾波模塊
從心電采集前端發(fā)送的心電數(shù)據(jù)中有由呼吸引起的基線漂移,其頻率在0.5 Hz左右[8],因此設(shè)計了截止頻率為0.5 Hz的FIR高通濾波器。經(jīng)測試,1 000階濾波器效果較好。
FIR濾波器本質(zhì)上是卷積運(yùn)算,僅涉及移位、相乘、累加運(yùn)算。在MATLAB中設(shè)計得到的濾波器系數(shù)均為浮點(diǎn)數(shù),因此采用Altera自帶的浮點(diǎn)乘法器與浮點(diǎn)加法器IP核??紤]到濾波器的階數(shù)為1 000階,因此采用串行結(jié)構(gòu)且只用一個浮點(diǎn)乘法器與浮點(diǎn)加法器。經(jīng)計算,完成移位、1 001次乘法、1 000次加法需占用9 000個時鐘周期左右。而系統(tǒng)時鐘為50 MHz,可得該模塊吞吐率可達(dá)160 kb/s。心電信號的采樣率為250 Hz,所以該FIR濾波器可實(shí)時處理心電數(shù)據(jù)。圖6所示為FIR濾波器的具體結(jié)構(gòu)。該模塊對FPGA資源占用率為2%。
2.3.4 LMS自適應(yīng)濾波器
前端心電采集系統(tǒng)發(fā)送的心電數(shù)據(jù)中有較嚴(yán)重的50 Hz工頻干擾,所以設(shè)計了基于LMS算法的自適應(yīng)陷波器[9],抑制輸入信號中的工頻干擾。
基于LMS算法的自適應(yīng)陷波器結(jié)構(gòu)如圖7所示。其中X(t)是含有干擾信號的輸入信號,干擾信號頻率為ω,由于干擾信號的幅值與相位未知,因此提供兩個相互正交的單頻信號sin(ωt)與cos(ωt),通過調(diào)整權(quán)值來合成與干擾信號相同的信號,將輸入信號與合成的干擾信號作差就可得到有用信號。
LMS自適應(yīng)陷波器所涉及的運(yùn)算僅為乘法和加法,且都為浮點(diǎn)運(yùn)算,為節(jié)省FPGA資源,使用一個浮點(diǎn)乘法器和加法器。經(jīng)計算,按照此種方法,該模塊的吞吐率可達(dá)16 Mb/s,可實(shí)時處理心電數(shù)據(jù)。該模塊對所用FPGA資源占用率為2%。
2.3.5 基于自定義IP核的數(shù)據(jù)緩存模塊
為提高ARM的處理效率,以自定義IP核形式設(shè)計了數(shù)據(jù)緩存模塊將心電數(shù)據(jù)存儲到片外的SDRAM中,之后由ARM讀取SDRAM中的數(shù)據(jù)作算法處理。本系統(tǒng)ARM與FPGA之間通過AXI總線進(jìn)行數(shù)據(jù)交換。
數(shù)據(jù)緩存模塊的實(shí)現(xiàn)是基于Altera的Qsys硬件平臺。在Qsys中添加SDRAM Controller,通過FPGA和ARM分別對SDRAM Controller的控制,來完成對片外SDRAM的讀寫。SDRAM Controller是基于Avalon總線實(shí)現(xiàn)的Avalon從端口。因此在FPGA中實(shí)現(xiàn)對SDRAM Controller的控制是通過遵循Avalon總線傳輸協(xié)議編寫一個Avalon主端口。然后將該Avalon主端口模塊例化為自定義IP核添加到Qsys中,便可實(shí)現(xiàn)在FPGA中對SDRAM Controller的控制。ARM則通過AXI總線完成控制。
2.3.6 ARM處理平臺
嵌入式ARM硬核為雙核,且主頻可達(dá)925 MHz,運(yùn)算能力強(qiáng),可實(shí)時處理心電數(shù)據(jù)。在ARM上構(gòu)建了Linux操作系統(tǒng),編程方式采用多任務(wù)編程,通過創(chuàng)建多個進(jìn)程分別完成心電數(shù)據(jù)的讀取,實(shí)現(xiàn)難以硬件化的心電檢測算法,控制各模塊之間協(xié)調(diào)工作,將心電數(shù)據(jù)以txt文件格式存儲到SD卡當(dāng)中,以及在LCD屏上顯示心電波形和診斷結(jié)果。各進(jìn)程之間通過共享內(nèi)存的方式實(shí)現(xiàn)數(shù)據(jù)交互。圖8所示為軟件設(shè)計流程。
3 驗(yàn)證和評價
3.1 占用資源情況
系統(tǒng)總導(dǎo)聯(lián)數(shù)為5導(dǎo)聯(lián),采樣率為250 Hz。在友晶DE1-SoC開發(fā)板上運(yùn)行,F(xiàn)PGA總資源占用情況如表1所示,占用資源在系統(tǒng)限度內(nèi)。
3.2 ECG信號提取測試
圖9(a)是心電前端采集系統(tǒng)采集的原始心電信號波形,有明顯的基線漂移和較大的工頻干擾。圖9(b)為從系統(tǒng)SD卡中得到的經(jīng)過FPGA濾波處理的心電圖,可看到基線漂移被明顯濾除,且50 Hz工頻得到有效抑制。
3.3 系統(tǒng)測試
被測者身心狀況良好。圖10為液晶屏的顯示,可實(shí)時顯示心電波形及診斷結(jié)果。圖中下方左邊Heart Rate顯示心率為69,正常;下方中間status顯示正常心電信號(Norm)或是有心肌梗死前兆,圖中顯示的為Norm即正常心電信號;SDNN和NN50顯示心率變異性結(jié)果,其中SDNN為0.133在正常范圍(0.141±0.039 s)內(nèi),NN50顯示30 s內(nèi)相鄰心跳間期的差值超過50 ms的心跳個數(shù),為11個。
3.4 心電算法的實(shí)現(xiàn)
本系統(tǒng)實(shí)現(xiàn)了課題組前期QRS檢測算法[10],通過計算RR間期,可計算心率值。在此基礎(chǔ)上本文進(jìn)行了額外的心率變異性分析,從而輔助心血管疾病的預(yù)防。包含兩個方面:(1)SDNN:全部心跳間期的的標(biāo)準(zhǔn)差,正常情況下該值一般在0.141±0.039 s的范圍內(nèi)[11]。(2)NN50:心電信號中所有每對相鄰心跳間期的差值超過50 ms的心跳個數(shù),數(shù)值越大表明心率變異性也越大[12]。
本系統(tǒng)也實(shí)現(xiàn)了課題組前期的基于V2、V3、V5、aVL導(dǎo)聯(lián)和卷積神經(jīng)網(wǎng)絡(luò)的心梗檢測算法[13],該算法可達(dá)到總體96%的準(zhǔn)確率。通過將在PC上離線訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)移植到SOPC平臺,實(shí)現(xiàn)對心梗疾病的診斷。
4 結(jié)論
本文提出了一種基于SOPC的多導(dǎo)聯(lián)ECG實(shí)時監(jiān)測系統(tǒng),可以實(shí)現(xiàn)對心電信號的采集和無線傳輸,并在SOPC平臺上進(jìn)行實(shí)時數(shù)字濾波、算法分析診斷以及診斷結(jié)果和心電波形的顯示。實(shí)驗(yàn)表明,本系統(tǒng)可以很好地采集人體心電信號,經(jīng)處理后可得到良好的心電波形,并借助ARM處理器對心電數(shù)據(jù)實(shí)時算法分析,實(shí)現(xiàn)心電疾病的診斷。
參考文獻(xiàn)
[1] 丁慎平,王應(yīng)海,吳衛(wèi)榮,等.便攜式心電監(jiān)護(hù)儀設(shè)計進(jìn)展[J].生物醫(yī)學(xué)工程學(xué)雜志,2014(3):708-713.
[2] 姜倩,唐鴻儒.基于物聯(lián)網(wǎng)的家用心電監(jiān)護(hù)儀[J].自動化與儀器儀表,2013(3):100-101.
[3] 姬金虎,夏文文,張?zhí)?,?互聯(lián)網(wǎng)+穿戴式心電監(jiān)護(hù)設(shè)備的研發(fā)[J].中國數(shù)字醫(yī)學(xué),2017,12(2):78-79.
[4] 戴明,王琪,吳萬慶,等.一種便攜式多體征參數(shù)監(jiān)護(hù)系統(tǒng)的設(shè)計及實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2015,41(2):78-81.
[5] TI.ADS1298Datasheet[EB/OL].(2011-08-xx).http://focus.ti.com.cn/lit/ds/symlink/ads1298.pdf.
[6] 李陽青.基于ADS1298芯片的12導(dǎo)心電圖儀的設(shè)計[J].醫(yī)療裝備,2016,29(18):34-35.
[7] 張晶晶,王亮,雷明.基于ZigBee技術(shù)的家庭遠(yuǎn)程心電監(jiān)護(hù)系統(tǒng)[J].智能建筑,2010(2):38-39.
[8] 郭巧惠,楊永明,韋建敏,等.心電信號處理濾波器的設(shè)計[J].自動化技術(shù)與應(yīng)用,2006,25(3):60-62.
[9] 杜勇.數(shù)字濾波器的MATLAB與FPGA實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,2015.
[10] 李在軍,王明,鐘維,等.基于SOPC的心電信號QRS波和ST段檢測與識別[J].武漢大學(xué)學(xué)報(理學(xué)版),2014,60(2):122-128.
[11] 邱天爽.統(tǒng)計信號處理:醫(yī)學(xué)信號分析與處理[M].北京:科學(xué)出版社,2012.
[12] 劉曉芳,葉志前.心率變異性的分析方法和應(yīng)用[J].國際生物醫(yī)學(xué)工程雜志,2001,24(1):42-45.
[13] LIU W,ZHANG M,ZHANG Y,et al.Real-time multilead convolutional neural network for myocardial infarction detection[J].IEEE Journal of Boimedical & Health Informatics,2017,PP(99):1.
作者信息:
張夢新,廖 遠(yuǎn),劉文涵,黃啟俊
(武漢大學(xué) 物理科學(xué)與技術(shù)學(xué)院,湖北 武漢430072)