專利名稱:具有錯誤校驗的直接存儲器存取控制器的制作方法
技術(shù)領(lǐng)域:
本申請案的技術(shù)領(lǐng)域涉及一種直接存儲器存取控制器。
背景技術(shù):
直接存儲器存取控制器(DMA)通常用于微處理器系統(tǒng)、集成微控制器等中。DMA 控制器用于獨立于計算機系統(tǒng)的中央處理單元而執(zhí)行從存儲器到外圍設(shè)備以及從外圍 設(shè)備到存儲器的數(shù)據(jù)轉(zhuǎn)移。為此,可將DMA控制器視為具有受限能力的第二可編程處 理單元。 一般來說,指令DMA控制器將特定量的數(shù)據(jù)從源位置轉(zhuǎn)移到目的地位置。所 述源可在存儲器(例如微控制器的數(shù)據(jù)存儲器、外圍設(shè)備的存儲器)內(nèi),,或為由外圍 設(shè)備(例如,模數(shù)轉(zhuǎn)換器、端口、俘獲比較單元等)產(chǎn)生或在外圍設(shè)備內(nèi)可存取的數(shù)據(jù)。 目的地也可在存儲器內(nèi),因此允許計算機系統(tǒng)或微控制器的存儲器裝置內(nèi)的高速轉(zhuǎn)移。 然而,目的地也可為外圍設(shè)備,例如數(shù)模轉(zhuǎn)換器、端口等。為了將數(shù)據(jù)從源轉(zhuǎn)移到目的 地,DMA控制器必須接收相應(yīng)的源和目的地地址。另外,需要指定每一轉(zhuǎn)移長度。為 此,DMA控制器需要接收數(shù)據(jù)轉(zhuǎn)移的長度或待轉(zhuǎn)移的數(shù)據(jù)的開始和結(jié)束地址。
此外,DMA控制器用于支持系統(tǒng)中的中央處理單元(CPU),尤其針對冗長的數(shù)據(jù) 轉(zhuǎn)移。CPU因而能夠自由執(zhí)行其它功能。然而,任何類型的轉(zhuǎn)移都可能經(jīng)受干擾和失真。 執(zhí)行冗余校驗的測試通常由CPU執(zhí)行,且因此延長了轉(zhuǎn)移過程。
發(fā)明內(nèi)容
根據(jù)一實施例,直接存儲器存取(DMA)控制器可包括DMA總線、耦合到所述 DMA總線的存儲器、與所述DMA總線耦合的DMA引擎、與所述DMA引擎耦合的循 環(huán)冗余校驗(CRC)模塊,以及耦合到所述DMA引擎和所述CRC模塊的總線接口。
根據(jù)另一實施例,直接存儲器存取(DMA)控制器可包括總線矩陣、耦合到所述總 線矩陣的存儲器、與所述總線矩陣耦合的DMA引擎、耦合在所述DMA引擎與所述總 線矩陣之間的可編程循環(huán)冗余校驗(CRC)模塊,以及耦合到所述DMA引擎和所述CRC模塊的總線接口。
根據(jù)另一實施例, 一種執(zhí)行直接存儲器存取(DMA)轉(zhuǎn)移的方法包括以下步驟a) 初始化DMA控制器中的DMA通道;b)初始化與DMA控制器耦合的循環(huán)冗余校驗 (CRC)模塊;c)將源數(shù)據(jù)從源地址加載到CRC模塊中,并對所加載的源數(shù)據(jù)開始循 環(huán)冗余校驗算法;d)使源地址遞增;以及e)重復(fù)步驟c)和d),直到已到達源結(jié)束地 址為止。
所屬領(lǐng)域的技術(shù)人員從以下圖式、描述內(nèi)容和所附權(quán)利要求書中將容易了解本發(fā)明 的其它技術(shù)優(yōu)點。本申請案的各種實施例只能獲得所陳述的優(yōu)點的子集。沒有一個優(yōu)點 對所述實施例是關(guān)鍵性的。
通過參考結(jié)合附圖而進行的以下描述,可獲得對本發(fā)明及其優(yōu)點的更完整理解,附
圖中相同參考標號指示相同特征,且其中
圖1是DMA控制器的第一實施例的框圖; 圖2說明可編程CRC控制器的實施例;
圖3展示根據(jù)一實施例的使用DMA控制器的典型CRC運算的流程圖; 圖4說明根據(jù)本發(fā)明特定實例實施例的表示112 kbps下RS-232的CRC時間的硬件 效率的曲線圖;以及
圖5說明根據(jù)本發(fā)明特定實例實施例的表示512千字節(jié)快閃存儲器的CRC時間的 硬件效率的曲線圖。
雖然己參考本發(fā)明的實例實施例描繪、描述且界定了本發(fā)明的實施例,但這些參考 并不暗示對本發(fā)明的限制,且不應(yīng)推斷出任何此類限制。如有關(guān)領(lǐng)域的且受益于本發(fā)明 的一般技術(shù)人員將想到,所揭示的標的物在形式和功能上能夠容許相當多的修改、更改 和等效物。所描繪和描述的本發(fā)明的實施例只是實例,且并非詳盡闡明本發(fā)明的范圍。
具體實施例方式
常規(guī)技術(shù)不在DMA控制器內(nèi)提供循環(huán)冗余校驗(CRC)計算。而是在各種外圍模 塊內(nèi)提供單獨的基于硬件或軟件的運算。根據(jù)各種實施例,可編程CRC產(chǎn)生器作為附 接到多個DMA通道的單個引擎而集成,這允許與固定CRC計算相反的可編程CRC類 型。
根據(jù)進一步增強,DMA控制器中的CRC模塊可耦合在DMA引擎與DMA總線之 間。根據(jù)又一增強,DMA總線可為總線矩陣,且CRC模塊可以是可編程的。根據(jù)又一增強,CRC模塊可包括移位寄存器,其具有多個移位單元和與分接頭多路復(fù)用器耦合的 相關(guān)聯(lián)分接頭,所述分接頭多路復(fù)用器提供反饋到移位寄存器的輸出信號。根據(jù)又一增 強,DMA控制器可進一步包括多個"異或"門,其與所述多個分接頭耦合,并接收分 接頭多路復(fù)用器的輸出信號。根據(jù)又一增強,DMA控制器可進一步包括多個選擇多路 復(fù)用器,其每一者選擇所述多個"異或"門中的一者或一移位單元的分接頭的輸出。根 據(jù)又一增強,DMA控制器可進一步包括用于控制所述多個選擇多路復(fù)用器的控制寄存 器。根據(jù)又一增強,DMA控制器可進一步包括用于控制分接頭多路復(fù)用器的寄存器。
關(guān)于執(zhí)行DMA轉(zhuǎn)移的方法的各種實施例,加載源數(shù)據(jù)的步驟可包括將源數(shù)據(jù)直接 加載到CRC模塊中的步驟。根據(jù)又一增強,加載源數(shù)據(jù)的步驟可包括將源數(shù)據(jù)加載到 DMA控制器中且隨后從DMA控制器加載到CRC模塊中的步驟。根據(jù)又一增強,CRC 模塊可包括移位寄存器,其具有多個移位單元和與分接頭多路復(fù)用器耦合的相關(guān)聯(lián)分接 頭,所述分接頭多路復(fù)用器提供反饋到移位寄存器的輸出信號。根據(jù)又一增強,CRC模 塊可進一步包括多個"異或"門,其與所述多個分接頭耦合,并接收分接頭多路復(fù)用器 的輸出信號。根據(jù)又一增強,CRC模塊可進一步包括多個選擇多路復(fù)用器,其每一者選 擇所述多個"異或"門中的一者或移位單元的分接頭的輸出。根據(jù)又一增強,初始化 CRC模塊的步驟可包括將反饋點加載到用于控制分接頭多路復(fù)用器的控制寄存器中的 步驟。根據(jù)又一增強,初始化CRC模塊的步驟可包括將多項式長度加載到用于控制所 述多個選擇多路復(fù)用器的寄存器中的步驟。根據(jù)又一增強,所述方法可進一步包括將 CRC的結(jié)果寫入到預(yù)定存儲器位置的步驟。
圖1展示直接存儲器存取(DMA)控制器100及其到存儲器160和中央處理單元 (CPU) nO的連接的第一實施例。提供總線接口 120以將DMA控制器耦合到中央處理 單元170??偩€接口 120允許對相應(yīng)地址指針110的編程,且允許與DMA引擎130直 接通信。DMA引擎130通過相應(yīng)的地址線175和數(shù)據(jù)線185與總線矩陣150耦合???線矩陣150用于耦合任何外圍設(shè)備、存儲器、快閃存儲器等。在圖l所示的實施例中, 僅存儲器塊160連接到總線矩陣。然而,多種類型的存儲器和如以外圍設(shè)備180、 190 展示的外圍設(shè)備可耦合到總線矩陣150。舉例來說,外圍設(shè)備中的一者可為串行通信接 口,例如RS 232接口、通用串行總線(USB)或火線接口。因此,直接存儲器存取轉(zhuǎn) 移可直接在此串行接口與存儲器160之間執(zhí)行。根據(jù)各種實施例,代替總線矩陣150, 可使用單個專用DMA總線或多個總線來將不同外圍設(shè)備和存儲器連接到DMA控制器 100。
根據(jù)一實施例,循環(huán)冗余校驗(CRC)模塊140集成在DMA控制器100內(nèi),并耦合在DMA引擎130與總線矩陣150之間,用于執(zhí)行循環(huán)冗余校驗。CRC模塊是可編程 的,且為此與總線接口 120耦合。因此,CPU 170可存取CRC模塊140,并根據(jù)如下文 將更詳細闡釋的CRC規(guī)范對其進行編程。當針對通道而激活時,數(shù)據(jù)可通過CRC模塊 140直接路由到DMA引擎130中,與通過數(shù)據(jù)線185將數(shù)據(jù)直接加載到DMA引擎中相 反。然而,或者在另一實施例中,CRC模塊可僅與DMA引擎130耦合。在此實施例中, 數(shù)據(jù)始終首先通過數(shù)據(jù)線185饋送到DMA引擎30中,且接著可通過CRC模塊140與 DMA引擎130之間的相應(yīng)耦合進一步加載到CRC模塊140中。
DMA引擎130可利用N通道DMA控制器,其能夠進行存儲器到存儲器、存儲器 到外圍設(shè)備或外圍設(shè)備到存儲器操作。每一通道可個別地編程,且可包括相關(guān)聯(lián)的控制 寄存器、地址寄存器和大小寄存器。CRC模塊140可在程序控制下與DMA控制器的通 道中的任一者一起使用。CRC模塊140的資源可與每一DMA通道共享。為此,可對相 應(yīng)寄存器進行寫入并保存相應(yīng)寄存器以控制CRC模塊140。因此,僅實施單個CRC模 塊。CRC模塊140允許利用基于硬件的DMA操作來執(zhí)行存儲器區(qū)或快閃存儲器內(nèi)容的 循環(huán)冗余校驗產(chǎn)生的能力。這提供比經(jīng)編程軟件方法快的處理量。如下文將更詳細闡釋, 通過將此實施為(例如)N到16個位的可編程CRC分接頭,用戶可實施通信協(xié)議所需 的任何特定CRC算法。
可在包含或不包含CRC模塊的情況下執(zhí)行DMA轉(zhuǎn)移。不需要CRC計算的DMA 轉(zhuǎn)移在轉(zhuǎn)移期間將不被指派有CRC模塊。舉例來說,將數(shù)據(jù)從一個存儲器位置移動到 另一存儲器位置將不需要CRC。可指定使用串行接口的數(shù)據(jù)轉(zhuǎn)移,以在傳輸結(jié)束時傳輸 CRC。在此實例中,將在發(fā)送或接收到數(shù)據(jù)時計算CRC,并比較結(jié)果。DMA模塊具有 額外模式,其是僅CRC模式,其中不轉(zhuǎn)移數(shù)據(jù),而是讀取數(shù)據(jù)且對所讀取的數(shù)據(jù)計算 CRC。這可用于檢驗存儲器中數(shù)據(jù)塊的完整性。在另一實施例中,CRC結(jié)果數(shù)據(jù)可在計 算完成時自動寫入到某一預(yù)定位置。舉例來說,每一 CRC的結(jié)果可寫入到預(yù)定存儲器 位置中的連續(xù)地址,或數(shù)據(jù)事務(wù)的最終結(jié)果可寫入到預(yù)定義的位置。
因此,可在包含或不包含CRC模塊的情況下執(zhí)行DMA轉(zhuǎn)移。舉例來說,使用串行 接口的數(shù)據(jù)轉(zhuǎn)移在兩個連續(xù)數(shù)據(jù)元素之間提供足夠的時間,以對每一所轉(zhuǎn)移數(shù)據(jù)元素執(zhí) 行CRC算法。許多其它數(shù)據(jù)轉(zhuǎn)移允許在連續(xù)數(shù)據(jù)元素之間執(zhí)行CRC算法。然而,如果 高速轉(zhuǎn)移不允許在連續(xù)數(shù)據(jù)元素之間執(zhí)行相應(yīng)的CRC算法,那么CRC算法可在完成的 轉(zhuǎn)移之后運行。因此,可在不執(zhí)行數(shù)據(jù)的實際DMA轉(zhuǎn)移的情況下使用CRC模塊。舉例 來說,CRC模塊可用于通過界定地址范圍來校驗任何類型的存儲器(例如,己被編程的 快閃存儲器)的完整性。CRC產(chǎn)生器可利用用于對CRC算法進行編程的分接頭寄存器,其為可含有CRC值 的初始預(yù)載和CRC運算之后的最終結(jié)果的讀取/寫入CRC寄存器。CRC/DMA引擎?zhèn)瓤?利用存儲器或快閃區(qū)的DMASRC/大小寄存器和"只讀操作"的長度來產(chǎn)生CRC。用戶 定義的選項允許使用DMADST寄存器作為指向CRC結(jié)果可被寫入到的地址的指針。
圖2展示可在DMA控制器內(nèi)使用的CRC產(chǎn)生器的實施例。分接頭寄存器由移位寄 存器單元230a、 240a、 250a、 ...270形成,所述移位寄存器單元由時鐘信號Clk和保持 信號Hold (保持)控制。圖2所示的實施例描繪16位CRC產(chǎn)生器的某些部分。然而, 可容易地實現(xiàn)具有8或32個位或任何其它大小的其它配置。單元230a的輸入與"異或" 門220的輸出耦合,所述"異或"門220從多路復(fù)用器210接收串行數(shù)據(jù)輸入信號225 和反饋輸出信號。單元230a的輸出與多路復(fù)用器210的第一輸入、選擇多路復(fù)用器X1 的第一輸入、"異或"門230b的第一輸入和CRC讀取總線280耦合。"異或"門230b 的第二輸入與來自多路復(fù)用器210的反饋輸出信號耦合,且"異或"門230b的輸出與 選擇多路復(fù)用器230c的第二輸入耦合。選擇多路復(fù)用器230c的輸出與下一移位單元 240a的輸入耦合,且與CRC寫入總線290耦合。接下來的移位單元240a...250a具備相 應(yīng)的"異或"門240b..250b以及選擇多路復(fù)用器240c…260c,且以與單元230a相同的 方式連接到多路復(fù)用器210的相應(yīng)輸入以及總線280和290。最后一個單元270的輸出 與多路復(fù)用器210的最后一個輸入以及CRC讀取總線280和CRC寫入總線290耦合。 多路復(fù)用器210由寄存器215 PLEN控制。多路復(fù)用器230c…260c由寄存器235 CTRL CRC控制。CRC讀取總線280可與含有結(jié)果的寄存器285耦合,且CRC寫入總線290 可耦合到含有預(yù)載值的寄存器295。
多路復(fù)用器210用于通過寄存器PLEN來選擇反饋點和CRC產(chǎn)生器的有效長度。 PLEN寄存器215控制CRC產(chǎn)生器200的長度,且可由用戶選擇。由多路復(fù)用器210的 輸出提供的反饋數(shù)據(jù)借助"異或"門230b...260c與當前在CRC移位寄存器230a、240a、 250a、 ...270中的數(shù)據(jù)進行"異或"運算。選擇多路復(fù)用器230c、 240c、 250c和260c 用于選擇"異或"數(shù)據(jù)或移位寄存器230a、 240a、 250a、 270中的先前數(shù)據(jù)是否在下一 時鐘上被移位。CTRL CRC寄存器235用于配置哪些位被移位通過以及哪些位采取與 CRC產(chǎn)生器中的先前數(shù)據(jù)(其含有多路復(fù)用器230c、 240c、 250c和260c的XI輸入) 進行"異或"運算的反饋數(shù)據(jù)。CRC寫入總線290可用于借助預(yù)載寄存器295來對CRC 230a、 240a、 250a、 270進行預(yù)載。CRC讀取總線280可用于讀取CRC產(chǎn)生器的值。待 饋送到CRC中的數(shù)據(jù)通過"異或"門220將移位到CRC中。
根據(jù)如(例如)圖1所示的實施例,CRC產(chǎn)生器布置在DMA控制器內(nèi),且可在DMA控制器所提供的不同DMA通道之間共享。DMA控制器內(nèi)的CRC引擎的組合防止 需要N字節(jié)深的FIFO額外開銷,因為主存儲器中存在純DMA操作。各種實施例提供 使用存儲器的緩沖器的操作系統(tǒng)友好方法,例如針對實時操作系統(tǒng)(RTOS)、哩納克斯 (Limix)、視窗CE (WindowsCE)等。CRC如上文針對存儲器片斷所闡釋是可編程的以 確保數(shù)據(jù)完整性,且在基于軟件的CRC計算上提供效率。CRC還可用于通信協(xié)議中以 檢驗數(shù)據(jù)完整性。依據(jù)應(yīng)用,可容易地指定不同CRC算法。舉例來說,如果DMA控制 器用于具有不同要求的串行協(xié)議,那么CRC產(chǎn)生器可相應(yīng)地被編程。圖2所示的布置 提供基于LFSR樣式鏈中的分接頭/ "異或"位置具有各種配置的線性反饋移位寄存器 (LFSR)。 CRC產(chǎn)生器還可用于存儲器/快閃完整性校驗。根據(jù)替代實施例,代替使用結(jié) 果寄存器285,在任選模式中,可設(shè)置DMA通道的目的地地址,其含有用于待寫入的 CRC結(jié)果的位置。根據(jù)又一實施例,可在DMA操作完成時產(chǎn)生中斷,以向中央處理單 元指示DMA轉(zhuǎn)移已完成。另外,可由CRC產(chǎn)生器產(chǎn)生多種中斷信號。舉例來說,如果 在CRC受控傳輸期間發(fā)生錯誤,那么可產(chǎn)生特定中斷。并且,可在成功的CRC傳輸后 產(chǎn)生特定中斷。
圖3展示根據(jù)一實施例的包含使用DMA控制器的CRC運算的各種DMA操作的流 程圖。首先,在步驟300中,通過對DMA控制器的相應(yīng)寄存器進行編程以執(zhí)行包含CRC 的DMA轉(zhuǎn)移來初始化DMA通道。為此,舉例來說,界定源和目的地的開始和結(jié)束地 址?;蛘?,在另一實施例中,界定源和目的地開始地址以及待轉(zhuǎn)移的數(shù)據(jù)塊的長度。源 和目的地地址可位于存儲器、快閃、所映射的外圍存儲器空間等中。此外,通道的初始 化還可包含通道編號、將在傳輸期間和/或之后產(chǎn)生的中斷信號,以及其它必要的控制信 號。接下來,將在步驟310中初始化CRC模塊。為此,舉例來說,可在相應(yīng)的控制寄 存器中界定多項式長度、CRC模塊被指派到的通道以及反饋點。 一旦已適當?shù)貓?zhí)行初始 化,就開始相應(yīng)的DMA通道傳輸。為此,在步驟320中從源地址讀取第一源數(shù)據(jù),并 在步驟330中將所述第一源數(shù)據(jù)加載到CRC模塊的相應(yīng)移位寄存器中。依據(jù)CRC模塊 的設(shè)置,可將CRC算法應(yīng)用于所述數(shù)據(jù),同時在步驟350中將數(shù)據(jù)寫入到目的地地址, 如由實心連接線所示?;蛘撸稍诓襟E340中校驗CRC模塊是否在步驟340中仍忙, 且可停止傳輸直到CRC產(chǎn)生其結(jié)果為止。如以虛線所指示,例程可在CRC完成之后, 通過遵循線380而繼續(xù)步驟350,或通過遵循線390而跳過寫入步驟。后者在DMA控 制器用于校驗先前被編程的快閃存儲器的完整性時尤其適用。在此情況下,將不發(fā)生到 目的地的數(shù)據(jù)寫入。在步驟360中,校驗是否已到達最后地址或數(shù)據(jù)塊的結(jié)尾,且如果 是,那么例程結(jié)束。否則,在步驟370中,使相應(yīng)的源和目的地地址遞增,且例程繼續(xù)步驟320。
在圖3中遵循線390進行存儲器區(qū)域的完整性校驗的情況下,可界定用于寫入CRC 的結(jié)果的目的地地址,且可將結(jié)果寫入到所述所指定的地址。并且,CRC模塊可產(chǎn)生指 示成功或不成功的CRC的相應(yīng)中斷信號。
圖4和圖5中展示具有硬件輔助的CRC產(chǎn)生器的DMA控制器的優(yōu)點。圖4說明根 據(jù)本發(fā)明特定實例實施例的表示112kbps下RS-232的CRC時間的硬件效率的曲線圖。 用于完成此任務(wù)的時間在y軸上以毫秒展示。x軸表示DMA模塊可在其下操作的不同 時鐘速度。條410表示根據(jù)一實施例的DMA控制器。條420表示由某一專用硬件輔助 的軟件CRC運算。條430表示在無硬件輔助的情況下僅由中央處理單元執(zhí)行的軟件CRC 運算。圖5說明根據(jù)本發(fā)明特定實例實施例的表示512千字節(jié)快閃存儲器的CRC時間 的硬件效率的與圖4類似的曲線圖。不同的條對應(yīng)于圖4所示的條。通過使用DMA模 塊來執(zhí)行CRC計算,CPU自由地執(zhí)行其它系統(tǒng)相關(guān)任務(wù)。
因此,本發(fā)明非常適合于實行所述目標并實現(xiàn)所提及的目的和優(yōu)點,以及其中固有 的其它目的和優(yōu)點。雖然已參考本發(fā)明的特定優(yōu)選實施例而描繪、描述且界定了本發(fā)明, 但這些參考并不暗示對本發(fā)明的限制,且不應(yīng)推斷出任何此類限制。如有關(guān)領(lǐng)域的一般 技術(shù)人員將想到,本發(fā)明在形式和功能上能夠容許相當多的修改、更改和等效物。所描 繪和描述的本發(fā)明的優(yōu)選實施例只是示范性的,且并不詳盡地闡明本發(fā)明的范圍。因此, 本發(fā)明意在僅由所附權(quán)利要求書的精神和范圍限定,從而在所有方面都給予等效物完全 認定。
權(quán)利要求
1.一種直接存儲器存取(DMA)控制器,其包括DMA總線;耦合到所述DMA總線的存儲器;與所述DMA總線耦合的DMA引擎;與所述DMA引擎耦合的循環(huán)冗余校驗(CRC)模塊;耦合到所述DMA引擎和所述CRC模塊的總線接口。
2. 根據(jù)權(quán)利要求1所述的DMA控制器,其中所述CRC模塊耦合在所述DMA引擎與 所述DMA總線之間。
3. 根據(jù)權(quán)利要求1所述的DMA控制器,其中所述DMA總線是總線矩陣。
4. 根據(jù)權(quán)利要求1所述的DMA控制器,其中所述CRC模塊是可編程的。
5. 根據(jù)權(quán)利要求4所述的DMA控制器,其中所述CRC模塊包括移位寄存器,所述 移位寄存器具有多個移位單元和與分接頭多路復(fù)用器耦合的相關(guān)聯(lián)分接頭,所述分 接頭多路復(fù)用器提供反饋到所述移位寄存器的輸出信號。
6. 根據(jù)權(quán)利要求5所述的DMA控制器,其進一歩包括多個"異或"門,所述"異或"門與所述多個分接頭耦合并接收所述分接頭多路復(fù)用器的所述輸出信號。
7. 根據(jù)權(quán)利要求6所述的DMA控制器,其進一步包括多個選擇多路復(fù)用器,所述選 擇多路復(fù)用器每一者選擇所述多個"異或"門中的一者或一移位單元的分接頭的 輸出。
8. 根據(jù)權(quán)利要求7所述的DMA控制器,其進一步包括用于控制所述多個選擇多路復(fù) 用器的控制寄存器。
9. 根據(jù)權(quán)利要求5所述的DMA控制器,其進一步包括用于控制所述分接頭多路復(fù)用 器的寄存器。
10. —種執(zhí)行直接存儲器存取(DMA)轉(zhuǎn)移的方法,其包括以下步驟a) 初始化DMA控制器中的DMA通道;b) 初始化與所述DMA控制器耦合的循環(huán)冗余校驗(CRC)模塊;c) 將源數(shù)據(jù)從源地址加載到所述CRC模塊中,并對所述所加載的源數(shù)據(jù)開始循 環(huán)冗余校驗算法;d) 使所述源地址遞增;e) 重復(fù)步驟c)和d),直到已到達源結(jié)束地址為止。
11. 根據(jù)權(quán)利要求10所述的方法,其中所述加載源數(shù)據(jù)的步驟包括將所述源數(shù)據(jù)直接 加載到所述CRC模塊中的步驟。
12. 根據(jù)權(quán)利要求IO所述的方法,其中所述加載源數(shù)據(jù)的步驟包括將所述源數(shù)據(jù)加載 到所述DMA控制器中且隨后從所述DMA控制器加載到所述CRC模塊中的步驟。
13. 根據(jù)權(quán)利要求IO所述的方法,其中所述CRC模塊包括移位寄存器,所述移位寄存 器具有多個移位單元和與分接頭多路復(fù)用器耦合的相關(guān)聯(lián)分接頭,所述分接頭多路 復(fù)用器提供反饋到所述移位寄存器的輸出信號。
14. 根據(jù)權(quán)利要求13所述的方法,其中所述CRC模塊進一步包括多個"異或"門,所 述"異或"門與所述多個分接頭耦合并接收所述分接頭多路復(fù)用器的所述輸出信 號
15. 根據(jù)權(quán)利要求14所述的方法,其中所述CRC模塊進一步包括多個選擇多路復(fù)用器, 所述選擇多路復(fù)用器每一者選擇所述多個"異或"門中的一者或一移位單元的分 接頭的輸出。
16. 根據(jù)權(quán)利要求13所述的方法,其中所述初始化所述CRC模塊的步驟包括將反饋點 加載到用于控制所述分接頭多路復(fù)用器的控制寄存器中的步驟。
17. 根據(jù)權(quán)利要求13所述的方法,其中所述初始化所述CRC模塊的步驟包括將多項式 長度加載到用于控制所述多個選擇多路復(fù)用器的寄存器中的步驟。
18. 根據(jù)權(quán)利要求10所述的方法,其進一步包括將CRC的結(jié)果寫入到預(yù)定存儲器位置 的步驟。
19. 一種直接存儲器存取(DMA)控制器,其包括總線矩陣;耦合到所述總線矩陣的存儲器; 與所述總線矩陣耦合的DMA引擎;耦合在所述DMA引擎與所述總線矩陣之間的可編程循環(huán)冗余校驗(CRC)模塊; 耦合到所述DMA引擎和所述CRC模塊的總線接口 。
20. 根據(jù)權(quán)利要求19所述的DMA控制器,其中所述CRC模塊包括移位寄存器,所述 移位寄存器具有多個移位單元和與分接頭多路復(fù)用器耦合的相關(guān)聯(lián)分接頭,所述分 接頭多路復(fù)用器提供反饋到所述移位寄存器的輸出信號。
21. 根據(jù)權(quán)利要求20所述的DMA控制器,其進一步包括多個"異或"門,所述"異 或"門與所述多個分接頭耦合并接收所述分接頭多路復(fù)用器的所述輸出信號。
22. 根據(jù)權(quán)利要求21所述的DMA控制器,其進一步包括多個選擇多路復(fù)用器,所述選擇多路復(fù)用器每一者選擇所述多個"異或"門中的一者或一移位單元的分接頭 的輸出。
23. 根據(jù)權(quán)利要求22所述的DMA控制器,其進一步包括用于控制所述多個選擇多路 復(fù)用器的控制寄存器。
24. 根據(jù)權(quán)利要求20所述的DMA控制器,其進一步包括用于控制所述分接頭多路復(fù) 用器的寄存器。
全文摘要
一種直接存儲器存取(DMA)控制器可包括DMA總線、耦合到所述DMA總線的存儲器、與所述DMA總線耦合的DMA引擎、與所述DMA引擎耦合的循環(huán)冗余校驗(CRC)模塊,以及耦合到所述DMA引擎和所述CRC模塊的總線接口。
文檔編號G06F11/10GK101553787SQ200780045621
公開日2009年10月7日 申請日期2007年12月10日 優(yōu)先權(quán)日2006年12月13日
發(fā)明者史蒂文·道森, 奈爾沙·拉杰巴爾提, 格雷格·D·拉赫蒂, 約瑟夫·W·特里斯, 羅德尼·J·佩薩文托 申請人:密克羅奇普技術(shù)公司