• 正文
    • 1. 概述
    • 2. SD卡的容量和速度
    • 3. SD卡物理結(jié)構(gòu)
    • 4. SD卡寄存器
    • 5. SD卡命令控制
  • 推薦器件
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

基于FPGA的SD卡讀寫(xiě)操作(一)

2024/07/04
3298
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

引言:本文介紹寫(xiě)SD卡的理論知識(shí),主要包括SD卡分類、容量、速度、管腳、物理結(jié)構(gòu)以及命令控制等。

1. 概述

SD卡存儲(chǔ)卡,是用于手機(jī)、數(shù)碼相機(jī)、便攜式電腦、MP3和其他數(shù)碼產(chǎn)品上的獨(dú)立存儲(chǔ)介質(zhì),一般是卡片的形態(tài),故統(tǒng)稱為“存儲(chǔ)卡”,又稱為“數(shù)碼存儲(chǔ)卡”、“數(shù)字存儲(chǔ)卡”、“儲(chǔ)存卡”等。SD 卡是在 MMC 卡的基礎(chǔ)上發(fā)展而來(lái),全稱 Secure Digital Card,譯為安全數(shù)字卡,簡(jiǎn)稱SD卡。

由松下電器、東芝和閃迪聯(lián)合推出,1999 年 8 月發(fā)布。SD卡的數(shù)據(jù)傳送和物理規(guī)范與MMC相似,大小和MMC卡差不多,尺寸為32mmx24mmx2.1mm。長(zhǎng)寬和MMC卡一樣,只是比MMC卡厚了0.7mm,以容納更大容量的存貯單元。SD卡與MMC卡保持著向上的兼容,MMC卡可以被新的SD設(shè)備存取,兼容性則取決于應(yīng)用軟件,但SD卡卻不可以被MMC設(shè)備存取。

圖2:SD卡發(fā)展歷程

按照外形與尺寸,SD卡可分為三類:標(biāo)準(zhǔn)SD卡、MiniSD卡和MicroSD 卡,典型參數(shù)如圖3所示。

圖3:三類SD典型參數(shù)

(1)標(biāo)準(zhǔn)SD:規(guī)格最大的一種,今天市面上大多數(shù)消費(fèi)級(jí)數(shù)字相機(jī)和攝像機(jī)均使用此標(biāo)準(zhǔn)的SD卡,這種卡有標(biāo)準(zhǔn)的“缺角”設(shè)計(jì)。

(2)mini-SD:在數(shù)碼相機(jī),PDA等所用的Flash Memory Card(中文名:快閃存儲(chǔ)卡)基礎(chǔ)上發(fā)展出的一種更小更適合小型手機(jī)用的存儲(chǔ)卡。盡管mini-SD卡的外形大小及接口形狀與原來(lái)的SD卡不同,但接口等電氣標(biāo)準(zhǔn)相同,以確保兼容性。將mini-SD卡插入專用適配器,可通過(guò)原來(lái)的SD卡插槽讀寫(xiě)mini-SD卡。不過(guò),不具備像SD卡那樣防寫(xiě)入的鎖定功能。

(3)Micro SD:原名Trans-flash Card(TF卡),2004年正式更名為Micro SD Card,由SanDisk(閃迪)公司發(fā)明,主要用于移動(dòng)電話。目前,提供128MB、256MB、512MB、1G、2G、4G、8G、16G、32G、64G、128G、256G、512G、1T容量的Micro SD卡供消費(fèi)者選用。

SD卡管腳定義如下圖4和圖5所示。

??? ?? ??

圖4:SD卡典型管腳定義

圖5:Micro SD卡典型管腳定義

2. SD卡的容量和速度

2.1 SD卡容量

SD卡按照容量標(biāo)準(zhǔn)可分為 4 個(gè)等級(jí):

SD:Secure Digital Card,安全數(shù)字卡;

SDHC :Secure Digital High Capacity,高容量安全數(shù)字卡;

SDXC :SD eXtended Capacity,容量擴(kuò)大化的安全數(shù)字卡;

SDUC:Secure Digital Ultra Capacity,超容量安全數(shù)字卡。

圖6:SD卡按容量分類

市場(chǎng)的主流SD產(chǎn)品是SDHC和SDXC這兩種較大容量的存儲(chǔ)卡,SD卡因容量過(guò)小,已逐漸被市場(chǎng)淘汰,SDUC則是容量太大,預(yù)計(jì)會(huì)出現(xiàn)在未來(lái)市場(chǎng)。

2.2 SD卡速度

不同品牌和廠商生產(chǎn)的SD卡在對(duì)存取速度上的定義標(biāo)準(zhǔn)不同,這會(huì)使用戶在選擇SD卡時(shí)產(chǎn)生困擾。所以SD協(xié)會(huì)根據(jù)視頻勻速寫(xiě)入到SD卡的最低持續(xù)速度來(lái)劃分不同等級(jí),每個(gè)等級(jí)的速率是以每秒傳輸多少M(fèi)B來(lái)衡量的,單位為MB/SSD協(xié)會(huì)定義了三種速度等級(jí):速度等級(jí)、UHS速度等級(jí)與視頻速度等級(jí)。三種速度等級(jí)的具體傳輸速度如圖7所示。


圖7:SD卡速度等級(jí)

從SD2.0的規(guī)范開(kāi)始,對(duì)SD普通卡和高速卡的速度分級(jí)是:Class2、Class4、Class6和 Class 10 四個(gè)等級(jí)。

UHS 速度等級(jí)

UHS(Ultra High Speed)是與SDXC同時(shí)推出的SD卡總線標(biāo)準(zhǔn)。UHS 速度等級(jí)適用于SDHC和SDXC。SD協(xié)會(huì)定義的UHS速度等級(jí)是UHS速度等級(jí)1(UHS-1)和UHS速度等級(jí) 3(UHS-3)。U1和U3可應(yīng)用于UHS總線IF產(chǎn)品系列(UHS-I,UHS-II和UHS-III)。廠商一般會(huì)直接在SD卡上標(biāo)注速度,這可協(xié)助消費(fèi)者透過(guò)讀寫(xiě)標(biāo)志來(lái)選擇所需要的效能。

視頻速度等級(jí)

視頻速度等級(jí)定義為能滿足高分辨率和高質(zhì)量4K/8K 視頻錄制的需求,它還具有支持下一代閃存類型(如3DNAND)的重要功能。此外,視頻速度等級(jí)還涵蓋了HD高清(2K)視頻的速度。SD協(xié)會(huì)定義的視頻速度等級(jí)為V6,V10,V30,V60和V90。V6和V10可應(yīng)用于高速和UHS總線IF產(chǎn)品系列。V30可應(yīng)用于UHS總線 IF產(chǎn)品系列。V60和V90可應(yīng)用于UHS-II/UHS-III 產(chǎn)品系列。

3. SD卡物理結(jié)構(gòu)

SD卡物理結(jié)構(gòu)如圖8所示。

圖8:SD卡物理結(jié)構(gòu)

SD卡從物理結(jié)構(gòu)看包括5個(gè)部分,分別為存儲(chǔ)單元、存儲(chǔ)單元接口、電源檢測(cè)、卡及接口控制器和接口驅(qū)動(dòng)器,具體見(jiàn)圖8。存儲(chǔ)單元是存儲(chǔ)數(shù)據(jù)部件,存儲(chǔ)單元通過(guò)存儲(chǔ)單元接口與卡控制單元進(jìn)行數(shù)據(jù)傳輸;電源檢測(cè)單元保證SD卡工作在合適的電壓下,如出現(xiàn)掉電或上電狀態(tài)時(shí),它會(huì)使控制單元和存儲(chǔ)單元接口復(fù)位;卡及接口控制單元控制SD卡的運(yùn)行狀態(tài),它包括有8個(gè)寄存器;接口驅(qū)動(dòng)器控制SD卡引腳的輸入輸出。

常規(guī)的SD卡共有9個(gè)引腳接口,其中包括3根電源線、1根時(shí)鐘線、1根命令線和4根數(shù)據(jù)線。工作模式有兩種:SDIO模式和SPI模式(模式3)。各信號(hào)簡(jiǎn)介如下:

CLK:同步時(shí)鐘線,由SDIO主機(jī)產(chǎn)生,即由主機(jī)控制器輸出;使用SPI模式時(shí),該引腳與SPI總線的SCK時(shí)鐘信號(hào)相連;

CMD:命令控制線,SDIO主機(jī)通過(guò)該線發(fā)送命令控制SD卡,如果命令要求SD卡提供應(yīng)答(響應(yīng)),SD卡也是通過(guò)該線傳輸應(yīng)答信息;使用SPI模式時(shí),該引腳與SPI總線的MOSI信號(hào)相連,SPI主機(jī)通過(guò)它向SD卡發(fā)送命令及數(shù)據(jù),但因?yàn)镾PI總線的MOSI僅用于主機(jī)向從機(jī)輸出信號(hào),所以SD卡返回應(yīng)答信息時(shí)不使用該信號(hào)線;

DAT0-3:在SDIO模式下,它們均為數(shù)據(jù)線,傳輸讀寫(xiě)數(shù)據(jù),SD卡可將 D0拉低表示忙狀態(tài);在SPI模式下,DAT0與SPI總線的MISO信號(hào)相連,SD卡通過(guò)該信號(hào)線向主機(jī)發(fā)送數(shù)據(jù)或響應(yīng),DAT3與總線的CS信號(hào)相連,SPI主機(jī)通過(guò)該信號(hào)線選擇要通訊的SD卡。

VDD、VSS1、VSS2:電源和地信號(hào),其中Micro SD卡不包含VSS2信號(hào),即Micro SD卡僅有8根線。

SD卡有兩種工作模式,在SDIO模式下,SD卡共使用到CLK、CMD、DAT[3:0]六根信號(hào)線;SDIO總線與多張SD卡連接時(shí),可以共用CLK時(shí)鐘信號(hào)線,對(duì)于CMD、DAT[3:0]信號(hào)線,每張SD卡都要獨(dú)立連接。SDIO總線與SD卡連接方式,具體見(jiàn)圖9。

圖9:SDIO總線與SD卡互聯(lián)

在SPI模式下,SD卡共使用到CS(DAT[3])、CLK、MISO(DAT[0])、MOSI(CMD)四根信號(hào)線;SPI 總線與多張 SD卡連接時(shí),除CS片選信號(hào)線不可共用外,其他信號(hào)均可公用。SPI總線與SD卡連方式,具體見(jiàn)圖10。

圖10:SPI總線與SD卡互聯(lián)

4. SD卡寄存器

SD卡總共有8個(gè)寄存器,用于設(shè)定或表示SD卡信息,寄存器描述具體見(jiàn)圖11。這些寄存器只能通過(guò)對(duì)應(yīng)的命令訪問(wèn),對(duì)SD卡的控制操作是通過(guò)命令來(lái)執(zhí)行的,SD卡定義了64個(gè)命令(部分命令不支持SPI模式),每個(gè)命令都有特殊意義,可以實(shí)現(xiàn)某一特定功能,SD卡接收到命令后,根據(jù)命令要求對(duì)SD卡內(nèi)部寄存器進(jìn)行修改,程序控制中只需要發(fā)送組合命令就可以實(shí)現(xiàn)SD卡的控制以及讀寫(xiě)操作。

圖11:SD卡寄存器寄存器簡(jiǎn)述

5. SD卡命令控制

5.1 SD卡控制時(shí)序

SD卡的通信是基于命令和數(shù)據(jù)傳輸?shù)?。通訊由一個(gè)起始位(“0”)開(kāi)始,由一個(gè)停止位(“1”)終止。SD通信一般是主機(jī)發(fā)送一個(gè)命令(Command),從設(shè)備在接收到命令后作出響應(yīng)(Response),如有需要會(huì)有數(shù)據(jù)(Data)傳輸參與。SD卡的基本交互是命令與響應(yīng)交互,如圖12所示,圖中的DataIn和DataOut線分別是SPI的MISO及MOSI信號(hào)。

圖12:命令與響應(yīng)交互

SD數(shù)據(jù)是以塊(Block)形式傳輸?shù)?,SDHC卡數(shù)據(jù)塊長(zhǎng)度一般為512字節(jié),數(shù)據(jù)可以從主機(jī)到卡,也可以是從卡到主機(jī)。數(shù)據(jù)塊需要CRC位來(lái)保證數(shù)據(jù)傳輸成功,CRC位由SD卡系統(tǒng)硬件生成。單個(gè)數(shù)據(jù)塊的讀寫(xiě)時(shí)序見(jiàn)圖12、圖13。

圖 12:?jiǎn)螇K讀操作

圖:13:?jiǎn)螇K寫(xiě)操作

讀寫(xiě)操作都是由主機(jī)發(fā)起的,主機(jī)發(fā)送不同的命令表示讀或?qū)?,SD卡接收到命令后對(duì)命令返回響應(yīng)。在讀操作中,SD卡返回一個(gè)數(shù)據(jù)塊,數(shù)據(jù)塊中包含 CRC校驗(yàn)碼;在寫(xiě)操作中,主機(jī)接收到命令響應(yīng)后需要先發(fā)送一個(gè)標(biāo)志(TOKEN)然后緊跟一個(gè)要寫(xiě)入的數(shù)據(jù)塊,卡接收完數(shù)據(jù)塊后會(huì)返回一個(gè)數(shù)據(jù)響應(yīng)及忙碌標(biāo)志,當(dāng)SD卡把接收到的數(shù)據(jù)寫(xiě)入到內(nèi)部存儲(chǔ)單元完成后,會(huì)停止發(fā)送忙碌標(biāo)志,主機(jī)確認(rèn)SD卡空閑后,可以發(fā)送下一個(gè)命令。SD數(shù)據(jù)傳輸支持單塊和多塊讀寫(xiě),它們分別對(duì)應(yīng)不同的操作命令,結(jié)束多塊讀寫(xiě)時(shí)需要使用命令來(lái)停止操作。

5.2 SD卡命令

命令格式

SD命令由主機(jī)發(fā)出,命令格式固定為48bit,通過(guò)CMD信號(hào)線連續(xù)傳輸。SD 命令格式,具體見(jiàn)圖14。

圖:14:命令格式

起始位和終止位:命令的主體包含在起始位與終止位之間,它們都只包含一個(gè)數(shù)據(jù)位,起始位為 0,終止位為 1。

傳輸標(biāo)志:用于區(qū)分傳輸方向,該位為1時(shí)表示命令,方向?yàn)橹鳈C(jī)傳輸?shù)絊D卡,該位為0時(shí)表示響應(yīng),方向?yàn)镾D卡傳輸?shù)街鳈C(jī)。命令主體內(nèi)容包括命令、地址信息/參數(shù)和CRC校驗(yàn)三個(gè)部分。

命令號(hào):它固定占用6bit,所以總共有64個(gè)命令,每個(gè)命令都有特定的用途,部分命令不適用于SPI總線,或不適用于SD卡操作,只是專門用于MMC卡或者 SD I/O卡。

地址/參數(shù):每個(gè)命令32bit地址信息/參數(shù)用于命令附加內(nèi)容,例如,廣播命令沒(méi)有地址信息,這32bit用于指定參數(shù),而尋址命令這32bit用于指定目標(biāo)SD卡的地址,當(dāng)使用SDIO驅(qū)動(dòng)多張SD卡時(shí),通過(guò)地址信息區(qū)分控制不同的卡,使用SPI總線驅(qū)動(dòng)時(shí),通過(guò)片選引腳來(lái)選擇不同的卡,所以使用這些命令時(shí)地址可填充任意值。CRC7校驗(yàn):長(zhǎng)度為7bit的校驗(yàn)位用于驗(yàn)證命令傳輸內(nèi)容正確性,如果發(fā)生外部干擾導(dǎo)致傳輸數(shù)據(jù)個(gè)別位狀態(tài)改變將導(dǎo)致校準(zhǔn)失敗,也意味著命令傳輸失敗,SD卡不執(zhí)行命令。使用SDIO驅(qū)動(dòng)時(shí),命令中必須包含正確的CRC7校驗(yàn)值;而使用SPI驅(qū)動(dòng)時(shí),命令中的CRC7校驗(yàn)?zāi)J(rèn)是關(guān)閉的,即這CRC7校驗(yàn)位中可以寫(xiě)入任意值而不影響通訊,僅在發(fā)送CMD0命令時(shí)需要強(qiáng)制帶標(biāo)準(zhǔn)的CRC7校驗(yàn)。

命令說(shuō)明

SD卡命令可分為標(biāo)準(zhǔn)命令 (如CMD0)和特殊應(yīng)用命令 (如ACMD41),其中特殊應(yīng)用命令只有在先寫(xiě)入CMD55命令后才能被識(shí)別。按照指令類型又可將 SD卡命令分為基本命令、數(shù)據(jù)塊寫(xiě)命令、數(shù)據(jù)塊讀命令、擦除命令等12種(class0 ~ class11),部分命令不適用于SPI 總線,或不適用于SD卡操作,只是專門用于MMC卡或者 SD I/O 卡。

感謝關(guān)注公眾號(hào),喜歡就多多轉(zhuǎn)發(fā)吧!

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
A3P250-PQG208 1 Microsemi FPGA & SoC Field Programmable Gate Array, 250000 Gates, CMOS, PQFP208, 0.50 MM PITCH, PLASTIC, QFP-208
$22.32 查看
M1A3P1000-PQG208I 1 Microchip Technology Inc Field Programmable Gate Array, 24576 CLBs, 1000000 Gates, 350MHz, CMOS, PQFP208
$393.19 查看
XCR3384XL-10TQ144I 1 AMD Xilinx EE PLD, 10ns, 384-Cell, CMOS, PQFP144, TQFP-144
$107.46 查看

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫(xiě)文章/發(fā)需求
立即登錄

專注FPGA技術(shù)開(kāi)發(fā),涉及Intel FPGA、Xilinx FPGA技術(shù)開(kāi)發(fā),開(kāi)發(fā)環(huán)境使用,代碼風(fēng)格、時(shí)序收斂、器件架構(gòu)以及軟硬件項(xiàng)目實(shí)戰(zhàn)開(kāi)發(fā),個(gè)人公眾號(hào):FPGA技術(shù)實(shí)戰(zhàn)。