基于CF卡的無線膠囊內(nèi)窺鏡體外接收存儲系統(tǒng)
引言
本文引用地址:http://cafeforensic.com/article/199287.htm對于消化道疾病的診斷,目前最常用的方法是采用內(nèi)窺鏡,但傳統(tǒng)內(nèi)窺鏡使用插入導(dǎo)管的方式,存在著諸多弊端,例如操作困難;屬于有創(chuàng)檢測,給病人帶來很大的肉體痛苦;診察范圍有限,僅限于診斷上消化道及大腸的病變,而對小腸疾病的診斷存在很大的盲區(qū)等等。[1]鑒于此,近十年來,世界各國有不少科研機(jī)構(gòu)在從事人體消化道無創(chuàng)檢測設(shè)備的研究開發(fā)工作,而本文所提到的無線膠囊內(nèi)窺鏡系統(tǒng)就是其中有代表性的設(shè)備之一。
本論文重點(diǎn)介紹了一種無線膠囊內(nèi)窺鏡診斷系統(tǒng)體外接收器的原理與結(jié)構(gòu)。該系統(tǒng)采用雙片高速單片機(jī)(Silicon Laboratory 8051F130)與FPGA、FIFO相結(jié)合的架構(gòu),成功實(shí)現(xiàn)了將體內(nèi)膠囊內(nèi)窺鏡傳輸出的圖像數(shù)據(jù)實(shí)時(shí)接收存儲的功能。
在數(shù)據(jù)存儲上則采用了Sandisk公司的4G大容量高速CF卡SDCFH-4096對采集的數(shù)據(jù)信號進(jìn)行存儲,滿足了實(shí)時(shí)非壓縮數(shù)據(jù)信號對大容量存儲空間的要求。
1 體外無線接收存儲系統(tǒng)的組成
無線膠囊內(nèi)窺鏡體外接收存儲系統(tǒng)的接口框圖如圖1所示。整個系統(tǒng)可以分為數(shù)據(jù)接收與同步模塊和數(shù)據(jù)存儲模塊兩大基本模塊。
1.1 數(shù)據(jù)接收與同步模塊
數(shù)據(jù)接收與同步模塊包括模擬射頻接收器、低通濾波器、箝位電路、視頻放大器、同步檢測器、模數(shù)轉(zhuǎn)換器、信號處理器MCU1等。
從模擬射頻接收器接收的幀模擬信號經(jīng)過低通濾波器濾掉高頻干擾分量。低通濾波器采用無源三階巴特沃斯濾波器實(shí)現(xiàn)。射頻接收器輸出的是交流耦合信號,經(jīng)低通濾波器后仍為交流耦合信號,為了恢復(fù)信號的直流分量,必須對通過箝位電路對其進(jìn)行箝位。經(jīng)箝位電路后,信號的直流分量將為0.38V。視頻放大器的作用是對箝位電路輸出的信號進(jìn)行適當(dāng)?shù)姆糯?,一方面提高信號的幅值,便于進(jìn)行模數(shù)轉(zhuǎn)換,另一方面,可以提高驅(qū)動能力,帶動后級負(fù)載。同步檢測器的功能是從輸入的信號中分離出幀同步和行同步信號,使得可以采用模數(shù)轉(zhuǎn)換器轉(zhuǎn)換圖像數(shù)據(jù)。同步檢測采用對信號幅值進(jìn)行比較的方法實(shí)現(xiàn),其具體結(jié)構(gòu)是一個電壓比較器。信號處理器MCU1的作用在于通過檢測同步檢測器的輸出信號判定幀同步信號與行同步信號,據(jù)此控制AD轉(zhuǎn)換器的CLK信號,向后續(xù)的數(shù)據(jù)存儲模塊提供相應(yīng)的同步標(biāo)志位SYNC,同時(shí)控制數(shù)據(jù)存儲模塊的部分電路。
1.2 數(shù)據(jù)存儲模塊
數(shù)據(jù)存儲模塊包括CF控制器MCU2、FIFO、FPGA、CF卡等部分,詳細(xì)結(jié)構(gòu)及原理過程將在第3部分作進(jìn)一步介紹。
2 CF卡簡介
2.1 CF卡結(jié)構(gòu)與工作模式
CF卡是體外接收存儲系統(tǒng)的存儲介質(zhì),其結(jié)構(gòu)如圖2所示。CF卡全稱Compact Flash卡,由控制器與Flash存儲器兩大部分組成??刂破髦饕脕韺?shí)現(xiàn)與主機(jī)的接口并控制數(shù)據(jù)在存儲模塊中的傳輸,F(xiàn)lash存儲器主要負(fù)責(zé)數(shù)據(jù)的存儲??刂破魍ㄟ^協(xié)議轉(zhuǎn)換,將外設(shè)對Flash Memory的讀寫轉(zhuǎn)化成對控制器的訪問,統(tǒng)一了讀寫訪問的標(biāo)準(zhǔn)(符合PC機(jī)內(nèi)存卡國際聯(lián)合會PCMCIA和ATA接口規(guī)范),從而保證了不同CF卡的兼容性。[2]同時(shí)CF卡采用了緩沖區(qū)結(jié)構(gòu),使CF卡與外界通信的同時(shí)可以對內(nèi)部Flash Memory進(jìn)行操作,提高了數(shù)據(jù)傳輸?shù)乃俾省?/p>
CF卡支持包含Memory Mapped、I/O Card和True IDE在內(nèi)的三種訪問模式。本系統(tǒng)采用的是True IDE模式。上電時(shí),將OE-腳置為低電平,則CF卡進(jìn)入True IDE模式。上電時(shí),OE-為高電平,CF進(jìn)入PCMCIA模式,即Memory Mapped模式或I/O Card模式。然后可以通過配置選項(xiàng)寄存器進(jìn)入相應(yīng)的模式。
2.2 CF卡的操作方式
CF卡與硬盤類似,采用柱面/磁道/扇區(qū)的方式組織存放數(shù)據(jù)。[3]其扇區(qū)尋址方式有邏輯尋址(LBA)和物理尋址(CHS)兩種。物理尋址方式(CHS)使用柱面、磁頭、扇區(qū)號來表示一個特定的扇區(qū);邏輯尋址方式(LBA)將整塊CF 卡進(jìn)行同一尋址,在訪問連續(xù)的扇區(qū)時(shí),操作速度比物理尋址方式要快,而且也簡化了對磁盤的訪問。文中使用邏輯尋址方式(LBA)。二者的換算關(guān)系為邏輯LBA地址=(柱面號×磁頭數(shù)+磁頭號)×扇區(qū)數(shù)+扇區(qū)號-1。
3.1 FIFO與FPGA、MCU2協(xié)同工作流程
作為該體外接收存儲系統(tǒng)接收信號的發(fā)射源,無線膠囊內(nèi)窺鏡使用的是由Omnivision公司提供的OV6650微型圖像傳感器。其輸出圖像大小設(shè)定為CIF格式(352×288),圖像格式為Raw RGB。[4]為降低功耗,膠囊內(nèi)窺鏡采用輸出一幀圖像后即進(jìn)入休眠狀態(tài)的工作方式。每幀圖像的持續(xù)時(shí)間約為63ms,兩幀之間的休眠時(shí)間約為430ms。單幀圖像的數(shù)據(jù)量在90K左右。圖像數(shù)據(jù)的每幀數(shù)據(jù)量大,傳輸速率快,在圖像傳感器的PCLK管腳輸入為2MHz的情況下,每個像素點(diǎn)的傳輸時(shí)間為500ns??紤]到今后提高傳輸速率的需要,采用在膠囊工作時(shí)用MCU1控制FIFO,直接將一幀圖像數(shù)據(jù)緩存,在膠囊休眠期間將FIFO中的圖像寫入CF卡的解決方案。另外考慮到以后擴(kuò)展的方便,在設(shè)計(jì)中采用了FPGA作為FIFO與高速單片機(jī)MCU2 (8051F130)之間的讀操作時(shí)鐘源,完成單片機(jī)對FIFO的讀時(shí)序控制。
數(shù)據(jù)存儲模塊的具體電路連接圖如圖3所示。該部分結(jié)構(gòu)對應(yīng)于圖1的虛線框。FIFO采用Cypress公司的CY7C4291V。該低電壓FIFO芯片的緩存為128K×9。[5]AD轉(zhuǎn)換芯片采用TI公司的ADS931。MCU采用Silicon Laboratory公司的8051F130,經(jīng)過倍頻后可達(dá)到100MIPS的處理速率,可為以后系統(tǒng)升級預(yù)留足夠的空間。
濾波箝位后的模擬幀數(shù)據(jù)信號在MCU1產(chǎn)生的時(shí)鐘信號CLKIN的控制下,經(jīng)過ADS931轉(zhuǎn)換為8位數(shù)據(jù)。MCU1同時(shí)向CY7C4291V提供WCLK、/WEN1、WEN2引腳的輸入控制,將模數(shù)轉(zhuǎn)換后的圖像數(shù)據(jù)緩存入FIFO。在檢測到SYNC_IN管腳輸入的一幀結(jié)束標(biāo)志后,MCU1停止向ADS931及FIFO輸出時(shí)鐘,并向FPGA的SYNC管腳提供一個脈沖。此時(shí)對FIFO的控制權(quán)轉(zhuǎn)交給FPGA。在FPGA產(chǎn)生的RCLK,/REN1,/REN2,ADCLK1的時(shí)序控制下,MCU2將FIFO中所緩存一幀圖像以較低的速率讀入,并寫入CF卡緩存,達(dá)到了與CF Card寫入周期的匹配。[6]
FPGA各引腳時(shí)序圖如圖4所示。
3.2 向CF中存儲數(shù)據(jù)
對CF卡的操作只需讀寫任務(wù)寄存器即可。CF卡共有30條指令,數(shù)據(jù)讀寫的最小單位為1個扇區(qū)。8位格式訪問時(shí)對應(yīng)1個扇區(qū)數(shù)據(jù)量為512字節(jié),16位格式訪問是對應(yīng)1個扇區(qū)數(shù)據(jù)量為256字。連續(xù)存取字節(jié)兩次則依次存取數(shù)據(jù)寄存器的偶字節(jié)和奇字節(jié)。本系統(tǒng)中采用8位模式進(jìn)行操作。在MCU2對CF卡進(jìn)行寫入操作之前,先向命令寄存器寫入0Efh,將默認(rèn)的16位模式改為8位模式。每次執(zhí)行CF卡命令前,需要讀取狀態(tài)寄存器(偏移量為07H)來確定當(dāng)前CF卡所處的狀態(tài)。狀態(tài)寄存器D7位為零,表示控制空閑;D6,D4均為1,表示CF卡準(zhǔn)備好接收下一條指令。執(zhí)行命令前,程序要寫7個寄存器,其中前6個為參數(shù),最后1個為命令碼。[7]讀扇區(qū)命令字為20H或21H,寫扇區(qū)命令字為:30H或31H。其中扇區(qū)讀寫流程如圖5所示。
在實(shí)際的程序運(yùn)行過程中,在FIFO存儲完一幀圖像數(shù)據(jù)后,F(xiàn)PGA開始向MCU2提供ADCLK1時(shí)鐘。在MCU2檢測到第一個時(shí)鐘下降沿時(shí),向CF卡任務(wù)寄存器寫入寫卡指令,之后讀CF卡狀態(tài)寄存器,當(dāng)返回值為58H時(shí),表明CF卡已進(jìn)入等待數(shù)據(jù)寫入狀態(tài)。在之后的每個ADCLK1的下降沿,對應(yīng)一個像素點(diǎn)的8位數(shù)據(jù)從FIFO讀入MCU2,隨后即時(shí)送入CF卡的緩存。當(dāng)一個扇區(qū)的數(shù)據(jù),即512Bytes的數(shù)據(jù)寫入緩存后,CF卡需要一定的響應(yīng)時(shí)間等待寫扇區(qū)指令的執(zhí)行。所以FPGA在產(chǎn)生連續(xù)512個周期為200us的ADCLK1后將產(chǎn)生一個800us的延時(shí),從而保證CF卡有足夠時(shí)間寫入一個扇區(qū)的數(shù)據(jù),避免丟失數(shù)據(jù)的情況發(fā)生。在此同時(shí),程序查詢狀態(tài)寄存器的值,若為50H,說明一個扇區(qū)的數(shù)據(jù)已被寫入CF卡。此時(shí)FPGA繼續(xù)產(chǎn)生ADCLK1時(shí)鐘,MCU2則繼續(xù)在時(shí)鐘下降沿查詢FIFO的輸入,并將其寫入CF數(shù)據(jù)緩存,如此重復(fù)寫入數(shù)扇區(qū),直至一幀圖像數(shù)據(jù)完全寫入CF卡為止。
4 實(shí)驗(yàn)結(jié)果與結(jié)論
(1) 采用4G的CF卡(SDCFH-4096)實(shí)現(xiàn)了連續(xù)6.2小時(shí)的圖像錄制,與膠囊內(nèi)窺鏡系統(tǒng)在人體內(nèi)由SR69W氧化銀電池供能條件下可連續(xù)工作時(shí)間(7小時(shí)左右)相近,基本滿足了實(shí)時(shí)存儲內(nèi)窺鏡圖像的要求。在對膠囊端的工作頻率進(jìn)行提高后,有望達(dá)到更高的圖像接收速率。
(2) 圖6為使用該系統(tǒng)接收的一幀CIF格式8位色Raw RGB圖像數(shù)據(jù)在PC上還原得到的圖像,圖像質(zhì)量較為理想。這說明接收器可以正確接收同步圖像信號并正確寫入CF卡。
(3) 由于受模擬傳輸干擾的影響,接收圖像會隨機(jī)出現(xiàn)同步位錯誤造成的圖像失真(圖7),具體出現(xiàn)概率主要取決于接收器的接收頻率是否準(zhǔn)確,總體上對接收圖像的影響不大。
經(jīng)過實(shí)驗(yàn)證明,按此種方案設(shè)計(jì)的無線膠囊內(nèi)窺鏡體外接收存儲系統(tǒng)可以滿足實(shí)時(shí)接收并存儲WCE(Wireless Capsule Endoscopy)模擬圖像數(shù)據(jù)的要求。
參考文獻(xiàn):
[1] 胡宗泰。 醫(yī)用內(nèi)窺鏡現(xiàn)狀及發(fā)展趨勢[J]. 世界醫(yī)療器械, 1997, 1:32-34
[2] SanDisk CompactFlash Memory Card Product Manual[DB/OL]. Version 11.0, Document No. 20-10-00038, January 2006
[3] 毛曉燕,湯健彬,金建詳。 基于8051的CF卡文件系統(tǒng)的實(shí)現(xiàn)[J]. 自動化儀表, 2003,6:34-35
[4] OV6650FS Color CMOS CIF (352 x 288) Concept Camera Module Data Sheet. Version 1.1[DB/OL], 2003
[5] CY7C4291V Datasheet. Cypress Semiconductor Corporation[DB/OL]. 1999
[6] 郭振武,李維祥,王文博。 單片機(jī)實(shí)現(xiàn)對CF卡的讀寫[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2004,11:25-31
[7] 翟亞東,史忠科。 基于CF卡的飛行試驗(yàn)數(shù)據(jù)記錄器的設(shè)計(jì)[J]. 計(jì)算機(jī)測量與控制, 2006,14(10):1384-1386
[8] 蔡慶喜, 馬孝江, 李聯(lián)玉。 便攜式信號采集分析儀數(shù)據(jù)管理系統(tǒng)的開發(fā)[J]. 機(jī)床與液壓, 2004,12:134-136
評論