摘 要: 介紹了一種基于現(xiàn)場可編程門陣列(FPGA)的數(shù)字式心率計" title="心率計">心率計,。該儀器采用FPGA和VHDL語言實現(xiàn)時鐘分頻,、波形變換、心率測量" title="心率測量">心率測量,、告警控制及數(shù)碼轉(zhuǎn)換等功能,,能夠?qū)崟r測量瞬時心率和平均心率,并能提供心率異常告警信息,。該儀器使用元器件數(shù)量少,、工作穩(wěn)定可靠、顯示直觀,,測量范圍為20~200跳/分鐘,,測量誤差小于1%。
關(guān)鍵詞: 心率計 瞬時心率 平均心率 FPGA VHDL語言
心率計是常用的醫(yī)學(xué)檢查設(shè)備,,實時準(zhǔn)確的心率測量在病人監(jiān)控,、臨床治療及體育競賽等方面都有著廣泛的應(yīng)用。心率測量包括瞬時心率測量和平均心率測量,。瞬時心率不僅能夠反映心率的快慢,,同時能反映心率是否勻齊;平均心率雖只能反映心率的快慢,,但記錄方便,,因此這兩個參數(shù)在測量時都是必要的[1],。
測量心率有模擬和數(shù)字兩種方法。模擬方法是在給定的時間間隔內(nèi)計算R波(或脈搏波)的脈沖個數(shù),,然后將脈沖計數(shù)乘以一個適當(dāng)?shù)某?shù)測量心率的,。這種方法的缺點是測量誤差較大、元件參數(shù)調(diào)試?yán)щy,、可靠性差,。數(shù)字方法是先測量兩相鄰R波之間的時間,再將這個時間轉(zhuǎn)換為每分鐘的心跳數(shù)測量心率的,。這種方法的優(yōu)點是測量精度高,、可靠性好,并且能同時測量瞬時心率和平均心率,。用數(shù)字方法測量心率的電路又可分為兩種類型:一種是使用一個可預(yù)置的計數(shù)器實現(xiàn)除法電路,;另一種是通過自動下降的時鐘頻率" title="時鐘頻率">時鐘頻率測量相鄰R波之間的時間[2~7]。
本心率計在數(shù)字式心率計的基礎(chǔ)上,,采用FPGA和VHDL語言實現(xiàn)[8],,減少了元器件使用數(shù)量,提高了測量精度和可靠性,。該電路能夠?qū)崟r采集并測量人體心跳的瞬時和平均心跳速率,,判斷并顯示心率狀態(tài)(即心跳是否正常、是否過快或過慢,、是否有心率不齊現(xiàn)象),。如果心率過快或過慢或者有心率不齊現(xiàn)象,那么將用不同顏色發(fā)光管進(jìn)行閃爍報警顯示,。
1 測量方法及電路組成
1.1 測量方法
如上所述,,采用數(shù)字方法測量瞬時心率(Instantaneous Heart Rate, IHR)時,先測量兩相鄰R波之間的時間(即心率周期),,再將這個心率周期轉(zhuǎn)換為每分鐘的心跳數(shù),。如圖1所示,設(shè)心率周期為T秒,,則瞬時心率的計算公式為IHR=60/T,。如果用頻率為f0的時鐘脈沖作為測量時間基準(zhǔn),在T秒時間內(nèi)對時鐘脈沖計數(shù),,并設(shè)計數(shù)值為N,,則T=N/f0秒,故瞬時心率的計算公式為IHR=60f0/N,。當(dāng)f0=1kHz時,,IHR=60×1000/N=60000/N。
平均心率(Average Heart Rate)的測量是將一定時間內(nèi)測得的各個瞬時心率求平均值,。設(shè)測得的瞬時心率為IHR1,,IHR2,,…,IHRn,,則平均心率的計算公式為:
AHR=(IHR1+IHR2+…+IHRn)/n
1.2 電路組成
系統(tǒng)的組成框圖如圖2所示,。按下start開關(guān)將啟動測量過程,由傳感器獲得的模擬心電信號(R波或脈搏波)經(jīng)過放大后加到比較器的一個輸入端,,與另一個輸入端的參考電壓進(jìn)行比較,,將心電信號轉(zhuǎn)換為同周期的方波信號,再輸入FPGA進(jìn)行心率測量,。
在FPGA中,,波形變換電路首先將這個脈沖寬度較寬的方波信號進(jìn)行微分,轉(zhuǎn)換為脈沖寬度等于時鐘信號(clk1)一個周期的方波信號,,通過周期計數(shù)器在心率周期T時間內(nèi)對時鐘信號計數(shù),,再根據(jù)前面給出的瞬時心率計算公式做除法運算即可得到瞬時心率。瞬時心率通過譯碼電路轉(zhuǎn)換為七段" title="七段">七段顯示代碼后送到FPGA外部的三個LED顯示器上進(jìn)行顯示,。在一次測量結(jié)束時,,心率計算模塊將測到的各個瞬時心率求平均,得到的平均心率轉(zhuǎn)換為七段顯示代碼也送到三個LED顯示器進(jìn)行顯示,。
告警控制模塊根據(jù)每一個瞬時心率值判斷心率是否正常,、是否過快或過慢,并根據(jù)相鄰兩個瞬時心率值判斷是否有心率不齊現(xiàn)象,,分別以英文字母E(正常),、F或S(過快或過慢)及I(心率不齊)的七段顯示代碼送告警顯示電路中的三個LED顯示器進(jìn)行顯示,并將這三種心率狀態(tài)以8Hz的頻率送到告警顯示電路中顏色分別為綠,、紅、黃的三個發(fā)光二極管進(jìn)行閃爍報警顯示,。按下stop開關(guān)將結(jié)束測量過程,,并將平均心率送三個LED顯示器進(jìn)行顯示。
系統(tǒng)的主時鐘頻率為32MHz,,送到FPGA中的時鐘分頻電路產(chǎn)生1kHz和8Hz的時鐘頻率,,分別送到用作波形變換、瞬時心率計算和心率狀態(tài)顯示的波形變換模塊,、心率計算模塊和告警控制模塊,。系統(tǒng)中的數(shù)字電路全部由FPGA芯片實現(xiàn),外圍只有少量的模擬器件,,包括比較器,、LED和發(fā)光二極管顯示器、電源電路及晶振電路等,,因而系統(tǒng)的體積小,、工作穩(wěn)定,、可靠性高。
2 FPGA中各模塊的電路組成及工作原理
2.1 波形變換電路
由比較器獲得的方波心率脈沖還不能直接用于心率測量,,因為脈沖寬度太大,。要進(jìn)行正確的心率測量,必須對這個方波脈沖進(jìn)行微分,,將其寬度調(diào)整為一個時鐘周期寬,。微分電路如圖3所示。用VHDL語言編程時,,可用一個時鐘進(jìn)程實現(xiàn)這個微分電路,。圖3中各點波形如圖4所示。
2.2 心率計算電路
根據(jù)瞬時心率計算公式及圖1,,瞬時心率的計算應(yīng)以1kHz的時鐘頻率作為時間基準(zhǔn),,測量相鄰兩次心跳之間的時間,然后做除法運算,。因此,,瞬時心率計算電路應(yīng)包括一個12位的二進(jìn)制計數(shù)器和一個16位的二進(jìn)制除法電路。平均心率的計算應(yīng)根據(jù)測量結(jié)束前最后測得的16次心率值求平均,,因此心率計算電路還應(yīng)包括一個能完成12位二進(jìn)制數(shù)加法的電路和一個能完成12位二進(jìn)制數(shù)除法的電路,,這個除法運算可通過移位寄存器右移四次來實現(xiàn)。計數(shù)器,、加法器和移位寄存器在FPGA中用VHDL語言實現(xiàn)都很容易,。下面主要討論測量瞬時心率的除法運算的實現(xiàn)方法。
瞬時心率計算公式是一個拋物線函數(shù),,分母中計數(shù)值N是一個變量,,這個除法運算不能通過簡單的移位寄存器來實現(xiàn);而設(shè)計16位二進(jìn)制除法運算電路,,無論采用組合電路還是采用時序電路,,都將耗費很多的芯片資源。另一方面,,人的正常心率為60~120跳/分鐘,,即使心率出現(xiàn)異常,也不會超過20~200跳/分鐘的范圍,,因此所測量的心率值只有有限個數(shù)據(jù),。這樣,可根據(jù)每一個可能出現(xiàn)的心率值,,預(yù)先求出N的變化范圍,,制作一張表,存入ROM中。實際測量時,,再根據(jù)測到的N值,,選擇相應(yīng)的心率數(shù)據(jù)。假設(shè)心率的變化范圍為20~200,,則N的變化范圍為3077~300,。瞬時心率值IHR與計數(shù)值N的關(guān)系如表1所示。
心率計算電路除了完成上述功能外,,還要將瞬時心率值和平均心率值轉(zhuǎn)換為七段顯示代碼,,再送入LED顯示器進(jìn)行數(shù)字顯示。
2.3 告警控制電路
告警控制電路的功能是根據(jù)心率計算電路得到的瞬時心率值來判斷心率的狀態(tài):心跳是否正常,、是否過快或過慢,、是否心率不齊。如果心率處于60~120的范圍,,則心跳正常,;如果心率小于60,則心跳過慢,,如果心跳大于120,,則心跳過快;如果相鄰兩次測量的心率值不同并相差5跳/分鐘(應(yīng)根據(jù)醫(yī)學(xué)定義作相應(yīng)調(diào)整),,則認(rèn)為心率不齊,。這些判斷是由一系列比較器完成的,用VHDL語言實現(xiàn)比較簡單,,這里不再詳述,。
完成比較判斷后,告警控制電路將代表不同心率狀態(tài)的字母E(正常),、F或S(過快或過慢)及I(心率不齊)的七段顯示代碼以8Hz的頻率分別送到三個LED顯示器進(jìn)行報警顯示,,同時將不同心率狀態(tài)信號以8Hz的頻率分別送到三個不同顏色的發(fā)光二極管進(jìn)行報警顯示。
2.4 時鐘分頻電路
時鐘分頻電路的功能是將系統(tǒng)提供的主時鐘進(jìn)行分頻,,提供其它模塊電路所需的兩個時鐘(1kHz和8Hz),。其中,周期計數(shù)器的時鐘(clk1)決定了周期計數(shù)器的位數(shù),。當(dāng)心率測量范圍為20~200跳/分鐘時,對應(yīng)的心率周期T為3~0.3秒,。若時鐘信號clk1的頻率f0=1kHz,,則在最低心率(20跳/分鐘)時的計數(shù)值N=3/10-3=3000,因此計數(shù)器的位數(shù)為12位,。由下面的性能評價指標(biāo)分析可知,,更高的時鐘頻率可擴(kuò)大心率測量范圍并提高測量分辨率,但同時會增加電路的復(fù)雜性,;而報警控制電路的時鐘(clk2)決定了顯示閃爍的快慢,。在FPGA中,,時鐘分頻電路一般是通過VHDL語言的進(jìn)程語句由計數(shù)器實現(xiàn)的。
3 性能評價指標(biāo)
心率計性能評價指標(biāo)主要包括測量誤差和分辨率,。由表1可知,,由于計數(shù)值N的邊界取值對應(yīng)于相鄰兩個心率值的中點,故在20~200跳/分鐘范圍內(nèi)測量的每一個顯示心率值的誤差都為0.5跳/分鐘,。最大相對誤差" title="相對誤差">相對誤差(用百分比表示)如圖5所示,。相對誤差的最大值發(fā)生在最低心率20跳/分鐘處,隨著心率值的增加,,相對誤差減小,。當(dāng)心率值大于或等于50跳/分鐘時,相對誤差小于1%,,而當(dāng)心率值大于100跳/分鐘時,,相對誤差小于0.5%。
另一個性能指標(biāo)是儀器的分辨率,。由瞬時心率IHR=6×104/N和表1可知,,當(dāng)周期計數(shù)值N較小時,N變化一個單位(增大或減小1)對應(yīng)瞬時心率變化比較大,。因此,,高心率處的分辨率較差,而低心率處的分辨率較好,。在瞬時心率接近200跳/分鐘時,,N值很小,分辨率為1跳/分鐘,;在較低的瞬時心率時,,分辨率小于1跳/分鐘。
如果將時鐘頻率提高到8kHz,,同時將周期計數(shù)器的位數(shù)提高到16位,,分辨率將會大幅提高。此時,,在瞬時心率接近200跳/分鐘處,,分辨率會小于0.1跳/分鐘,而在瞬時心率較低處,,分辨率將進(jìn)一步變好,。因此,在20~200跳/分鐘的心率范圍內(nèi),,可以0.1跳/分鐘的分辨率顯示所有心率,。不過,將周期計數(shù)器從12位提高到16位會增加電路的復(fù)雜性。另外,,在實際心率測量中,,人們習(xí)慣1跳/分鐘的分辨率,更高的分辨率沒有必要,。
基于FPGA的數(shù)字心率計測量精度高,,測量范圍寬,在20~200跳/分鐘的測量范圍內(nèi),,最大誤差為2.5%,,而當(dāng)心率大于50跳/分鐘時,誤差小于1%,,而且它的工作穩(wěn)定性和可靠性好,、功耗低、不需要電路參數(shù)校正和靈敏度調(diào)節(jié),,能夠測量瞬時心率和平均心率,,并具有心率異常報警功能。因此,,與文獻(xiàn)中報道的其它心率計相比,,具有更好的性能。
參考文獻(xiàn)
1 趙葆華.新型瞬時和平均兩用數(shù)字心率計的研制. 上海生物醫(yī)學(xué)工程,,2000(4)
2 I. A. Dotsynsky et al. A Digital Heart-rate Meter Using an E.P.R.O.M. Converter. Med. & Biol. Eng.& Comput,July, 1980,;18:481~482
3 N. C. Voulgaris, A. A. Bailas. Digital Beat-to-beat Heart-rate Meter. Med. & Biol.Eng.& Comput.Mar.1984:181~183
4 A. K. Gorge, A. E. Marble. Digital Heart-rate Meter Using C.M.O.S. Devices. Med. & Biol. Eng. & Comput., July, 1981;(19):517~520
5 王 毅,樊兆勛.便捷式數(shù)字心率計.中國醫(yī)療器械,,1989(1)
6 梁延超.電橋傳感器式數(shù)字心率計.現(xiàn)代醫(yī)學(xué)儀器與應(yīng)用,,1995(3)
7 白玉山,林默君.單片機(jī)心率計的設(shè)計.福建醫(yī)學(xué)院學(xué)報,,1995(2)
8 李廣軍,,孟憲元.可編程ASIC設(shè)計及應(yīng)用.成都:電子科技大學(xué)出版社,2003(1)