用於配置循環冗餘校驗(crc)產生電路以對數據流執行crc的方法和設備的製作方法
2023-06-07 18:07:56
專利名稱::用於配置循環冗餘校驗(crc)產生電路以對數據流執行crc的方法和設備的製作方法
技術領域:
:本發明大體上涉及微控制器中的錯誤校驗,且更明確地說,涉及一種用於配置循環冗餘檢驗(CRC)產生電路以對數據流執行錯誤校驗的方法和設備。技術背景如今,對在系統之間或在晶片的功能單元之間傳輸的數據使用錯誤校驗技術頗為常見。對數字數據頻繁使用的一種類型的錯誤檢測技術是循環冗餘校驗(CRC)。在CRC計算中,CRC等式將數據視為二進位數。所述數據(以二進位數的形式)接著除以被稱為CRC多項式的另一個二進位數。所述計算的餘數是CRC校驗和,其附加在所述數據的木尾以用於錯誤校驗目的。通過使所述數據和所述附加的CRC校驗和除以用於計算CRC校驗和的同一CRC多項式,來在所述數據在其目的地處被接收時,校驗所述數據的錯誤。如果所述除法的結果是零,那麼數據傳輸是成功的。如果所述除法的結果非零,那麼在傳輸期間數據出現錯誤。CRC校驗和可由硬體或軟體產生。常規的硬體CRC產生器通常硬連線到具有固定長度的一個多項式。因此,這些硬體CRC產生器只能使用一個CRC等式來計算CRC校驗和。單個CRC等式可能適合於專用裝置。然而,在通用裝置中,單個CRC等式不能對所有類型的數據提供所需的錯誤檢測能力。在這些裝置中,使用一個以上CRC等式可能需要CRC產生器的多個實例,其中每個CRC產生器硬連線到不同的CRC多項式。這種解決方案可能是不合需要的,因為必須針對所述實例中的每一者添加額外的電晶體,因此增加了電路的大小和晶片的成本。還可經由在處理器上執行的軟體來計算CRC校驗和。因為可使用任何CRC等式,所以使用軟體程序來計算CRC校驗和可提供通用裝置所需的靈活性。然而,軟體的缺點是計算速度,因為在處理器上運行的軟體不能實現與專用硬體相同的處理量。另外,在軟體中計算CRC校驗和可使用可用於其它目的的MIPs(每秒百萬條指令)。
發明內容本發明通過提供用於產生可配置的循環冗餘校驗(CRC)碼的設備、系統和方法,克服了現存技術的上文所識別的問題以及其它缺點和不足。在根據本發明的特定示範性實施例中,一種用於配置CRC產生電路以對數據流執行CRC的方法包含將與CRC等式相關聯的生成多項式存儲在寄存器中,其中所述生成多項式具有能夠變化的長度,使得所述長度具有小於或等於與CRC產生電路相關聯的位的數目的任何值。通過使用第一多路復用器產生反饋值,來選擇CRC產生電路的對應於生成多項式的長度的位位置。CRC產生電路經編程以基於存儲在寄存器中的生成多項式和來自選定的位位置的反饋值來計算CRC校驗和。在根據本發明的另一特定示範性實施例中,用於配置CRC產生電路以對數據流執行CRC的電路包含寄存器,其存儲與CRC等式相關聯的生成多項式,其中所述生成多項式具有能夠變化的長度,使得所述長度具有小於或等於位的最大數目的任何值。第一多路復用器耦合到所述寄存器,並基於生成多項式的長度而產生反饋值。CRC產生電路耦合到所述寄存器和所述第一多路復用器,並基於存儲在寄存器中的生成多項式和所述反饋值來計算CRC校驗和,所述反饋值選自CRC產生電路的對應於生成多項式的長度的位位置。在根據本發明的另一特定示範性實施例中,一種微控制器包含處理器,其產生數據流;以及耦合到所述處理器的寄存器,其存儲與CRC等式相關聯的生成多項式,其中所述生成多項式具有能夠變化的長度,使得所述長度具有小於或等於位的最大數目的任何值。第一多路復用器耦合到所述寄存器,並基於生成多項式的長度而產生反饋值。CRC產生電路耦合到寄存器和第一多路復用器,並基於存儲在寄存器中的生成多項式和所述反饋值而計算數據流的CRC校驗和,所述反饋值選自CRC產生電路的對應於生成多項式的長度的位位置。通過參考結合附圖進行的以下描述內容,可獲得對本發明及其優勢的更全面的理解,在附圖中圖1是根據本發明教示的能夠傳輸數據的系統的框圖;圖2是根據本發明教示的CRC產生電路的示意性框圖;圖3是根據本發明教示的針對特定示範性多項式的CRC產生電路的邏輯表示;以及圖4是用於產生可配置循環冗餘校驗(CRC)碼的方法的流程圖。雖然本發明易於具有各種修改和替代形式。本文詳細展示和描述本發明的特定示範性實施例。然而,應了解,本文所陳述的特定示範性實施例的描述內容無意使本發明限於本文所揭示的特定形式。相反,希望涵蓋屬於如由所附權利要求書所界定的本發明的精神和範圍內的所有修改和均等物。具體實施例方式現參看附圖,示意性地說明特定示範性實施例的細節。附圖中的相同元件將由相同標號表示,且類似元件將由具有不同小寫字母下標的相同標號表示。圖1說明能夠發射和接收數據的系統IO的框圖。系統IO可包含處理器12、存儲器14、循環冗餘校驗(CRC)產生電路16、多項式寄存器18和長度寄存器20。CRC產生電路16可以是可編程的,以便產生不同的錯誤校驗值(還被稱為CRC校驗和),其附加在數據流的末尾處。可通過使所述數據流除以生成多項式來計算CRC校驗和,其中CRC校驗和是所述除法的餘數。在所說明的示範性實施例中,生成多項式可存儲在多項式寄存器18中,且生成多項式的長度可存儲在長度寄存器20中。可將生成多項式和其對應長度編程到CRC產生電路16中,使得CRC產生電路16計算任何數據流的CRC校驗和。因此,CRC產生電路16提供一種在不增加晶片(例如,集成電路)的成本或大小或減小CRC校驗和計算的速度的情況下使用任何CRC等式的方法。處理器12可以是數字處理器、微控制器、微處理器、數位訊號處理器(DSP)、專用集成電路(ASIC)、可編程邏輯陣列(PLA)或任何其它經配置以執行存儲在存儲器14中的處理指令的數字或模擬電路。存儲器14可以是隨機存取存儲器(RAM)、電可擦除可編程只讀存儲器(EEPROM)、PCMCIA卡、快閃記憶體或易失性或非易失性存儲器的任何合適的選擇和/或陣列。多項式寄存器18和長度寄存器20可包含多個存儲元件,其能夠存儲二進位信息,且可由處理器12讀取和寫入。多項式寄存器18可用來存儲生成多項式的二進位表示,所述生成多項式由CRC產生電路16用來基於任何CRC等式計算CRC校驗和。長度寄存器20可用來存儲所述存儲在多項式寄存器18中的生成多項式的長度的二進位表示。可基於所述生成多項式中所包含的最大多項式項(例如,具有最高指數值的項)來確定所述長度。舉例來說,具有項x"+x卩+^+l的生成多項式具有16位的長度,因為x"項是具有最高指數值的多項式項。CRC產生電路16可以是能夠使用任何類型的CRC等式來計算CRC校驗和的任何類型的電路。在一個實施例中,CRC產生電路16可以實施為標準的串行移位CRC計算器。在系統10的操作期間,數據可在系統10中的功能單元之間傳輸,或傳輸到其它系統。為了確保無錯誤地傳輸數據,可使用CRC產生電路16來計算待附加在數據流的末尾處的CRC校驗和。所述數據可存儲在數據寄存器(未特意展示)中。處理器12可確定計算所存儲數據的合適CRC校驗和所需的CRC等式。與適當的CRC等式相關聯的生成多項式可存儲在多項式寄存器18中,且所述生成多項式的長度可存儲在長度寄存器20中。生成多項式可以是用於對數據流執行錯誤校驗的任何合適多項式,且長度可等於CRC校驗和所需的長度。為了計算CRC校驗和,可用存儲在多項式寄存器18中的生成多項式來編程CRC產生電路16,且存儲在長度寄存器20中的長度可用來選擇CRC產生電路16的位,從其可獲得反饋值。接著可將數據流(如由多項式表示)寫入到CRC產生電路16中,使得CRC產生電路16執行以下CRC等式來計算CRC校驗和formulaseeoriginaldocumentpage9其中d(x)是表示數據流的被除數多項式d(x),q(x)是執行除法之後被丟棄的商多項式,g(x)是生成多項式,且s(x)是餘數,其表示數據流的CRC校驗和。一旦計算出CRC校驗和,所述CRC校驗和就可附加到數據流的末尾上,使得可對所述數據流執行錯誤校驗。CRC產生電路16結合寄存器18和20提供一種用於在不向晶片添加大量電路或減小計算速度的情況下,在硬體中計算任何CRC校驗和的低成本技術。儘管處理器12與系統IO的其它組件分離(如圖1中所說明),但存儲器14、CRC產生電路16和寄存器18和20可與處理器12整合,使得每一組件都包含在單個集成電路上。另外,系統10可包含時序參考(例如,一個或一個以上時鐘)和輸入/輸出(I/O)外圍設備,其與處理器12分離或與處理器12整合。圖2說明可編程CRC產生電路16的示意性框圖。CRC產生電路16可包含觸發器22a到22p(通常被稱為觸發器22)、反饋門24a到24p(通常被稱為觸發器24),項多路復用器26b到26p(通常被稱為多路復用器26)以及反饋多路復用器28。CRC產生電路16可經編程以使用具有不同長度的多個CRC等式來計算CRC校驗和。為了計算與特定數據流相關聯的CRC校驗和,所述數據流、生成多項式可通過項多路復用器26的選擇輸入X[15:l]編程到CRC產生電路16中,且可通過反饋多路復用器28的控制輸入32編程生成多項式的長度,使得在對應於生成多項式的長度的位位置處從觸發器22的輸出選擇反饋值。因此,可用CRC等式中所使用的任何生成多項式編程CRC產生電路16,且所述多項式的長度可變化,使得所述長度具有小於或等於CRC產生電路16中所包含的位的數目的任何值。在所說明的示範性實施例中,CRC產生電路16包含十六個位,且使用標準的串行移位CRC計算器來實施,所述標準串行移位CRC計算器包含多個觸發器22、多個反饋門24和多個項多路復用器26。觸發器22可以是D觸發器,其在p1—clk的正或負邊緣上觸發,以將數據寫入到觸發器22的每一者中且從觸發器22的每一者讀取數據。反饋門24可以是"異或"門,其用於執行模數-2算法,以使表示數據流的多項式除以所述生成多項式。項多路復用器26和反饋多路復用器28可以是任何組合電路,其從至少兩個輸入中進行選擇,並將選定輸入引導到單個輸出。在其它實施例中,依據將要執行的多項式運算,CRC產生電路16可包含更少或更多觸發器22、反饋門24禾B/或項多路復用器26。舉例來說,對於使用32位生成多項式的CRC校驗和,CRC產生電路16可包含三十二個觸發器22、反饋門24和/或項多路復用器26。觸發器22、反饋門24和項多路復用器26中的每一者可形成多項式塊27,使得多個多項式塊27可串聯組合,以形成CRC產生電路16。如所說明,一個多項式塊的輸出(例如,觸發器22b的輸出)由鄰近的多項式塊的輸入(例如,項多路復用器26c的輸入中的一者)接收。CRC產生電路16的位0不能包含項多路復用器26,因為大多數CRC等式所需的0位總是被"異或"。另外,所說明的示範性實施例不包含針對位16的多項式塊27,因為任何16位CRC等式都假定第16個位被"異或"。在其它實施例中,可不包含針對CRC等式的最大多項式項的多項式塊27,因為假定最高有效位被"異或"。可通過用生成多項式編程CRC產生電路16以執行適當的CRC等式來針對任何類型的數據計算CRC校驗和。生成多項式的長度可從長度寄存器20獲得,且可用作反饋多路復用器28的控制輸入32,以選擇CRC產生電路16的適當位來用作反饋值36。因此,反饋值36可表示生成多項式中的最大多項式項。一旦已編程生成多項式的長度,那麼項多路復用器26可用於用存儲在多項式寄存器18中的生成多項式對CRC產生電路16進行配置。如所說明,多項式寄存器18的每個位X[15:l]可用作項多路復用器26中的每一者的控制輸入。如果生成多項式包含特定多項式項(例如,xn),那麼可將邏輯"1"存儲在多項式寄存器18的對應位位置中,且項多路復用器26可選擇反饋門24的輸出。否則,可將邏輯"0"存儲在多項式寄存器的位位置中,以指示生成多項式不包含特定多項式項,且項多路復用器26可選擇鄰近的多項式塊27的輸出。在一個實施例中,CRC產生電路16可接收將要從dout30計算出CRC校驗和的數據,dout30耦合到數據寄存器(未特意展示)的最高有效位。可通過將pl一clk的上升沿上的每個位(高至如由存儲在長度寄存器20中的長度所界定的最高有效位)移位到觸發器22a中,直到每個位都存儲在觸發器22中的適當一者中為止,來將所述數據(如由存儲在數據寄存器中的被除數多項式表示)寫入到觸發器22中。可在數據移位穿過觸發器22時,執行多項式除法。表示CRC校驗和的餘數可以是觸發器22的最終內容,且可以從CRC產生電路16移出商。在另一實施例中,CRC產生電路16可從CRC寫入總線40接收數據。處理器12可用來存取數據寄存器,且當觸發器22的每一者的保持信號保持低時,直接將所述數據的每個位寫入到觸發器22的適當一者中。而且,保存在長度寄存器20中的長度可用來確定應寫入到觸發器22中的數據的最高位。一旦數據已經被寫入到觸發器22中,便可執行多項式除法,且表示CRC校驗和的餘數可存儲在觸發器22中。在任一實施例中,可通過CRC讀取總線38由處理器12從觸發器22讀取CRC校驗和。圖3說明用示範性生成多項式編程的CRC產生電路16的邏輯表示。如先前所描述,可用任何生成多項式編程CRC產生電路16,使得CRC產生電路16可通過使用與生成多項式相關聯的CRC等式來計算數據流的適當CRC校驗和。舉例來說,表l包含用於針對不同應用產生CRC校驗和的生成多項式的列表。所述多項式意在說明而不是包含可存儲在多項式寄存器18中且由CRC產生電路16使用的生成多項式。tableseeoriginaldocumentpage11表1在所說明的示範性實施例中,用於CRC-CCITT計算的生成多項式被編程在CRC產生電路16中。如表l中所示,CRC-CCITT生成多項式可由以下等式表示x16+X12+x5+l其中所述等式中的每個指數項表示多項式項。所述多項式的二進位表示可以是b000100000010000,其中第五和第十二個位位置中的邏輯"1"分別表示xS和x"多項式項。可基於最大多項式項來確定生成多項式的長度。舉例來說,CRC-CCITT生成多項式中的最高多項式項是x16。因此,CRC-16多項式的長度的二進位表示是b1111。為了將CRC-CCITT生成多項式編程到CRC產生電路16中,可將多項式寄存器18中的位X[15:1]設置為000100000010000,且可將長度寄存器20中的位PLEN[3:0]設置為1111。CRC-CCITT生成多項式的長度可用作反饋多路復用器28(如圖2中所示)的控制輸入32,以選擇觸發器22p(例如,與CRC產生電路16的第16個位相關聯的觸發器)的輸出作為反饋值36。一旦反饋值36已經被確定,那麼CRC-CCITT生成多項式的二進位表示可用作項多路復用器26(如圖2中所示)的控制輸入X[15:l]。生成多項式的第五和第十二個位位置中的邏輯"1"可由項多路復用器26f和26m用來分別選擇反饋門24f和24m的輸出。一旦編程有CRC-CCITT生成多項式,CRC產生電路16便通過使數據多項式的所有位移位穿過CRC產生電路16或通過CRC寫入總線40將數據多項式寫入觸發器22的每一者中來執行所述計算。如所說明,CRC產生電路16通過"異或"反饋值36與觸發器22e和221的輸出來計算CRC校驗和。接著,可將反饋值36與觸發器22e的輸出的"異或"結果存儲在觸發器22f中,且將反饋值36與觸發器221的輸出的"異或"結果存儲在觸發器22m中。一旦計算完成,便可通過CRC讀取總線38從觸發器22讀取CRC等式的CRC校驗和。圖4說明用於產生可配置CRC碼的方法的流程圖。通常,數據運算的錯誤校驗中所使用的生成多項式可被翻譯成二進位值,並存儲在寄存器中。可基於最大多項式項(例如,具有最高指數值的項)來確定所述多項式的長度,並存儲在另一寄存器中。在系統操作期間,數據可由系統處理器產生,並被寫入到數據寄存器中。在一些例子中,CRC校驗和可被計算出且附加在數據的末尾處,使得可執行錯誤校驗。生成多項式及其相關聯的長度可被編程在CRC產生電路中,以便對存儲在數據寄存器中的數據執行CRC計算。一旦生成多項式已被編程,便將來自數據寄存器的數據寫入到CRC產生電路中,且可用CRC等式來計算所述數據的CRC校驗和。通過使用寄存器來存儲生成多項式的描述,且用生成多項式來編程CRC產生電路,可針對系統處理器所產生的每一種類型的數據計算具有任何長度的任何合適的CRC校驗和。在步驟50處,生成多項式的二進位表示可存儲在多項式寄存器18中,且生成多項式的長度的二進位表示可存儲在長度寄存器20中。所述二進位表示可包含描述所需生成多項式的一連串位。舉例來說,CRC-CCITT多項式x16+x12+x5+1可翻譯成二進位值10001000000100001,其中等式中的多項式項由邏輯"1"表示。在一個實施例中,第16個和第0個位可總是被"異或",使得所述位不必存儲在多項式寄存器18中。因此,如表1中所述,存儲在多項式寄存器18中的CRC-CCITT多項式的二進位表示可以是X[15:l]=000100000010000。可基於最大多項式項(例如,具有最大指數值的多項式項)來確定生成多項式的長度。舉例來說,CRC-CCITT生成多項式中的最大項是x16,使得所述多項式的長度是16個位。因此,所述長度可翻譯成二進位值1111,且可作為PLEN[3:0]存儲在長度寄存器20中。在一個實施例中,可使用處理器12來確定存儲在多項式寄存器18中的適當的生成多項式,且可通過使用存儲在存儲器14中的編程指令和/或由處理器12執行的軟體,基於最大多項式項來確定多項式的長度。在步驟52處,數據多項式(如由二進位數表示)可由處理器12存儲在數據寄存器中。所述數據可以是可計算出CRC校驗和並附加到數據的末尾上以用於錯誤校驗目的的任何類型的數據。儘管歩驟50和52己經被描述為以特定次序執行,但所述歩驟可以任何次序或同時執行。在歩驟54處,可將存儲在長度寄存器20中的生成多項式的長度編程到CRC產生電路16中。所述長度可用作反饋多路復用器28的控制輸入32,以便確定生成多項式的最高有效位,並在所述最高有效位處選擇觸發器22的輸出,以便產生反饋值36。在步驟56處,可將存儲在多項式寄存器18中的生成多項式編程到CRC產生電路中。生成多項式可用作項多路復用器26的控制輸入X[15:l],以選擇反饋門24的輸出或鄰近的多項式塊27的輸出。儘管歩驟54和56已經被描述為以特定次序執行,但所述步驟可以任何次序或同時執行。在步驟58處,項多路復用器26可確定保存在多項式寄存器18中的生成多項式是否包含相關聯位的多項式項。在一個實施例中,生成多項式的二進位表示中的邏輯"1"可表示所述生成多項式包含對應位位置的多項式項,且邏輯"0"可表示所述生成多項式不包含對應位位置的多項式項。如果項多路復用器26的控制輸入是邏輯"0",那麼項多路復用器28在步驟60處選擇鄰近的多項式塊27的輸出。如果項多路復用器26的控制輸入是邏輯"1",那麼項多路復用器26在歩驟62處選擇反饋門26的輸出。在一個實施例中,反饋門26的輸出可以是反饋值36與鄰近的多項式塊27的輸出的"異或"。一旦已將生成多項式編程在CRC產生電路16中,便可在步驟66處將來自數據寄存器的數據寫入到CRC產生電路中。在一個實施例中,所述數據一次可從數據寄存器移位一個位穿過dout30進入CRC產生電路16中,直到每個位都存儲在觸發器22的對應一者中。在其它實施例中,可通過CRC寫入總線40,同時將數據的所有位寫入到觸發器22的對應一者中。在歩驟68處,CRC產生電路16可用來基於經編程的生成多項式而計算所述數據的CRC校驗和。在一個實施例中,可通過使所述數據多項式除以所述生成多項式來計算CRC校驗和,其中所述計算的餘數成為CRC校驗和。如果所述數據通過dout30移位到CRC產生電路16中,那麼當數據移位穿過觸發器22時,可執行多項式除法。在步驟70處,處理器12確定CRC計算是否完整。如果所述計算是不完整的,那麼處理器12繼續在步驟66處將數據寫入CRC產生電路12中,且繼續在步驟68處執行多項式除法。如果計算是完整的,那麼在步驟72處,將CRC校驗和附加在數據的末尾處。在一個實施例中,CRC校驗和可以是存儲在觸發器22中的最終結果,且可通過CRC讀取總線38讀取。已經依據特定示範性實施例描述了本發明。根據本發明,系統的參數通常可隨著設計工程師針對所需應用指定和選擇所述參數而變化。舉例來說,依據將要執行的多項式運算,CRC產生電路16可包含更少或更多的多項式塊27。另外,可將除表l中所列舉的那些生成多項式之外的生成多項式編程到CRC產生電路16中,以提供適當的CRC等式。另外,預期可容易由所屬領域的技術人員基於本文所陳述的教示而設計的其它實施例可在由所附權利要求書界定的本發明的範圍內。受益於本文所陳述的教示的所屬領域的技術人員將明白,可以不同但均等的方式來修改和實施本發明。權利要求1.一種用於配置循環冗餘校驗(CRC)產生電路以對數據流執行CRC的方法,其包括將與CRC等式相關聯的生成多項式存儲在寄存器中,所述生成多項式包含能夠變化的長度,使得所述長度具有小於或等於與CRC產生電路相關聯的位的數目的任何值;通過使用第一多路復用器產生反饋值來選擇所述CRC產生電路的對應於所述生成多項式的所述長度的位位置;以及對所述CRC產生電路進行編程,以基於存儲在所述寄存器中的所述生成多項式和來自所述選定的位位置的所述反饋值來計算CRC校驗和。2.根據權利要求1所述的方法,其進一步包括基於所述多項式中的最大項來確定所述生成多項式的所述長度,所述最大項具有小於或等於與所述CRC產生電路相關聯的位的所述數目的指數值。3.根據權利要求1所述的方法,其中選擇所述CRC產生電路中的所述位位置包括基於所述生成多項式的所述長度啟用所述第一多路復用器的對應於所述選定的位位置的輸入,使得由所述第一多路復用器將所述選定的位位置的輸出選擇作為所述反饋值。4.根據權利要求1所述的方法,其中所述CRC產生電路包括多個多項式塊,其按次序連接,使得每個多項式塊表示所述生成多項式的一個多項式項,每個多項式塊包括第二多路復用器,其包含第一多路復用器輸入、第二多路復用器輸入和多路復用器輸出,所述第一多路復用器輸出可操作以接收前一鄰近的多項式塊的輸出;觸發器,其包含可操作以接收所述第二多路復用器的所述多路復用器輸出的觸發輸入以及由隨後鄰近的多項式塊的輸入接收的觸發輸出;以及反饋門,其包含可操作以接收所述前一鄰近的多項式塊的所述輸出的第一門輸入、可操作以接收所述反饋值的第二門輸入以及由所述第二多路復用器輸入接收的門輸出。5.根據權利要求4所述的方法,其中所述反饋門包括"異或"(XOR)門。6.根據權利要求4所述的方法,其中用所述生成多項式編程所述CRC產生電路包括如果所述第二多路復用器選擇所述反饋門的所述輸出,那麼由所述多項式塊中的一者產生所述多項式項。7.根據權利要求1所述的方法,其中所述寄存器包括多個位,每個位可操作以確定多項式項是否存在於所述生成多項式中。8.根據權利要求1所述的方法,其進一步包括-將所述生成多項式的二進位表示存儲在第一寄存器中;以及將所述生成多項式的所述長度的二進位表示存儲在第二寄存器中。9.一種用於配置循環冗餘校驗(CRC)產生電路以對數據流執行CRC的設備,其包括寄存器,其可操作以存儲與CRC等式相關聯的生成多項式,所述生成多項式包含能夠變化的長度,使得所述長度具有小於或等於位的最大數目的任何值;第一多路復用器,其耦合到所述寄存器且可操作以產生反饋值;以及CRC產生電路,其耦合到所述寄存器和所述第一多路復用器,所述CRC產生電路可操作以基於所述反饋值和存儲在所述寄存器中的所述生成多項式來計算CRC校驗和,所述反饋值選自所述CRC產生電路的對應於所述生成多項式的所述長度的位位置。10.根據權利要求9所述的設備,其中基於所述生成多項式中的最大項來確定所述生成多項式的所述長度,所述最大項具有小於或等於與所述CRC產生電路相關聯的位的所述數目的指數值。11.根據權利要求9所述的設備,其中所述第一多路復用器包括多個輸入,其對應於所述CRC產生電路的每個位位置;輸出;以及控制輸入,其可操作以啟用對應於所述選定的位位置的所述輸入,使得在所述輸出處引入所述反饋值。12.根據權利要求9所述的設備,其中所述CRC產生電路包括多個多項式塊,其按次序連接,使得每個多項式塊表示所述生成多項式的一個多項式項,每個項塊包括第二多路復用器,其包含第一多路復用器輸入、第二多路復用器輸入和多路復用器輸出,所述第一多路復用器輸出可操作以接收前一鄰近的多項式塊的輸出;觸發器,其包含可操作以接收所述第二多路復用器的所述多路復用器輸出的觸發輸入以及由隨後鄰近的多項式塊的輸入接收的觸發輸出;以及反饋門,其包含可操作以接收所述前一鄰近的多項式塊的所述輸出的第一門輸入、可操作以接收所述反饋值的第二門輸入以及由所述第二多路復用器輸入接收的門輸出。13.根據權利要求12所述的設備,其中所述反饋門包括"異或"(XOR)門。14.根據權利要求12所述的設備,其中如果所述第二多路復用器選擇所述反饋門的所述輸出,那麼所述多項式塊產生所述多項式項。15.根據權利要求9所述的設備,其中所述寄存器包括多個位,每個位可操作以確定多項式項是否存在於所述CRC等式中。16.—種微控制器,其包括處理器,其可操作以產生數據流;寄存器,其耦合到所述處理器,且可操作以存儲與CRC等式相關聯的生成多項式,所述生成多項式包含能夠變化的長度,使得所述長度具有小於或等於位的最大數目的任何值;第一多路復用器,其耦合到所述寄存器且可操作以產生反饋值;以及CRC產生電路,其耦合到所述寄存器和所述第一多路復用器,所述CRC產生電路可操作以基於所述反饋值和存儲在所述寄存器中的所述生成多項式來計算所述數據流的CRC校驗和,所述反饋值選自所述CRC產生電路的對應於所述生成多項式的所述長度的位位置。17.根據權利要求16所述的微控制器,其中基於所述生成多項式中的最大項來確定所述生成多項式的所述長度,所述最大項具有小於或等於與所述CRC產生電路相關聯的位的所述數目的指數值。18.根據權利要求16所述的微控制器,其中所述第一多路復用器包括多個輸入,其對應於所述CRC產生電路的每個位位置;輸出;以及控制輸入,其可操作以啟用對應於所述選定的位位置的所述輸入,使得在所述輸出處引入所述反饋值。19.根據權利要求16所述的微控制器,其中所述CRC產生電路包括多個多項式塊,其按次序連接,使得每個多項式塊表示所述生成多項式的一個多項式項,每個項塊包括第二多路復用器,其包含第一多路復用器輸入、第二多路復用器輸入和多路復用器輸出,所述第一多路復用器輸出可操作以接收前一鄰近的多項式塊的輸出;觸發器,其包含可操作以接收所述第二多路復用器的所述多路復用器輸出的觸發輸入以及由隨後鄰近的多項式塊的輸入接收的觸發輸出;以及反饋門,其包含可操作以接收所述前一鄰近的多項式塊的所述輸出的第一門輸入、可操作以接收所述反饋值的第二門輸入以及由所述第二多路復用器輸入接收的門輸出。20.根據權利要求19所述的微控制器,其中所述反饋門包括"異或"(XOR)門。21.根據權利要求19所述的微控制器,其中如果所述第二多路復用器選擇所述反饋門的所述輸出,那麼所述多項式塊產生所述多項式項。22.根據權利要求16所述的微控制器,其中所述微控制器被製造成集成電路。全文摘要本發明揭示一種用於配置循環冗餘校驗(CRC)產生電路以對數據流執行CRC的方法和設備。所述方法包含將與CRC等式相關聯的生成多項式存儲在寄存器中,其中所述生成多項式具有能夠變化的長度,使得所述長度具有小於或等於與CRC產生電路相關聯的位的數目的任何值。通過使用第一多路復用器產生反饋值來選擇所述CRC產生電路的對應於所述生成多項式的所述長度的位位置。所述CRC產生電路經編程以基於存儲在所述寄存器中的所述生成多項式和來自所述選定的位位置的所述反饋值來計算CRC校驗和。文檔編號H03M13/09GK101223700SQ200680025591公開日2008年7月16日申請日期2006年6月28日優先權日2005年7月13日發明者拉維恩·羅伊瓦尼特,魯沙恩·J·薩穆埃爾申請人:密克羅奇普技術公司