0 引言
目前,,數(shù)字視頻系統(tǒng)在日常工作和生活中己得到廣泛應(yīng)用,如監(jiān)控系統(tǒng),、視頻電話,、數(shù)字電視等,而隨著技術(shù)的進(jìn)步和工作生活對視頻圖像質(zhì)量的要求越來越高,,處理的數(shù)據(jù)量也越來越大,,這就提出了兩個(gè)新的問題:一方面要求硬件的處理能力要更快,如監(jiān)控系統(tǒng)和視頻電話系統(tǒng)都要求具備實(shí)時(shí)性,;另一方面要求數(shù)據(jù)的存儲(chǔ)介質(zhì)容量更大而且方便攜帶,。為了實(shí)現(xiàn)DSP(DigitalSignal Processing)系統(tǒng)的獨(dú)立運(yùn)行,,需要有大容量的存儲(chǔ)介質(zhì)用于保存視頻數(shù)據(jù)。本文中使用TI公司的高端多媒體處理芯片DM642作為圖像處理芯片,,其強(qiáng)大的計(jì)算能力,、豐富的外圍接口和完全可編程性,可以方便地用來開發(fā)各種圖像系統(tǒng),。而CF卡的使用則可以彌補(bǔ)板載的Flash容量通常太小,,SDRAM掉電后數(shù)據(jù)會(huì)丟失的缺陷。同時(shí)CF卡采用的插針式連接方式,,具有相對較高的抗震性和穩(wěn)定性,,能夠較好地滿足便攜式設(shè)備的要求。在視頻編解碼方面采用TI公司提供的MPEG一2算法,,可以基本滿足壓縮效率和質(zhì)量的要求,。
1 CF卡的簡介
CF卡的全稱為Compact F1ash。它最先是由Sandisk公司在1994年推出的,,現(xiàn)在已經(jīng)成為一種行業(yè)標(biāo)準(zhǔn),,其內(nèi)部示意圖如圖1所示。CF卡由兩個(gè)基本部分組成:控制芯片和閃存模塊,??刂菩酒脕韺?shí)現(xiàn)與主機(jī)的連接及控制數(shù)據(jù)在閃存模塊中的傳輸,而閃存模塊用于存儲(chǔ)信息,。CF卡兼容3.3V和5V的工作電壓,,并支持多種接口訪問模式。目前CF的容量可高達(dá)100GB,,主流容量已達(dá)到4GB,,價(jià)格也已經(jīng)降到幾十元左右,性價(jià)比很高,。
2 DM642與CF卡的接口設(shè)計(jì)
2.1 硬件接口設(shè)計(jì)
CF卡支持三種基本的工作模式:PC Card Memory模式,、PC Card I/0模式以及True IDE模式,不同的模式對應(yīng)的管腳功能略有不同,。在本文的設(shè)計(jì)中使用的是PCCard Memory模式,,在插入CF卡之前,保證CF卡的插槽/REG管腳為高電平,,即可讓CF卡自動(dòng)進(jìn)入PC Card Memory模式,。DSPs是通過外部存儲(chǔ)器接口EMIF(External MemoryInterface)來訪問片外存儲(chǔ)器的,。DM642的EMIF有CEO,、CEl、CE2,、CE3四個(gè)空間,,各具有256MB的尋址空間,。本文所述的系統(tǒng)設(shè)計(jì)中將CE2空間配置為CF卡的地址空間供CF卡使用,根據(jù)Memory模式的要求,,CE2空間被配置為8位異步接口,,此外還專門配備了一片CPLD來對CF卡進(jìn)行讀寫控制,硬件連接如圖2所示,。
引腳連接說明如下:/REG信號(hào)用于選擇訪問普通寄存器還是屬性寄存器,,他和地址線A[3:0]一起完成對讀寫寄存器的選取。/CDl和/CD2用于檢測插槽上是否有CF卡,,當(dāng)CF卡插入插槽后,,這些管腳會(huì)被拉低。/CEl和/CE2則用來選擇CF卡的數(shù)據(jù)傳輸寬度,,本文中設(shè)計(jì)為8位寬度,。為了節(jié)約IO口的資源,/CDl,、/CD2,、/CEl、/CE2和I/REG均連接到配置的通用IO(GPIO)口上,。
TEAl3控制REG,,TEAl2控制CF卡的CEl,TEAl 1控制CF卡的CE2,,DSP_CE2是CE2空間的使能信號(hào),,ARE和IAWE是異步接口的讀寫信號(hào),均為低電平有效,,他們通過與DSP_CE2邏輯取“或”后連接到CF卡的/0E和/WE,,這樣在/CE2使能后就可以相應(yīng)地控制CF卡的讀寫操作。
CF卡具有16位的數(shù)據(jù)總線,,但是可以根據(jù)主控制器的數(shù)據(jù)寬度靈活配置成8位或16位,,本系統(tǒng)中將DM642的低16位數(shù)據(jù)總線D[15:0]與CF卡的數(shù)據(jù)總線D[15:0]相連。CF卡的11位地址總線取低四位A[3:0]連接到DM642的TEA[6:3],,CF卡的TEA[9:4]接地,,TEAl0連接到DM642的TEA7,CSEL接地,,IOWR,、IORD上拉至VCC,其他未說明使用的引腳均為接地操作,。
2.2 CF卡的軟件接口
CF卡的讀寫是以扇區(qū)(sector)為基本單位的,,每扇區(qū)為512字節(jié),每次讀寫一個(gè)或多個(gè)連續(xù)扇區(qū),。本文中CF卡被配置為PC Card Memory模式,,該模式下的寄存器地址映射如表1所示,。
寄存器0用于讀寫數(shù)據(jù),寄存器1在讀操作時(shí)是錯(cuò)誤寄存器,,存放錯(cuò)誤信息,,寫的時(shí)候是特征寄存器。寄存器2用于存放讀寫扇區(qū)的數(shù)目,。寄存器3~6用于存放讀寫扇區(qū)的地址,。CF卡的扇區(qū)尋址有兩種方式:物理尋址方式(Cylinder/Head/Sector,CHS)和邏輯尋址方式(Logical Block Addressing,,LBA),。CHS是扇區(qū)對應(yīng)的具體的柱面、磁頭和扇區(qū)的地址,,LBA的地址則在邏輯上是連續(xù)的,,兩種尋址方式的轉(zhuǎn)換關(guān)系為:LBA地址=(柱面號(hào)×磁頭數(shù)+磁頭號(hào))×扇區(qū)數(shù)+扇區(qū)號(hào)一1。本文選擇LBA的線性尋址方式,。
寄存器7在讀和寫時(shí)具有不同的意義,。讀操作時(shí)是狀態(tài)寄存器,存放CF卡的狀態(tài)信息,,寫的時(shí)候是命令寄存器,,用于設(shè)置命令,完成相應(yīng)的操作,。
CF卡讀寫程序之前要初始化DSP和CF卡,,初始化GPIO,將DM642的CE2空間設(shè)置為8位異步接口,,將/REG配置為高電平,,同時(shí)設(shè)置CF卡為8位數(shù)據(jù)接口。
在讀寫扇區(qū)時(shí),,首先要設(shè)置好起始扇區(qū)的LBA地址和要讀寫的扇區(qū)數(shù)目,,然后再設(shè)置命令寄存器,讀取數(shù)據(jù)設(shè)置為20H,,寫入數(shù)據(jù)設(shè)置為30H,,寫完后讀取狀態(tài)寄存器,只有當(dāng)狀態(tài)寄存器為“58H”時(shí)才能開始讀寫操作,,否則繼續(xù)查詢狀態(tài),。由于數(shù)據(jù)接口為8位,這樣對一個(gè)扇區(qū)就需要讀或?qū)?12次數(shù)據(jù)寄存器即可,。之后還要讀取狀態(tài)寄存器看是否為“50H”,,判斷CF卡的操作是否完成,若完成,,則退出本次操作,,否則繼續(xù)查詢直至完成。
CF卡寫一個(gè)扇區(qū)函數(shù)部分源碼如下:
讀寫多個(gè)扇區(qū)的方法與此類似,,設(shè)置好扇區(qū)的數(shù)目和相應(yīng)的讀寫命令即可,,一般說來直接設(shè)置循環(huán)讀寫比調(diào)用子程序的運(yùn)行效率要高,因?yàn)樗恍枰x寫一次扇區(qū)的起始地址即可,。
2.3 CF卡的內(nèi)存空間管理
本系統(tǒng)中CF卡上存儲(chǔ)的是mpeg2格式的視頻數(shù)據(jù),,雖然視頻的長度不確定,但是扇區(qū)地址用LBA尋址的話都是4字節(jié),。在本設(shè)計(jì)中CF卡的存儲(chǔ)空間可如下進(jìn)行分配:第一個(gè)扇區(qū)存放視頻的索引信息,;從第二個(gè)扇區(qū)開始存放圖像數(shù)據(jù)。
其中第一個(gè)扇區(qū)512個(gè)字節(jié)存放的數(shù)據(jù)格式如下:
total section為存放的總視頻數(shù)據(jù)的個(gè)數(shù),,初始為0,;current section則為當(dāng)前要進(jìn)行操作的視頻的編號(hào),初始為1,;addressl為第一段視頻的起始地址,,初始值為0x00000002,而address2為第二段視頻數(shù)據(jù)的起始地址,,初始值為0,,其后的數(shù)據(jù)在初始化時(shí)均設(shè)為O。
在每次系統(tǒng)啟動(dòng)時(shí)都需要首先讀取第一個(gè)扇區(qū)的信息,,讀取的信息放在一個(gè)寬度為4字節(jié)的數(shù)組infolba里,,則每段要讀寫的視頻地址計(jì)算方式如下:currentaddress=infolba[current section],相應(yīng)地在完成讀寫操作后要重寫第一扇區(qū),,對索引信息進(jìn)行更新,,具體為total section、current section和下一段視頻數(shù)據(jù)存放的地址,。
從實(shí)用角度講第一扇區(qū)可以存放約125段視頻的首地址,,可基本滿足使用的要求。根據(jù)設(shè)計(jì)addressl的值恒為Ox00000002,,而total section和Icurrent section又有特定的大小關(guān)系,,那么Infolba的前三個(gè)數(shù)據(jù)可作為校驗(yàn)標(biāo)志用于檢測當(dāng)前的CF卡空間分配是否符合要求,若不符合要求就按照初始值進(jìn)行初始化,。一般情況下current section=totalsection+1,, 當(dāng)current section小于或等于total sectiOn的時(shí)候,若進(jìn)行寫扇區(qū)的操作,,則infolba[current section]以后的數(shù)據(jù)信息都會(huì)被覆蓋或丟失索引信息,,這樣可以確保CF卡內(nèi)存空間的重復(fù)使用。在本系統(tǒng)中通過外部硬件控制電路輸入控制信號(hào),,可以方便地實(shí)現(xiàn)錄像,、播放,、快進(jìn)、快退,、暫停等功能,,很明顯可以通過快進(jìn),、快退改變current section的值來對CF卡上的視頻數(shù)據(jù)進(jìn)行播放或者是覆蓋操作,。
3 結(jié)束語
本文給出了CF卡和DM642的軟、硬件接口,,通過CCS2.2平臺(tái)和RF5框架整合了軟件工程,,成功地將CF卡應(yīng)用到基于DM642的便攜式數(shù)字視頻系統(tǒng)中。將程序燒寫到板載flash后,,可以實(shí)現(xiàn)上電自啟動(dòng),。通過多次試驗(yàn)和對程序的優(yōu)化,系統(tǒng)運(yùn)行良好,,這說明本方案成功地解決了便攜式設(shè)備要求的實(shí)時(shí)性,、大容量和穩(wěn)定性,具有廣闊的應(yīng)用前景,。