新聞中心

EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > FPGA和Nios II軟核的SD卡文件系統(tǒng)實現(xiàn)方法

FPGA和Nios II軟核的SD卡文件系統(tǒng)實現(xiàn)方法

作者: 時間:2012-12-06 來源:網(wǎng)絡(luò) 收藏

將需要的IP核模塊添加完成后,下一步是用Verilog HDL語言編寫頂層文件,對定制的SOPC進行例化處理(模塊之間的連接關(guān)系定義,I/O引腳的配置),編譯頂層文件和模塊IP核,才能生成在上運行的片上系統(tǒng)。
在添加IP核后,SOPCBuilder可生成資源列表,本文構(gòu)建的系統(tǒng)列表如圖3所示。

本文引用地址:http://www.2s4d.com/article/189745.htm

d.JPG


在實例中使用了 II模塊、時鐘模塊、定時器、SDRAM模塊、EPCS模塊、UART模塊和SPI共計7個模塊。
SOPC系統(tǒng)構(gòu)建完成后,模塊之間信號傳遞的時序并未確定。接下來的時序設(shè)計是SOPC能否正常運行的關(guān)鍵。在片上系統(tǒng)生成后,首先要對系統(tǒng)進行時序分析,以便使系統(tǒng)的時序符合設(shè)計邏輯的要求,并保證系統(tǒng)的正常工作,必要時要對系統(tǒng)的時序進行適當(dāng)?shù)募s束。這一工作
可利用Quartus II軟件中內(nèi)嵌的TimeQuest完成,也可以使用第三方提供的時序分析軟件,如PrimeTime軟件等來實現(xiàn)。
本文采用Altera公司提供的TimeQuest來進行時序約束。經(jīng)過時序約束后,對工程再編譯,可產(chǎn)生時序報告。通過分析時序約束報告,可對約束適當(dāng)修改,這個過程可反復(fù)進行,直到滿足時序要求為止。

2 SD卡接口協(xié)議分析與驅(qū)動程序設(shè)計
2.1 SD卡通信接口協(xié)議分析
SD卡一般定義了SD和SPI兩種可選的總線操作方式,本文采用SPI方式與SD卡接口,可以直接利用Quartus II中提供的SPI控制器IP核。S PI協(xié)議是面向位傳輸?shù)耐酱型ㄐ艆f(xié)議。在SPI模式下,SD卡可以支持單塊與多塊的讀寫操作。
SOPC上的SPI控制器與SD卡之間的讀寫操作過程應(yīng)符合SD卡的通信協(xié)議,其讀寫交互過程如圖4所示。

c.JPG


從圖4中可以看出,任何操作都是由SPI控制器的SD寫命令開始,SD卡在接收到一個合法命令后,將給予應(yīng)答來響應(yīng),接下來便是數(shù)據(jù)塊的讀或?qū)懖僮鳌?br />2.2 SD卡驅(qū)動層程序的編寫
II EDS是Altera公司為其 II處理器開發(fā)的一款C/C++語言編程軟件,其軟件架構(gòu)是基于HAL(Hardware Abstraction Layer)之上的,Nios II EDS為Nios開發(fā)者提供了編程接口、底層設(shè)備驅(qū)動、HAL API,以及C標(biāo)準(zhǔn)庫等資源。更重要的是,HAL系統(tǒng)庫為Nios II軟件設(shè)計人員提供了應(yīng)用程序與底層硬件交互的設(shè)備驅(qū)動接口,從而大大簡化了應(yīng)用程序的開發(fā)。此外,HAL系統(tǒng)庫還為應(yīng)用程序與底層硬件驅(qū)動之間劃分了一條清晰的界線,從而大大提高了應(yīng)用程序的可復(fù)用性,使得應(yīng)用程序不受底層硬件變化的影響。
片上系統(tǒng)的SPI控制器硬件邏輯,是由SOPC Builder工具將一個SPI主控器軟核封裝到系統(tǒng)中的,此SPI控制器與Nios 以Avalon總線相連接。SD卡的設(shè)備驅(qū)動層分為4層,包括硬件抽象層、命令層、CRC校驗層與操作函接口層,其結(jié)構(gòu)框圖如圖5所示。

j.JPG


硬件抽象層主要實現(xiàn)Nios II處理器對SPI控制器相應(yīng)的功能寄存器的操作。
命令層定義了對SD卡各種操作的交互方法,包括命令碼與應(yīng)答碼的定義。
CRC校驗層主要完成校驗工作,對于命令與數(shù)據(jù)采取不同的校驗方式。命令用CRC7校驗,數(shù)據(jù)用CRC16校驗。
操作函數(shù)接口層的作用是向znFAT32文件系統(tǒng)提供SD卡的所有操作,這其中包括了SD卡的初始化、扇區(qū)讀寫等函數(shù)接口(這是文件系統(tǒng)對SD卡進行文件操作所必需的),以供znFAT32文件系統(tǒng)調(diào)用。這里利用Nios IIEDS集成開發(fā)環(huán)境編寫的驅(qū)動實現(xiàn)SD對卡的塊讀寫(以扇區(qū)為基本單位進行讀寫操作),為SD卡掛載文件系統(tǒng)提供API函數(shù)。
每個層的接口函數(shù)如下:
i.JPG

fpga相關(guān)文章:fpga是什么


51單片機相關(guān)文章:51單片機教程


c語言相關(guān)文章:c語言教程




評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉