隨著數位産品的高速普及,近年來快閃記憶體卡也進入了高速發展時期,得到了越來越廣泛的應用,相機、手機、掌上電腦、隨身聽上處處都可能用到快閃記憶體卡。快閃記憶體卡有很多種類,常見的有CF卡、SD卡、MMC卡、記憶棒、SM卡、xD卡等,其中CF卡已經有了相當長的歷史,由於其建立標準的時間長、相容性好、容量大、價格低等原因而得到了廣泛的應用,是通用性最強的存儲卡之一。
CF卡的全稱爲“Compact Flash”卡,意爲“標準快閃記憶體卡”,簡稱“CF卡”,Compact Flash技術是由Compact Flash協會(CFA)提出的一種與PC機ATA介面標準相容的技術,CFA由CF技術的主導者組成,不過CF和CF+技術並沒有技術和權利金障礙,這也是其得到普及的重要原因之一。CF卡作爲一種先進的移動數位存儲産品,當時其優勢是很明顯的,它具有高速度、大容量、體積小、重量輕、功耗低等優點,很容易就獲得了一致的認可。CFA是1995年成立的,而CF卡的歷史還要早一些,Sandisk公司1994年就製造出了最早的CF卡。
2.CF卡結構

十年過去了,CF卡的價格大爲下降,容量和性能有了很大的提升,不過基本的結構並沒有改變。
CF卡與其他存儲卡相比,有幾個特點。CF卡 使用flash作爲存儲媒介,無需供電也能保存資料,而且工作時耗電量也很低,它在3.3V或者5V的電壓下工作,其耗電量只相當於傳統存儲設備如磁帶、硬碟的3%或更低,適合用在移動設備上;如上圖,CF卡由兩個基本部分組成:控制晶片和快閃記憶體模組,快閃記憶體用於存儲資訊,控制晶片用來實現與主機的連接及控制資料在快閃記憶體模組中的傳輸。

我們結合實物來解說一下。這是某相機附帶的16MB CF卡,打開後可以發現它是由前後兩塊金屬外殼和裏面的電路板組成。

CF卡的結構是比較簡單的,控制晶片和若干片快閃記憶體分別安裝在PCB的兩面,然後再加上塑膠、強化玻璃或金屬質地的外殼。整個CF卡比較堅固,而且沒有機械結構,因此除了省電之外,也具有更好的安全性和可靠性,CF卡可以承受比較強的衝擊,自如從3米高處摔落都不會對它造成任何影響。在這塊CF卡中,使用了一顆Sandisk控制晶片和一顆128Mb(16MB)的Sandisk快閃記憶體晶片,從晶片上的日期來看,這塊卡是幾年前的産品了。

這塊CF卡僅有16MB容量,因此只在正面用了一顆快閃記憶體晶片。
3.CF卡工作原理
看到這裏,對快閃記憶體産品有所瞭解的人一定會說,這樣看來,CF卡很像現在滿地皆是的flash disk呢。的確,雖然形狀不同,但CF卡和flash disk結構相似,有許多相同之處,不過它們也有很大的區別,比如二者的管理和工作方式。
現在的CF卡和flash disk基本都使用NAND型flash,NAND Flash自身是沒有存儲控制器的,其結構可看作是由許多的小區塊組成的,每塊都能存儲一定數量的資訊。NAND型flash的讀寫也是以塊和頁爲單位來進行的,使用8bit的I/O埠存取資料。
NAND型flash容量大、成本低、可以達到比較高的速度,所以應用較爲廣泛,不過它也有些比較明顯的缺點。NAND型flash的基本工作方式是按順序讀取,一個區塊寫入或讀取結束再接著下一個,是“串列”方式而不是“並行”方式,操作上也是如此,比如區塊上已有資訊,就一定要先擦除,再寫入,其他操作也是一樣的。另一個問題就是NAND型flash需要一定的存儲空間來存放目錄等資訊來管理所有的資料,進行任何操作都需要使用這一部分,大部分閃盤的控制晶片都使用固定區塊,所以其使用次數遠高於其他區塊,不管快閃記憶體是號稱10萬次讀寫壽命也好,100萬次擦寫壽命也好,如果使用很頻繁,即使每次只用一點點存儲空間,也可能因爲目錄區損壞及缺乏有效掃描除錯手段而造成資料丟失,需要格式化才能解決問題。
從NAND型快閃記憶體的以上特點,我們可以看出這一類記憶體需要的是什麽的,在擁有大容量、低成本的存儲介質之後,還需要先進的控制器及程式來驅動及使用才能夠使存儲器具有比較好的性能及可靠性,否則不但性能低下,使用壽命也短。
CF卡比flash disk之類的記憶體更加接近硬碟,CF卡內部控制器設計完全類比硬碟,而且使用標準的ATA/IDE介面介面,可以很容易的通過IDE介面與電腦連接,而且早已實現無驅動設計,使用非常方便。CF卡最初一般是配備PCMCIA適配器在筆記本電腦的PCMCIA插槽上使用,現在還有了許多USB、IEEE1394讀卡器等各種各樣的CF適配器,使CF卡與電腦之間的資訊傳輸變得更加方便。由於Windows 95以上的所有作業系統都內置PCMCIA介面的IDE硬碟控制器驅動程式,Windows ME以上的作業系統也加入了對USB、IEEE1394介面移動磁片的支援,所以只要爲CF卡加上一個簡單的介面控制器(轉接器),就可以直接在電腦上使用,移動版的Windows Mobile也早已加入對CF/CF+的支援,連轉接器都免了。由於CF卡內置控制器和仿硬碟的設計,也簡化了CF適配器的設計,只不過由於CF卡本身體積比SD等存儲卡要大,針腳也多得多,所以相對來說往往還是CF適配器要大一些。
CF卡在自身設計上也作出了軟硬體兩方面的配合:一是硬體提供判斷條件。CF卡在自身電路上提供了兩個用來檢測CF卡是否存在的管腳(暫稱CD1和CD2)。CD1和CD2的有效電平均爲低電平,當主機檢測到與其相連的CD1和CD2兩個管腳同時爲低電平時,可判斷出CF卡與主機相連;當主機檢測到與其相連的CD1和CD2有一個管腳不爲低,則可判斷出CF卡未與主機相連。二是軟體。首選定義總體變數(如:IsExist)用於記錄CF卡是否與主機相連,當IsExist爲0時表示CF卡未與主機相連;當IsExist爲1時表示CF卡與主機相連。然後,在每次操作CF卡時都先檢測CF卡的CD1和CD2管腳,當檢測到CD1和CD2管腳爲低電平且IsExist爲0時重定CF卡,重新檢測CF卡的FAT表統計還剩餘多少空間可以分配,檢測完FAT表後置變數IsExist爲1;當檢測到CD1和CD2管腳爲低電平且IsExist爲1時,繼續CF卡的正常操作;當檢測到CD1和CD2爲高時,停止CF卡操作,置變數IsExist爲0。
通過軟硬結合、內外配合,CF卡具備熱插拔、即插即用、無須驅動的功能,也可以用來作爲移動存儲器使用。
前面我們說到NAND型flash使用8bit埠就可以完成頁操作,CF卡的寄存器也都是8bit的,只有資料寄存器是16bit。 CF卡控制器中包含兩組寄存器:命令寄存器和控制寄存器,這兩個寄存器組通過REG信號進行區分。CF卡工作在記憶體方式時,按照ATA標準以寄存器方式傳送資料、命令和位址,命令寄存器用來接受命令和傳輸資料,控制寄存器用來進行磁片控制。當CF卡工作在I/O方式時,控制寄存器組主要用於控制CF卡的工作方式;命令寄存器組被分配在與ATA標準相容的位址空間。當CF卡工作在I/O方式下,命令寄存器組的位址空間爲IF0H~1F7H和3F6H~3F7H;當CF卡工作在寄存器方式下,命令寄存器組的位址空間爲1F0H~1FFH。
CF卡的寄存器包括:資料寄存器(R/W),用於對磁區的讀寫操作。主機通過該寄存器向CF卡卡控制器寫入或從CF卡控制寄存器讀出磁區緩衝區的資料;錯誤寄存器(R)和特性寄存器(W),錯誤寄存器反映控制寄存器在診斷方式或操作方式下的錯誤原因。特性寄存器一般情況下不使用。磁區數寄存器(R/W),用來記錄讀、寫命令的磁區數目;磁區號寄存器(R/W),用來記錄讀、寫和校驗命令指定的起始磁區號;柱面號寄存器(R/W),用來記錄讀、寫、校驗和定址命令指定的柱面號;驅動器/磁頭寄存器(R/W),記錄讀、寫、校驗和尋道命令指定的驅動器號、磁頭號和定址方式(CHS模式或LBA模式);狀態寄存器(R)和命令寄存器(W),狀態寄存器反映CF卡驅動器執行命令後的狀態,讀該寄存器要清除中斷請求信號,命令寄存器接收主機發送的CF卡工作的控制命令。
CF卡的磁區定址有兩種方式:物理定址方式(CHS)和邏輯定址方式(LBA)。物理定址方式使用柱面、磁頭和磁區號表示一個特定的磁區,起始磁區是0磁軌、0磁頭、1磁區,接下來是2磁區,一直到EOF磁區;接下來是同一柱面1頭、1磁區等。邏輯定址方式將整個CF卡同一定址。邏輯塊位址和物理位址的關係爲:LBA位址=(柱面號×磁頭數+磁頭號)×磁區數+磁區數-1
在CF卡上寫入一個文件的過程是這樣的,在CF卡初始化後(CF卡上電重定和統計剩餘空間等工作已經完成),控制器中DSP開始向CF卡的一些寄存器填寫必要的資訊,如向磁區號寄存器填寫讀寫資料的起始磁區號(LBA位址)和磁區數寄存器填寫讀寫資料所占的磁區個數等,然後向CF卡的命令寄存器寫入CF卡操作的命令,如寫操作則向CF卡的命令寄存器寫入30H,讀操作向CF卡的命令寄存器寫入20H等。刪除或者再編程的過程相似。
看到這裏大家可能發現了CF卡與硬碟越來越多的相似之處,不過有一點是完全不同的,那就是CF卡沒有機械結構,所以一些操作是以虛擬方式進行。CF卡工作時一般採用邏輯定址方式,它沒有磁頭和磁軌的轉換操作,因此在訪問連續磁區時,操作速度比物理定址方式快。 CF卡與可以完全像硬碟一樣使用,不過由於和硬碟仍有許多不同之處,某些原本爲硬碟設計的測試軟體並不適合用來測試CF卡。
4.CF+/Compact Flash規格

Compact Flash協會制定了CF+/Compact Flash規格,最新版本爲V2.0。CF卡遵循ATA標準製造,不過它的介面是50針而不是68針,分成兩排,每排25個針腳。CF卡不是硬碟那樣的針型介面而是50mil(1.27 mm)的孔型介面,因此不容易被損壞,這一設計和PC卡類似。
什麽是CF+呢?CF+是Compact Flash的衍生技術規格,CF+的物理規格和CF完全相同,但CF+卡並不是CF卡那樣的ATA快閃記憶體記憶體,而主要是相同規格的I/O設備,如CF串口卡、CF modem、CF藍牙、CF USB卡、CF網卡、CF GPS卡、CF GPRS卡等,這一類設備在掌上電腦上用得最多,同樣無須驅動,使用很方便,其相容性也和CF卡一樣好,加上PCMCIA適配器在筆記本電腦上一樣可以使用。另一類CF+卡就是非快閃記憶體記憶體,比如微型硬碟。

CF卡分爲兩類:Type I和Type II,二者的規格和特性基本相同。從上圖大家可以看出,Type II型CF卡和Type I型CF卡相比,只是在外形上顯得厚了一些,儘管只有這點區別,不過你要區分它們實在太容易了。
Type I CompactFlash存儲卡和CF+卡與Type II CompactFlash存儲卡和CF+卡物理規格對比:
Type I CF/CF+卡 Type II CF/CF+卡
長 36.4±0.15mm (1.433±0.006in.) 36.4±0.15mm (1.433±0.006in.)
寬 42.80±0.10mm (1.685±0.004in.) 42.80±0.10mm (1.685±0.004in.)
厚 3.3mm±0.10mm(0.130±0.004in.) 5.0mm maximum(0.1968in.maximum)
說到CF Type II,我們不能不提到同樣採用1英寸微型硬碟,它們都是真正的硬碟,不過是縮小的袖珍版而已,但物理規格和CF+ Type II完全相同,相容性也是一致的,所以往往和CF卡相提並論,佔有一定的市場。CF+ Type II規格的微型硬碟具有完整的硬碟結構,其容量在170MB到4.8GB之間,和CF卡相比,耗電量要大一些,抗衝擊能力差一些,性能與高速CF卡相當,主要優點是其價格往往比同樣容量的CF卡要低,尤其是高容量型號,具有一定存儲成本上的優勢。這種1英寸微型硬碟中,最出名的就是原IBM,現日立的MicroDrive了,不過現在又出現一些新的品牌,其中某些國産品牌性價比較爲出色。目前大部分帶有CF介面的數位相機、掌上電腦都同時具備對Type I/Type II CF設備的支援,只有少數是只支援Type I CF的,所以常常也就沒有被加意區分。
應該怎樣選購CF卡?
1.我需要CF卡嗎?
我應該選擇什麽樣的CF卡?再問這個問題之前,也許你應該先問問自己是否需要CF卡。可能很少會有人把CF卡專門作爲移動記憶體使用,是否選擇CF卡,其實也是要取決於用在什麽設備上,所以需要均衡考慮。在存儲卡市場上,CF卡面臨SD卡等其他多種存儲卡的激烈競爭,至今仍然佔據主流地位,主要原因就是CF卡容量大、速度快、價格低、相容性很好,只要CF卡還保有著這些優勢,就會繼續活躍在市場上,也是我們選擇CF卡的原因,所以目前專業相機大多帶有CF Type II插槽,就是因爲CF卡或者微型硬碟才能滿足其高畫質、大量拍攝、高速連拍的需求。除此之外,CF卡不但有價格上的優勢,周邊上也有一定優勢,比如CF卡讀卡器品種多又比較便宜,因此CF卡也是比較實惠經濟的數碼存儲方案。但是由於現在的存儲卡發展趨勢是越來越小,所以相對其他存儲卡,CF卡體積上沒有優勢,在小型相機、手機以及許多移動設備上,體積更小、更省電的SD卡(包括miniSD卡)、MMC卡、xD卡等應用得更加廣泛。
2.我應該選擇多大容量的CF卡?
首先價格是很重要的因素,比如現在兩千多元可以購買80GB硬碟,再加幾百元可以購買120GB硬碟,顯然120GB硬碟性價比較高,CF卡也是如此,在128MB和256MB只差幾百元的時候,購買256MB更合適,因爲按理說CF卡的容量也是多多益善。比如一張低容量CF卡能拍攝少量照片,但裝上大容量CF卡後,就可以拍攝上千張照片或者約一個小時的錄影,外拍尤其方便,室內拍攝也免去你反復讀卡的麻煩;掌上電腦使用低容量CF卡只能安裝少量軟體,有了大容量CF卡就可以把大量音樂、圖片、影片、軟體及遊戲隨身攜帶,隨時使用,所以,在價格可以接受時,應該挑選一張足夠容量的CF卡,不要讓存儲容量成爲設備的瓶頸,日後也難以“升級”,因爲你的相機等設備上不會有兩個CF卡插槽。
CF卡的容量太小會使設備存儲空間不足,但大到存儲空間過剩也是沒有必要的,應選擇合適容量。一般情況下都是CF卡容量不夠用,但電池的使用時間也形成限制,攜帶型相機一般電池使用時間都不長,如果你有一部200萬圖元的相機,其鋰電池夠你拍70張左右照片,其中1/3打開閃光燈,那麽考慮到你瀏覽照片、變焦等各種操作,即使你有幾塊備用電池,那麽128MB也夠了,你始終也無法拍滿256MB卡,如果是想以後升級相機後繼續用,那麽請想一想,多久升級一次相機?也許到你升級相機的時候,CF卡行情已經大變了。
3.什麽速度的CF卡最合適?
低速CF卡會對數碼設備的性能造成影響,比如一張低速卡可能會讓你在拍攝一張照片後,需要等待很長的時間才能再拍下一張照片,導致良機已逝,高速卡就不會出現這種問題。一些低速CF卡現在可能確實要便宜一些,但和高速CF卡的差價已經不大,所以沒必要再購買低速卡,高速卡才是比較明智的選擇,越快越好。
4.CF卡是不是越便宜越好?
看起來市面上的CF卡都差不多,是不是越便宜的越好?看起來,選擇一些雜牌可以用同樣的價格買到更大的容量,但不同的CF卡之間性能會相差很多,而且你買CF卡大概也不是只用個一天兩天,産品品質、售後服務等也是非常重要的,CF卡畢竟要用來保存資料資料,一旦出現問題,遠不是這一點差價可以挽回的。所以我們購買CF卡不能只貪圖便宜,價格低確實很好,但低價低質是我們應該拒絕的。

總的來說,我認爲購買CF卡時有兩個原則:一是擇優購買,選擇各方面都比較優秀的CF卡;二是按需購買,根據自己的需要來選購合適的CF卡。只要你確實有一定的需要,其實也不用管那麽多,選擇你想要的就行了,比如你需要長時間外拍、你想在自己的掌上電腦上運用虛擬光碟機或者大量影片,你可能會想,我的相機或者掌上電腦不過一兩萬元,買一張四千多元的CF卡是不是不合適?其實你不用顧慮這麽多,自己想要、自己需要就是最大的理由了。