《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于ARM9和CPLD的四導(dǎo)心音采集顯示系統(tǒng)的設(shè)計(jì)
基于ARM9和CPLD的四導(dǎo)心音采集顯示系統(tǒng)的設(shè)計(jì)
來源:電子技術(shù)應(yīng)用2013年第12期
劉 洋,王海濱,趙 紅,邵 丹,張 凱
西華大學(xué) 電氣信息學(xué)院,四川 成都610039
摘要: 介紹一個(gè)基于ARM920T內(nèi)核的S3C2440A微處理器和CPLD芯片EPM570T144C5N實(shí)現(xiàn)的四導(dǎo)心音采集顯示系統(tǒng)。系統(tǒng)的模擬電路部分對(duì)心音信號(hào)進(jìn)行放大去噪;數(shù)字部分通過CPLD控制高速A/D轉(zhuǎn)換并通過模擬SPI接口將數(shù)據(jù)傳給ARM9。選用Linux2.6.30作為操作系統(tǒng),設(shè)計(jì)了ARM9的SPI驅(qū)動(dòng)和基于Qt4.7以及Qwt的應(yīng)用程序。實(shí)際運(yùn)行情況表明,本系統(tǒng)運(yùn)行流暢,實(shí)現(xiàn)了實(shí)時(shí)采集心音信號(hào)、顯示波形、儲(chǔ)存心音數(shù)據(jù)。
關(guān)鍵詞: ARM 心音 采集顯示 CPLD ARM9
中圖分類號(hào): TP393
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)12-0018-04
The design of four-channel heart sound acquisition and display system based on ARM9 and CPLD
Liu Yang,Wang Haibing,Zhao Hong,Shao Dan,Zhang Kai
School of Electrical and Information Engineering,Xihua University, Chengdu 610039,China
Abstract: This paper introduces a four-channel heart sound acquisition and display system which is based on microprocessor S3C2440A whose core is ARM920T and CPLD chip EPM570T144C5N. In this system,the analog circuit amplifies heart sounds and filters the noise, and the digital part controls high-speed A/D converter and simulation SPI interface to transmit data to ARM9 through CPLD. Linux2.6.30 is used as operation system. SPI driver of ARM9 and application are designed based on Qt4.7 and Qwt. The practical application shows that the system runs smoothly and achieves real-time acquisition, waveform display and heart sound data storage.
Key words : heart sound;acquisition and display;CPLD; ARM9;Qt4.7

    隨著我國人口老齡化的加快以及生活水平的提高,預(yù)計(jì)在今后的20年內(nèi),心血管疾病發(fā)病率將超過50%,如不加以控制,到2030年我國心血管疾病患者將增加2 000萬人以上,與之有關(guān)的死亡人數(shù)將增加700多萬人[1]。心臟聽診往往作為心血管疾病早期診斷的主要手段,但是采用傳統(tǒng)的聽診方式存在許多問題,比如難以捕捉和分辨微弱的生理信號(hào),長時(shí)間聽診易造成聽力疲勞,診斷結(jié)果易受聽診者的主觀影響。近幾年來隨著科技的進(jìn)步興起了一些電子聽診器,比如美國BIOPAC公司生產(chǎn)的MP150型16通道生理信號(hào)記錄分析儀、日本OLYMPUS公司生產(chǎn)的單道心音數(shù)字錄音筆等。前者可以采集多個(gè)聽診部位的信號(hào),數(shù)據(jù)更全面但是價(jià)格昂貴,且體積較大;后者的價(jià)格便宜,但波形顯示效果不好,不能同時(shí)提供多瓣膜病例信息。因此,如何通過工程技術(shù)手段實(shí)現(xiàn)設(shè)備的高效率、低成本以及便于使用等成為研究的熱點(diǎn)。

    隨著嵌入式技術(shù)的不斷發(fā)展,特別是處理器運(yùn)算能力的不斷提升以及一些優(yōu)秀的圖形用戶界面軟件(如國產(chǎn)MiniGUI、Trolltech公司出品的Qt等)的出現(xiàn),使醫(yī)療設(shè)備更加小型化,使用也變得更加容易。本文以三星公司生產(chǎn)的基于ARM920T內(nèi)核的S3C2440A作為主控制器,以Linux為操作系統(tǒng),開發(fā)了四導(dǎo)心音采集顯示系統(tǒng)。
1 系統(tǒng)總體設(shè)計(jì)
    系統(tǒng)總體結(jié)構(gòu)如圖1所示,包括以下幾個(gè)模塊:
    (1)信號(hào)采集調(diào)理模塊,完成對(duì)主動(dòng)脈、肺動(dòng)脈、二尖瓣、三尖瓣心音信號(hào)的采集以及放大與去噪;(2)數(shù)字信號(hào)處理模塊,選用高性能的A/D芯片再配合CPLD的控制進(jìn)行模/數(shù)轉(zhuǎn)換,CPLD通過模擬SPI接口將數(shù)據(jù)傳給ARM9;(3)ARM9核心處理模塊,核心模塊主要由S3C2440A、64 MB SDRAM以及512 MB Nandflash 組成,完成對(duì)數(shù)據(jù)的接收保存,并通過10英寸液晶屏顯示心音波形,在Nandflash中單獨(dú)劃分出400 MB的空間來保存心音文件,通過移植USB Gadget驅(qū)動(dòng)實(shí)現(xiàn)當(dāng)采集板通過USB接口插上電腦后能像U盤一樣讀取這400 MB空間中的內(nèi)容。

2 系統(tǒng)硬件設(shè)計(jì)
2.1 信號(hào)調(diào)理模塊設(shè)計(jì)

 系統(tǒng)使用了美國3M公司生產(chǎn)的Littmann和ClassicIISE聽診頭,另外,在聽診頭上加入了一種新型的貼膜,不僅有利于粘住身體所測部位,而且能保證采集的音質(zhì)不變。心音傳感器模塊能將心臟搏動(dòng)信號(hào)轉(zhuǎn)化為低阻抗音頻信號(hào)[2]。針對(duì)心音信號(hào)具有的信號(hào)微弱、易受干擾等特點(diǎn),首先要進(jìn)行初級(jí)放大以滿足后面濾波的需求,在經(jīng)過帶通濾波電路濾去不屬于心音信號(hào)頻帶的部分后,再經(jīng)工頻陷波電路,最后經(jīng)過主放大電路。
    (1)前置放大電路采用了TI公司生產(chǎn)的一款低功耗、低噪聲、高輸入阻抗的運(yùn)算放大器TLC2252。電路如圖2所示,C1和R2組成的電路起到兩個(gè)作用:(1)阻止C1左端的直流電流通過;(2)允許心音傳感器輸出的交流小信號(hào)通過并傳遞給后面的放大器,C2、R3、R4、R5構(gòu)成同相放大電路,其具有輸入阻抗很高、輸出電阻很低的特點(diǎn),非常適合于前置放大電路。

    (2)前置放大電路輸出的信號(hào)并不是純粹的心音信號(hào),里面還含有一部分低頻信號(hào),比如傳感器與皮膚的摩擦、呼吸噪音等[3]。當(dāng)采集時(shí)遇到咳嗽聲音、器件掉落的聲音可能會(huì)引入高頻噪聲。為了不影響心音信號(hào)的分析,必須將其濾除。在此設(shè)計(jì)了帶通濾波器,前面為二階壓控電壓源低通濾波器,低通濾波電路主要濾掉信號(hào)中高于心音信號(hào)頻率范圍的信號(hào),低通濾波器的上限設(shè)為800 Hz。由于心音頻率的下線為2~5 Hz,為了不損失低頻分量,后面高通濾波器的截止頻率設(shè)置為2 Hz[4]。采用二階壓控電壓源低通濾波器,電路如圖3所示。

    (3)系統(tǒng)采用電源適配器來供電,不可避免地引入了50 Hz的工頻干擾,而它正好落在心音信號(hào)的頻帶范圍內(nèi),因此需要采用50 Hz工頻陷波電路將其濾除。目前廣泛使用的對(duì)稱型雙T有源濾波陷波器,但是對(duì)稱型雙T有源陷波器對(duì)電路元件的對(duì)稱性要求較高,如不能滿足對(duì)稱性要求則會(huì)極大影響陷波器的中心頻率和Q值。因此,本系統(tǒng)采用二階無限增益多級(jí)反饋有源陷波器[5],如圖4所示,其中C7=C8=C,中心頻率的計(jì)算可參考式(1),Q值的計(jì)算可參考式(2)。

2.2 數(shù)字電路設(shè)計(jì)
    考慮到轉(zhuǎn)化精度和采樣頻率,沒有采用S3C2440自帶的A/D,而是選用了Maxim公司的四通道、16位量化精度芯片MAX11044。它具有固定的轉(zhuǎn)換時(shí)間,能同時(shí)對(duì)四個(gè)通道采樣,采樣頻率最高可達(dá)250 kHz,可保證對(duì)心音信號(hào)進(jìn)行無失真采集。MAX11044輸入電壓范圍為-5 V~+5 V,輸入阻抗高達(dá)1 GΩ,對(duì)于適當(dāng)放大后的心音信號(hào)無需電平抬升及外圍阻抗匹配電路,可直接進(jìn)行采用量化,從而簡化外圍電路。
    通過控制MAX11044的CONVST引腳拉低持續(xù)時(shí)間來達(dá)到對(duì)采樣頻率的設(shè)置。當(dāng)CONVST引腳為低時(shí)對(duì)模擬信號(hào)進(jìn)行捕捉;當(dāng)CONVST引腳為高時(shí)進(jìn)行轉(zhuǎn)換。由于心音信號(hào)的頻帶范圍在20~800 Hz以內(nèi),并依據(jù)耐奎斯特采樣定理和實(shí)際的硬件處理能力,A/D的采樣率設(shè)定為10 kHz。由于MAX11044數(shù)據(jù)輸出為并口,而且還需要多根控制線,在此選用Altera公司的CPLD芯片EPM570T144C5N作為數(shù)字電路控制核心,通過編寫Verilog程序來控制,主要功能包括:(1)接收ARM9發(fā)來的命令控制A/D開啟與關(guān)閉;(2)設(shè)置A/D的采樣頻率;(3)獲取A/D轉(zhuǎn)換的數(shù)據(jù);(4)模擬SPI接口將數(shù)據(jù)通過SPI接口傳送給ARM9。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 驅(qū)動(dòng)程序的設(shè)計(jì)

    驅(qū)動(dòng)程序是操作系統(tǒng)與硬件的直接接口,驅(qū)動(dòng)程序屏蔽了硬件的細(xì)節(jié),使得應(yīng)用程序可以像操作普通文件一樣對(duì)硬件進(jìn)行操作。在系統(tǒng)中S3C2440利用SPI接口來接收CPLD發(fā)來的數(shù)據(jù)。SPI是一種高速、全雙工、同步的通信總線,并且在芯片的管腳上只占用4根線, S3C2440芯片上集成了兩個(gè)SPI控制器,通過配置相關(guān)寄存器可以設(shè)置SPI的工作方式、主從關(guān)系、接收數(shù)據(jù)模式等。考慮到接收到的數(shù)據(jù)量大以及減少CPU的使用率,在此采用了DMA的數(shù)據(jù)接收方式,CPLD有數(shù)據(jù)就會(huì)自動(dòng)發(fā)送過來,所以選擇讓ARM9做從設(shè)備。
    驅(qū)動(dòng)程序的接口用來描述驅(qū)動(dòng)程序與設(shè)備的交互,當(dāng)應(yīng)用程序操作設(shè)備文件時(shí)調(diào)用open、read、write、close等函數(shù),最終會(huì)調(diào)用對(duì)應(yīng)的接口函數(shù),這些接口函數(shù)封裝在file_operations結(jié)構(gòu)中,其結(jié)構(gòu)如下:
    static const struct file_operations spi_fops =
    {    .owner= THIS_MODULE,//指向擁有該結(jié)構(gòu)的模塊
        .open= spi_open,//打開設(shè)備接口函數(shù)
        .read= spi_read,//讀接口函數(shù)
        .release=spi_release,//釋放設(shè)備接口函數(shù)
    };
    (1)spi_open函數(shù)主要完成硬件的初始化工作,使用s3c2410_gpio_cfgpin()函數(shù)將所用到的引腳設(shè)置為SPI功能;開啟SPI時(shí)鐘,并且配置SPI有關(guān)的寄存器,主要包括讀寫模式、工作方式、主從關(guān)系等;由于使用了DMA的讀寫模式,因此需要配置相關(guān)的操作,包括設(shè)置DMA源和目的物理地址以及所在總線、緩存大小、傳輸模式;最后開啟DMA。
    (2)當(dāng)應(yīng)用程序調(diào)用read時(shí),spi_read函數(shù)將被執(zhí)行,在spi_read函數(shù)外,需要初始化等待隊(duì)列dma_waitq和全局變量ev_dma,在spi_read函數(shù)中首先調(diào)用wait_event_interruputible(dma_waitq, ev_dma)函數(shù)。ev_dma為等待條件,當(dāng)它為0時(shí)進(jìn)程將休眠;當(dāng)它為1時(shí)函數(shù)返回0,不休眠。當(dāng)DMA的緩存達(dá)到了設(shè)定的值時(shí),將產(chǎn)生DMA中斷進(jìn)入中斷處理函數(shù)irqreturn_t DMA_irq(int irq,void *devid),在中斷函數(shù)中將全局變量ev_dma設(shè)置為1,并且調(diào)用wake_up_interruptible(&dma_waitq)函數(shù),它將喚醒dma_waitq等待隊(duì)列上休眠的進(jìn)程,然后在 spi_read函數(shù)中調(diào)用copy_to_user()函數(shù)把DMA緩存的數(shù)據(jù)拷貝到用戶空間。
    (3)當(dāng)應(yīng)用程序調(diào)用close函數(shù)時(shí),相當(dāng)于調(diào)用驅(qū)動(dòng)程序中的spi_release函數(shù),主要是關(guān)閉DMA通道。
3.2 Qt程序的設(shè)計(jì)
    Qt是一個(gè)跨平臺(tái)的C++圖形用戶界面程序開發(fā)框架,Qt開發(fā)的軟件移植性非常好,編寫好的代碼只需使用不同平臺(tái)的編譯器編譯,而不用修改代碼,即可運(yùn)行在不同的平臺(tái)。軟件使用了Qt/Embeded4.7以及擴(kuò)展庫Qwt來開發(fā)的,Qwt是一個(gè)基于Qt的擴(kuò)展類庫,包含了大量用于工程開發(fā)編程的GUI部件和輔助工具。除了二維繪圖控件類外,它還提供了諸如刻度、滑塊、轉(zhuǎn)盤等控件類供開發(fā)使用[6]。采用的Qwt版本是qwt-6.0.1。程序流程如圖6所示。

    系統(tǒng)以Qt Creator為IDE,首先將Qwt導(dǎo)入Qt Creator中,利用交叉編譯工具進(jìn)行編譯生成ARM版本的動(dòng)態(tài)鏈接庫,將這些鏈接庫拷貝到采集板文件系統(tǒng)的“/lib”目錄下。
3.2.1 界面布局及設(shè)置坐標(biāo)軸及背景網(wǎng)格
    在布局界面中使用了Qt中的布局管理器生成一個(gè).ui的文件,通過拖拉左邊的控件進(jìn)行布局,非常方便。
    網(wǎng)格主要是描述畫布中X和Y軸的刻度劃分和網(wǎng)格線的顏色,用到了類庫中的QwtPlotGrid類;坐標(biāo)軸的設(shè)置主要是對(duì)橫軸、縱軸的刻度及其所代表的意思進(jìn)行設(shè)置。使用到的相關(guān)函數(shù)如下:
    void  QwtPlot::setAxisTitle(int axisTd, const QwtTex &);
    void  QwtPlot::setAxisScale(int axisId, double min,
double max, double step=0);
    void  QwtPlot::setBackgroundRole(QPalette::colorRole);
3.2.2 繪制波形
    首先使用類庫中的QwtPlotCurve類生成4個(gè)繪圖工具,然后設(shè)置這4個(gè)繪圖工具的畫筆顏色以及依附的畫布,相關(guān)函數(shù)如下:
    void QwtPlotCurve::setPen(const Qpen &);
    void QwtPlotCurve::attach(QwtPlot *plot);
    在點(diǎn)擊開始按鈕后就啟動(dòng)了一個(gè)定時(shí)器,每過5 ms就會(huì)自動(dòng)觸發(fā)一次timerEvent事件,在事件中通過調(diào)用read函數(shù)接收CPLD傳來的數(shù)據(jù)。由于一次接收到的數(shù)據(jù)是4個(gè)通道的64位二進(jìn)制數(shù),因此需要將它提取出來,對(duì)應(yīng)于每個(gè)通道轉(zhuǎn)換為十進(jìn)制,然后存放到y(tǒng)Data數(shù)組中。有了繪圖數(shù)據(jù),就可以通過調(diào)用QwtPlotCurve類的繪圖函數(shù)實(shí)現(xiàn)繪圖,關(guān)鍵函數(shù)是:void QwtPlotCurve::setRawSamples(const double *xData, const double *yData, int size);函數(shù)中xData和yData指針分別指向一個(gè)一維數(shù)組,size表示要在畫布上畫多少個(gè)點(diǎn)。在沒有外部中斷的情況下將循環(huán)畫圖,屏幕上會(huì)出現(xiàn)連續(xù)的波形。
3.2.3 按鍵事件

 


    在本系統(tǒng)中有3個(gè)按鍵,分別是開始、停止、保存。當(dāng)點(diǎn)擊開始按鈕時(shí)將通過open函數(shù)打開spi_slave設(shè)備文件代碼為:fd = ::open(“/dev/spi_slave”, O_RDWR); O_RDWR表示以只讀方式打開文件,fd為open函數(shù)返回的文件描述符。點(diǎn)擊停止按鈕時(shí)將調(diào)用close函數(shù)停止接收數(shù)據(jù)并對(duì)屏幕清屏。當(dāng)點(diǎn)擊屏幕上的保存按鈕時(shí)將彈出一個(gè)軟件盤,提示輸入要保存文件的名字,點(diǎn)擊確認(rèn)之后文件將以txt格式被保存在“/mnt/udisk”目錄中,最后將接收到的全部數(shù)據(jù)寫入剛才創(chuàng)建的文件中。
    本文設(shè)計(jì)了四導(dǎo)心音采集顯示系統(tǒng),采用4個(gè)聽診頭同時(shí)檢測臨床4個(gè)聽診部位(主動(dòng)脈瓣、肺動(dòng)脈瓣、三尖瓣和二尖瓣)的心音信號(hào)。從硬軟兩方面詳細(xì)闡述了系統(tǒng)的設(shè)計(jì)流程。通過觸摸屏來操作硬件非常方便,性價(jià)比高。本設(shè)計(jì)為后續(xù)的心音分析提供了可靠的數(shù)據(jù)。
參考文獻(xiàn)
[1] 周婷玉,施元雪.新華網(wǎng).我國成立“國家心血管病中心” [N/OL].(2010-08-13)[2013-4-20].http://news.xinhuanet. com/2010-08/13/c_13444113.htm.
[2] 周紅標(biāo),蔣鼎國,柯永斌,等.基于STC單片機(jī)和LabVIEW的心音信號(hào)檢測系統(tǒng)[J].電子技術(shù)應(yīng)用,2012,38(1):31-33.
[3] 王曉燕,曾慶寧,栗秀尹.基于FPGA的心音信號(hào)采集[J].微型機(jī)與應(yīng)用,2012,31(11):28-30.
[4] 邢素霞,陳天華.基于DSP的心音信號(hào)采集與分析[J].生物醫(yī)學(xué)工程學(xué)雜志,2011,28(2):273-276.
[5] 史志懷,萬遂人.腦電信號(hào)采集中工頻陷波電路的設(shè)計(jì)[J]. 醫(yī)療裝備,2009,22(11):12-13.
[6] 盧華偉.基于Qt/Qwt的操作監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2010,26(1):72-74.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。