專利名稱:Sd卡清除忙狀態(tài)的方法及清除忙狀態(tài)電路的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及半導體快閃記憶器領(lǐng)域,特別是涉及一種SD(SecureDigital Memory Card安全數(shù)碼卡)卡清除busy (忙狀態(tài))的方法。本發(fā)明還涉及一種用于所述方法的清除 忙狀態(tài)電路。
背景技術(shù):
SD卡是一種基于半導體非易失性閃速存儲器(flash)的新一代記憶設(shè)備,它被廣 泛應(yīng)用于便攜式裝置上,例如手機、數(shù)碼相機、數(shù)碼攝像機、個人數(shù)碼助理(PDA)和多媒體 播放器等。SD卡由日本的松下、東芝及美國的SanDisk公司于1999年8月共同開發(fā)研制, 具有高記憶容量、快速數(shù)據(jù)傳輸率、極大的移動靈活性以及很好的安全性等優(yōu)點。SD卡的管 腳有 Vdd、Vss、CLK、DATO、DAT1、DAT2、DAT3。SD卡通訊系統(tǒng)的拓撲結(jié)構(gòu)為主從式,SD卡作為從屬設(shè)備,受控于SD主機。SD卡通 訊過程中的數(shù)據(jù)流有三種含義命令、應(yīng)答和數(shù)據(jù)。SD主機通過命令告知SD卡行為,SD卡 通過應(yīng)答及忙狀態(tài)(將DATO拉低)將自身狀態(tài)告知SD主機,SD主機通過數(shù)據(jù)線與SD卡 進行數(shù)據(jù)交互。SD卡在通訊過程中,命令有幾十個之多,不同命令的處理內(nèi)容和處理時間相差很 大。有的命令處理時間較長,在SD卡尚未處理完這些命令之前,有些操作SD主機是不能執(zhí) 行的。SD卡是否處理完這些命令,是通過忙狀態(tài)反饋給SD主機的,如果SD卡未處理完命 令,會將DATO拉低,表示忙狀態(tài);如果SD卡已處理完命令,將DATO拉高,表示空閑。另一方面,SD主機與SD卡的數(shù)據(jù)通訊是以block (塊)為單位進行的,每個block 的最大數(shù)據(jù)長度為512字節(jié)。在SD主機向SD卡寫操作的過程中,由于SD卡內(nèi)flash(閃 存)寫入數(shù)據(jù)的速度要慢于SD主機與SD卡之間的數(shù)據(jù)傳輸速度,而SD卡內(nèi)用于數(shù)據(jù)暫存 的緩沖器(buffer)又容量有限,所以,協(xié)議上規(guī)定,SD卡每收到一個block的數(shù)據(jù)后,如果 內(nèi)部緩沖器沒有空間繼續(xù)接收下一個block的數(shù)據(jù),可以將DATO拉低,表示SD卡處于忙狀 態(tài)。SD主機見到該狀態(tài)后,不會繼續(xù)發(fā)送下一個block的數(shù)據(jù),而是等待SD卡的忙狀態(tài)清 除(DAT0拉高)后,才會繼續(xù)下一個block數(shù)據(jù)的發(fā)送。由上述可知,SD卡在處理命令和接收數(shù)據(jù)時,都有可能將DATO拉低,表示忙狀態(tài)。 在時鐘頻率、flash訪問速度等因素相當?shù)那闆r下,忙狀態(tài)時間的長短決定了 SD卡的通訊速度。目前,SD卡有兩種設(shè)計實現(xiàn)架構(gòu),分別是硬件架構(gòu)和軟硬件配合架構(gòu)。在軟硬件配 合的架構(gòu)中,已知的忙狀態(tài)實現(xiàn)和清除方式是軟件在中斷服務(wù)程序中設(shè)置忙狀態(tài)控制位, 硬件根據(jù)該控制位決定將DATO拉高還是拉低。由于硬件沒有相關(guān)處理電路,軟件的清除忙 狀態(tài)操作只能在中斷服務(wù)程序中執(zhí)行,而不能在主程序中執(zhí)行,這樣無疑降低了程序的靈 活性以及執(zhí)行效率。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供了一種SD卡清除忙狀態(tài)的方法,使得軟件可以 在中斷服務(wù)程序和主程序中根據(jù)自身情況在任何時間點均可執(zhí)行清除忙狀態(tài)操作;為此本 發(fā)明還要提供一種用于所述方法的清除忙狀態(tài)電路。為解決上述技術(shù)問題,本發(fā)明的SD卡清除忙狀態(tài)的方法是采用如下技術(shù)方案實 現(xiàn)的設(shè)置一個忙狀態(tài)控制寄存器(以下稱之為buSy_Ctrl),該寄存器位寬為1位,獨占一 個地址;軟件根據(jù)自身狀態(tài)對該忙狀態(tài)控制寄存器進行清零操作,清零前所述忙狀態(tài)控制 該寄存器的值可以為零;由硬件實現(xiàn)的清除忙狀態(tài)電路通過清除忙狀態(tài)操作檢測電路識別 出軟件的清除忙狀態(tài)操作,并通過一個寄存器(以下稱之為bUSy_clear)記錄該操作。本發(fā)明的用于所述方法的清除忙狀態(tài)電路,包括清除忙狀態(tài)操作檢測電路,與清除忙狀態(tài)操作記錄電路連接,判斷是否有軟件清 除忙狀態(tài)的操作發(fā)生;清除忙狀態(tài)操作有效性判斷電路,與清除忙狀態(tài)操作記錄電路連接,判斷軟件是 否進入中斷;第一同步電路,與清除忙狀態(tài)操作記錄電路、忙狀態(tài)控制邏輯電路連接,負責將內(nèi) 部時鐘域的信號同步到外部SD時鐘域;第二同步電路,與清除忙狀態(tài)操作完成檢測電路、忙狀態(tài)控制邏輯電路連接,負責 將外部SD時鐘域的信號同步到內(nèi)部時鐘域;跨時鐘域信號通過第一和第二同步電路處理;清除忙狀態(tài)操作完成檢測電路,與清除忙狀態(tài)操作記錄電路連接,判斷硬件是否 已將忙狀態(tài)清除;清除忙狀態(tài)操作記錄電路,通過寄存器記錄軟件的清除忙狀態(tài)操作;忙狀態(tài)控制邏輯電路,與第一同步電路、第二同步電路連接,根據(jù)同步后的busy_ clear信號決定是否將忙狀態(tài)告知SD主機,并將忙狀態(tài)通過信號反饋給內(nèi)部電路。采用本發(fā)明的方法,軟件在中斷服務(wù)程序和主程序中根據(jù)自身情況在任何時間點 均可執(zhí)行清除忙狀態(tài)操作,包括預清除操作;軟件的清除忙狀態(tài)操作由硬件記錄、判斷和實 現(xiàn);有利于提高軟件的靈活性、執(zhí)行效率,便于軟件靈活、快速地實現(xiàn)清除忙狀態(tài)功能,縮短 總線上忙狀態(tài)的時間,以及提高SD卡的通訊速度。
下面結(jié)合附圖與具體實施方式
對本發(fā)明進一步詳細的說明圖1是本發(fā)明的一實施例硬件實現(xiàn)的清除忙狀態(tài)電路原理框圖。圖2是圖1中清除忙狀態(tài)操作記錄電路的一實施例電路原理框圖。
具體實施例方式因為忙狀態(tài)發(fā)生于兩種情況返回類型為Rlb的應(yīng)答,接收完一個block的數(shù)據(jù) 包,下面對其分別敘述對于Rlb類型應(yīng)答產(chǎn)生的忙狀態(tài),軟件可能在如下時間點執(zhí)行清除忙狀態(tài)操作 命令接收前、命令接收過程中、命令接收完成后響應(yīng)命令中斷前、響應(yīng)命令中斷后。這些情況中,只有軟件在響應(yīng)命令中斷后執(zhí)行的清除忙狀態(tài)操作才是真實的,硬件應(yīng)根據(jù)此次操 作將DATO拉高,而其它情況下的軟件清除忙狀態(tài)操作,硬件應(yīng)將其忽略。對軟件清除忙狀 態(tài)操作的過濾是由清除忙狀態(tài)操作有效性判斷電路實現(xiàn)的。這樣處理的結(jié)果是當應(yīng)答類 型為Rlb時,硬件在應(yīng)當將DATO拉低的時刻判斷是否有軟件清除忙狀態(tài)操作記錄,如果有, 則將DATO拉高;如果沒有,則將DATO拉低;在DATO拉低后,如果檢測到有軟件清除忙狀態(tài) 操作,則將DATO拉高,否則繼續(xù)將DATO拉低。硬件完成清除忙狀態(tài)操作后,將軟件清除忙 狀態(tài)操作記錄清除。這樣便實現(xiàn)了 Rlb類型應(yīng)答相關(guān)忙狀態(tài)的清除和預清。對于收到各block數(shù)據(jù)包后產(chǎn)生的忙狀態(tài),軟件可能在如下時間點執(zhí)行清除忙狀 態(tài)操作數(shù)據(jù)開始接收前、數(shù)據(jù)接收過程中、數(shù)據(jù)接收完成后響應(yīng)數(shù)據(jù)中斷前、響應(yīng)數(shù)據(jù)中 斷后。這些情況中,只有軟件在響應(yīng)數(shù)據(jù)中斷后執(zhí)行的清除忙狀態(tài)操作才是真實的,硬件應(yīng) 根據(jù)此次操作將DATO拉高,而其它情況下的軟件清除忙狀態(tài)操作,硬件應(yīng)將其忽略。對軟 件清除忙狀態(tài)操作的過濾是由清除忙狀態(tài)操作有效性判斷電路實現(xiàn)的。然而,與Rlb類型 應(yīng)答產(chǎn)生的忙狀態(tài)相比,二者的時序是不同的在Rl類型應(yīng)答時,命令中斷產(chǎn)生在先,DATO 拉低的時間在后,硬件在需要將DATO拉低的時刻開始判斷是否有軟件清除忙狀態(tài)操作;而 收完一個block數(shù)據(jù)包的情況下,DATO拉低的時間在前,數(shù)據(jù)中斷產(chǎn)生的時間在后,所以之 前的軟件清除忙狀態(tài)操作記錄尚未清除,是虛假的,不能據(jù)此決定DATO的拉低與否。對此, 采用的處理方式為硬件每收完一個block的數(shù)據(jù)包并發(fā)完CRC STATUS后,自動將DATO拉 低;在DATO拉低后,等待軟件進入中斷后再檢測是否有軟件清除忙狀態(tài)操作,如果有,則將 DATO拉高,否則繼續(xù)將DATO拉低。這樣便實現(xiàn)了接收到一個block數(shù)據(jù)包后忙狀態(tài)的產(chǎn)生 和清除。該方式中,等待軟件進入中斷的時間需要考慮如下幾個方面DAT0拉低到發(fā)出中 斷請求的時間、中斷請求的響應(yīng)時間、信號同步的時間。在本設(shè)計中,等待軟件進入中斷的 時間設(shè)置為13個SD clock (時鐘周期),原因為考慮最差的工作情況是SD clock與CPU clock的頻率相同,DATO拉低到產(chǎn)生數(shù)據(jù)中斷,需要4個clock,軟件進中斷需要6個clock, 軟件清除忙狀態(tài)操作記錄信號從CPU時鐘域同步到SD時鐘域需要2個clock,設(shè)計余量留 1 個 clock。參見圖1所示,在一實施例中,由硬件實現(xiàn)的清除忙狀態(tài)電路包括清除忙狀態(tài)操作檢測電路,與清除忙狀態(tài)操作記錄電路連接,判斷是否有軟件清 除忙狀態(tài)的操作發(fā)生。所述清除忙狀態(tài)操作檢測電路用于判斷寄存器選擇信號、寄存器讀 寫控制信號、寄存器寫入的數(shù)據(jù),如果檢測到軟件對buSy_Ctrl寄存器進行寫0操作,則認 為有軟件清除忙狀態(tài)操作發(fā)生。清除忙狀態(tài)操作有效性判斷電路,與清除忙狀態(tài)操作記錄電路連接,判斷軟件是 否進入中斷。所述清除忙狀態(tài)操作有效性判斷電路,根據(jù)由硬件提供的命令中斷和數(shù)據(jù)中 斷請求信號以及硬件響應(yīng)中斷請求的時間,來判斷軟件是否進入中斷。第一同步電路,與清除忙狀態(tài)操作記錄電路、忙狀態(tài)控制邏輯電路連接,負責將內(nèi) 部時鐘域的信號同步到外部SD時鐘域。第二同步電路,與清除忙狀態(tài)操作完成檢測電路、忙狀態(tài)控制邏輯電路連接,負責 將外部SD時鐘域的信號同步到內(nèi)部時鐘域??鐣r鐘域信號通過第一和第二同步電路處理。清除忙狀態(tài)操作完成檢測電路,與清除忙狀態(tài)操作記錄電路連接,判斷硬件是否已將忙狀態(tài)清除。所述清除忙狀態(tài)操作完成檢測電路,根據(jù)忙狀態(tài)控制邏輯電路輸出的表 示當前是否處于忙狀態(tài)的信號的跳變可判斷出是否已將忙狀態(tài)清除。清除忙狀態(tài)操作記錄電路,通過寄存器記錄軟件的清除忙狀態(tài)操作。忙狀態(tài)控制邏輯電路,與第一同步電路、第二同步電路連接,根據(jù)同步后的busy_ clear (為記錄軟件清除忙狀態(tài)操作的寄存器輸出信號)信號決定是否將忙狀態(tài)告知SD主 機。所述忙狀態(tài)控制邏輯電路在Rlb類型應(yīng)答以及接收完一個block的數(shù)據(jù)包后,判斷同 步后的busy_clear信號,如果有效,則將DATO拉高,如果無效,則將DATO拉低。參見圖2所示,在一實施例中所述清除忙狀態(tài)操作記錄電路由組合邏輯電路、優(yōu) 先級數(shù)據(jù)選擇器、寄存器組成。bUSy_clear信號為寄存器的輸出,寄存器的輸入端與一個二 選一優(yōu)先級數(shù)據(jù)選擇器的輸出端連接,該數(shù)據(jù)選擇器的控制端與一個或門的輸出端連接, 該數(shù)據(jù)選擇器的一個輸入端與另一個二選一優(yōu)先級數(shù)據(jù)選擇器的輸出端連接。其工作原理 為如果清除忙狀態(tài)操作檢測電路檢測到軟件執(zhí)行了清除忙狀態(tài)操作,則bUSy_clear信號 有效;如果清除忙狀態(tài)操作有效性判斷電路告知軟件已進入中斷,則bUSy_clear信號變?yōu)?無效;如果清除忙狀態(tài)操作完成檢測電路告知硬件已將忙狀態(tài)清除,則bUSy_clear信號也 會變?yōu)闊o效。圖2中porb_i為上電異步復位信號。以上通過具體實施例對本發(fā)明進行了詳細的說明,但這些并非構(gòu)成對本發(fā)明的限 制。在不脫離本發(fā)明原理的情況下,本領(lǐng)域的技術(shù)人員還可做出許多變形和改進,這些也應(yīng) 視為本發(fā)明的保護范圍。
權(quán)利要求
1.一種SD卡清除忙狀態(tài)的方法,其特征是設(shè)置一個忙狀態(tài)控制寄存器,該寄存器位 寬為1位,獨占一個地址;軟件根據(jù)自身狀態(tài)對該忙狀態(tài)控制寄存器進行清零操作,清零前 所述忙狀態(tài)控制該寄存器的值可以為零;由硬件實現(xiàn)的清除忙狀態(tài)電路通過清除忙狀態(tài)操 作檢測電路識別出軟件的清除忙狀態(tài)操作,并通過一個寄存器記錄該操作。
2.如權(quán)利要求1所述的方法,其特征是當應(yīng)答類型為Rlb時,清除忙狀態(tài)電路在應(yīng)當 將DATO拉低的時刻判斷是否有軟件清除忙狀態(tài)操作記錄,如果有,則將DATO拉高;如果沒 有,則將DATO拉低;在DATO拉低后,如果檢測到有軟件清除忙狀態(tài)操作,則將DATO拉高,否 則繼續(xù)將DATO拉低;硬件電路完成清除忙狀態(tài)操作后,將軟件清除忙狀態(tài)操作記錄清除。
3.如權(quán)利要求1所述的方法,其特征是硬件電路每收完一個塊的數(shù)據(jù)包并發(fā)完CRC STATUS后自動將DATO拉低;在DATO拉低后,等待軟件進入中斷后再檢測是否有軟件清除 忙狀態(tài)操作,如果有,則將DATO拉高,否則繼續(xù)將DATO拉低。
4.如權(quán)利要求1所述的方法,其特征是硬件電路通過清除忙狀態(tài)操作識別電路記錄 軟件的清除忙狀態(tài)操作。
5.如權(quán)利要求1所述的方法,其特征是在軟件進入中斷服務(wù)程序之前,硬件電路將軟 件清除忙狀態(tài)操作記錄清除。
6.一種用于權(quán)利要求1所述方法的清除忙狀態(tài)電路,其特征是,包括清除忙狀態(tài)操作檢測電路,與清除忙狀態(tài)操作記錄電路連接,判斷是否有軟件清除忙 狀態(tài)的操作發(fā)生;清除忙狀態(tài)操作有效性判斷電路,與清除忙狀態(tài)操作記錄電路連接,判斷軟件是否進 入中斷;第一同步電路,與清除忙狀態(tài)操作記錄電路、忙狀態(tài)控制邏輯電路連接,負責將內(nèi)部時 鐘域的信號同步到外部SD時鐘域;第二同步電路,與清除忙狀態(tài)操作完成檢測電路、忙狀態(tài)控制邏輯電路連接,負責將外 部SD時鐘域的信號同步到內(nèi)部時鐘域;跨時鐘域信號通過第一和第二同步電路處理;清除忙狀態(tài)操作完成檢測電路,與清除忙狀態(tài)操作記錄電路連接,判斷硬件電路是否 已將忙狀態(tài)清除;清除忙狀態(tài)操作記錄電路,通過寄存器記錄軟件的清除忙狀態(tài)操作;忙狀態(tài)控制邏輯電路,與第一同步電路、第二同步電路連接,根據(jù)同步后的bUSy_clear 信號決定是否將忙狀態(tài)告知SD主機。
7.如權(quán)利要求6所述的清除忙狀態(tài)電路,其特征是所述清除忙狀態(tài)操作檢測電路用 于判斷寄存器選擇信號、寄存器讀寫控制信號、寄存器寫入的數(shù)據(jù),如果檢測到軟件對忙狀 態(tài)控制寄存器進行寫0操作,則認為有軟件清除忙狀態(tài)操作發(fā)生。
8.如權(quán)利要求6所述的清除忙狀態(tài)電路,其特征是所述清除忙狀態(tài)操作有效性判斷 電路,根據(jù)由硬件電路提供的命令中斷和數(shù)據(jù)中斷請求信號以及硬件電路響應(yīng)中斷請求的 時間,來判斷軟件是否進入中斷。
9.如權(quán)利要求6所述的清除忙狀態(tài)電路,其特征是所述清除忙狀態(tài)操作完成檢測電 路,根據(jù)忙狀態(tài)控制邏輯電路輸出的表示當前是否處于忙狀態(tài)的信號的跳變可判斷出是否 已將忙狀態(tài)清除。
10.如權(quán)利要求6所述的清除忙狀態(tài)電路,其特征是所述忙狀態(tài)控制邏輯電路在Rlb 類型應(yīng)答以及接收完一個塊的數(shù)據(jù)包后,判斷同步后的bUSy_clear信號,如果有效,則將 DATO拉高,如果無效,則將DATO拉低。
11.如權(quán)利要求6所述的清除忙狀態(tài)電路,其特征是所述清除忙狀態(tài)操作記錄電路的 工作過程為如果清除忙狀態(tài)操作檢測電路檢測到軟件執(zhí)行了清除忙狀態(tài)操作,則busy_ clear信號有效;如果清除忙狀態(tài)操作有效性判斷電路告知軟件已進入中斷,則busy_ clear信號變?yōu)闊o效;如果清除忙狀態(tài)操作完成檢測電路告知硬件電路已將忙狀態(tài)清除, 則buSy_clear信號變?yōu)闊o效。
全文摘要
本發(fā)明公開了一種SD卡清除忙狀態(tài)的方法,設(shè)置一個忙狀態(tài)控制寄存器,該寄存器位寬為1位,獨占一個地址;軟件根據(jù)自身狀態(tài)對該忙狀態(tài)控制寄存器進行清零操作,清零前所述忙狀態(tài)控制該寄存器的值可以為零;由硬件實現(xiàn)的清除忙狀態(tài)電路通過清除忙狀態(tài)操作檢測電路識別出軟件的清除忙狀態(tài)操作,并通過一個寄存器記錄該操作。本發(fā)明還公開了一種用于所述方法的清除忙狀態(tài)電路。本發(fā)明能使軟件可以在中斷服務(wù)程序和主程序中根據(jù)自身情況在任何時間點均可執(zhí)行清除忙狀態(tài)操作,包括預清除操作,軟件的清除忙狀態(tài)操作由硬件記錄、判斷和實現(xiàn);便于軟件靈活、快速地實現(xiàn)清除忙狀態(tài)功能,縮短總線上忙狀態(tài)的時間,提高SD卡的通訊速度。
文檔編號G11C11/4072GK102103885SQ20091020200
公開日2011年6月22日 申請日期2009年12月21日 優(yōu)先權(quán)日2009年12月21日
發(fā)明者張曉成 申請人:上海華虹集成電路有限責任公司