999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

SD卡硬件啟動和數據存儲的控制邏輯的設計實現

2008-12-31 00:00:00劉新寧
電腦知識與技術 2008年31期

摘要:從介紹SD卡協議出發,分析了在初始化SD卡過程中命令發送的步驟以及進行語音數據存儲的狀態機設計,在不采用APB總線設計的條件下,運用Verilog語言通過模擬APB總線時序完成控制邏輯的設計,用Modelsim進行前仿,并利用Synplify和QuartusII完成綜合工作,并在Altera StratixII平臺上實現控制邏輯的FPGA驗證。

關鍵詞:SD卡;模擬APB總線;硬件初始化;FPGA驗證

中圖分類號:TP302.2文獻標識碼:A文章編號:1009-3044(2008)31-0990-02

Design and Implementation of the Control Logic for SD Card Initialization and Data Storaging

WANG Qing, LIU Xin-ning

(National Engineering Research Center for ASIC System, Southeast University, Nanjing 210096, China)

Abstract: Basing on introducing SD card specification,analyzing the commands sending process duringinitialization and the state-machine transform for storaging data.Control logic is carried out in Verilog language without using APB bus but by simulating APB clock cycles. Modelsim is used for front_simulation,and then Synplify and QuartusII are used to accomplish synthesis and integration.The result is validated on Altera StratixII platform.

Key words: SD card; APB Bus simulating; hardware initialization; FPGA Verification

1 引言

SD卡以其價格低廉,性能優異,存儲容量大等優點在存儲市場占有極大份額,目前在各個領域運用廣泛,很多移動嵌入式設備中均采用SD卡作為標準的存儲介質。在一般的使用過程中,SD卡的初始化以及數據存儲操作均通過APB總線來實現。在本文中,設計一控制邏輯,并采用模擬APB總線時序的方式來實現硬件啟動SD卡,這種設計使整個系統的架構更加簡單,性能更加優異。

2 控制邏輯系統結構

如圖1所示,本控制邏輯由純硬件實現,在上電之后即開始進行對SD卡進行初始化操作。在采集的語音數據達到一定的量(512bytes)之后,即開始進行數據的存儲操作。

2.1 系統結構的設計

在本設計中,控制邏輯的系統結構設計出于以下幾點考慮:

1) 語音數據經過編碼之后,在到達控制邏輯之前為4bit的ADPCM編碼格式,而APB總線為32bit,為了使APB總線的傳輸效率達到最高,故考慮在接收語音數據之前,將其擴展成32bit后再存儲至FIFO中;

2) FIFO大小的考慮:由于在進行數據存儲操作時,以BLOCK(512Bytes)為單位,考慮到安全性以及CMD命令發送失敗的情況,將控制邏輯中進行數據存儲的FIFO設置為1024bytes;

3) SDIO_CONTROLLER:該部分直接和SDIO模塊進行連接,是本設計中的核心部分,由于不采用APB總線,故和SDIO之間的通信都通過模擬APB總線時序的方式實現;

2.2 控制邏輯功能設計及工作原理

圖2為控制邏輯工作流程。

2.2.1 SD卡初始化階段

上電之后,控制邏輯對SD卡進行初始化操作,依據SD卡協議的相關規定,首先發送CMD0命令,將SD置于IDLE狀態,在等待大于8個CLK的周期時間之后,發送CMD8,該命令用來判斷SD卡類型,如果該命令有返回Response,則該卡為SDHC(High Capacity),如果沒有Response,則為普通SD卡。在等待最少64個CLK時鐘周期之后,繼續發送CMD55+ACMD41命令,該命令用來檢測卡的狀態,返回的Response中如果最高位(busy_bit)為0,則表示SD卡的上電/重啟操作還未完成,需要繼續發送CMD55+ACMD41命令,直至SD卡上電/重啟過程完畢,進入READY狀態。在該狀態發送CMD2,該命令使得連接的SD卡返回確認信息,而后狀態轉入IDENT。IDENT狀態中,控制邏輯發送CMD3,要求SD卡返回對應的自身地址RCA(Relative Card Address),該參數在以后的若干命令中都會有應用。考慮到在數據存儲過程中需要判斷卡的容量, CMD9用來讀取SD卡的CSD寄存器內容,該命令返回的Response中包括的三個參數:READ_BL_LEN,C_SIZE_MULT,C_SIZE,根據這三個參數可以計算出SD卡的容量大小。在上述步驟都順利執行完之后,控制邏輯發送CMD7命令,該命令將SD卡從Stand_By狀態轉入Transfer狀態,準備進行數據傳輸。SD卡的初始化過程完畢。

初始化過程中,在進行命令發送的時候,考慮到有的命令SD卡沒有正確執行或者沒有返回Response信號,因此設定在一定時間后,如果收到CMD的Response,則視該命令正確執行(每個命令都會設置相應的CMD_DONE和CMD_FAIL信號)CMD_DONE拉高,進行狀態跳轉;如果沒有收到CMD的Response,則視該命令執行失敗,狀態重新跳到IDLE狀態,重新發送各項命令,進行初始化進程。

2.2.2 數據讀取階段

在本階段的任務為讀取microSD卡的第二個BLOCK中的數據,以判斷進行存儲操作時所設置的數據存儲地址。

DATA_READ:發送CMD17,單個BLOCK數據讀取命令;

DATA_READ_START:開始進行數據讀取操作,從microSD卡中讀取的數據存儲至SDIO中的rx_fifo中(該fifo用來存儲SDIO進行讀取操作時所獲取的數據),當rx_fifo_empty為低時,表示fifo中有數據進入時,便進行數據讀取,直至讀取的數據滿512Bytes,表示一個BLOCK數據讀取完畢。

2.2.3 數據傳輸階段

在進行數據存儲時,考慮到PC端讀取軟件的需要,首先要將讀出的SD卡大小寫入第一個BLOCK,第二個BLOCK寫入語音數據的存儲地址,從第三個BLOCK開始(地址為0X400)進行語音數據的存儲。在每次512Bytes數據傳輸完畢之后,數據存儲地址Data_add加0X200,即存儲地址后移一個BLOCK,這樣可以保持語音數據在SD卡中的連續性。

如果在進行一定時間的數據存儲之后,數據的存儲地址Data_add大于卡的BLOCK大小,則數據存儲地址Data_add重新歸位為0X400,即從第三個BLOCK 開始重新進行語音數據的存儲。

TRANS:CMD24命令的發送,進行各種數據的存儲操作。在此設置參數BLOCK_NUM_CNT作為進行命令傳送地址判別的依據:BLOCK_NUM_CNT為0時,將SD卡的大小寫入第一個BLOCK;BLOCK_NUM_CNT%1024!=0時,將語音數據依次寫入卡中;當BLOCK_NUM_CNT%1024==0,此時進行第二個BLOCK中數據存儲地址的更新,這樣如果碰到掉電或者RESET情況,語音數據可以繼續上次的存儲地址繼續進行存儲。

DATA_WRITE_WAIT:SD卡初始化完畢,等待進行數據傳輸。由于SD卡在進行數據存儲時傳輸的連續性,必須以BLOCK(512Byte)為單位,所以必須等待前面的FIFO存滿512Bytes數據。當接收到FIFO傳輸過來的data_fifo_ready信號時,表明數據準備完畢,即發送CMD24(單個BLOCK傳輸命令),進行數據傳輸。

DATA_WRITE_START:數據進行傳輸狀態。SDIO中的TX_FIFO對存儲至SD卡的數據具有緩沖作用。由于SDIO中TX_FIFO的大小為32*8,當該FIFO中數據為空或者深度不大于4時,即向SDIO_CONTROLLER發送fifo_data_req信號,表示可以接收數據。

DATA_WRITE_WAIT:每接收一個32bit數據,即轉入此狀態。在該狀態判斷是否一個BLOCK數據已經傳輸完畢,如果傳輸完畢,則進入END狀態,等待下個BLOCK數據的傳輸,否則回到START狀態,根據TX_FIFO中的fifo_data_req信號繼續進行數據傳輸。

DATA_WRITE_END:512Bytes數據傳輸完畢,由于SD卡的工作頻率大于ADPCM編碼的輸入速率(32Kbit/s),故在每個BLOCK數據傳輸完畢之后,FIFO中數據還沒有存滿512Bytes,狀態轉入WAIT等待,直至FIFO中數據存滿一個BLOCK,以進行下一次數據傳輸。

3 控制邏輯的仿真以及FPGA驗證

通過波形可以看出,在初始化完畢之后便進行連續的數據存儲操作,控制邏輯的初始化操作以及數據的存儲功能均正確實現。

FPGA的驗證在STRATIXII平臺上面進行,使用Synplify和QuartusII軟件實現代碼的綜合和燒錄工作,通過板級的調試,初始化以及數據存儲功能正確實現。

4 結語

本文所設計的控制邏輯,從硬件啟動SD卡出發,初始化SD卡操作完成之后再進行數據存儲操作,從前仿到FPGA均驗證了該控制邏輯功能的正確性,該設計有效實現了降低系統結構,提高系統的工作效率。

參考文獻:

[1] SD Memory Card Specification Part1 PHYSICAL LAYER SPECIFICATION Version1.0.March.2000.

[2] AMBA? Specification(Rev 2.0)[S]. ARM Limited,1999.3.

[3] J.Bhasker.Verilog HDL硬件描述語言[M].機械工業出版社,2005.

[4] 王金明.數字系統設計與Verilog HDL[M].電子工業出版社,2005.9.

[5] 吳繼華,王誠.Altera FPGA/CPLD設計(高級篇)[M].人民郵電出版社,2005.7.

主站蜘蛛池模板: 亚洲第一成年网| 国产黄在线免费观看| 毛片一区二区在线看| aⅴ免费在线观看| 国产原创演绎剧情有字幕的| 色香蕉影院| 欧美成人手机在线观看网址| 亚洲国产天堂久久综合226114| 播五月综合| 国产91丝袜| 毛片a级毛片免费观看免下载| 欧洲一区二区三区无码| 日韩成人高清无码| 亚洲第一成年人网站| 久久综合亚洲色一区二区三区| 亚洲精品爱草草视频在线| 国产特级毛片aaaaaa| 国产在线八区| 日韩精品视频久久| 激情亚洲天堂| 伊人久久久久久久久久| 欧洲亚洲一区| 99精品视频九九精品| 欧美日韩午夜| 国产AV无码专区亚洲A∨毛片| 色欲色欲久久综合网| 刘亦菲一区二区在线观看| 99热这里只有精品在线播放| 日本一区中文字幕最新在线| 91成人在线观看| 国产日韩久久久久无码精品| 日本亚洲成高清一区二区三区| 国产网站一区二区三区| a毛片在线播放| 亚洲不卡无码av中文字幕| 国产欧美视频综合二区| 91小视频在线播放| 午夜在线不卡| 国产精品七七在线播放| 97在线观看视频免费| 欧美日韩国产高清一区二区三区| 日韩国产一区二区三区无码| 欧美国产在线看| 国产精品所毛片视频| 久久精品国产999大香线焦| 欧美日韩中文国产va另类| 波多野吉衣一区二区三区av| 久久久久青草线综合超碰| 国内精品久久久久久久久久影视| 欧美精品黑人粗大| 91精品人妻互换| 特级aaaaaaaaa毛片免费视频| 中文精品久久久久国产网址| 免费国产小视频在线观看| 亚洲精品国产乱码不卡| 国产小视频免费观看| 国产精品一区二区国产主播| 在线国产91| 亚洲精品在线影院| 国产一在线观看| 亚洲天堂网视频| 欧美日韩精品综合在线一区| av在线无码浏览| 国产日本一区二区三区| 伊人久久综在合线亚洲2019| 99热这里只有精品久久免费| 欧美色图第一页| 朝桐光一区二区| 亚洲日韩精品综合在线一区二区| 波多野结衣第一页| 亚洲天堂日韩在线| 久久性妇女精品免费| 人妻一区二区三区无码精品一区| 亚洲91在线精品| 国产成人亚洲欧美激情| a级毛片毛片免费观看久潮| 在线一级毛片| 伊人久久大香线蕉综合影视| 99re这里只有国产中文精品国产精品 | 97久久超碰极品视觉盛宴| 国产精品lululu在线观看 | 精品视频在线观看你懂的一区|