用于胎兒心電信號測量的嵌入式數(shù)據(jù)處理系統(tǒng)研究
目前提取胎兒心電最常用的是自適應(yīng)濾波方法。自適應(yīng)濾波器是一種能夠自己調(diào)整參數(shù)的特殊維納濾波器,設(shè)計時不需要預(yù)先知道輸入信號和噪聲的統(tǒng)計學(xué)特性,而是在工作過程中通過計算估計出所需的統(tǒng)計特性,并且以此為依據(jù)調(diào)節(jié)參數(shù),以達(dá)到最佳的濾波效果[1]。當(dāng)輸入信號的統(tǒng)計特性發(fā)生改變時,它又能夠跟蹤這種變化自動調(diào)整系數(shù),使濾波器的性能重新達(dá)到最佳。應(yīng)用中一般把母親腹部的信號作為主輸人,胸部信號作為參考噪聲輸入。由于母親自己心電信號x(n)與母親胎兒混合信號d(n)的提取時間不同,使得其在時域內(nèi)是非對應(yīng)關(guān)系。若直接將兩個信號相減,則得到的不是胎兒的信號,但通過自適應(yīng)濾波器的自動調(diào)整過程,將y(n)變成基于d(n)的對x(n)的估計,使得新的混合信號在時域上與母親信號有了某種的對應(yīng)關(guān)系,從而直接將d(n)-y(n)得到胎兒信號。
除了提取胎兒的心電信號外,還需對處理后的胎兒心電信號進行提取特征值等進一步的處理與分析,一般為對心電波的平滑和各個特征點的檢測。雖然使用基于神經(jīng)網(wǎng)絡(luò)算法及其他的基于統(tǒng)計學(xué)原理的方法能得到精確的測量結(jié)果,但是由于其軟件算法的復(fù)雜度較高,會帶來實時性差、能耗高等一系列問題。通用的設(shè)計方法是用差分闕值法檢測特征值,闕值的選取是先驗的,并且提取的信息實際上不是特征點的信息,而是由特征點所確定的各個時期的波形信息,如心率的確定是通過兩個相鄰周期內(nèi)R點的間隔時間確定的。
為了實現(xiàn)上述功能,本文設(shè)計了嵌入式的心電信號處理系統(tǒng),完成對信號的濾波、分析處理過程,以滿足心電數(shù)據(jù)處理的高速度、高實時性要求,并且能夠做到對胎兒信號實時監(jiān)測。
1 系統(tǒng)硬件設(shè)計
1.1 系統(tǒng)性能與選型
(1)DSP
自適應(yīng)濾波器要求的計算量比較高,并且由于要求實時測量,所以運算數(shù)據(jù)量極大,對處理器的要求很高,一般的單片機很難滿足要求,因此需要高性能的DSP芯片來實現(xiàn)。如果抽頭為51 200,階數(shù)L=5,每次抽頭采取5個乘加運算(MAC),則一共要采樣51 200×5=256 000個;若用200Hz采樣率,采樣間隔為1/200=5ms,以所選取的TI公司的TMS320VC5402為例,進行一次MAC為10ns,則一次濾波運算的數(shù)據(jù)運算時間是256 000×10=2.5ms,由此可以看到C54完全可以滿足系統(tǒng)實時性的要求。
TI公司的定點數(shù)字信號處理器TMS320VC5402含有專門的功耗控制功能,具有很低的靜態(tài)功耗;改進的哈佛結(jié)構(gòu),多總線(1條程序總線,3條數(shù)據(jù)總線和4條地址總線)和6級流水線,有40位的算術(shù)邏輯運算單元(ALU),包括2個獨立的40位累加器和1個40位的桶形移位寄存器,指令周期為10ns,運算速度為100MIPS,并且具有強大的尋址能力,1M×16bit的最大尋址外部空間,內(nèi)置16K×16bit RAM,4K×16bit ROM,其乘法單元和加法單元可以在一個流水線狀態(tài)周期內(nèi)完成一次MAC運算,數(shù)據(jù)處理能力強,支持JTAG硬件仿真[3]。
(2)MCU
從信號特征上來說,心電信號時域特征(波形的輪廓)明顯,幅度比較微弱(mV級),正常人心臟每分鐘跳動65~75 次左右,也就是說,它的頻率不到1Hz。但對于一些心臟病人來說,其諧波分量(QRS波群)頻率可能達(dá)到100Hz,這就表明采樣頻率不會過高,一般在200Hz左右[2]。
心電信號的處理對于精度沒有很高的要求,一般8位左右的A/D就可以滿足系統(tǒng)需要,出于簡化電路考慮,實際選用較多的是MCU片上A/D。綜上所述,本文選用了TI公司的MSP430F169,其含有一個片內(nèi)的12位A/D,還有一個12位D/A,能夠方便地將處理后的數(shù)據(jù)轉(zhuǎn)化為模擬信號。
MSP430系列單片機是TI公司推出的一種超低功耗的混合信號控制器,具有16位的RISC結(jié)構(gòu),極高的代碼運行效率,豐富的外設(shè)資源,并且支持JTAG和FLASH在線編程[4]。
①極低功耗。給單片機供電的電壓可低到2.5V;工作電流低,在3V供電、1MHz情況下僅消耗電流0.4mA;該系列具有5 種節(jié)能模式, 在閑置模式下的電流值是0.1LA。
②運算能力強。MSP430F169基于16位RISC結(jié)構(gòu),內(nèi)部帶有硬件乘法器,可以執(zhí)行16×16 位的帶符號數(shù)或不帶符號數(shù)乘法運算。
③片內(nèi)資源豐富。在MSP430F169內(nèi)部集成了A/D、LCD驅(qū)動電路、16位定時器、看門狗和串行口(UART)以及專用的可編程I/O口等,片內(nèi)集成2KB的RAM和60KB的ROM。
(3)存儲器
為了增強系統(tǒng)的擴展性和提高DSP的處理能力,系統(tǒng)增加了外置的FLASH和SRAM。C54x系列DSP只能同異步的存儲器直接相接,并且TMS320VC5402的指令周期為10ns。為保證DSP無等待運行,需要外部存儲器的速度10ns左右,考慮現(xiàn)有芯片的性價比做如下選擇:
FLASH:AM29LV400-55,256K×16bit/512×8bit,指令周期55ns,電源電壓3.3V(加入5個軟件等待);
SRAM: CY7C1021V33-12,64K×16bit,指令周期12ns,電源電壓3.3V(加入1個等待)。
(4)電源
良好穩(wěn)定的電源是電路正常工作的保證,對于DSP這樣的高端處理器,還需要滿足其對內(nèi)核和IO不同的上電順序,這里特別選用了TI公司專門為DSP設(shè)計的電源芯片TPS73HD318,5V輸入1.8/3.3V混合輸出,并且配備了專門的復(fù)位芯片。
1.2 系統(tǒng)架構(gòu)
本系統(tǒng)構(gòu)建以TI公司的MSP430F169為核心,TMS320VC5402為運算單元,系統(tǒng)硬件框圖如圖1所示。
系統(tǒng)中MSP430F169作為MCU,控制整個電路的工作,DSP負(fù)責(zé)邏輯運算。為了能夠更加有效地發(fā)揮DSP的運算能力,分別采用了FLASH和SRAM芯片擴展DSP的數(shù)據(jù)空間和存儲空間,并且用CPLD對存儲空間的映射進行控制,以達(dá)到對映射地址動態(tài)控制的目的。
1.3 通信模塊設(shè)計
系統(tǒng)設(shè)計的核心是MSP430和TMS320VC5402連接通信問題,本文采用主機接口(HPI)通信模式。HPI是一個8位的并行口,MSP430可以方便地通過這個接口訪問DSP整個數(shù)據(jù)空間,直接由DSP的硬件流水進行優(yōu)化,沒有多余的開銷。連接方式如圖2所示。
[!--empirenews.page--]
HPI有兩種工作模式:
(1)共用訪問模式(SAM)。此狀態(tài)下MSP430和DSP都可以訪問HPI存儲器,如果二者的讀取周期發(fā)生了沖突,主機(MSP430)有優(yōu)先權(quán)。
(2)僅主機訪問模式(HOM)。在此模式下只有主機(MSP430)可以訪問HPI存儲器,DSP處于復(fù)位狀態(tài)或最小功耗狀態(tài)。
其中8位數(shù)據(jù)總線(HD0~HD7)負(fù)責(zé)與主機交換信息,因為TMS320VC5402接口為16位,所以主機與DSP之間數(shù)據(jù)傳輸由2個連續(xù)的字節(jié)組成。由HBIL引腳指示正在傳輸?shù)氖歉?位還是低8位。主機通過HCNTL0和HCNTL1指定所訪問的寄存器是控制寄存器HPIC、地址寄存器HPIA還是數(shù)據(jù)寄存器HPID。HPIA寄存器還可以被設(shè)置為自動增尋址方式,以提高對連續(xù)地址訪問操作的效率。HCS是片選信號,在主機訪問HPI時必須保持為低。HAS是地址選通信號,一般用作地址鎖存或不用(接高電平)。HR/W為讀寫選通信號,用來確定數(shù)據(jù)傳輸?shù)姆较?。和是?shù)據(jù)選通信號,用于在主機訪問周期控制數(shù)據(jù)的傳輸。當(dāng)沒有使用信號,并且HCS信號處于低電平時,或可用于對HBIL、HCNTL0/1和HR/W信號的采樣。因為HDS1和HDS2內(nèi)部互斥,所以不能同時將和置低。硬件連接示意圖如圖3所示。
1.4 外置存儲器設(shè)計
為了增強系統(tǒng)的擴展性及擴展DSP存儲空間,特增加了外置FLASH和SRAM,并由CPLD控制二者與DSP之間的時序關(guān)系。圖4為外接存儲器系統(tǒng)的硬件框圖。
CPLD配備了JTAG接口,便于程序燒錄和日后修改。由于CPLD的時序嚴(yán)格,并且速度快、易編程,非常適于用作接口邏輯控制芯片。本設(shè)計采用了Alreta公司的EPM7032S芯片,利用DSP的MSTRB和R/W控制SRAM和FLASH的OE與WE的選通,A15、DS和XF控制FLASH的選通,PS和A19控制SRAM的選通。
VHDL語言描述如下:
OE<=‘0’when (mstrb=‘0’and rw=‘1’) else‘1’;
WE<=‘0’when (mstrb=‘0’and rw=‘0’) else‘1’;
CE(sram)<=‘0’ when(ps=‘0’and A19=‘0’) else ‘1’;
CE(flash)<=‘0’ when(ps=‘0’and xf=‘0’ and a19= ‘1’) or (ds=‘0 and xf=‘1 and a19=‘0’) else‘1’;
為了減少每次開機時的工作量,將處理程序(自適應(yīng)LMS算法)燒入了FLASH中,并在系統(tǒng)復(fù)位時由編寫的Bootloader自動將外部FLASH中的程序?qū)懭隓SP內(nèi)部的DRAM中,采用了在線燒制的方式。具體實現(xiàn)方式不再給出。編寫時要注意復(fù)位時內(nèi)部RAM的映射問題,因為復(fù)位時DSP自動將OVLY置1[3],將內(nèi)部的RAM映射到所有數(shù)據(jù)空間的每一頁的0080~3fff中,所以實際編寫B(tài)ootloader時程序?qū)懭霐?shù)據(jù)空間的起始地址應(yīng)當(dāng)為4000。
復(fù)位后FLASH映射到數(shù)據(jù)空間的0000~ffff,SRAM映射到程序空間的0000~ffff上,待燒錄完成后,由通用IO引腳XF控制映射到程序空間的80000~bffff。數(shù)據(jù)空間由內(nèi)部和外部RAM獨占。 [!--empirenews.page--]
2 系統(tǒng)軟件設(shè)計
單片機與DSP軟件通信流程如圖5所示。由于本系統(tǒng)中的位已置1,所以實際通過軟件控制位置1和置0來完成每個讀寫周期。DSP的工作流程與其正好相反,一旦接受到MSP430傳來的中斷信號,便馬上進入中斷子程序,從發(fā)送來的地址中取出數(shù)據(jù)進行運算處理,完成后對其取反后存在相同的地址內(nèi),之后置位HINT中斷單片機,退出中斷子程序。
系統(tǒng)總軟件流程由圖6所示。MSP430采集完數(shù)據(jù)后,進入HPI發(fā)送子程序,發(fā)送完數(shù)據(jù)后進入低功耗模式等待DSP的處理結(jié)果,并將其顯示出來;DSP上電后進入低功耗狀態(tài),待MSP430將數(shù)據(jù)傳遞完后啟動濾波算法對數(shù)據(jù)進行處理,待處理結(jié)束后將結(jié)果傳回到MSP430中,重新進入低功耗狀態(tài)等待下一次中斷。
3 結(jié)果分析
圖7為對實際采集的母嬰混合心電信號和母親自身信號進行分析處理后的實時數(shù)據(jù),通過Matlab儀表控制工具箱中的Serial類函數(shù)及其相關(guān)函數(shù),讀取串口發(fā)送的數(shù)據(jù),并繪制得到。該類函數(shù)操作雖然效率一般并且對中斷的響應(yīng)比較差,但是對于本文所用的串口數(shù)據(jù)的讀取處理,有著操作簡單、直觀的優(yōu)點。具體過程如下:
(1)創(chuàng)建串行口設(shè)備對象Serial();
(2)設(shè)置波特率=9 600,幀格式(停止位=0,數(shù)據(jù)位=8,校驗位=0等);
(3)設(shè)置具體函數(shù),完成與硬件系統(tǒng)的連接和之間的數(shù)據(jù)交換;
(4)設(shè)置關(guān)閉和刪除設(shè)備對象函數(shù)。
設(shè)置過程比較簡單,不再給出詳細(xì)的程序,具體設(shè)置方法見參考文獻(xiàn)6。
通過對輸入和輸出心電波形比較可以看到,輸出波形失真度低,特征點對應(yīng)準(zhǔn)確。結(jié)果表明系統(tǒng)可以滿足設(shè)計要求,轉(zhuǎn)換精度高,實時性很好。
本文通過對胎兒及母嬰心電混合信號特點的討論,給出了一整套的嵌入式數(shù)據(jù)處理解決方案,不但滿足了信號處理的大運算量、高實時性的要求,還具備了便攜特點,有很高的實用價值。