SD存儲卡接口SD模式的FPGA實(shí)現(xiàn)
SD存儲卡接口定義了兩種通信模式,SD模式和SPI模式。分析了SD傳輸協(xié)議后,給出了一種SD模式設(shè)備接口的設(shè)計(jì)方案。該設(shè)計(jì)能夠自動解析主機(jī)發(fā)送的命令并響應(yīng),與Flash控制器相連后可以對Flash進(jìn)行讀寫操作。為了解決數(shù)據(jù)存取的時(shí)序問題,使用了數(shù)據(jù)緩存技術(shù)。FPGA驗(yàn)證表明,該接口能夠被電腦識別為SD卡,達(dá)到了設(shè)計(jì)目標(biāo)。
本文引用地址:http://www.ex-cimer.com/article/201610/308372.htm1 引言
SD卡(Secure Digital Card)是“安全數(shù)碼存儲卡”的簡稱,于1999年8月由美國SanDisk公司、日本東芝和松下公司共同開發(fā)研制成功。隨著數(shù)碼產(chǎn)品的廣泛使用,目前SD卡已經(jīng)成為消費(fèi)數(shù)碼產(chǎn)品設(shè)備中最廣泛的一種存儲卡。在手機(jī)中,大量的安全增值業(yè)務(wù)設(shè)計(jì)就是通過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存儲卡接口SD模式介紹的書寫規(guī)則
SD卡與控制器之間通過以下9線連接:時(shí)鐘CLK、命令CMD、數(shù)據(jù)D0~D3、電源VDD和兩根地線VSS。其總線拓?fù)浣Y(jié)構(gòu)如圖1所示。命令和響應(yīng)在CMD線上傳輸,數(shù)據(jù)在D0(標(biāo)準(zhǔn)總線模式)或D0~D3(寬總線模式)線上傳輸。
SD卡的所有命令都是6字節(jié)長度。一個(gè)命令總是以起始位(0)開始,后跟傳輸方向位(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é)長度。R2為17字節(jié)長度,用于讀取SD卡的CID/CSD寄存器內(nèi)容。一個(gè)響應(yīng)總是以起始位(0)開始,后跟一個(gè)傳輸方向位(0)。除了R3響應(yīng)類型,所有的響應(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模式的總線拓?fù)浣Y(jié)構(gòu)
3 整體設(shè)計(jì)架構(gòu)
本設(shè)計(jì)的一端為SD存儲卡標(biāo)準(zhǔn)接口,與讀卡器連接。為了使接口有通用性,另一端與Flash控制器連接,從而達(dá)到與不同型號Flash連接的目的。本設(shè)計(jì)是連接讀卡器和Flash控制器的一個(gè)中間模塊。能夠?qū)ψx卡器發(fā)送的命令進(jìn)行解析并響應(yīng),通過Flash控制器對Flash進(jìn)行讀寫操作。整體設(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ā)送都是在命令線CMD上傳輸?shù)?,所以該端口為一個(gè)三態(tài)門,由輸出使能信號En控制是否輸出。命令接收時(shí),首先檢測命令起始位,檢測到起始位后計(jì)數(shù)器開始工作。當(dāng)接收完一個(gè)完整命令,發(fā)出接收完成信號End,分別得到移位寄存器中對應(yīng)的命令索引,命令參數(shù),命令校驗(yàn)。命令接收過程中,同時(shí)將數(shù)據(jù)傳給CRC7校驗(yàn)?zāi)K,用于生成校驗(yàn)數(shù)據(jù)。響應(yīng)發(fā)送時(shí),模塊根據(jù)狀態(tài)控制模塊給出的響應(yīng)類型產(chǎn)生對應(yīng)的響應(yīng)內(nèi)容,當(dāng)接收到發(fā)送使能信號Start后,給出發(fā)送使能信號En,并將響應(yīng)的內(nèi)容通過移位寄存器發(fā)送出去。響應(yīng)內(nèi)容發(fā)送完成后給出響應(yīng)完成信號Rsp_over。
圖3 模塊結(jié)構(gòu)
圖4 命令接收與響應(yīng)模塊
4.2 數(shù)據(jù)收發(fā)模塊
該模塊的結(jié)構(gòu)如圖5所示。數(shù)據(jù)線也是雙向的。Width信號指明當(dāng)前數(shù)據(jù)傳輸模式為標(biāo)準(zhǔn)總線模式或?qū)捒偩€模式。Size信號指示每個(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í),首先檢測數(shù)據(jù)起始位,檢測到起始位后計(jì)數(shù)器開始工作。接收Size個(gè)字節(jié)的數(shù)據(jù)后,接收CRC16校驗(yàn)位,最后完成數(shù)據(jù)塊接收,發(fā)出接收完成信號End。數(shù)據(jù)接收過程中,每接收16位數(shù)據(jù)給出寫入信號Wr,將數(shù)據(jù)寫入RxFIFO。如果RxFIFO滿,給出Busy信號,主機(jī)進(jìn)入數(shù)據(jù)發(fā)送等待。數(shù)據(jù)發(fā)送狀態(tài)時(shí),接收控制器收到Start信號后,開始發(fā)出Rd信號讀取TrFIFO數(shù)據(jù),并將數(shù)據(jù)傳給移位寄存器,使能數(shù)據(jù)輸出控制信號Out_en,移位寄存器根據(jù)數(shù)據(jù)傳輸模式將數(shù)據(jù)輸出。
圖5 數(shù)據(jù)收發(fā)模塊
4.3 狀態(tài)控制模塊
根據(jù)接收模塊傳送的命令編號產(chǎn)生與之對應(yīng)的命令響應(yīng)類型,進(jìn)一步解析接收模塊傳送的命令參數(shù)。工作過程共有9個(gè)狀態(tài),狀態(tài)間的轉(zhuǎn)移關(guān)系如圖6所示。接收到CMD0命令后都會從其它狀態(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)證與測試
開發(fā)測試平臺使用的是Altera的CycloneII系列FPGA開發(fā)板。開發(fā)板上有一個(gè)SD接口。測試平臺的實(shí)物如圖7所示。開發(fā)板可以通過一個(gè)PCB板SD接口與電腦SD接口連接,利用電腦對設(shè)計(jì)進(jìn)行驗(yàn)證。
圖7 測試平臺
在硬件調(diào)試過程中,采用內(nèi)嵌式邏輯分析儀(SignalTapII)來采集相應(yīng)的數(shù)據(jù)波形。圖8是采集到的識別SD卡命令與響應(yīng)波形圖。從圖中可以看出,該設(shè)計(jì)可以正確響應(yīng)主機(jī)命令,完成識別過程。
圖9中虛線所圈是將設(shè)計(jì)下載到FPGA開發(fā)板,與電腦相連接后被識別為SD存儲卡標(biāo)記,可以看出該設(shè)計(jì)可以被電腦正確識別。
6 結(jié)束語
本文實(shí)現(xiàn)了一種SD存儲卡接口SD模式IP核的設(shè)計(jì)與實(shí)現(xiàn)。該設(shè)計(jì)能夠?qū)χ鳈C(jī)命令進(jìn)行自動解析和回復(fù),與Flash控制器連接后可以直接對Flash進(jìn)行讀寫操作。對該設(shè)計(jì)進(jìn)行FPGA功能驗(yàn)證,能夠被電腦識別為SD接口,從而說明的設(shè)計(jì)的正確性和實(shí)用性。利用SYNOPSYS公司的EDA工具對該模塊進(jìn)行綜合,并進(jìn)行時(shí)序和面積的優(yōu)化,在SMIC0。18μm工藝下最大工作頻率為100MHz,整個(gè)設(shè)計(jì)綜合后為0.6萬門。
圖8 通信過程
圖9 電腦識別
評論