新聞中心

EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > SD存儲(chǔ)卡接口SD模式的FPGA實(shí)現(xiàn)

SD存儲(chǔ)卡接口SD模式的FPGA實(shí)現(xiàn)

作者: 時(shí)間:2016-10-16 來(lái)源:網(wǎng)絡(luò) 收藏

SD存儲(chǔ)卡接口定義了兩種通信模式,SD模式和SPI模式。分析了SD傳輸協(xié)議后,給出了一種SD模式設(shè)備接口的設(shè)計(jì)方案。該設(shè)計(jì)能夠自動(dòng)解析主機(jī)發(fā)送的命令并響應(yīng),與Flash控制器相連后可以對(duì)Flash進(jìn)行讀寫(xiě)操作。為了解決數(shù)據(jù)存取的時(shí)序問(wèn)題,使用了數(shù)據(jù)緩存技術(shù)。FPGA驗(yàn)證表明,該接口能夠被電腦識(shí)別為SD卡,達(dá)到了設(shè)計(jì)目標(biāo)。

本文引用地址:http://www.butianyuan.cn/article/201610/308372.htm

1 引言

SD卡(Secure Digital Card)是“安全數(shù)碼存儲(chǔ)卡”的簡(jiǎn)稱(chēng),于1999年8月由美國(guó)SanDisk公司、日本東芝和松下公司共同開(kāi)發(fā)研制成功。隨著數(shù)碼產(chǎn)品的廣泛使用,目前SD卡已經(jīng)成為消費(fèi)數(shù)碼產(chǎn)品設(shè)備中最廣泛的一種存儲(chǔ)卡。在手機(jī)中,大量的安全增值業(yè)務(wù)設(shè)計(jì)就是通過(guò)SD接口實(shí)現(xiàn)的。SD物理層規(guī)范定義了兩種可選擇的通信協(xié)議:SD模式和SPI模式。

本文在研究了SD物理層規(guī)范的基礎(chǔ)上,實(shí)現(xiàn)SD設(shè)備接口SD模式的前端設(shè)計(jì),并進(jìn)行了FPGA原型驗(yàn)證。

2 SD存儲(chǔ)卡接口SD模式介紹的書(shū)寫(xiě)規(guī)則

SD卡與控制器之間通過(guò)以下9線(xiàn)連接:時(shí)鐘CLK、命令CMD、數(shù)據(jù)D0~D3、電源VDD和兩根地線(xiàn)VSS。其總線(xiàn)拓?fù)浣Y(jié)構(gòu)如圖1所示。命令和響應(yīng)在CMD線(xiàn)上傳輸,數(shù)據(jù)在D0(標(biāo)準(zhǔn)總線(xiàn)模式)或D0~D3(寬總線(xiàn)模式)線(xiàn)上傳輸。

SD卡的所有命令都是6字節(jié)長(zhǎng)度。一個(gè)命令總是以起始位(0)開(kāi)始,后跟傳輸方向位(1),接下是6位命令索引,然后是32位命令參數(shù),CRC7校驗(yàn)位,結(jié)束位(1)。SD的響應(yīng)分為R1、R1b、R2、R3、R6、R7六種,其中R1、R1b、R3、R6、R7為6字節(jié)長(zhǎng)度。R2為17字節(jié)長(zhǎng)度,用于讀取SD卡的CID/CSD寄存器內(nèi)容。一個(gè)響應(yīng)總是以起始位(0)開(kāi)始,后跟一個(gè)傳輸方向位(0)。除了R3響應(yīng)類(lèi)型,所有的響應(yīng)都有CRC保護(hù)。以一個(gè)結(jié)束位(1)結(jié)束。SD數(shù)據(jù)傳輸以塊為單位,每個(gè)塊總是由數(shù)據(jù)起始位(0)、數(shù)據(jù)位、CRC16校驗(yàn)位和數(shù)據(jù)結(jié)束位(1)組成。

圖1 SD卡SD模式的總線(xiàn)拓?fù)浣Y(jié)構(gòu)

3 整體設(shè)計(jì)架構(gòu)

本設(shè)計(jì)的一端為SD存儲(chǔ)卡標(biāo)準(zhǔn)接口,與讀卡器連接。為了使接口有通用性,另一端與Flash控制器連接,從而達(dá)到與不同型號(hào)Flash連接的目的。本設(shè)計(jì)是連接讀卡器和Flash控制器的一個(gè)中間模塊。能夠?qū)ψx卡器發(fā)送的命令進(jìn)行解析并響應(yīng),通過(guò)Flash控制器對(duì)Flash進(jìn)行讀寫(xiě)操作。整體設(shè)計(jì)方案如圖2所示。

圖2 設(shè)計(jì)方案

4 結(jié)構(gòu)設(shè)計(jì)

根據(jù)SD接口功能,將其進(jìn)行詳細(xì)的劃分,由以下幾個(gè)部分組成:命令收發(fā)模塊,數(shù)據(jù)收發(fā)模塊,狀態(tài)控制模塊和校驗(yàn)?zāi)K。SD模塊結(jié)構(gòu)如圖3所示。

4.1 命令收發(fā)模塊

該模塊的結(jié)構(gòu)如圖4所示。命令接收與響應(yīng)發(fā)送都是在命令線(xiàn)CMD上傳輸?shù)?,所以該端口為一個(gè)三態(tài)門(mén),由輸出使能信號(hào)En控制是否輸出。命令接收時(shí),首先檢測(cè)命令起始位,檢測(cè)到起始位后計(jì)數(shù)器開(kāi)始工作。當(dāng)接收完一個(gè)完整命令,發(fā)出接收完成信號(hào)End,分別得到移位寄存器中對(duì)應(yīng)的命令索引,命令參數(shù),命令校驗(yàn)。命令接收過(guò)程中,同時(shí)將數(shù)據(jù)傳給CRC7校驗(yàn)?zāi)K,用于生成校驗(yàn)數(shù)據(jù)。響應(yīng)發(fā)送時(shí),模塊根據(jù)狀態(tài)控制模塊給出的響應(yīng)類(lèi)型產(chǎn)生對(duì)應(yīng)的響應(yīng)內(nèi)容,當(dāng)接收到發(fā)送使能信號(hào)Start后,給出發(fā)送使能信號(hào)En,并將響應(yīng)的內(nèi)容通過(guò)移位寄存器發(fā)送出去。響應(yīng)內(nèi)容發(fā)送完成后給出響應(yīng)完成信號(hào)Rsp_over。

圖3 模塊結(jié)構(gòu)

圖4 命令接收與響應(yīng)模塊

4.2 數(shù)據(jù)收發(fā)模塊

該模塊的結(jié)構(gòu)如圖5所示。數(shù)據(jù)線(xiàn)也是雙向的。Width信號(hào)指明當(dāng)前數(shù)據(jù)傳輸模式為標(biāo)準(zhǔn)總線(xiàn)模式或?qū)捒偩€(xiàn)模式。Size信號(hào)指示每個(gè)數(shù)據(jù)塊包含的字節(jié)數(shù)。該模塊包含兩個(gè)數(shù)據(jù)緩沖,接收緩沖RxFIFO和發(fā)送緩沖TrFIFO,數(shù)據(jù)緩沖位寬16比特,深度為256,這是因?yàn)閿?shù)據(jù)塊最大為512字節(jié)。數(shù)據(jù)接收狀態(tài)時(shí),首先檢測(cè)數(shù)據(jù)起始位,檢測(cè)到起始位后計(jì)數(shù)器開(kāi)始工作。接收Size個(gè)字節(jié)的數(shù)據(jù)后,接收CRC16校驗(yàn)位,最后完成數(shù)據(jù)塊接收,發(fā)出接收完成信號(hào)End。數(shù)據(jù)接收過(guò)程中,每接收16位數(shù)據(jù)給出寫(xiě)入信號(hào)Wr,將數(shù)據(jù)寫(xiě)入RxFIFO。如果RxFIFO滿(mǎn),給出Busy信號(hào),主機(jī)進(jìn)入數(shù)據(jù)發(fā)送等待。數(shù)據(jù)發(fā)送狀態(tài)時(shí),接收控制器收到Start信號(hào)后,開(kāi)始發(fā)出Rd信號(hào)讀取TrFIFO數(shù)據(jù),并將數(shù)據(jù)傳給移位寄存器,使能數(shù)據(jù)輸出控制信號(hào)Out_en,移位寄存器根據(jù)數(shù)據(jù)傳輸模式將數(shù)據(jù)輸出。

圖5 數(shù)據(jù)收發(fā)模塊

4.3 狀態(tài)控制模塊

根據(jù)接收模塊傳送的命令編號(hào)產(chǎn)生與之對(duì)應(yīng)的命令響應(yīng)類(lèi)型,進(jìn)一步解析接收模塊傳送的命令參數(shù)。工作過(guò)程共有9個(gè)狀態(tài),狀態(tài)間的轉(zhuǎn)移關(guān)系如圖6所示。接收到CMD0命令后都會(huì)從其它狀態(tài)進(jìn)入到空閑狀態(tài)。

圖6 狀態(tài)轉(zhuǎn)移

4.4 校驗(yàn)?zāi)K

CRC7負(fù)責(zé)校驗(yàn)命令收發(fā)模塊中的命令和響應(yīng);CRC16負(fù)責(zé)校驗(yàn)數(shù)據(jù)收發(fā)模塊中的數(shù)據(jù)。

5 驗(yàn)證與測(cè)試

開(kāi)發(fā)測(cè)試平臺(tái)使用的是Altera的CycloneII系列FPGA開(kāi)發(fā)板。開(kāi)發(fā)板上有一個(gè)SD接口。測(cè)試平臺(tái)的實(shí)物如圖7所示。開(kāi)發(fā)板可以通過(guò)一個(gè)PCB板SD接口與電腦SD接口連接,利用電腦對(duì)設(shè)計(jì)進(jìn)行驗(yàn)證。

圖7 測(cè)試平臺(tái)

在硬件調(diào)試過(guò)程中,采用內(nèi)嵌式邏輯分析儀(SignalTapII)來(lái)采集相應(yīng)的數(shù)據(jù)波形。圖8是采集到的識(shí)別SD卡命令與響應(yīng)波形圖。從圖中可以看出,該設(shè)計(jì)可以正確響應(yīng)主機(jī)命令,完成識(shí)別過(guò)程。

圖9中虛線(xiàn)所圈是將設(shè)計(jì)下載到FPGA開(kāi)發(fā)板,與電腦相連接后被識(shí)別為SD存儲(chǔ)卡標(biāo)記,可以看出該設(shè)計(jì)可以被電腦正確識(shí)別。

6 結(jié)束語(yǔ)

本文實(shí)現(xiàn)了一種SD存儲(chǔ)卡接口SD模式IP核的設(shè)計(jì)與實(shí)現(xiàn)。該設(shè)計(jì)能夠?qū)χ鳈C(jī)命令進(jìn)行自動(dòng)解析和回復(fù),與Flash控制器連接后可以直接對(duì)Flash進(jìn)行讀寫(xiě)操作。對(duì)該設(shè)計(jì)進(jìn)行FPGA功能驗(yàn)證,能夠被電腦識(shí)別為SD接口,從而說(shuō)明的設(shè)計(jì)的正確性和實(shí)用性。利用SYNOPSYS公司的EDA工具對(duì)該模塊進(jìn)行綜合,并進(jìn)行時(shí)序和面積的優(yōu)化,在SMIC0。18μm工藝下最大工作頻率為100MHz,整個(gè)設(shè)計(jì)綜合后為0.6萬(wàn)門(mén)。

圖8 通信過(guò)程

圖9 電腦識(shí)別



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉