關(guān)鍵詞: 60601 , IEC , LPC1700 , 警報(bào) , 音頻
IEC(國際電工委員會(huì))提供了第一個(gè)關(guān)于醫(yī)療設(shè)備音頻和視頻報(bào)警的重點(diǎn)標(biāo)準(zhǔn),即IEC60601-1-8。通過將重點(diǎn)聚焦于資料的音頻警告部分,IEC60601-1-8標(biāo)準(zhǔn)要求,必須使特定的旋律對應(yīng)于特定的生理機(jī)能。這樣就能保證報(bào)警的數(shù)量是有限的,而不會(huì)在不同的制造商之間隨意變化。它也將報(bào)警的數(shù)量限制在8個(gè),并使用了每一個(gè)的告誡和緊急形式。緊急(高級優(yōu)先權(quán))形式使用重復(fù)的五音符旋律。告誡(中等優(yōu)先權(quán))報(bào)警使用高級優(yōu)先權(quán)形式的前三個(gè)音符,但不重復(fù)。將察覺的緊急程度設(shè)計(jì)到聲音中的某些原理已經(jīng)被應(yīng)用到這些信號中;例如,中等優(yōu)先權(quán)音調(diào)比高級優(yōu)先權(quán)音調(diào)更緩慢的上升和下降時(shí)間,以及用于高級優(yōu)先權(quán)報(bào)警的比較快的節(jié)拍。標(biāo)準(zhǔn)中也提供了一種任選的低級優(yōu)先權(quán)報(bào)警音調(diào);該聲音只有兩個(gè)音符。
IEC60601-1-8音頻報(bào)警標(biāo)準(zhǔn)提供了富有和聲的音調(diào),以便使它們?nèi)菀锥ㄎ弧⒉⒛芊乐蛊帘蔚母蓴_。范疇與對應(yīng)旋律的數(shù)量都有限,從而能獲得容易掌握的不同報(bào)警順序。另外,報(bào)警的優(yōu)先權(quán)決定了報(bào)警中音符的數(shù)量,以及音符順序的動(dòng)態(tài)特征。這使得人們?nèi)菀状_定報(bào)警的緊急程度。這樣,IEC60601-1-8標(biāo)準(zhǔn)解決了許多以前報(bào)警的限制因素,而且將有助于改善患者的安全性。
以算法形式生成IEC60601-1-8報(bào)警
當(dāng)前許多的IEC60601-1-8實(shí)施方案都是回放儲(chǔ)存在存儲(chǔ)器中的錄音形式的報(bào)警。其缺點(diǎn)是,它需要占用大量的存儲(chǔ)器空間來儲(chǔ)存文件,以及程序空間來控制回放。與之相比,以算法形式生成報(bào)警在存儲(chǔ)器利用方面是一種非常有效的方法,而且允許有相當(dāng)大的靈活性,能夠在滿足IEC60601-1-8技術(shù)規(guī)格的同時(shí)對音符進(jìn)行自定義。
芯片上要求的功能資源
為了在芯片上合成報(bào)警音調(diào),需要在固件中實(shí)施下列功能:
· 定時(shí)信號發(fā)生器-這提供定時(shí)基準(zhǔn),以便以數(shù)字形式構(gòu)建報(bào)警音調(diào),從而有效地設(shè)定內(nèi)部樣品速率和DAC輸出速率。這還提供用于音符定序器和包絡(luò)發(fā)生器的時(shí)間基準(zhǔn)。
· 包絡(luò)發(fā)生器-這控制音符脈沖的上升時(shí)間、下降時(shí)間和振幅。音符的上升和下降時(shí)間也是報(bào)警優(yōu)先權(quán)的函數(shù)。
· 音符定序器-基于報(bào)警的類型和優(yōu)先權(quán)等級,以正確的節(jié)拍按順序通過正確的音符。
· 音符發(fā)生器-這生成組合起來形成基本音符與諧波的多重正弦波音調(diào);由這些基本音符和諧波構(gòu)成警告音符。
· 關(guān)于演示模式,通過UART1和終端程序提供一個(gè)菜單驅(qū)動(dòng)的用戶接口。這包括不同的菜單、一個(gè)串行端口驅(qū)動(dòng)程序、和一個(gè)簡單的命令處理程序。
定時(shí)信號發(fā)生器
它利用芯片上的定時(shí)器來設(shè)定用于算法音調(diào)發(fā)生器的采樣速率/DAC輸出速率。針對25 ksps的DAC輸出速率,定時(shí)器被設(shè)置為每隔40μs生成一個(gè)中斷。這被選擇為處于音頻范圍上方,而且遠(yuǎn)高于Nyquist(尼奎斯特)頻率,以允許在DAC上采用低成本的濾波器。中斷服務(wù)程序中的軟件計(jì)時(shí)器也提供1 ms的超時(shí)。如下文所述,它被用于包絡(luò)控制功能和音符定序器。
包絡(luò)發(fā)生器
包絡(luò)發(fā)生器控制正在生成的音調(diào)的動(dòng)態(tài)音量。由于IEC技術(shù)規(guī)格包括音調(diào)的上升和下降時(shí)間,所以生成一個(gè)基于時(shí)間的變量。當(dāng)音符打開時(shí),包絡(luò)變量的值以受控的速率從0增大到最大設(shè)定水平。當(dāng)音符關(guān)閉時(shí),這也會(huì)同樣發(fā)生;音量將以受控的速率減小,直到它達(dá)到0為止。上升和下降時(shí)間是可以編程的;而且,與高級優(yōu)先權(quán)音調(diào)相比,中等和低級優(yōu)先權(quán)音調(diào)具有較慢的上升/下降時(shí)間。包絡(luò)發(fā)生器使用1 ms超時(shí)作為其定時(shí)基準(zhǔn)。
音符定序器
作為報(bào)警之分類和優(yōu)先權(quán)的函數(shù),IEC 60601-1-8標(biāo)準(zhǔn)規(guī)定了相對音符順序和音調(diào)的瞬時(shí)特征。音符定序器輸出具有正確持續(xù)時(shí)間和間隔的音調(diào),以滿足給定優(yōu)先權(quán)的報(bào)警的瞬時(shí)特征。對于高級優(yōu)先權(quán)報(bào)警,其順序被規(guī)定為一種5音符順序;它重復(fù)一次,所以總共有10個(gè)音符。中等優(yōu)先權(quán)報(bào)警是一種3音符順序,但不重復(fù)。關(guān)于給定報(bào)警類型的三音符順序與同類高級優(yōu)先權(quán)順序的前三個(gè)音符相同,以便更加容易地掌握報(bào)警。高級優(yōu)先權(quán)報(bào)警的節(jié)拍快于中等優(yōu)先權(quán)報(bào)警。不同數(shù)量的音符和節(jié)拍差異能夠容易地區(qū)分報(bào)警的優(yōu)先權(quán)。
音符發(fā)生器
為了容易地符合標(biāo)準(zhǔn),基本音符和4個(gè)諧波將作為單獨(dú)的正弦波而生成,然后由數(shù)字方式組合起來。在芯片上生成正弦波的方法有很多種:包括正弦表查找、數(shù)學(xué)庫算法、泰勒級數(shù)展開和遞歸振蕩器。遞歸振蕩器是一種具有合適系數(shù)的IIR濾波器結(jié)構(gòu),一旦正確地初始化,就能實(shí)現(xiàn)振蕩。由于這是比較有效的方法之一,而且具有非常低的失真,因此遞歸振蕩器將被用于生成每個(gè)音符所需要的基本音符和4個(gè)諧波。
?
圖1 雙抽頭IIR濾波器
Goertzel算法
最有用的遞歸方法之一是Goertzel算法;圖1顯示了一種簡單的雙抽頭IIR濾波器。這是非常有用的算法,除了作為正弦波發(fā)生器以外,它還能被用作窄帶音調(diào)探測器。通過分析作為振蕩器的算法,隨著以固定的跨度增大角度,我們想要能夠計(jì)算該角度的正弦值。假設(shè)能夠從正弦級數(shù)中的兩個(gè)以前的增量值來計(jì)算角度的正弦值,那么針對圖1,就能寫出公式(1):
?
(1)
在公式(1)中,x和y是IIR濾波器的系數(shù),“a”是起始角,而“b”是增量角。為了找出兩個(gè)系數(shù)的值,重新整理并簡化公式1,如公式2所示。
?
(2)
通過代入下列三角恒等式,繼續(xù)擴(kuò)展公式2:
?
(3)
我們得出:
?
重新整理:
?
(5)
為了確保此式對于所有n都成立,必須讓括號中的兩個(gè)表達(dá)式滿足:
?
(6)
當(dāng)求解時(shí),這就能得出用于遞歸IIR濾波器的系數(shù):
?
?
(7)
將它代回到原始公式中,得出:
?
(8)
重新整理:
?
(9)
代入樣品值Y[n]=sin(a+nb),得出:
?
(10)
由于系數(shù)之一等于-1,所以在每個(gè)步距角增量處的計(jì)算就只需要涉及兩個(gè)以前計(jì)算結(jié)果的一個(gè)乘法和一個(gè)減法(假設(shè)系數(shù)已事先計(jì)算出來)。在運(yùn)行了上面的公式后,y[-1]值被移入到y(tǒng)[-2]變量中,并且將計(jì)算出的y[n]值移入到y(tǒng)[-1]變量中,以準(zhǔn)備在下一個(gè)步距角處的計(jì)算。這促進(jìn)了Cortex-M3非常有效的運(yùn)行。
Goertzel初始化
為了讓Goertzel能夠作為振蕩器發(fā)揮作用,y[-1]和y[-2]值必須要進(jìn)行初始化。如果我們設(shè)y[-1]=0,那么y[-2]應(yīng)該具有在零交叉之前的一個(gè)增量正弦值的值,或者:
?
?
(11)
系數(shù)也必須在下面的公式12中計(jì)算。
?
為了將Goertzel算法作為音調(diào)探測器使用,y[-1]和y[-2]二者都應(yīng)該被初始化到“0”。然后,輸入應(yīng)該加入到計(jì)算中。在特定數(shù)量的樣品之后,輸入在探測頻率處的振幅就能夠從下列公式來計(jì)算:
?
?
?
存在關(guān)于此式的優(yōu)化形式,以簡化數(shù)學(xué)運(yùn)算,但這里只是為了解釋原理。為了將它用作連續(xù)的音調(diào)探測器,在執(zhí)行了此計(jì)算之后,y[-1]和y[-2]應(yīng)該再次設(shè)定為零,然后進(jìn)行下一個(gè)采集和探測順序。
代碼實(shí)施-音頻報(bào)警合成
定時(shí)信號發(fā)生器代碼
定時(shí)信號發(fā)生器代碼包括定時(shí)器0的初始化,以及用于處理定時(shí)器0中斷的中斷服務(wù)程序。這提供用于生成報(bào)警音調(diào)的40μs(25kHz)定時(shí),以及軟件計(jì)數(shù)器生成的1ms定時(shí)。后者被包絡(luò)發(fā)生器和音符定序器所用。
定時(shí)器0初始化
定時(shí)器0需要進(jìn)行初始化,以每隔40μs生成一個(gè)匹配中斷,從而提供25kHz的采樣速率。下面給出了初始化代碼。
?
定時(shí)器0中斷服務(wù)程序
定時(shí)器0中斷服務(wù)程序是本應(yīng)用程序的心臟,因?yàn)樗鼮橐粽{(diào)生成以及音調(diào)定序提供所有計(jì)時(shí)。本代碼進(jìn)行試驗(yàn),以查看包絡(luò)是否啟用,如果是,它將輸出音調(diào)。除了清除中斷以外,軟件計(jì)數(shù)器被遞增,直到達(dá)到1ms的超時(shí)。在每一次1ms超時(shí)發(fā)生時(shí),定序器的狀態(tài)就被遞增,而且任何需要的動(dòng)作將由包絡(luò)發(fā)生器執(zhí)行(將在以后討論)。下面顯示了關(guān)于定時(shí)器0中斷服務(wù)程序的代碼列表。
?
包絡(luò)控制功能
包絡(luò)發(fā)生器控制音調(diào)的動(dòng)態(tài)水平,因?yàn)镮EC60601-1-8要求上升時(shí)間和下降時(shí)間應(yīng)該處在規(guī)定的范圍內(nèi)。還有,報(bào)警順序中的第一個(gè)音符的振幅應(yīng)該低于其它音符。包絡(luò)發(fā)生器輸出是變量“包絡(luò)”。當(dāng)音調(diào)關(guān)閉時(shí),包絡(luò)=0。當(dāng)在順序中打開一個(gè)音符時(shí),包絡(luò)變量將每毫秒以設(shè)定的速率增大,直到它達(dá)到設(shè)定的最大水平。當(dāng)音符關(guān)閉時(shí),音調(diào)繼續(xù),但包絡(luò)變量開始以其設(shè)定的速率減小,直到它達(dá)到“0”。包絡(luò)變量將被用作音符的動(dòng)態(tài)特征的音量控制。下面給出了包絡(luò)控制功能的列表:
?
音符定序器功能
音符定序器為IEC60601-1-8中規(guī)定的不同報(bào)警旋律提供計(jì)時(shí)和音符定序。高級優(yōu)先權(quán)報(bào)警包括重復(fù)的5音符順序。相同報(bào)警范疇的中等優(yōu)先權(quán)形式使用其高級優(yōu)先權(quán)報(bào)警的前三個(gè)音符,但不重復(fù)。高級優(yōu)先權(quán)報(bào)警的音符間隔和持續(xù)時(shí)間比較短,因?yàn)檫@能給出緊急程度的較高感覺。以高級優(yōu)先權(quán)為例,下面顯示了實(shí)施這些功能的代碼。在定時(shí)器0中斷服務(wù)程序中討論的1ms時(shí)基增大順序計(jì)數(shù)器。作為其結(jié)果,與每個(gè)情況語句相關(guān)聯(lián)的數(shù)字均以毫秒為單位,以方便計(jì)時(shí)期間的調(diào)整。中等和低級優(yōu)先權(quán)形式使用相同的基本開關(guān)語句格式和類似的函數(shù)調(diào)用,但是,由于節(jié)拍不同,在相關(guān)的情況語句中使用了不同的計(jì)時(shí)狀態(tài)。
?
?
音符發(fā)生器功能
對于音符發(fā)生器,存在許多需要處理的數(shù)據(jù),它們涉及到多重頻率和多重正弦波發(fā)生器。如果將與每個(gè)頻率相關(guān)的數(shù)據(jù)變量和常數(shù)組織在具有相同尺寸的矩陣中,那么就能恰好使用簡單遞歸函數(shù)來“走”過這些矩陣數(shù)據(jù)。
?
?
音符發(fā)生器定義
定義若干個(gè)定點(diǎn)和浮點(diǎn)常數(shù),以及定義結(jié)構(gòu)標(biāo)簽和兩個(gè)矩陣。它們當(dāng)中之一是結(jié)構(gòu)的一個(gè)矩陣。
算法中使用的變量和系數(shù)之結(jié)構(gòu)的優(yōu)點(diǎn)是:它允許我們在結(jié)構(gòu)矩陣和頻率常數(shù)矩陣中具有類似的矩陣組織。常數(shù)頻率矩陣和算法結(jié)構(gòu)矩陣之間的一一對應(yīng)關(guān)系使得在初始化每個(gè)頻率時(shí),容易使用兩個(gè)矩陣的類似索引。
音符發(fā)生器初始化
上文提到為了使Goertzel算法能振蕩,除了系數(shù)以外,y[-1]和y[-2]值也必須初始化。必須針對對應(yīng)于每個(gè)頻率的結(jié)構(gòu)變量而完成此工作。下面顯示了用于初始化的代碼。一排5個(gè)結(jié)構(gòu)中的每一個(gè)被初始化,然后每一個(gè)另外的排被初始化,直到整個(gè)結(jié)構(gòu)矩陣都被初始化。在這個(gè)演示應(yīng)用程序中,這些計(jì)算是在復(fù)位初始化期間完成的。不過,如果你正在最優(yōu)化它,可以通過事先進(jìn)行這些計(jì)算而將代碼保存起來,并且將結(jié)果作為常數(shù)儲(chǔ)存在快速存儲(chǔ)器中。這是因?yàn)椋绻麛?shù)學(xué)程序庫需要浮點(diǎn)和正弦/余弦算法,那么預(yù)先計(jì)算好的初始化值則不需要。這些程序庫例行程序使用大約一半本應(yīng)用程序中使用的代碼空間。系數(shù)和初始化值是通過32768(帶符號的短值)定標(biāo)的。還有,系數(shù)計(jì)算不包括公式(18)中顯示的2X系數(shù)。其目的是使系數(shù)的規(guī)模保持在帶符號的短值,以最小化儲(chǔ)存要求。2X被包括在最終Goertzel計(jì)算中;此處,輸出的定標(biāo)是通過>>14(而不是>>15)乘以2。
?
多重正弦波發(fā)生、求和及DAC輸出
一旦算法變量和系數(shù)都已經(jīng)被初始化,那么,讓Goertzel計(jì)算來生成基本音符和4個(gè)諧波就變得很容易。方法是簡單地遞增通過結(jié)構(gòu)矩陣中的一排,并且求五個(gè)值的和。正如上文所述,第204行包括通過>>14、而不是>>15定標(biāo)到2X中的系數(shù),而這些系數(shù)在初始化時(shí)不予考慮。
?
一旦函數(shù)已經(jīng)完成了矩陣排中所有5個(gè)結(jié)構(gòu)的計(jì)算,相加的值就被定標(biāo)、格式化、并從帶符號的值轉(zhuǎn)化為不帶符號的值,然后被送到DAC。由于這些計(jì)算是在每個(gè)25kHz定時(shí)器中斷處執(zhí)行的(當(dāng)音符活躍時(shí)),所以DAC輸出速率就是25 kHz。這允許使用便宜的輸出濾波器,因?yàn)橄鄬τ谡谏傻淖罡哒也l率,這大約是9X的過度取樣。
用戶/命令接口
對于為本應(yīng)用程序編寫的演示固件,Keil MCB1700被確定為目標(biāo)板,而UART1則被用來提供菜單驅(qū)動(dòng)的終端接口,以激活不同的報(bào)警。為了保持應(yīng)用規(guī)格書的簡明性,本文沒有顯示UART代碼。只顯示了命令功能之一的代碼示例,作為如何使用本固件來啟動(dòng)報(bào)警順序的演示。
?
?
啟動(dòng)報(bào)警順序需要的全部工作是使用“報(bào)警”變量設(shè)定報(bào)警類型,然后通過將“順序”變量設(shè)定到一個(gè)非零值而啟用定序器。
IEC60601-1-8音頻報(bào)警演示操作
復(fù)位菜單
MCB1700加載完IEC音頻報(bào)警固件后,當(dāng)MCB1700上的COM1接口連接到運(yùn)行HyperTerminal、TeraTerm或類似終端程序的PC上時(shí),復(fù)位以后,用戶就會(huì)看到具有下列菜單的提示:串口設(shè)置為9600比特率、一個(gè)開始位、一個(gè)停止位、無奇偶校驗(yàn)、無流量控制。
?
圖2 復(fù)位菜單
?
圖3 高級優(yōu)先權(quán)報(bào)警菜單
按下1到8之間的任意一個(gè)數(shù)字,然后按下回車,將開始對應(yīng)報(bào)警類型的高級優(yōu)先權(quán)報(bào)警順序。類似的菜單動(dòng)作將針對中等優(yōu)先權(quán)、低級優(yōu)先權(quán)和試驗(yàn)菜單而獲得,參見圖4、圖5、和圖6中所示。
?
圖4 中等優(yōu)先權(quán)菜單
?
圖5 低級優(yōu)先權(quán)菜單
?
圖6 和試驗(yàn)菜單
試驗(yàn)菜單中的命令提供了具有諧波的最高和最低頻率音調(diào)的短1秒脈沖,以及本應(yīng)用程序所需要的最高和最低單一頻率音調(diào)。這是為了方便進(jìn)行性能試驗(yàn)。單一音調(diào)的生成是通過讓‘ToneWeights’矩陣中的所有值都等于0,但正在生成的隔離音調(diào)除外。命令5將所有ToneWeights矩陣值都復(fù)位到它們的初始值。
外部硬件要求
外部DAC濾波器
對于在應(yīng)用規(guī)格書中做的試驗(yàn),增加了一個(gè)簡單的三極RC濾波器,以便從信號中過濾掉25kHz采樣速率分量。使用的濾波器如圖7所示,它提供的截取頻率范圍處在9kHz到10kHz。由于樣品速率高于正常人類聽覺范圍,所以沒有濾波器,成本敏感的應(yīng)用程序就可以通過。另外,在這個(gè)網(wǎng)絡(luò)之后通常需要一個(gè)耦合電容器,因?yàn)镈AC的直流電平一般為1.65 V。
?
圖7 三極RC DAC濾波器
如果不打算成為高的阻抗輸入,或者這個(gè)信號是外部固定的,那么建議使用緩沖器。
性能分析
通過使用上一段描述的輸出濾波器,執(zhí)行了波譜分析試驗(yàn),以驗(yàn)證信號的頻譜含量,并估計(jì)信噪比。此外,還進(jìn)行了示波器捕捉,以顯示生成的警報(bào)音調(diào)的升降和其它瞬時(shí)特征。MCB1700 DAC的輸出被饋送到Mackie CR1604-VLZ音頻混合器(用于平頻率響應(yīng)的EQ集),以便給筆記本電腦內(nèi)部Sigmatel Codec提供正確的電平。筆記本電腦正在運(yùn)行True Audio的TrueRTA波譜分析儀軟件包。前文已詳細(xì)描述過的試驗(yàn)菜單被用來提供分析中使用的試驗(yàn)音調(diào)脈沖。
利用DAC濾波器的多重音調(diào)生成的波譜分析
利用上文詳細(xì)描述的三極10kHz RC濾波器之后獲得的板輸出,進(jìn)行下列波譜分析儀捕捉。
具有諧波的應(yīng)用程序(C4)中最低頻率音調(diào)的波譜如圖8所示。這些諧波在振幅方面互相非常接近。這將容易地滿足IEC 60601-1-8技術(shù)規(guī)格,因?yàn)樗鼈冎灰笾C波處在互相之間15 dB的范圍內(nèi)。信噪比看起來超過55dB,也能提供非常好的噪聲性能。波譜分析中顯示的缺少其它諧波也證明了由Goertzel算法生成的正弦波的扭曲很低。
?
圖8 具有諧波的C4
圖9顯示了在具有諧波的應(yīng)用程序(C5)中最高頻率音調(diào)的波譜分析。由圖可知,具有諧波的C5音調(diào)的波譜也具有良好的信噪比和低扭曲,而且能夠?qū)⒒疽舴椭C波的振幅保持在幾個(gè)分貝的范圍內(nèi)。
?
圖9 具有諧波的C5
結(jié)論
本應(yīng)用中呈現(xiàn)的醫(yī)療報(bào)警的方法為符合IEC60601-1-8標(biāo)準(zhǔn)的音頻醫(yī)療警報(bào)提供了一種有效、低成本、高性能的方法。技術(shù)規(guī)格也說明,在報(bào)警聲音方面設(shè)備差異的細(xì)微程度對于操作人員是有利的。除了能滿足標(biāo)準(zhǔn)的要求以外,此處提供的固件實(shí)施允許容易地自定義音調(diào),同時(shí)仍然能夠保持在技術(shù)規(guī)格參數(shù)范圍以內(nèi)?;?a target="_blank">ARM Cortex-M3內(nèi)核的NXP LPC17xx系列微控制器能提供非常高速度的性能和準(zhǔn)確的定時(shí),這特別適合于實(shí)施類似于本示例中使用的算法。利用在96 MHz的頻率下運(yùn)行的LPC1768處理器,本應(yīng)用程序使用大約8 %的可用處理器帶寬和小于10K的代碼空間,這樣就為其它附加的應(yīng)用程序留出了大量的代碼空間和處理能力。因此,非常容易將對IEC60601-1-8標(biāo)準(zhǔn)的支持增加到任何醫(yī)療電子應(yīng)用中。 ?
評論
查看更多