www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 工業(yè)控制 > 電子設(shè)計(jì)自動(dòng)化

摘 要: 針對(duì)目前在嵌入式平臺(tái)中使用SD卡控制器專用芯片價(jià)格昂貴、軟件模擬SPI時(shí)序控制讀寫速度較慢的問題,提出了一種基于SoPC技術(shù)的SD卡控制器IP核設(shè)計(jì)的架構(gòu)方案。采用VHDL語言設(shè)計(jì)SD卡控制器IP核,利用自定義模塊技術(shù)將其添加到SoPC中,利用Nios II IDE編寫SD卡的基礎(chǔ)讀寫驅(qū)動(dòng)軟件并移植μC/FS文件系統(tǒng),實(shí)現(xiàn)對(duì)SD卡的文件操作。該設(shè)計(jì)具有使用方便、集成度高、數(shù)據(jù)傳輸可靠、文件格式通用等特點(diǎn),在基于SoPC架構(gòu)的多用途無線防盜監(jiān)控系統(tǒng)中得到良好的應(yīng)用。
關(guān)鍵詞: 可編程片上系統(tǒng); SD卡; μC/FS文件系統(tǒng); 控制器; IP核

 隨著電子產(chǎn)品的音頻、視頻等多媒體功能的不斷增強(qiáng),嵌入式系統(tǒng)對(duì)存儲(chǔ)介質(zhì)的容量、安全、性能、價(jià)格等提出了更高的要求,而SD卡因其價(jià)格低廉、速度快、容量大和兼容性好(兼容MMC卡協(xié)議)等特點(diǎn)在嵌入式平臺(tái)中得到了廣泛的使用。目前在嵌入式平臺(tái)中使用SD卡的方式主要有:(1)系統(tǒng)中使用帶SD卡控制器的電路模塊或芯片。(2)將I/O口與SD卡接口連接以軟件模擬SPI時(shí)序控制其讀寫。方式(1)使用方便、控制簡(jiǎn)單,但是增加了硬件電路復(fù)雜度和成本;方式(2)電路雖然結(jié)構(gòu)簡(jiǎn)單,但是讀寫速度慢。
 針對(duì)上述缺陷,本文提出了基于SoPC技術(shù)的SD卡控制器的架構(gòu)方案,即在Altera公司提供的Quartus II軟件中開發(fā)SD卡控制器并在SoPC Builder中將其作為一個(gè)獨(dú)立的IP核集成到SoPC中,通過軟件驅(qū)動(dòng)控制器以實(shí)現(xiàn)SD卡讀寫及文件操作,使其系統(tǒng)設(shè)計(jì)靈活、集成度高、讀寫速度快,為SOPC設(shè)計(jì)中使用非易失性存儲(chǔ)提供了新的方案。
1 SD卡協(xié)議規(guī)范
SD聯(lián)盟在2000年和2006年分別發(fā)布了SD卡規(guī)范1.0和2.0版本,SD卡規(guī)范主要包括物理層規(guī)范[1]、文件系統(tǒng)規(guī)范和安全規(guī)范三部分內(nèi)容,最大支持容量為32 GB,支持的文件系統(tǒng)為FAT16和FAT32。
 SD卡內(nèi)部不僅有大量的存儲(chǔ)單元,還有卡接口控制器、寄存器等,外部控制器不能直接訪問存儲(chǔ)器,所有對(duì)SD卡的操作如讀/寫、設(shè)置塊長度、擦除等都是由卡接口控制器根據(jù)收到的命令自動(dòng)完成,減少了外部控制器對(duì)存儲(chǔ)器操作的負(fù)擔(dān)[2]。SD卡支持SD和SPI兩種工作模式,兩種模式下SD卡的管腳意義如表1所示。SD模式下數(shù)據(jù)采用4線并行傳輸,速度較快。而SPI模式接口協(xié)議簡(jiǎn)單,在各嵌入式平臺(tái)中的通用性好,故本設(shè)計(jì)中采用SPI模式。 
2 SD卡控制器IP核設(shè)計(jì)
 SD卡工作在SPI模式下,其總線主要有時(shí)鐘線CLK、命令線CMD、數(shù)據(jù)線DAT和片選線CS。SD卡控制器主要實(shí)現(xiàn)三大功能:
 (1)復(fù)位和初始化SD卡。控制器按照SD卡總線協(xié)議產(chǎn)生控制時(shí)序?qū)ζ溥M(jìn)行復(fù)位和初始化。
 (2)讀寫SD卡??刂破魇紫韧ㄟ^CMD線發(fā)送讀或?qū)懨詈蜕葏^(qū)地址,等收到正確的命令回執(zhí)后,將DAT線上傳輸?shù)拇袛?shù)據(jù)進(jìn)行串/并轉(zhuǎn)換,然后存儲(chǔ)在控制器內(nèi)部緩存中(寫數(shù)據(jù)則將控制器內(nèi)部緩存中的數(shù)據(jù)并/串轉(zhuǎn)換后從DAT線發(fā)送到SD卡),一個(gè)扇區(qū)數(shù)據(jù)(512 B)傳輸完畢后將就緒信號(hào)置為有效。
 (3)設(shè)置SD卡。設(shè)置操作與讀寫操作相同,都是發(fā)送命令和參數(shù),只是不接收和發(fā)送數(shù)據(jù)。
 需要特別指出的是:CLK信號(hào)由控制器產(chǎn)生,對(duì)SD卡的命令或數(shù)據(jù)傳輸?shù)纫幌盗胁僮骶c該時(shí)鐘同步(SD卡的最大工作時(shí)鐘為25 MHz)。
 SD控制器的功能模塊劃分如圖1所示。

2.1 總線接口模塊
總線接口模塊SDInterface是整個(gè)SD卡控制器的核心,其端口信號(hào)遵循Avalon協(xié)議規(guī)范[3],主要負(fù)責(zé)連接Avalon總線、緩存SD卡命令、緩存扇區(qū)地址、將要發(fā)送的數(shù)據(jù)送至緩存(雙口RAM)以及從緩存中讀取數(shù)據(jù)等。
 當(dāng)處理器要對(duì)SD卡進(jìn)行初始化時(shí),需要寫SDInterface模塊的特定地址,之后SDInterface選擇啟動(dòng)復(fù)位/初始化模塊(SDInit),由SDInit完成SD卡的初始化工作。
 向SD卡寫數(shù)據(jù)時(shí),需要先通過SDInterface模塊將要寫的數(shù)據(jù)緩存到雙口RAM中,然后將扇區(qū)地址和寫命令(CMD24)發(fā)送到SDInterface模塊的特定地址,之后SDInterface會(huì)啟動(dòng)命令控制(SDcmd)模塊并將命令和地址傳遞給后者,最后由SDcmd模塊完成一次寫操作。
從SD卡中讀數(shù)據(jù)或?qū)D卡進(jìn)行其他操作與向SD卡寫數(shù)據(jù)過程基本一致,處理器首先向SDInterface發(fā)送命令和參數(shù)(如果是讀寫操作,則參數(shù)即為扇區(qū)地址),之后SDInterface啟動(dòng)SDCmd模塊并由SDCmd模塊完成后續(xù)操作(如果是讀操作則將讀得的數(shù)據(jù)緩存到雙口RAM中)。
2.2 初始化模塊
  對(duì)SD卡進(jìn)行讀寫或其他操作前首先應(yīng)將其初始化。初始化模塊SDInit主要負(fù)責(zé)完成SD卡的初始化工作,主要工作流程如下:
 (1)當(dāng)總線接口模塊使能SDInit后,SDInit通過SPITrans模塊向SD卡發(fā)送復(fù)位命令(CMD40)。
 (2)等待復(fù)位命令的回執(zhí),如果復(fù)位成功(返回值為0x01),則轉(zhuǎn)向步驟(3),否則繼續(xù)等待。
 (3)向SD卡發(fā)送初始化命令(CMD41),等待初始化命令的回執(zhí)并將執(zhí)行結(jié)果返回給SDInterface以便通知處理器。
2.3 命令控制模塊
 命令控制模塊SDCmd主要完成SD卡命令、參數(shù)、命令校驗(yàn)值的發(fā)送和命令回執(zhí)的讀?。ㄈ绻亲x寫操作,則還要進(jìn)行數(shù)據(jù)的發(fā)送和接收)。
 SDInterface模塊使能SDCmd前會(huì)將SD命令、參數(shù)傳遞給SDCmd,這樣SDCmd使能后,首先通過SPITrans模塊將得到的命令、參數(shù)發(fā)送到SD卡,然后等待命令回執(zhí),如果當(dāng)前命令是讀、寫之外的其他命令,則將執(zhí)行結(jié)果返回給SDInterface模塊即可;如果是讀、寫命令則收到正確的命令回執(zhí)后,則還要將數(shù)據(jù)接收并存到緩存或發(fā)送到SD卡。
2.4 選擇器和雙口RAM
 選擇器模塊Mux主要用來根據(jù)當(dāng)前操作從SDInit模塊和SDCmd模塊的輸出信號(hào)中選擇一路送至SPITrans模塊。雙口RAM是SD控制器的緩存,用來存儲(chǔ)發(fā)送到SD卡和從SD卡上讀取的數(shù)據(jù)。
2.5 串/并、并/串轉(zhuǎn)換及時(shí)鐘產(chǎn)生模塊
 SPITrans模塊主要負(fù)責(zé)串/并轉(zhuǎn)換、并/串轉(zhuǎn)換和SD卡時(shí)鐘產(chǎn)生。當(dāng)SPITrans模塊使能后,它通過對(duì)輸入時(shí)鐘進(jìn)行分頻產(chǎn)生SD卡時(shí)鐘,并在8個(gè)SD卡時(shí)鐘周期內(nèi)將選擇器輸出的8位并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)發(fā)送到SD卡,同時(shí)將SD卡DAT線上的串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)返回給SDInit模塊和SDCmd模塊。
3 基礎(chǔ)讀寫設(shè)計(jì)
 SD卡控制器軟件的編寫在Altera公司的Quartus II中完成,使用SOPC Builder工具將具有Avalon總線接口的SD卡控制器封裝成IP 核并集成到SOPC中,利用Nios II IDE編寫軟件驅(qū)動(dòng)實(shí)現(xiàn)SD卡的基礎(chǔ)讀寫(以扇區(qū)為單位進(jìn)行讀寫)。寫數(shù)據(jù)到SD卡扇區(qū)操作函數(shù)如下:
int sd_write(UINT8 *data, UINT32 addr)
{
int ret, i=0, j=0;
if(sd_type == 1) addr = addr << 9;
/*判斷地址偏移*/
for(i=0; i<512; i++)
  IOWR(SD_CARD_BASE, i, data[i]);
/*寫數(shù)據(jù)*/
IOWR(SD_CARD_BASE, 517, CMD24);
/*寫入地址*/
IOWR(SD_CARD_BASE, 518, addr);
/*開始運(yùn)行*/
IOWR(SD_CARD_BASE, 519, 0);
/*讀命令回執(zhí)*/
ret = IORD(SD_CARD_BASE, 519);

}
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所示。

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í)序仿真
 在Quartus II中創(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)。

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é)果表明文件操作正確可靠。

通過對(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)中。
參考文獻(xiàn)
[1] SD Group. SD specifications part 1: physical layer simplified specification version 2.0,september 25, 2006.
[2] 李錦,呂柏權(quán). 基于AT91RM9200的SD卡主控制器的設(shè)計(jì)[J]. 微計(jì)算機(jī)應(yīng)用,2009,30(1):64-67.
[3] Altera.Avalon bus specificational reference manual[EB/OL]. http://www.altera.com, 2002.
[4] User′s & reference manual for μC/FS V1-34a. Micriμm Technologies Corporation. 2003.
[5] 鄭千洪, 王黎, 高曉蓉. 嵌入式平臺(tái)上NAND Flash的驅(qū)動(dòng)實(shí)現(xiàn)[J]. 微計(jì)算機(jī)信息, 2009,25(4-2):102-105.

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

在電子電路設(shè)計(jì)中,確保電源的穩(wěn)定和安全至關(guān)重要。LTC4365 作為一款出色的過壓(OV)、欠壓(UV)以及反向極性故障保護(hù)控制器,在眾多領(lǐng)域得到了廣泛應(yīng)用。其能夠?yàn)殡娫摧斎腚妷嚎赡艹霈F(xiàn)過高、過低甚至負(fù)值的應(yīng)用場(chǎng)景提供可...

關(guān)鍵字: 控制器 柵極 輸出電壓

ZCC3790 作為一款同步 4 開關(guān)升降壓電壓 / 電流調(diào)節(jié)器控制器,展現(xiàn)出了強(qiáng)大的性能。它能夠在輸入電壓高于、低于或等于輸出電壓的復(fù)雜情況下,精準(zhǔn)地調(diào)節(jié)輸出電壓、輸出電流或輸入電流。其恒定頻率、電流模式架構(gòu)賦予了它靈...

關(guān)鍵字: 升降壓 控制器 寬電壓

2025年8月12日 – 專注于引入新品的全球電子元器件和工業(yè)自動(dòng)化產(chǎn)品授權(quán)代理商貿(mào)澤電子(Mouser Electronics) 是Phoenix Contact解決方案的全球授權(quán)代理商。貿(mào)澤供應(yīng)超過93,000種可訂...

關(guān)鍵字: 樓宇自動(dòng)化 控制器 連接器

在之前的文章“為機(jī)器人技術(shù)的未來發(fā)展筑牢安全防線:網(wǎng)絡(luò)安全的作用”中,我們?nèi)娼榻B了機(jī)器人控制系統(tǒng)面臨的安全挑戰(zhàn)。文章強(qiáng)調(diào)了遵守機(jī)器人行業(yè)安全標(biāo)準(zhǔn)的重要性,并探索了加強(qiáng)機(jī)器人控制系統(tǒng)保護(hù)所需的基本安全能力。此外,我們還展...

關(guān)鍵字: 機(jī)器人 PLC 控制器

工業(yè)4.0的核心是工廠自動(dòng)化,工業(yè)機(jī)器人、自主移動(dòng)機(jī)器人(AMR)和協(xié)作機(jī)器人對(duì)于實(shí)現(xiàn)現(xiàn)代工業(yè)4.0至關(guān)重要。機(jī)器人正日益智能化,協(xié)作能力不斷增強(qiáng),能夠在有人或無人干預(yù)的情況下高效完成復(fù)雜任務(wù)。隨著自動(dòng)化程度和機(jī)器人使用...

關(guān)鍵字: 機(jī)器人 工業(yè)4.0 控制器

全新 I/O 解決方案賦予制造商更大的設(shè)計(jì)自由度,打造更智能、更具適應(yīng)性更的設(shè)備

關(guān)鍵字: 控制器 I/O 系統(tǒng)

【2025年7月24日, 德國慕尼黑訊】全球功率系統(tǒng)和物聯(lián)網(wǎng)領(lǐng)域的半導(dǎo)體領(lǐng)導(dǎo)者英飛凌科技股份公司(FSE代碼:IFX / OTCQX代碼:IFNNY)近日推出新型英飛凌ID Key系列,進(jìn)一步擴(kuò)展其通用串行總線(USB)...

關(guān)鍵字: 控制器 USB 非易失性存儲(chǔ)器

挑戰(zhàn)賽鼓勵(lì)參與者利用 WL-ICLED 技術(shù)展示創(chuàng)意

關(guān)鍵字: LED 控制器

許多電源轉(zhuǎn)換應(yīng)用都需要支持寬輸入或輸出電壓范圍。ADI公司的一款大電流、高效率、全集成式四開關(guān)降壓-升壓型電源模塊可以滿足此類應(yīng)用的需求。該款器件將控制器、MOSFET、功率電感和電容集成到先進(jìn)的3D集成封裝中,實(shí)現(xiàn)了緊...

關(guān)鍵字: 穩(wěn)壓器 控制器 MOSFET

在電力電子技術(shù)飛速發(fā)展的今天,開關(guān)電源憑借高效、小型化、輕量化等優(yōu)勢(shì),廣泛應(yīng)用于通信、計(jì)算機(jī)、工業(yè)控制等領(lǐng)域。而三端 PWM 開關(guān)作為開關(guān)電源的核心控制部件,其性能直接影響著開關(guān)電源的整體表現(xiàn)。本文將深入探討三端 PWM...

關(guān)鍵字: PWM 開關(guān)電源 控制器
關(guān)閉