基于SoPC和Nios II處理器的醫(yī)用呼吸機(jī)主控系統(tǒng)設(shè)計(jì)
摘要: 現(xiàn)有的呼吸機(jī)產(chǎn)品,其主控系統(tǒng)大多基于單片機(jī)來(lái)實(shí)現(xiàn),,對(duì)于功能強(qiáng)一些的產(chǎn)品就需要使用高端單片機(jī),,這樣使得系統(tǒng)的成本比較高,而且外圍的接口模塊較多,,結(jié)構(gòu)復(fù)雜,。使用SoPC(可編程片上系統(tǒng))技術(shù)設(shè)計(jì)主控系統(tǒng),可充分利用IP核的強(qiáng)大功能,,精簡(jiǎn)外設(shè)數(shù)量,,與此同時(shí)只占用了很小部分的資源,大大提高了系統(tǒng)的性?xún)r(jià)比,。
Abstract:
Key words :
以Altera公司FPGA芯片為平臺(tái),,利用SoPC技術(shù)和Nios II處理器設(shè)計(jì)并實(shí)現(xiàn)了醫(yī)用呼吸機(jī)的主控系統(tǒng)。
呼吸機(jī)是可以代替人的呼吸功能或輔助人的呼吸功能的儀器,。它適用于呼吸衰竭,、甚至停止呼吸的病人做人工呼吸之用。它能幫助病人糾正缺氧和排出二氧化碳,,是挽救某些危重病人生命的重要工具,。
現(xiàn)有的呼吸機(jī)產(chǎn)品,其主控系統(tǒng)大多基于單片機(jī)來(lái)實(shí)現(xiàn),,對(duì)于功能強(qiáng)一些的產(chǎn)品就需要使用高端單片機(jī),,這樣使得系統(tǒng)的成本比較高,而且外圍的接口模塊較多,,結(jié)構(gòu)復(fù)雜,。使用SoPC(可編程片上系統(tǒng))技術(shù)設(shè)計(jì)主控系統(tǒng),可充分利用IP核的強(qiáng)大功能,,精簡(jiǎn)外設(shè)數(shù)量,,與此同時(shí)只占用了很小部分的資源,大大提高了系統(tǒng)的性?xún)r(jià)比,。
本文利用SoPC技術(shù)設(shè)計(jì)了持續(xù)氣道正壓通氣呼吸機(jī)的主控系統(tǒng),,使用了Altera公司的Nios II軟核處理器以及一些通用的IP核,筆者基于Avalon總線規(guī)范定制了組件,,將控制邏輯全部集成至單片F(xiàn)PGA內(nèi),。
醫(yī)用呼吸機(jī)
正壓呼吸機(jī)是利用增加氣道內(nèi)壓力的方法將空氣送入肺內(nèi),肺內(nèi)的壓力增大使肺腔擴(kuò)張,。當(dāng)壓力失去后,,由于肺腔組織的彈性,將肺恢復(fù)到原來(lái)的形狀,而使經(jīng)過(guò)交換的一部分空氣呼出體外,。目前,,大部分呼吸機(jī)都是利用這種增加氣道內(nèi)壓力的方法給病人送氣的。
呼吸機(jī)所需的氣壓采用直流電機(jī)來(lái)提供,,直流電機(jī)的控制信號(hào)為PWM信號(hào),,根據(jù)PWM信號(hào)的占空比和周期來(lái)控制電機(jī)的轉(zhuǎn)速。外部接口提供按鍵來(lái)接受命令,,設(shè)定各種參數(shù),。提示信息、狀態(tài)信息,、參數(shù)信息通過(guò)字符型LCD顯示,。為了便于對(duì)系統(tǒng)進(jìn)行測(cè)試,使用UART為命令控制接口,,對(duì)系統(tǒng)進(jìn)行直接控制,,該接口在成品后即被隱去。
系統(tǒng)結(jié)構(gòu)
以SOPC技術(shù)為核心的呼吸機(jī)主控系統(tǒng)框圖如圖1所示,。
圖1 呼吸機(jī)系統(tǒng)硬件結(jié)構(gòu)框圖
主控系統(tǒng)的核心FPGA采用Altera公司Cyclone系列的EP1C6T144C8,。CPU即為Nios II軟核處理器,對(duì)整個(gè)系統(tǒng)進(jìn)行統(tǒng)一管理,。折線框內(nèi)為主控板,,除下載、調(diào)試用的PC機(jī)外,,對(duì)直流電機(jī)及主控板需單獨(dú)供電,。直流電機(jī)工作后將氣流送至面罩內(nèi),電機(jī)根據(jù)端的信號(hào)來(lái)調(diào)節(jié)氣流的大小,。在面罩內(nèi)裝有壓力檢測(cè)模塊,,通過(guò)A/D轉(zhuǎn)換返回至主控板,用來(lái)對(duì)氣流進(jìn)行回饋調(diào)節(jié),。面罩供患者使用,。
直流電機(jī)控制
系統(tǒng)使用PWM信號(hào)對(duì)直流電機(jī)進(jìn)行控制。在SOPC Builder提供的標(biāo)準(zhǔn)IP核中是沒(méi)有PWM組件的,,需要自行定制,,PWM組件的輸出信號(hào)是方波,方波的周期及占空比可調(diào),。PWM任務(wù)邏輯結(jié)構(gòu)示于圖2,。
圖2 PWM任務(wù)邏輯結(jié)構(gòu)
PWM組件的任務(wù)邏輯有:
PWM任務(wù)邏輯由一個(gè)輸入時(shí)鐘、一個(gè)輸出信號(hào),、一個(gè)允許位,、一個(gè)32位計(jì)數(shù)器和一個(gè)32位的比較器組成,;
時(shí)鐘驅(qū)動(dòng)32位計(jì)數(shù)器,建立輸出信號(hào)的周期,;
比較器用來(lái)對(duì)32位比較器的當(dāng)前值和占空比值進(jìn)行比較,決定所輸出的信號(hào),;
若當(dāng)前值小于或等于占空比值,,則輸出邏輯信號(hào)為0,否則為1,。
PWM組件的寄存器文件:
clock_divde 在PWM的一個(gè)周期中的時(shí)鐘周期數(shù),;
duty_cycle PWM輸出為低電平的時(shí)鐘周期數(shù);
enable PWM輸出的允許/禁止,。0到1的上升沿使能PWM組件,。
將PWM定義寄存器的頭文件和驅(qū)動(dòng)程序封裝有:
altera_avalon_pwm_init(); //PWM模塊初始化,包括周期設(shè)置
altera_avalon_pwm_enable(); //PWM模塊使能
altera_avalon_p wm_disable(); //PWM模塊禁止
altera_avalon_ pwm_change_duty _cycle(); //PWM模塊占空比調(diào)整
對(duì)于直流電機(jī)來(lái)說(shuō),,PWM占空比需要達(dá)到一定量才能使電機(jī)工作,,低于閾值(PWM_DUTY_THRESHOLD)的PWM信號(hào)不能驅(qū)動(dòng)電機(jī),這部分能量會(huì)轉(zhuǎn)化為熱量損害電機(jī),,所以,,設(shè)定PWM值的時(shí)候需要注意將值設(shè)在閾值以上,在altera_avalon_pwm_change_duty_cycle()中對(duì)所設(shè)定的值進(jìn)行判斷,,如果值低于PWM_DUTY_THRESHOLD則調(diào)整為PWM_DUTY_THRESHOLD+1,。
以上的設(shè)計(jì)全部完成后,在SOPC Builder內(nèi)將其封裝成為SOPC組件,。
輸出及指示模塊
系統(tǒng)需要輸入設(shè)置,、控制以及顯示提示,這部分功能包括有按鍵輸入,、LED指示燈輸出,、蜂鳴器輸出、液晶輸出等,。
按鍵輸入是用戶(hù)與系統(tǒng)交互的重要接口,,鍵盤(pán)板上共設(shè)有4個(gè)按鍵,一個(gè)為“On/Off”鍵,,一個(gè)為“Set”鍵,,一個(gè)為“Up”鍵,一個(gè)為“Down”鍵,。“On/Off”功能鍵用于系統(tǒng)開(kāi)機(jī),、關(guān)機(jī);“Set”功能鍵用于LCD中參數(shù)設(shè)置時(shí)確定,;“Up”和“Down”功能鍵用于改變當(dāng)前選項(xiàng)的內(nèi)容,。
按鍵輸出模塊在Nios II內(nèi)使用SOPC Builder提供的PIO模塊搭建,,由于要實(shí)時(shí)響應(yīng)按鍵內(nèi)容,需要開(kāi)中斷,,對(duì)按鍵的上升沿進(jìn)行捕捉,,當(dāng)有中斷到來(lái)時(shí),進(jìn)入中斷寄存器判斷中斷的來(lái)源和類(lèi)型,,根據(jù)現(xiàn)在的模式信息決定系統(tǒng)的動(dòng)作,。
LED顯示及蜂鳴器輸出也使用PIO模塊搭建,為使得電流充裕采用共陽(yáng)極接法,。
LCD顯示使用的是1602的通用液晶模塊,,在SOPC Builder內(nèi)提供有相應(yīng)的IP核。液晶為16×2的形式,,可顯示英文字母及數(shù)字,,字庫(kù)在液晶模塊內(nèi)部含有。
與PC機(jī)通訊的接口
系統(tǒng)與PC通訊有兩個(gè)接口,,JTAG接口和UART接口,。JTAG接口用來(lái)對(duì)FPGA進(jìn)行配置及程序下載;UART接口則作為命令控制接口,,對(duì)完成的程序進(jìn)行系統(tǒng)的調(diào)試,。這兩個(gè)組件在SOPC Builder內(nèi)均有提供,可直接使用,。JTAG接口無(wú)需過(guò)多配置,,外部硬件連接完成后,在內(nèi)部添加組件即可使用,,對(duì)JTAG端口的操作由Quartus軟件內(nèi)部完成,。
UART接口與PC機(jī)通過(guò)RS-232協(xié)議進(jìn)行通訊,可以改變其波特率,、奇偶校驗(yàn)位,、停止位、傳輸?shù)臄?shù)據(jù)位以及其他可選的RTS-CTS流控制信號(hào)等,。實(shí)際應(yīng)用中波特率使用115200,,8位數(shù)據(jù)位,1位停止位,,帶奇偶校驗(yàn)位,,流控制則設(shè)為none。外部硬件連接使用MAX3232作為電平轉(zhuǎn)換芯片,。
存儲(chǔ)及配置單元
FPGA使用AS配置模式,,配置芯片為EPCS4。EPCS4芯片中的存儲(chǔ)區(qū)可分為兩個(gè)區(qū):FPGA配置存儲(chǔ)區(qū)用來(lái)保存FPGA配置的數(shù)據(jù),,通用存儲(chǔ)區(qū)用來(lái)存放系統(tǒng)啟動(dòng)代碼以及程序數(shù)據(jù),。除了SOPC Builder提供的EPCS組件外,,Nios II IDE中的Flash Programmer實(shí)用程序可把數(shù)據(jù)固化到EPCS芯片中。
FPGA芯片內(nèi)部開(kāi)出一塊4K大小的RAM,,作為程序運(yùn)行時(shí)的緩存區(qū),。
定時(shí)器
SOPC Builder提供的定時(shí)器是一個(gè)32位的間隔定時(shí)器,與我們常見(jiàn)到的單片機(jī)內(nèi)部的定時(shí)器模塊類(lèi)似,,有遞增計(jì)數(shù)模式和遞減計(jì)數(shù)模式,,在計(jì)數(shù)器為0時(shí)可生成中斷,也可令周期脈沖發(fā)生器輸出一個(gè)脈沖,。對(duì)periodl和periodh寄存器進(jìn)行寫(xiě)操作可設(shè)定定時(shí)器的周期。系統(tǒng)中使用定時(shí)器模塊計(jì)時(shí),,用來(lái)判斷命令執(zhí)行時(shí)間的長(zhǎng)短,,按鍵時(shí)長(zhǎng)等功能,開(kāi)中斷后可實(shí)現(xiàn)長(zhǎng)按鍵開(kāi)關(guān)機(jī)或Shift鍵功能,。
A/D采樣
A/D采樣主要是為了檢測(cè)面罩壓力并反饋,,根據(jù)反饋值對(duì)壓力進(jìn)行再調(diào)節(jié)。壓力檢測(cè)后壓力信號(hào)通過(guò)Maxim公司的A/D芯片MAX197進(jìn)行采樣,。
與PWM組件類(lèi)似,,SOPC Builder也沒(méi)有提供相應(yīng)的A/D組件IP核,需自行定制,,定制過(guò)程與PWM組件相同,。
系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)的工作流程如圖3所示。
圖3 呼吸機(jī)工作流程
工作狀態(tài)
設(shè)置狀態(tài):只能在系統(tǒng)斷電后,,重新上電時(shí)進(jìn)入,。除此之外,系統(tǒng)在任何情況下都無(wú)法進(jìn)入設(shè)置狀態(tài),。并且從設(shè)置狀態(tài)只能返回到關(guān)機(jī)狀態(tài),。“Up”,“Down”鍵改變選項(xiàng),,“Set”鍵進(jìn)入設(shè)置或確認(rèn)設(shè)置,,“On/Off”取消設(shè)置或退出當(dāng)前這層設(shè)置界面,當(dāng)已退到最初設(shè)置界面時(shí),,再按“On/Off”為關(guān)機(jī),;
關(guān)機(jī)狀態(tài):液晶顯示“Off”,且只響應(yīng)開(kāi)機(jī)鍵和命令,;
待機(jī)狀態(tài):液晶顯示治療壓力的延時(shí),;
治療狀態(tài):響應(yīng)“On/Off”鍵, “Up”鍵和“Down”鍵,。其中,,“On/Off”鍵用于“啟動(dòng)/停止”治療,;“Up”和“Down”用于以0.5厘米水柱的壓力為步長(zhǎng)調(diào)整當(dāng)前工作壓力。
對(duì)這四種狀態(tài)的切換都基于不同時(shí)段不同按鍵的組合,,設(shè)計(jì)時(shí)考慮到治療操作的簡(jiǎn)便性,,把大多數(shù)操作都放到設(shè)置狀態(tài)內(nèi)進(jìn)行,治療時(shí)只需要根據(jù)實(shí)際情況略作調(diào)節(jié)即可,。
壓力反饋
對(duì)于呼吸機(jī)這種直接面對(duì)病患的醫(yī)療器械,,安全性是非常重要的,另外,,對(duì)所加壓力的精度要求也比較高,,就算是5%的壓力變化對(duì)于一個(gè)病人的呼吸系統(tǒng)來(lái)說(shuō)也是不小的壓力。在電機(jī)有輸出有波動(dòng)的時(shí)候,,加一級(jí)反饋來(lái)對(duì)壓力進(jìn)行補(bǔ)償輸出,,可以防止突然間的誤動(dòng)作以及供電電壓波動(dòng)帶來(lái)的壓力精度偏移。
將A/D采樣的結(jié)果與預(yù)先設(shè)定的值進(jìn)行比較,,如果低于設(shè)定值,,則對(duì)輸出值進(jìn)行相應(yīng)的提升;如果高于設(shè)定值,,則減少輸出值,。對(duì)壓力輸出的調(diào)節(jié)要逐步進(jìn)行,根據(jù)實(shí)驗(yàn)結(jié)果設(shè)定步長(zhǎng)PWM_T_STEP,,每次變化只增減PWM_T_STEP的值,,這樣不會(huì)使得氣流忽大忽小,讓患者的呼吸系統(tǒng)感到不適,。
按鍵及顯示
系統(tǒng)中對(duì)按鍵的要求比較多,,除了正常的單次按鍵外,還有開(kāi)關(guān)機(jī)時(shí)的長(zhǎng)按鍵,、進(jìn)入設(shè)置狀態(tài)的組合鍵等,。這些特殊功能的按鍵也是基于單次按鍵的基礎(chǔ)上進(jìn)行的。
長(zhǎng)按鍵需要對(duì)按鍵的觸發(fā)的上升沿和下降沿都進(jìn)行判斷,,單次按鍵的下降沿中斷來(lái)到后,,計(jì)數(shù)器開(kāi)始計(jì)數(shù),到上升沿中斷到來(lái)為止,,如果計(jì)數(shù)大于某一閾值則認(rèn)為該次按鍵為長(zhǎng)按鍵,。閾值的確定要根據(jù)系統(tǒng)的時(shí)鐘頻率以及所需要的延時(shí)長(zhǎng)度。
系統(tǒng)的顯示主要依靠LCD,,16×2的液晶上只能顯示兩行菜單,,但菜單的總條數(shù)遠(yuǎn)大于兩條,為此,,菜單數(shù)組的顯示和執(zhí)行就需要兩套指針來(lái)實(shí)現(xiàn),,顯示時(shí)單行滾動(dòng)顯示,,以便于觀察。
結(jié)語(yǔ)
本文所述的醫(yī)用呼吸機(jī)主控系統(tǒng),,樣機(jī)已制出,,現(xiàn)正進(jìn)行性能測(cè)試,目前運(yùn)行正常,。整個(gè)系統(tǒng)的設(shè)計(jì)重點(diǎn)在定制基于SOPC技術(shù)的嵌入式Nios II軟核處理器設(shè)計(jì)和電機(jī)驅(qū)動(dòng)的實(shí)現(xiàn)上,,與傳統(tǒng)的基于單片機(jī)的方案相比,Nios II只占用了FPGA芯片內(nèi)的一小部分資源,,卻完成了包括單片機(jī)及相當(dāng)數(shù)量外設(shè)的功能,,這樣既簡(jiǎn)化了電路板設(shè)計(jì),減少外圍器件的配置,,又有效地控制了系統(tǒng)軟硬件的復(fù)雜度,,降低了成本,縮短開(kāi)發(fā)周期,,更便于對(duì)未來(lái)產(chǎn)品的升級(jí)換代。
參考文獻(xiàn):
1. 李蘭英,,Nios II嵌入式軟核——SOPC設(shè)計(jì)原理及應(yīng)用,,北京航空航天大學(xué)出版社,2006.11
2. Altera. NiosII Processor Reference Handbook [EB/OL]. (2006-05).http://www.altera.com
3. Altera. Altera Embedded Peripherals Handbook [EB/OL]. (2006-05). http://www.altera.com
4. 彭澄廉,,挑戰(zhàn)SOC—基于Nios的SOPC設(shè)計(jì)與實(shí)踐,,清華大學(xué)出版社,2004
此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。