基于Nios II 軟核處理器的SD卡接口設計
Altera公司開(kāi)發(fā)的Nios II是基于可編程片上系統SOPC(System on a Programmable Chip)技術(shù)的32 位嵌入式處理器軟核。Altera 公司開(kāi)發(fā)的Nios II軟核,可以直接放在FPGA中,它體現了把實(shí)現產(chǎn)品的全部單元電路集成到一個(gè)芯片之內的片上系統SOPC的思想。作為一種具有競爭力的技術(shù),在國外已經(jīng)有大量的產(chǎn)品使用了這種技術(shù),在國內使用Nios II處理器進(jìn)行嵌入式系統設計的開(kāi)發(fā)者也越來(lái)越多,但是離大規模應用還有距離,應該得到更加廣泛的關(guān)注。本文在實(shí)際的項目中需要使用Nios II來(lái)開(kāi)發(fā)存儲系統,對于利用Nios II來(lái)進(jìn)行嵌入式系統開(kāi)發(fā),還有許多工作需要去深入研究本文在進(jìn)行存儲系統項目開(kāi)發(fā)的過(guò)程中,完成了基于FPGA的系統硬件軟件設計。為了到達系統的設計目標,就需要對Nios II的SOPC技術(shù)進(jìn)行深入的研究。還需要進(jìn)行uClinux操作系統的移植,基于操作系統的SD卡數據讀寫(xiě),必然就要涉及到怎樣編寫(xiě)驅動(dòng)程序。本文先簡(jiǎn)單介紹操作SD卡的基本的硬件電路,接著(zhù)給出了SD卡讀寫(xiě)操作和驅動(dòng)程序設計的基本過(guò)程。最后給出了全文的結論,本文給出的方法具有一定的普遍性,和實(shí)用性。
1系統硬件結構設計
1.1 SD卡
SD卡(Secure Digitgal Memory Card)即“安全數碼存儲卡”是由日本松下公司、東芝公司、美國SANDISK 等公司在MMC卡的基礎上共同開(kāi)發(fā)研究而推出的,是一種容量大、高性能、安全性好、訪(fǎng)問(wèn)接口簡(jiǎn)單的存儲卡,得到了廣泛的使用。使用的范圍包括:MP3、數碼攝像機和照相機產(chǎn)品、智能手機等消費類(lèi)電子設備。當前很多微處理器在內部都集成了與SD卡通信的接口電路。
1.2 SD卡的特征
SD 卡的外形和接口觸點(diǎn)如圖1 所示。外形尺寸分為兩種,分別為:24 mm * 32 mm * 2.1 mm 或24 mm * 32mm *1.4mm.
圖1 SD 卡的形狀和接口
微處理器和SD卡之間的接口電路,要符合一定的約定,這個(gè)在SD卡的讀寫(xiě)操作中,被稱(chēng)為通信協(xié)議。為了適應不同的通信協(xié)議,可以設置SD 卡使其工作在不同的通信模式之下。SD卡的通信模式分為兩種,一種是所謂的SD模式,另一種是SPI模式?,F在SPI通信模式得到越來(lái)越多的使用。在處理器和SD卡的通信過(guò)程中,和SD卡通信的處理器(稱(chēng)為主機),選擇一種通信方式,但在通信的整個(gè)過(guò)程中不能改變通信模式。SD卡分析復位命令,以確定下面的通信采用什么模式,在接下來(lái)的時(shí)間內,通信雙方要使用相同的通信模式。
當工作在SD模式下時(shí),主機使用SD總線(xiàn)訪(fǎng)問(wèn)SD卡,使用多點(diǎn)總線(xiàn)拓樸結構。這種結構包括一個(gè)主機和多個(gè)從機(這里是指SD卡)。所有的SD卡共用一個(gè)時(shí)鐘信號CLK、電源和地,命令線(xiàn)和數據線(xiàn)則是屬于每一SD卡所專(zhuān)用的。前面說(shuō)到現在的微處理器都集成有硬件SPI接口,用于板內的芯片之間的操作非常方便。當設定工作在SPI模式下時(shí),主機使用自身所帶的SPI總線(xiàn)來(lái)訪(fǎng)問(wèn)SD卡。微處理器在第一個(gè)發(fā)給SD卡的復位命令中配置通信模式為SPI方式,當然在操作SD卡的通信期間,通信模式是不能更改為SD模式的。
1.3 SD卡內部構造
圖2是SD卡的內部結構圖,主機通過(guò)SD卡的接口控制器來(lái)控制SD內部的存儲單元中的數據。這樣設計的目的一方面是把SD卡內部的存儲器和外部的操作隔離開(kāi)來(lái),利于保護內部的數據。另一方面也有利于內部存儲器采用更新的工藝,而不影響外部的訪(fǎng)問(wèn)接口。
在使用微處理器來(lái)讀寫(xiě)SD卡內的數據時(shí),要嚴格遵循通信協(xié)議。首先SD卡的數據傳輸的基本單位是字節。但是在SD卡的內部是以塊為單位來(lái)組織數據的。對SD的數據讀取操作本質(zhì)上是以塊為單位的。一個(gè)塊的長(cháng)度一般是2的冪,比如256字節或者512字節。在具體的一次數據傳輸中塊的長(cháng)度(以字節為單位)可以在傳輸數據之前的命令控制字中設置。至于SD卡所允許的塊的最大長(cháng)度可以讀取SD卡的寄存器CSD來(lái)確定。在SD卡內部有控制寄存器和狀態(tài)寄存器,其中的4個(gè)寄存器中存放著(zhù)配置信息,比如RCA寄存器中存放本次通信過(guò)程中由主機分配的地址。
1.4訪(fǎng)問(wèn)SD卡的硬件電路
SD卡采用SPI總線(xiàn)方式與處理器連接,其電路原理如圖2所示。
圖2 SD 卡接口電路圖
1.5 NiosII的構建過(guò)程
首先要考慮到的是使用什么樣的Nios II,Nios II分為幾個(gè)等級,有標準內核和高速內核。由于本系統對速度的要求并不高,設計時(shí)采用了標準的Nios II內核。在速度和所占用的資源方面具有比較好的折中。采用Altera公司的SOPC Builder工具來(lái)進(jìn)行構建,生成一個(gè)Nios II的標準內核。
評論