便攜式、低功耗體電信號采集存儲系統(tǒng)研究
關(guān)鍵詞:數(shù)據(jù)采集與存儲 便攜式 Compact Flash Card TMS320LF2407
引言
目前比較常見的臨床體電信號采集及處理儀器是功能完備的微機系統(tǒng),雖然能較快地分析和處理監(jiān)測到的體電信號,但往往只能被固定在病房里使用,在移動的情況下則顯得笨重和不便。體電信號采集往往需要長時間地采集、記錄海量數(shù)據(jù),并進(jìn)行進(jìn)一步的信號處理和分析,以便臨床病情的檢測和監(jiān)護(hù)。目前,臨床體電儀器主要還是采用紙張、磁帶及普通硬盤來存儲體電信號。存儲載體的體積和功耗的限制是臨床醫(yī)療儀器功耗、便攜式發(fā)展的瓶頸。便攜的醫(yī)療設(shè)備能夠極大地方便病人的使用、監(jiān)護(hù)并降低醫(yī)療費用。近幾年,隨著Flash Memory非易失存儲技術(shù)的發(fā)展以及處理器(如單片機和DSP)性能的不斷提高,使信號采集存儲系統(tǒng)的耗電量和體積不斷減少,滿足便攜式的要求。
經(jīng)過實際調(diào)研和性能比較,TI公司的C2000系列DSP芯片具有諸多優(yōu)點,包括定點處理器C24X和C28X。C24X系列為16位定點處理器,運算速度為20~40MIPS,可用于低速數(shù)據(jù)采集;TMS320C28X DSP系列為32位定點處理器,運算速度高達(dá)400MIPS,可用于高速數(shù)據(jù)采集。C2000系列采用高性能的靜態(tài)CMOS技術(shù),3.3V電壓供電,內(nèi)核電壓為1.8V,片內(nèi)程序空間集成Flash,可以將系統(tǒng)控制程序直接燒入DSP芯片內(nèi)部而不用外擴(kuò)Flash存儲芯片,減少系統(tǒng)的功耗和體積。C24X系列DSP內(nèi)置2×8通道10位數(shù)據(jù)轉(zhuǎn)換(ADC),轉(zhuǎn)換時間約為500ns;C28X系列DSP內(nèi)置2×8通道12位數(shù)模轉(zhuǎn)換(ADC),轉(zhuǎn)換時間為80ns。ADC的精度和速度幾乎可以滿足各種體電信號采集,因此系統(tǒng)須使用獨立A/D轉(zhuǎn)換芯片,進(jìn)一步減少系統(tǒng)的功耗和體積。
Compact Flash Card(以下簡稱CF卡)是市場上最常見的基于Flash存儲芯片的低功耗移動存儲器,能與DSP芯片直接連接而用接口轉(zhuǎn)換芯片。由于CF卡的高速價比、大容量和系統(tǒng)的易實現(xiàn)性,首選作為信號采集的存儲載體。
下面以CF卡和DSP TMS320LF2407硬件平臺為例,具體介紹這種可行的低功耗、便攜式體電信號采集存儲系統(tǒng)的搭建和軟、硬件接口的實現(xiàn),并給出程序?qū)嵗?/P>
1 各類基于Flash的閃存卡簡介
近幾年來,靜態(tài)存儲技術(shù)進(jìn)步,誕生陳舊基于Flash存儲器非易失大容量多種類型閃爍存儲卡。PC(PCMCIA)、CF(CompactFlash)、SD(SecureDigital)、MMC(MultMedia)、SM(SmartMedia)、MS(Memory Stick)以及基于USB接口的閃存是如今流行的7大卡系,具有大容量和低功耗等優(yōu)點。移動存儲器被廣泛應(yīng)用于各種數(shù)碼產(chǎn)品中,如婁碼相機、媒體播放器和PDA等,同時也為低功耗、便攜式體電信號的采集存儲系統(tǒng)提供了理想的存儲介質(zhì)。表1為這7種流行卡系的簡介與比較。
表1 7種流行卡系統(tǒng)比較
卡 系 | 誕生時間/年 | 體 積 | 接 口 | 目前最大容量 |
PC卡 | 1992 | 85.6mm×54.0mm×3.3mm類型I); 85.6mm×54.0mm×5.0mm類型II); 85.6mm×54.0mm×10.5mm類型III) |
68針 | 5GB |
CF卡 | 1994 | 43mm×36mm×3.3mm | 50針 | 2~3GB |
SM卡 | 1995 | 45mm×37mm×0.76mm | 22 | 128MB |
MMC卡 | 1997 | 32mm×24mm×1.4mm | 7針 | 128MB |
SD卡 | 1999 | 32mm×24mm×2.1mm | 7針 | 128MB |
MS卡 | 1997 | 50mm×21.5mm×0.28mm | 10針 | 128MB |
基于USB接口的閃存盤 | 1999 | 型號不同,體積各異 | USB接口 | 1GB |
經(jīng)過詳細(xì)的調(diào)研和性能比較,綜合各種移動存儲卡的性價比、最大容量和易實現(xiàn)性,筆者最終選擇CF卡作為便攜式體電信號采集存儲系統(tǒng)的存量載體。CF卡容量大,最大容量可達(dá)2GB以上,完全滿足長時間體電信號采集海量數(shù)據(jù)的要求;性價比高,同樣容量的卡價格是其它卡系的一半;易于系統(tǒng)的實現(xiàn),CF卡提供了完整的ATA功能,而且通過TrueIDE工作模式兼容IDE接口;耗電量低,支持在低電壓(3.3V)下工作,實際工作電流為30~50mA,睡眠時僅為600μA;數(shù)據(jù)吞吐量高,5V工作時吞吐量為20MB/s,3.3V工作時為6.6MB/s;可靠性高,平均無故障工作時間100萬小時。
2 CF卡的物理和硬件接口特性
CF卡可以工作在PC卡ATA I/O模式、PC卡ATA存儲模式和實IDE模式三種模式下,實IDE模式與IDE接口完全歉。CF卡遵從ATA協(xié)議,屬于塊存儲設(shè)備,存儲單元是通過磁頭(head)、柱面(cylinder,也稱磁道)和扇區(qū)(sector)組織起來的;在物理尋址(CHS)方式下,每一組H/C/S參數(shù)唯一確定存儲卡中的一個扇區(qū),通常一個扇區(qū)擁有512字節(jié)的數(shù)據(jù)空間。一個驅(qū)動數(shù)格式化后的容量為磁頭數(shù)×柱面數(shù)×扇區(qū)數(shù)×512字節(jié)。在物理尋址模式下,扇區(qū)(S)是最低的地址單位,其次是磁頭(H),最后的柱面(C)為最高尋址單位。此外,還有邏輯尋址方式(LBA)。在這種尋址方式下,CF卡按照以連續(xù)序列的邏輯扇區(qū)編號進(jìn)行尋址,主機不必知道CF卡的物理幾何結(jié)構(gòu)。使用28個數(shù)據(jù)位來表示邏輯扇區(qū)的地址,可以尋址2 28個扇區(qū),理論上可以尋址136GB的容量。下面給出物理尋址方式與邏輯尋址方式的對應(yīng)關(guān)系。設(shè)NS為每磁道扇區(qū)數(shù),NH為磁頭數(shù),C、H、S分別表示磁盤的柱面、磁頭和扇區(qū)編號,LBA表示邏輯扇區(qū)號,div為整除計算,mod為求余計算,則:LBA=NH×NS×C+NC×H+S-1;C=(LBA div NS)div NH;H=(LBA div NS)mod NH;S=(LBA mod NS)+1。
CF卡為50針接口。其中重要的信號線16根數(shù)據(jù)線、11根地址線(在TureIDE模式下僅用3根地址線)、2根寄存器組選擇信號線(CS0、CS1)、數(shù)據(jù)的讀寫線(IORD、IOWR)、1根中斷信號請求線(INTRQ和1根復(fù)位線(RESET)。
3 CF卡的軟件接口和命令
CF內(nèi)部控制器有多個寄存器,通過這些寄存器可以對CF卡內(nèi)部的存儲空間進(jìn)行控制和訪問。下面就實IDE模式下的寄存器組為例進(jìn)行說明。
在實IDE模式下,寄存器組通過寄存器組選擇信號線(CS0、CS1)和低三位地址線(A0、A1、A2)進(jìn)行訪問,具體功能和地址分配如表2所列。
表2 CF卡實IDE模式下寄存器組具體功能和地址分配表
CS1 | CS0 | A2 | A1 | A0 | IORD=0 | IOWR=0 | 位數(shù)/位 |
1 | 0 | 0 | 0 | 0 | 數(shù)據(jù)寄存器 | 數(shù)據(jù)寄存器 | 16 |
1 | 0 | 0 | 0 | 1 | 錯誤寄存器 | 特征寄存器 | 8 |
1 | 0 | 0 | 1 | 0 | 扇區(qū)數(shù)寄存器 | 扇區(qū)數(shù)寄存器 | 8 |
1 | 0 | 0 | 1 | 1 | 扇區(qū)號寄存器 | 扇區(qū)號寄存器 | 8 |
1 | 0 | 1 | 0 | 0 | 柱面號寄存器(低字節(jié)) | 柱面號寄存器(低字節(jié)) | 8 |
1 | 0 | 1 | 0 | 1 | 柱面號寄存器(高字節(jié)) | 柱面號寄存器(高字節(jié)) | 8 |
1 | 0 | 1 | 1 | 0 | 驅(qū)動器選擇/磁頭寄存器 | 驅(qū)動器選擇/磁頭寄存器 | 8 |
1 | 0 | 1 | 1 | 1 | 狀態(tài)寄存器 | 命令寄存器 | 8 |
0 | 1 | 1 | 1 | 0 | 可選狀態(tài)寄存器 | 設(shè)備控制寄存器 | 8 |
0 | 1 | 1 | 1 | 1 | 驅(qū)動器地址寄存器 | 保留 | 8 |
CF-ATA的基本命令有30余條,主要有數(shù)據(jù)的傳輸命令,包括扇區(qū)、緩沖區(qū)的讀寫等命令;CF卡的定義命令,包括磁道格式化、設(shè)置特征參數(shù)等命令;電源管理命令,包括檢查電源管理模式、進(jìn)入睡眠省電模式等命令;安全及權(quán)限的設(shè)置命令,包括CF卡安全密碼的設(shè)置、安全權(quán)限的鎖定與解鎖等命令。每執(zhí)行一條命令都要向CF-ATA的寄存器組寫入?yún)?shù)和命令。下面以CF卡讀取一扇區(qū)數(shù)據(jù)為例,說明CF-ATA命令的執(zhí)行過程。
①讀取CF卡狀態(tài)寄存器,檢測并等待當(dāng)前CF卡是否空閑,若空閑,向下執(zhí)行。
②填寫地址寄存器塊。地址寄存器塊包括扇區(qū)數(shù)寄存器、扇區(qū)號寄存器、柱面號寄存器(低和高字節(jié))、驅(qū)動器選擇/磁頭寄存器,選擇訪問的扇區(qū)地址。
③寫命令寄存器,將讀扇區(qū)命令寫入命令寄存器(20h或21h)。
④讀取CF卡狀態(tài)寄存器,檢測并等待CF卡的數(shù)據(jù)請求。有數(shù)據(jù)請求表示命令已被接收并處理,若長時間沒有數(shù)據(jù)請求,需要進(jìn)行超時處理。
⑤讀數(shù)據(jù)寄存器。由于數(shù)據(jù)寄存器端口為16位,因此,讀一個扇區(qū)512字節(jié)的數(shù)據(jù)僅需要連續(xù)執(zhí)行256次訪問數(shù)據(jù)寄存器的操作。要注意的是,在CF卡中存儲的數(shù)據(jù)是低字節(jié)在前,高字節(jié)在后。在數(shù)據(jù)寄存器中,會產(chǎn)生高低字節(jié)顛倒的問題。
⑥檢測執(zhí)行結(jié)果。在執(zhí)行命令后,需要查看狀態(tài)寄存器的D0位。若D0位為0,則表示命令執(zhí)行成功,否則表示出錯。其相應(yīng)的錯誤信息在錯誤寄存器中可以查出。
4 TMS320LF2407與CF卡的電路連接
TMS320LF2407是TI公司C24X系列中功能最完整、資源最豐富的控制芯片DSP,提供了多種接口的最優(yōu)數(shù)字控制,有最高的代碼效率。C24X是其C2000系列新代16位定點處理器產(chǎn)生,內(nèi)核CPU為低功耗、高性能TMS320TM構(gòu)架的增強設(shè)計;最優(yōu)化控制多個外設(shè);有2個事件管理模塊,用于數(shù)據(jù)控制、電源轉(zhuǎn)換,產(chǎn)生多種波形PWM;同步16通道高性能10位ADC,轉(zhuǎn)換時間為500ns;支持串行異步通信接口(SCI)、串行同步外設(shè)接口(SPI)、CAN總線2.0標(biāo)準(zhǔn)接口。TMS320LF2407總尋址范圍192K字,其中包括64K字程序空間,64K字?jǐn)?shù)據(jù)空間,64K字I/O空間,片內(nèi)程序空間集成32K字Flash,數(shù)據(jù)空間集成2.5K字RAM,包括544字DARAM(其中256字與程序空間共享),2K字SARAM。圖1給出了TMS320LF2401與CF卡的一種電路連接方框圖。CF卡占用TMS320LF2407的I/O空間地址,不需要任何中間接口轉(zhuǎn)換芯片。
5 TI公司DSP匯編程序?qū)嵗?/B>
考慮到TI公司的DSP各系列芯片匯編指令的兼容性例于跨平臺移植和匯編語言代碼的高效性,下面給出基于連接框圖將CF卡中一扇區(qū)數(shù)據(jù)(512字節(jié))讀到TMS320LF2407片內(nèi)RAM中匯編程序。READ_A_SECT:
W_CF_RDY: ;檢測CF卡是否空閑
LDP #0h
IN CF_IN,CFCOM_STAT
;讀狀態(tài)寄存器
LALC CF_IN
AND #00FFh
XOR #0050h
BZ END_WAIT_RDY
B W_CF_RDY
END_WAIT_RDY:
SPLK #0000h,CF_OUT
OUT CF_OUT,CFERR_FEA
;寫特片寄存器
SPLK #0001h,CF_OUT
OUT CF_OUT,CFSET_COU
;寫扇區(qū)數(shù)寄存器
SAR AR3,CF_OUT
OUT CF_OUT,CFSEC_NO
;寫扇區(qū)號寄存器
SAR AR4,CF_OUT
OUT CF_OUT,CFCYL_LOW
;寫柱面號寄存器(低字節(jié))
SAR AR5,CF_OUT
OUT CF_OUT,CFCYL_HIG
;寫柱面號寄存器(高字節(jié))
SAR AR6,CF_OUT
OUT CF_OUT,CF_CDH
;寫驅(qū)動器選擇/磁頭寄存器
SPLK #0020h,CF_OUT
OUT CF_OUT,CFCOM_STAT
;寫命令寄存器
W_CF_DRQ:;檢測CF卡是否有數(shù)據(jù)請求
IN CF_IN,CFCOM_STAT
LACL CF_IN
AND #00FFh
XOR #0058h
BZ END_WAIT_DRQ
B W_CF_DRQ
END_WAIT_DRQ:
LAR AR2,#0FFh
;作256次循環(huán)讀取一扇區(qū)數(shù)據(jù)(512字節(jié))
MAR *,AR1
INLOOP:IN *+,CFDATA,AR2
;循環(huán)讀取數(shù)據(jù)寄存器
BANZ INLOOP,*-,AR1
RET
程序說明:CFDATA為數(shù)據(jù)寄存器端口地址;CFCOM_STAT為狀態(tài)/命令寄存器端口地址;CFERR_FEA為特征寄存器端口地址;CFSEC_COU為扇區(qū)數(shù)寄存器端口地址;CFSEC_NO為扇區(qū)號寄存器端口地址;CFCYL_LOW為柱面號寄存器(低字節(jié))端口地址;CFCYL_HIG為柱面號寄存器(高字節(jié))端口地址;AR1、AR3~AR6輔助寄存器為程序入口參數(shù),其中AR1為RAM數(shù)據(jù)緩沖區(qū)的起始地址;AR3~AR6為CF卡各寄存器待賦的值;CF_IN和CF_OUT為變量。程序中沒超時處理,在循環(huán)讀取數(shù)據(jù)的過程中,最好禁用時間較長的中斷。這是因為CF卡在15ms內(nèi)沒有接收到命令就會進(jìn)入休眠(sleep),因此不論是讀還是寫扇區(qū),在命令出后15ms內(nèi)應(yīng)將數(shù)據(jù)取出或填充上,否則會出錯。
結(jié)語
采用TI公司的C24X、C28X系列DSP與CF卡搭建體電信號采集的硬件平臺,僅使用很少的外部邏輯。整個系統(tǒng)可以采用低電壓3.3V單一電壓供電,供電電路非常簡單。C24X、C28X系列DSP芯片對片內(nèi)的各個模塊獨立供電,工作時可以屏蔽掉沒有用到的模塊,比如SCI、SPI、CAN總線接口等模塊,減少系統(tǒng)的功耗。在系統(tǒng)軟件實現(xiàn)上,可以采用交替式雙緩存機制,將采集到的數(shù)據(jù)先存入數(shù)據(jù)緩沖區(qū)中(1扇區(qū)占512字節(jié)為易)。當(dāng)數(shù)據(jù)緩沖區(qū)寫滿時發(fā)出溢出中斷,對CF卡進(jìn)行突發(fā)寫操作。寫操作完畢可以發(fā)送命令,使CF卡立即進(jìn)入休眠狀態(tài),將功耗降至最低。這樣在數(shù)據(jù)采集系統(tǒng)工作的大部分時間,CF卡處于休眠狀態(tài),工作電流僅為600μA。
筆者TMS320LF2407與CF卡搭建建硬平臺,進(jìn)行16路體電信號采集,采集頻率為150Hz,CF卡容量為256MB。經(jīng)實際測試,系統(tǒng)的功耗小于0.3W,使用3~4節(jié)干電池或1~2手機鋰電池供電,可以連續(xù)工作10~20小時以上。該系統(tǒng)適于腦電、心電等體電信號的采集與存儲工作,具有低功耗、攜帶方便、長時間監(jiān)護(hù)、性能價格比高等特點。