基于Avalon總線的SD卡讀寫控制器的設計
5 系統(tǒng)硬件設計
為了驗證SD卡讀寫控制器,在DE2開發(fā)平臺上搭建了最基本的硬件系統(tǒng),主要包括:NiosⅡ處理器,PLL鎖相環(huán),片上RAM,JTAG UART和自定義的SD卡讀寫控制器。NiosⅡ作為系統(tǒng)主控制器,PLL用來產生SD卡讀/寫所需的時鐘信號,片上RAM用來存儲代碼和數據,JTAG UART主要用來調試,打印數據到控制臺驗證寫入的數據和讀出的數據是否相同。
硬件系統(tǒng)的建立主要利用Altera公司QuartusⅡ開發(fā)工具以及其集成的SoPC Builder完成的,關鍵在于如何用SoPC Builder將SD卡讀寫控制器添加到元件列表中。在SoPC Builder提供的圖形化的界面下,添加控制器Verilog源程序后,設置控制器中各信號在Avalon-MM總線中的信號類型等,圖2即為添加好的SD卡讀寫控制器。本文引用地址:http://butianyuan.cn/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卡的的過程與其類似。
讀/寫完一個扇區(qū)后,控制器會產生一個中斷,此時即可進行下一次讀/寫操作。由于SD卡讀/寫有比較復雜的時序要求,命令、響應眾多,在設計的初期,采用Modelsim做了各方面的功能仿真,功能仿真完成后采用QuartusⅡ自帶的SignalTapⅡ邏輯分析儀來測試
分析內部邏輯的工作狀態(tài),SignalTapⅡ使用簡單方便,更重要的是可以實時觀測內部信號變化,而且可以設置觸發(fā)條件,大大提高了開發(fā)的效率。圖3是用SignalTapⅡ邏輯分析儀捕捉到的波形。
圖3中,status_reg為狀態(tài)寄存器,00000900表明卡已處于就緒狀態(tài),control_reg為控制寄存器,00000001H表明已經開始了一次對扇區(qū)0的寫傳輸,mread的上升沿即開始了Master端口的讀傳輸,這里的讀指的是將內存中buf數組中的數據讀入控制器,再由控制器寫入SD卡中,waitrequest為等待信號,高電平時無法進行數據傳輸,waitrequest無效后可以很明顯地看到000000DFH由Master端口讀入控制器,再由讀寫控制邏輯寫入SD卡。
6 結語
該設計采用SoPC技術實現(xiàn)了SD卡讀寫控制器,通過NiosⅡ處理器控制實現(xiàn)了SD卡讀/寫。由于該控制器根據Avalon接口規(guī)范進行開發(fā),可以很方便以IP核的形式集成到其他SoPC系統(tǒng)中,簡單實現(xiàn)SD卡的讀/寫,大大降低了開發(fā)成本和難度。本文所設計的SD卡讀寫控制器還有一大優(yōu)點就是具有Master端口,可以自主完成數據的讀/寫,無需CPU的干預,另外采用了中斷,降低了響應延時,提高了讀/寫速率。該設計滿足了大部分數據存儲需求,適用于工業(yè)監(jiān)測控制,一般消費類電子產品等。
評論