• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 采用NiosⅡ處理器的總線(xiàn)架構(gòu)的SD卡設(shè)計(jì)

    采用NiosⅡ處理器的總線(xiàn)架構(gòu)的SD卡設(shè)計(jì)

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

    存儲(chǔ)卡以其大容量和小尺寸的特點(diǎn),成為市面上各種嵌入式消費(fèi)產(chǎn)品最常見(jiàn)的存儲(chǔ)媒介,探討卡設(shè)備的具有廣泛的應(yīng)用價(jià)值。這里將結(jié)合,分析卡的接口協(xié)議和驅(qū)動(dòng)程序方法,并給出SD卡設(shè)備在實(shí)例。

    本文引用地址:http://www.czjhyjcfj.com/article/149098.htm

      1 NiOSⅡ的Avalon

      和NiosⅡ都使用了Avalon,這是一種交換式的片內(nèi)總線(xiàn)。該總線(xiàn)形式和PCI、ISA等板間互連總線(xiàn)的最大區(qū)別在于:其主從設(shè)備之間有緊密耦合關(guān)系。Avalon總線(xiàn)架構(gòu)中,由硬件設(shè)計(jì)人員通過(guò)SOPC Builder規(guī)定互連的主從設(shè)備(包括數(shù)據(jù)、控制信號(hào)、片選、地址的互連),不連接的設(shè)備之間是互相看不到的。每個(gè)Avalon主設(shè)備端有多路復(fù)用器,用來(lái)從多個(gè)從設(shè)備的數(shù)據(jù)總線(xiàn)中選擇當(dāng)前要訪(fǎng)問(wèn)的數(shù)據(jù)。圖l為Avalon總線(xiàn)系統(tǒng)結(jié)構(gòu)。

      Avalon接口用于提供描述主外設(shè)和從外設(shè)中基于地址讀/寫(xiě)接口的基礎(chǔ),例如,微控制器、存儲(chǔ)器、UART及定時(shí)器等。接口規(guī)范定義了外設(shè)和Avalon開(kāi)關(guān)互聯(lián)結(jié)構(gòu)之間的數(shù)據(jù)傳輸。在沒(méi)有主或從接口限制的情況下,規(guī)范的互聯(lián)策略允許任何主外設(shè)連接到任何從外設(shè);Avalon接口描述了一個(gè)可配置的互聯(lián)策略,允許外設(shè)的設(shè)計(jì)者限制某種特定傳輸所需的信號(hào)類(lèi)型。

      Avalon定義了5種傳輸方式:從端口傳輸、主端口傳輸、流水線(xiàn)讀傳輸、流傳輸控制和三態(tài)傳輸。這里僅分析SD卡設(shè)備所使用的從端口傳輸方式。

      1.1 從設(shè)備信號(hào)

      從設(shè)備信號(hào)是與主設(shè)備相連接的一組信號(hào)端口,這里所針對(duì)的SD卡設(shè)備的Avalon從端口需定義的信號(hào)端口如表1所列。

      表l所列出的從設(shè)備信號(hào)只是這里所針對(duì)的SD卡設(shè)備所需要的信號(hào),并不是從設(shè)備所支持的所有信號(hào)。對(duì)于其他從設(shè)備可根據(jù)其自身特點(diǎn)及需要來(lái)選擇相應(yīng)的信號(hào)接口。

      1.2 從端口讀/寫(xiě)傳輸

      從端口讀傳輸是主設(shè)備通過(guò)SD卡控制器對(duì)SD卡進(jìn)行讀取的操作,即讀取SD卡的數(shù)據(jù);從端口寫(xiě)傳輸是主設(shè)備通過(guò)SD卡控制器對(duì)SD卡進(jìn)行寫(xiě)操作,即對(duì)SD卡寫(xiě)入數(shù)據(jù)。圖2為從端口讀/寫(xiě)信號(hào)時(shí)序。

    從端口讀

      從端口讀傳輸時(shí),在時(shí)鐘上升沿開(kāi)始傳輸數(shù)據(jù),并在下一個(gè)時(shí)鐘上升沿完成傳輸。在clk的第1個(gè)上升沿,systeminterconnect fabric配合read、begintransfer信號(hào)將有效的address,byteenable和read信號(hào)傳輸給從端口,且system interconnect fabric在內(nèi)部將address譯碼,產(chǎn)生并驅(qū)動(dòng)從端口的chipselect信號(hào)。chipselect信號(hào)一旦有效,則從端口立即驅(qū)動(dòng)readdata。system interconnect fabric則在下一個(gè)clk上升沿捕獲readdata。

      從端口寫(xiě)傳輸是由system interconnect fabric發(fā)起的。它向從端口傳輸1個(gè)單元的數(shù)據(jù),且在1個(gè)時(shí)鐘周期內(nèi)完成。system intercon-nect fabric配合write、begintransfer信號(hào)提供address,writedata,byteenable和write。system interconnectfabric不對(duì)address進(jìn)行譯碼,驅(qū)動(dòng)chipselect,并使其有效。從端口在下一個(gè)時(shí)鐘的上升沿捕獲地址、數(shù)據(jù)和控制信號(hào),并完成寫(xiě)傳輸。

      從端口的讀寫(xiě)時(shí)序是通過(guò)SD卡控制器完成的,而SD卡的控制器是以NiosⅡ軟核處理器外設(shè)的形式與處理器相連接的。其關(guān)系如圖3所示。

    SD卡設(shè)備總體架構(gòu)

      2 SD卡的接口協(xié)議分析

      SD卡即可靠數(shù)字存儲(chǔ)卡(Seeure Digital Memory Card),是為滿(mǎn)足消費(fèi)電子類(lèi)產(chǎn)品對(duì)安全、容量、性能等有特殊要求的環(huán)境而設(shè)計(jì)的。 SD卡定義了SD和SPI這2種可選擇的總線(xiàn)協(xié)議。這里研究的是SPI協(xié)議下的SD卡設(shè)備開(kāi)發(fā)。SPI是面向字節(jié)的傳輸,SPI的命令和數(shù)據(jù)塊都是以8個(gè)比特為單位進(jìn)行分組的。SPI的信息分為控制幀、反饋幀和數(shù)據(jù)幀,所有的SPI信息都是建立在命令、應(yīng)答和數(shù)據(jù)端口標(biāo)記上的。所有主機(jī)和卡之間的通信都由主機(jī)控制,主機(jī)通過(guò)拉低CS信號(hào)開(kāi)始一個(gè)總線(xiàn)事務(wù)。

      SPI模式下,SD卡可支持單個(gè)塊和多個(gè)塊的讀/寫(xiě)操作,在接收到一個(gè)合法的讀取命令后,這個(gè)SD卡可將用一個(gè)應(yīng)答標(biāo)志來(lái)應(yīng)答響應(yīng),隨后的就是一個(gè)數(shù)據(jù)塊。在接收到一個(gè)合法的寫(xiě)指令時(shí),SD卡將響應(yīng)一個(gè)應(yīng)答標(biāo)記,并等待主控制器發(fā)送這個(gè)數(shù)據(jù)塊。圖4為單個(gè)塊數(shù)據(jù)的讀取操作,圖5為單個(gè)塊數(shù)據(jù)的寫(xiě)入操作。

    單個(gè)塊數(shù)據(jù)的讀取/寫(xiě)入操作

    3 SD卡驅(qū)動(dòng)設(shè)計(jì)

      NiosⅡ軟件架構(gòu)是建立在硬件抽象層HAL(Hardware AbstracTIon Layer)之上的,HAL為Nios軟件開(kāi)發(fā)者提供了編程接口、底層的設(shè)備驅(qū)動(dòng)、HAL API以及C標(biāo)準(zhǔn)庫(kù)等資源。

      HAL系統(tǒng)庫(kù)為Nios軟件設(shè)計(jì)人員提供了應(yīng)用程序與底層硬件交互的設(shè)備驅(qū)動(dòng)接口,大大簡(jiǎn)化了應(yīng)用程序的開(kāi)發(fā)。同時(shí),HAL系統(tǒng)庫(kù)還為應(yīng)用程序與底層硬件驅(qū)動(dòng)劃分了一條很清晰的分界線(xiàn),從而大大提高了應(yīng)用程序的復(fù)用性,使得應(yīng)用程序不受底層硬件變化的影響。基于HAL的系統(tǒng)層次結(jié)構(gòu)如圖6所示。

    基于HAL的系統(tǒng)層次結(jié)構(gòu)


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

    評(píng)論


    相關(guān)推薦

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

    關(guān)閉
    主站蜘蛛池模板: 邢台县| 百色市| 酒泉市| 平顺县| 历史| 扶沟县| 沙湾县| 延寿县| 启东市| 台山市| 洪江市| 镇江市| 馆陶县| 渭源县| 明溪县| 高邑县| 韶山市| 双城市| 永昌县| 鹿邑县| 乳山市| 莱州市| 高台县| 万载县| 西安市| 高雄市| 丰顺县| 绿春县| 四川省| 象山县| 天峻县| 南通市| 马关县| 农安县| 隆子县| 密云县| 英德市| 凤冈县| 无极县| 顺义区| 新源县|