<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于SoPC的SD卡控制器IP核的設計

基于SoPC的SD卡控制器IP核的設計

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

4 文件系統移植
 讀寫(xiě)操作均以扇區為單位,SD卡僅相當于一塊容量較大的Flash,移植文件系統可方便地與PC機或其他電子產(chǎn)品數據交換以及后期分析處理。μC/FS是一種為其提供基本的硬件訪(fǎng)問(wèn)功能即可應用于任何存儲介質(zhì)的FAT文件系統,其使用標準ANSI C編寫(xiě)可應用于幾乎任何CPU。μC/FS具有以下特點(diǎn)[4]:(1)支持DOS/Windows環(huán)境下的FAT12,FAT16 和FAT32。(2)支持多個(gè)存儲器共同工作,可以同時(shí)訪(fǎng)問(wèn)多個(gè)存儲器。(3)多操作系統支持,可以很方便地移植到幾乎任何操作系統。(4)可以很容易地集成使用SPI模式的MMC/SD卡通用設備驅動(dòng)等?;谝陨系奶攸c(diǎn),μC/FS 非常適用于嵌入式系統。


4.1 μC/FS文件系統結構分析
 μC/FS 采取分層工作方式,每一層負責不同的功能,由高層的數據抽象到底層的硬件實(shí)體分工明確,其系統結構層次劃分如圖2所示。

基于SoPC的SD卡控制器IP核的設計

4.2 文件系統實(shí)現
 在完成SD卡及其軟件驅動(dòng)并實(shí)現SD卡基礎讀寫(xiě)的基礎上,按照μC/FS文件系統的接口函數編寫(xiě)設備驅動(dòng)程序并對系統參數做相應設置即可實(shí)現SD卡文件操作。μC/FS文件系統的接口函數主要通過(guò)一個(gè)結構體(FS__device_type)進(jìn)行描述,該結構體包含了驅動(dòng)設備的名稱(chēng)以及4個(gè)基本的驅動(dòng)設備掛接函數的函數指針:
typedef struct {
FS_FARCHARPTR name;
int (*dev_status)(FS_u32 Unit);
int(*dev_read)(FS_u32 Unit, FS_u32 Sector, void *pBuffer);
int(*dev_write)(FS_u32 Unit,FS_u32 Sector,void *pBuffer);
int(*dev_ioctl)( FS_u32 Unit, FS_i32 Cmd, FS_i32 Aux,
void *pBuffer);
} FS__device_type;
其中,dev_status()函數主要實(shí)現FAT表狀態(tài)信息的讀取,并表明該SD設備可以使用;dev_read()函數實(shí)現對SD卡進(jìn)行文件系統塊數據的讀??;dev_write()函數實(shí)現對SD卡進(jìn)行文件系統塊數據的寫(xiě)入;dev_ioctl()函數則主要實(shí)現文件操作的相關(guān)指令,包括文件格式化、數據cache回寫(xiě)等操作。


5 仿真與驗證
 對SD卡的仿真驗證工作主要從時(shí)序仿真和軟件驅動(dòng)讀寫(xiě)SD卡進(jìn)行文件操作驗證兩方面進(jìn)行。


5.1 SD卡控制器的時(shí)序仿真
 在 中創(chuàng )建波形激勵文件后,得到的時(shí)序仿真結果如圖3所示。在仿真圖中可以看出,控制器在初始化過(guò)程中,首先將CMD0(0x40)、參數(0x00000000)和命令校驗位(0x95)通過(guò)SPITrans模塊進(jìn)行并/串轉后發(fā)送到SD卡的CMD線(xiàn)進(jìn)行復位,等收到SD卡DAT線(xiàn)上發(fā)送回來(lái)的回執(0x01)后,接著(zhù)發(fā)送CMD1(0x41)、參數(0x00000000)和命令校驗位(0xFF)到SD卡進(jìn)行初始化。由此可見(jiàn),SD卡控制器設計符合SD卡協(xié)議標準。

基于SoPC的SD卡控制器IP核的設計

5.2文件操作驗證
通過(guò)調用μC/FS 文件系統提供的API函數,如:FS_Fopen()打開(kāi)文件、FS_FRead()讀文件、FS_FWrite()寫(xiě)文件等編寫(xiě)測試程序如下:
void main(void)
{
char *device="sd:"
const char *WriteMsg="test sd card writen";
FS_Init(); /*初始化文件系統*/
show_free(device); /*顯示SD卡空間信息*/
write_file("test.txt",WriteMsg); /*寫(xiě)入文件test.txt*/
show_directory(device); /*顯示根目錄文件信息*/
dump_file("test.txt"); /*讀test.txt文件內容*/

}
 選用4 GB容量的SDHC卡,在PC機上將其格式化為FAT文件系統并創(chuàng )建文件夾HELLO和文件WORD.DOC。SD卡在線(xiàn)運行調試結果如圖4所示。由運行結果可知,初始化成功并識別此SD卡為SDHC (Secure Digital High Capacity)卡,卡容量為964 256(總簇數)×8(每簇扇區數)×512(每扇區字節數)≈3.7 GB。創(chuàng )建test.txt文件成功后讀取根目錄(有文件目錄hello、文件word.doc和文件test.txt),讀取文件test.txt內容為test sd card write與寫(xiě)入一致。運行結果表明文件操作正確可靠。

基于SoPC的SD卡控制器IP核的設計

通過(guò)對SD卡物理層協(xié)議和μC/FS 文件系統的研究,成功設計了具有Avalon總線(xiàn)接口的SD卡控制器,并通過(guò)時(shí)序仿真、軟件驅動(dòng)的方式進(jìn)行仿真和調試,驗證了SD卡控制器的工作情況,在此基礎上實(shí)現了SD卡中的文件操作,使SOPC設計能與PC機或各種電子產(chǎn)品方便地進(jìn)行數據交換。本設計已成功應用在基于SOPC架構的多用途無(wú)線(xiàn)防盜監控系統中。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 控制器 IP核 Quartus II

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>