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