新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于Avalon總線的SD卡讀寫控制器的設計

        基于Avalon總線的SD卡讀寫控制器的設計

        作者: 時間:2011-04-11 來源:網絡 收藏

        5 系統硬件設計
        為了驗證,在DE2開發平臺上搭建了最基本的硬件系統,主要包括:NiosⅡ處理器,PLL鎖相環,片上RAM,JTAG UART和自定義的。NiosⅡ作為系統主,PLL用來產生SD卡讀/寫所需的時鐘信號,片上RAM用來存儲代碼和數據,JTAG UART主要用來調試,打印數據到控制臺驗證寫入的數據和讀出的數據是否相同。
        硬件系統的建立主要利用Altera公司QuartusⅡ開發工具以及其集成的SoPC Builder完成的,關鍵在于如何用SoPC Builder將控制器添加到元件列表中。在SoPC Builder提供的圖形化的界面下,添加控制器Verilog源程序后,設置控制器中各信號在-MM中的信號類型等,圖2即為添加好的SD卡讀寫控制器。

        本文引用地址:http://www.104case.com/article/191242.htm


        圖2中,各引腳的描述如下:
        base_clock:控制器輸入時鐘,該設計采用PLL產生的25MHz時鐘信號;
        clk_to_SD:SD卡時鐘信號輸入;
        cmd_SD:SD卡命令,響應輸入/輸出信號;
        data_SD:SD卡數據信號。
        根據SD控制器的寄存器映射,在Nios IDE中編寫C程序控制SD卡控制器進行讀/寫操作,下面代碼為寫SD卡的一段程序,讀SD卡的的過程與其類似。

        讀/寫完一個扇區后,控制器會產生一個中斷,此時即可進行下一次讀/寫操作。由于SD卡讀/寫有比較復雜的時序要求,命令、響應眾多,在設計的初期,采用Modelsim做了各方面的功能仿真,功能仿真完成后采用QuartusⅡ自帶的SignalTapⅡ邏輯分析儀來測試
        分析內部邏輯的工作狀態,SignalTapⅡ使用簡單方便,更重要的是可以實時觀測內部信號變化,而且可以設置觸發條件,大大提高了開發的效率。圖3是用SignalTapⅡ邏輯分析儀捕捉到的波形。


        圖3中,status_reg為狀態寄存器,00000900表明卡已處于就緒狀態,control_reg為控制寄存器,00000001H表明已經開始了一次對扇區0的寫傳輸,mread的上升沿即開始了Master端口的讀傳輸,這里的讀指的是將內存中buf數組中的數據讀入控制器,再由控制器寫入SD卡中,waitrequest為等待信號,高電平時無法進行數據傳輸,waitrequest無效后可以很明顯地看到000000DFH由Master端口讀入控制器,再由讀寫控制邏輯寫入SD卡。

        6 結語
        該設計采用SoPC技術實現了SD卡讀寫控制器,通過NiosⅡ處理器控制實現了SD卡讀/寫。由于該控制器根據接口規范進行開發,可以很方便以IP核的形式集成到其他SoPC系統中,簡單實現SD卡的讀/寫,大大降低了開發成本和難度。本文所設計的SD卡讀寫控制器還有一大優點就是具有Master端口,可以自主完成數據的讀/寫,無需CPU的干預,另外采用了中斷,降低了響應延時,提高了讀/寫速率。該設計滿足了大部分數據存儲需求,適用于工業監測控制,一般消費類電子產品等。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 鄄城县| 子洲县| 乳源| 绵阳市| 抚顺市| 宜昌市| 美姑县| 区。| 荥经县| 安岳县| 修文县| 兴国县| 上栗县| 南投县| 赤水市| 兰溪市| 图木舒克市| 枣强县| 重庆市| 凤城市| 桂阳县| 通道| 福州市| 涟源市| 天柱县| 沁水县| 崇义县| 枝江市| 巫溪县| 礼泉县| 兴城市| 梅河口市| 鹤岗市| 通化县| 吕梁市| 河北省| 金塔县| 通许县| 文安县| 临桂县| 青冈县|