新聞中心

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

基于SoPC的SD卡控制器IP核的設(shè)計(jì)

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

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


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

基于SoPC的SD卡控制器IP核的設(shè)計(jì)

4.2 文件系統(tǒng)實(shí)現(xiàn)
 在完成SD卡及其軟件驅(qū)動(dòng)并實(shí)現(xiàn)SD卡基礎(chǔ)讀寫的基礎(chǔ)上,按照μC/FS文件系統(tǒng)的接口函數(shù)編寫設(shè)備驅(qū)動(dòng)程序并對(duì)系統(tǒng)參數(shù)做相應(yīng)設(shè)置即可實(shí)現(xiàn)SD卡文件操作。μC/FS文件系統(tǒng)的接口函數(shù)主要通過一個(gè)結(jié)構(gòu)體(FS__device_type)進(jìn)行描述,該結(jié)構(gòu)體包含了驅(qū)動(dòng)設(shè)備的名稱以及4個(gè)基本的驅(qū)動(dòng)設(shè)備掛接函數(shù)的函數(shù)指針:
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ù)主要實(shí)現(xiàn)FAT表狀態(tài)信息的讀取,并表明該SD設(shè)備可以使用;dev_read()函數(shù)實(shí)現(xiàn)對(duì)SD卡進(jìn)行文件系統(tǒng)塊數(shù)據(jù)的讀取;dev_write()函數(shù)實(shí)現(xiàn)對(duì)SD卡進(jìn)行文件系統(tǒng)塊數(shù)據(jù)的寫入;dev_ioctl()函數(shù)則主要實(shí)現(xiàn)文件操作的相關(guān)指令,包括文件格式化、數(shù)據(jù)cache回寫等操作。


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


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

基于SoPC的SD卡控制器IP核的設(shè)計(jì)

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

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

基于SoPC的SD卡控制器IP核的設(shè)計(jì)

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


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

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

評(píng)論


相關(guān)推薦

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

關(guān)閉