專利名稱:一種可用于大容量存儲器的rs(256,252)碼糾錯譯碼芯片的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種糾錯譯碼芯片,特別是涉及一種用于大容量存儲器的RS(256,252)碼的糾錯譯碼芯片。
背景技術(shù):
在信息的傳輸和存儲中,由于信道或者環(huán)境噪聲的干擾,往往會導(dǎo)致傳輸和存儲的信息發(fā)生錯誤。1948年,香農(nóng)提出了信息論。其中,“有擾離散信道的信道編碼定理”指出通過增加信息的冗余進(jìn)行差錯控制的技術(shù),即信息數(shù)據(jù)在傳輸和存儲前進(jìn)行編碼,在接收和提取數(shù)據(jù)時通過冗余信息譯碼,糾正在傳輸和存儲過程中發(fā)生的錯誤。人們研究出了多種碼字和編譯碼方法。1960年,REED和SOLOMON提出了里德-所羅門碼,簡稱RS碼。RS碼具有優(yōu)秀的糾突發(fā)錯誤的能力,在無線通信和存儲系統(tǒng)中應(yīng)用廣泛。
由于RS碼自身的特點(diǎn),RS碼的譯碼方法本身比較復(fù)雜,譯碼方法的工程實(shí)現(xiàn)比較困難,工程成本較高,且難以達(dá)到理想的譯碼速度。一種RS碼的譯碼器能否工程實(shí)現(xiàn)以及工程實(shí)現(xiàn)的代價(jià)和效果如何,往往成為該RS碼是否實(shí)用的決定因素。而RS譯碼器的工程實(shí)現(xiàn)也成為工程技術(shù)人員研究和實(shí)踐的焦點(diǎn)。
大容量存儲器廣泛應(yīng)用于航天、工業(yè)、消費(fèi)電子等領(lǐng)域的數(shù)據(jù)存儲。惡劣的環(huán)境將造成存儲數(shù)據(jù)發(fā)生不可預(yù)見的錯誤;在消費(fèi)電子領(lǐng)域的磁、光存儲介質(zhì),也會由于物理破損造成數(shù)據(jù)丟失和損壞。因此,數(shù)據(jù)的正確可靠和高速存取技術(shù)是大容量存儲器的關(guān)鍵技術(shù)之一。目前,許多大容量存儲器都采用了RS碼對數(shù)據(jù)進(jìn)行處理作為差錯控制的措施。但是,由于大容量存儲器自身的特點(diǎn),如要求保證相當(dāng)高的存儲容量,高速數(shù)據(jù)存取,控制復(fù)雜邏輯等等,都要求采用一種簡單高效的RS碼字和有效的實(shí)現(xiàn)方式。過去往往采用軟件進(jìn)行譯碼,但是對于大容量的存儲數(shù)據(jù),例如存儲容量為2Gbit的數(shù)據(jù),則譯碼時間需要大約至少7個小時,難以滿足實(shí)際需要。這些都迫切要求RS譯碼器有一個高速高效的硬件工程實(shí)現(xiàn)。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服許多大容量存儲器采用軟件對RS碼進(jìn)行譯碼,譯碼時間太長的缺陷;從而為大容量存儲器提供一種RS(256,252)碼的糾錯譯碼芯片,該芯片針對大容量存儲器的特點(diǎn),能夠?qū)Υ笕萘看鎯ζ髦薪?jīng)過RS(256,252)編碼的數(shù)據(jù)進(jìn)行糾錯譯碼,糾正兩個字節(jié)以內(nèi)的錯誤,同時具有較高的速度,整個糾錯譯碼電路全部在可編程邏輯器件(可以是FPGA)芯片中實(shí)現(xiàn)。
本發(fā)明提供的RS(256,252)碼的糾錯譯碼芯片,包括一伴隨式計(jì)算電路5,待糾錯的每塊數(shù)據(jù)(256字節(jié))輸入伴隨式計(jì)算電路5,計(jì)算伴隨式,該256字節(jié)數(shù)據(jù)同時輸入FIFO電路8;輔助參數(shù)計(jì)算電路6與伴隨式計(jì)算電路5連接,根據(jù)伴隨式計(jì)算電路5的輸出計(jì)算輔助參數(shù);錯誤情況判斷電路7分別與伴隨式計(jì)算電路5和輔助參數(shù)計(jì)算電路6相連接,錯誤情況判斷電路7根據(jù)伴隨式計(jì)算電路5和輔助參數(shù)計(jì)算電路6的輸出,判斷256字節(jié)數(shù)據(jù)的錯誤情況;錯誤值按錯誤位置輸出電路9與錯誤情況判斷電路7相連接,根據(jù)錯誤情況判斷電路7的輸出結(jié)果,錯誤值按錯誤位置輸出電路9中的糾錯選擇電路91選擇子模塊92,93,94和95之一工作,在發(fā)生錯誤的位置輸出對應(yīng)的錯誤值;最后各個子模塊的輸出通過多路選擇電路96輸出;FIFO電路8的輸出和錯誤值按錯誤位置輸出電路9的輸出都連接到糾錯譯碼電路10,使錯誤值與待糾錯數(shù)據(jù)對應(yīng)相加,實(shí)現(xiàn)糾錯,最后輸出時去掉校驗(yàn)字節(jié),完成糾錯譯碼。錯誤字節(jié)計(jì)數(shù)電路11與錯誤情況判斷電路7相連,獲得錯誤字節(jié)個數(shù),累加結(jié)果返回系統(tǒng)總線,供系統(tǒng)查詢。參見圖2。可以根據(jù)處理器和硬件平臺的數(shù)據(jù)總線寬度,使用多個糾錯譯碼電路并行工作,提高糾錯譯碼速度。
本發(fā)明提供的RS(256,252)碼的糾錯譯碼芯片,還包括輸入接口電路1,該輸入接口電路1一方面與具體的系統(tǒng)環(huán)境相連接,完成系統(tǒng)與糾錯譯碼電路之間的交互,從系統(tǒng)中得到時鐘、復(fù)位、讀寫控制、片選等控制信號和數(shù)據(jù)/地址信號,同時系統(tǒng)也通過輸入接口電路查詢糾錯譯碼電路的工作情況。另一方面與糾錯譯碼電路2和3相連,供給糾錯譯碼電路正確的數(shù)據(jù)輸入和糾錯譯碼使能信號。該電路主要的功能是鎖存總線上的待糾錯譯碼數(shù)據(jù);產(chǎn)生糾錯譯碼電路的使能控制信號;返回糾錯譯碼電路的狀態(tài)和差錯字節(jié)計(jì)數(shù),參見圖7。
所述的輸入接口電路1包括“片選1”信號和系統(tǒng)的寫信號通過或非門101和觸發(fā)器102,產(chǎn)生糾錯譯碼器的時鐘,通過觸發(fā)器103獲得并緩存系統(tǒng)總線上的待譯碼的數(shù)據(jù);“片選2”信號和系統(tǒng)寫信號通過或非門107控制觸發(fā)器105的使能,同時決定計(jì)數(shù)器108是否清零;總線上的信號104決定信號106的值,而信號106決定選擇器109選擇輸出0還是輸出計(jì)數(shù)器108的計(jì)數(shù)結(jié)果;信號通過D觸發(fā)器110輸出最終的譯碼器使能信號。計(jì)數(shù)器108重復(fù)輸出256個時鐘周期的高電平和13個周期的低電平。
本發(fā)明提供的RS(256,252)碼的糾錯譯碼芯片,還包括輸出接口電路4,該輸出接口電路4與糾錯譯碼電路2和/或3相連接,獲得糾錯譯碼結(jié)果,經(jīng)處理后按需要輸出給下級設(shè)備,該接口可以是與高速復(fù)接器的輸出接口,它實(shí)現(xiàn)了對糾錯譯碼數(shù)據(jù)的并串轉(zhuǎn)換,輸出串行數(shù)據(jù)和串行時鐘;同時,還實(shí)現(xiàn)旁路邏輯,當(dāng)前端糾錯譯碼電路失效時,旁路糾錯譯碼輸出,直接輸出原始數(shù)據(jù),提高了系統(tǒng)的可靠性和靈活性。
所述的輸出接口電路4包括“片選2”信號和系統(tǒng)的寫信號通過或非門41和D觸發(fā)器42產(chǎn)生信號43,控制選擇器44選擇糾錯譯碼后的數(shù)據(jù)和未經(jīng)糾錯譯碼的數(shù)據(jù)之一輸出給并串轉(zhuǎn)換電路47,實(shí)現(xiàn)旁路功能;“片選1”信號和系統(tǒng)的寫信號通過或非門45和與門46產(chǎn)生并串轉(zhuǎn)換電路47的LOAD信號,并串轉(zhuǎn)換電路47完成并串轉(zhuǎn)換,輸出串行數(shù)據(jù)和串行時鐘。如圖8所示。
所述的CPU可以是x86,PowerPC等CPU,總線可以是PCI、USB、IEEE1394等總線。
所述的伴隨式計(jì)算電路5,該電路的實(shí)現(xiàn)有多種方式,本實(shí)施例采用譯碼數(shù)據(jù)多項(xiàng)式R(x)除以最小多項(xiàng)式所得的余式來求伴隨式的實(shí)現(xiàn)方法。每個時鐘周期計(jì)算一次,當(dāng)所有的數(shù)據(jù)輸入芯片以后,伴隨式即同時計(jì)算完成。
本發(fā)明的糾錯譯碼芯片是RS(256,252)碼的糾錯譯碼芯片,其優(yōu)點(diǎn)在于1、本發(fā)明提供的芯片可以用于大容量存儲器,該芯片具有速度快,效率高的糾錯譯碼能力,即RS譯碼器有一個高速高效的硬件工程實(shí)現(xiàn)。
2、本發(fā)明的芯片具有差錯字節(jié)計(jì)數(shù)功能、具有旁路可靠性設(shè)計(jì)、多位數(shù)據(jù)并行糾錯譯碼和多種接口方式。
圖1是本發(fā)明提供的一種RS(256,252)碼糾錯譯碼芯片實(shí)施例組成框圖。
圖2是本發(fā)明提供的RS(256,252)碼糾錯譯碼芯片的糾錯譯碼電路框圖。
圖3是本發(fā)明的芯片中所用的伴隨式計(jì)算電路框圖。
圖4是本發(fā)明的芯片中所用的有限域乘除運(yùn)算電路在實(shí)施例1中的框圖。
圖5A,圖5B,圖5C分別是本發(fā)明芯片中所用的有限域GF(28)元素乘以α,α2和α3的電路框圖。
圖6是本發(fā)明芯片一種實(shí)施例1的工作時序信號波形圖。
圖7是實(shí)施例1芯片的輸入接口電路與嵌入式x86處理器的接口電路圖。
圖8是本發(fā)明芯片的輸出接口電路9是本發(fā)明的芯片的有限域乘除運(yùn)算電路在具體實(shí)施方式
3中的框圖。
圖面說明1輸入接口電路 2糾錯譯碼電路 3糾錯譯碼電路4輸出接口電路 5伴隨式計(jì)算電路6輔助參數(shù)計(jì)算電路7錯誤情況判斷電路 8FIFO電路9錯誤值按錯誤位置輸出電路 10糾錯譯碼電路11錯誤字節(jié)計(jì)數(shù)電路41或非門 42D觸發(fā)器 44選擇器45或非門 46與門 47并串轉(zhuǎn)換電路101或非門 102D觸發(fā)器 103D觸發(fā)器105D觸發(fā)器 107或非門 108計(jì)數(shù)器109選擇器 110D觸發(fā)器 91糾錯選擇電路a0,a1,a2,a3,a4,a5,a6,a7 1位寄存器b0,b1,b2,b3,b4,b5,b6,b7 1位寄存器c0,c1,c2,c3,c4,c5,c6,c7 1位寄存器具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施方式
對本發(fā)明作進(jìn)一步詳細(xì)描述。
實(shí)施例1參見圖2,待譯碼數(shù)據(jù)塊進(jìn)入伴隨式計(jì)算電路5計(jì)算伴隨式,數(shù)據(jù)同時進(jìn)入先入先出緩存(FIFO)電路8。輔助參數(shù)計(jì)算電路6與伴隨式計(jì)算電路5連接,根據(jù)伴隨式計(jì)算電路5的輸出來計(jì)算輔助參數(shù)。錯誤情況判斷電路7分別與伴隨式計(jì)算電路5和輔助參數(shù)計(jì)算電路6相連接,根據(jù)伴隨式計(jì)算電路5和輔助參數(shù)計(jì)算電路6的計(jì)算結(jié)果,錯誤情況判斷電路7判斷256字節(jié)數(shù)據(jù)的錯誤情況。錯誤值按錯誤位置輸出電路9與錯誤情況判斷電路7相連接,根據(jù)錯誤情況判斷電路7的輸出結(jié)果,錯誤值按錯誤位置輸出電路9中的糾錯選擇電路91選擇子模塊92,93,94和95中的一個模塊工作,在發(fā)生錯誤的位置輸出對應(yīng)的錯誤值。最后各個子模塊的輸出通過多路選擇電路96輸出。FIFO電路8的輸出和電路9的輸出都連接到糾錯譯碼電路10,通過糾錯譯碼電路10,將求得的錯誤值與FIFO緩存的待糾錯數(shù)據(jù)相加,實(shí)現(xiàn)糾錯;最后輸出時去掉校驗(yàn)字節(jié),完成糾錯譯碼。錯誤字節(jié)計(jì)數(shù)電路11與錯誤情況判斷電路7相連,獲得錯誤字節(jié)個數(shù),并進(jìn)行累加,累加結(jié)果返回系統(tǒng)總線,供系統(tǒng)查詢。
在糾錯譯碼電路中,伴隨式計(jì)算電路5參見圖3。伴隨式計(jì)算電路5實(shí)現(xiàn)有多種方式,本實(shí)施例采用譯碼數(shù)據(jù)多項(xiàng)式R(x)除以最小多項(xiàng)式所得的余式來求伴隨式的方法。伴隨式計(jì)算電路5中乘以α,α2和α3的電路分別參見圖5A,圖5B,圖5C中的電路。圖中每個電路都有8個1位寄存器,用以存放初值和每次運(yùn)算的結(jié)果。在每個時鐘周期內(nèi),這三個電路都分別完成一次乘以α,α2和α3的運(yùn)算。伴隨式計(jì)算電路5每個時鐘周期運(yùn)算一次,當(dāng)所有的數(shù)據(jù)輸入芯片以后,伴隨式即同時計(jì)算完成。在每個時鐘周期內(nèi),S0與輸入的并行數(shù)據(jù)累加;S1、S2和S3寄存器中保存的上次計(jì)算的結(jié)果分別乘以α,α2和α3,并與8位并行數(shù)據(jù)相加,結(jié)果仍保存回原寄存器。256個時鐘周期以后,各個寄存器中保存的就是伴隨式計(jì)算結(jié)果。
輔助參數(shù)計(jì)算電路6中乘法和除法運(yùn)算的實(shí)現(xiàn),利用有限域GF(28)元素與其本身相對于本原元的冪次之間的對應(yīng)關(guān)系,通過查表把域元素映射成自己的指數(shù),把乘法和除法操作轉(zhuǎn)換成模255的加法和減法操作,最后再把模加減運(yùn)算的結(jié)果映射回有限域。每次運(yùn)算都通過兩次查表和一次模加完成。該電路所實(shí)現(xiàn)的正變換和反變換需要兩個映射表,每個表用256字節(jié)的RAM實(shí)現(xiàn)。由于有限域元素0無法進(jìn)行映射,所以,當(dāng)進(jìn)行運(yùn)算的元素中有一個為0時,不需要映射和模255加減的運(yùn)算,直接輸出計(jì)算結(jié)果0。雖然如果除數(shù)為0計(jì)算結(jié)果也是0,沒有物理意義,但是通過除法電路計(jì)算得到的參數(shù)(E、CO0和CO1)的使用條件,保證了在進(jìn)行這些除法計(jì)算的時候除數(shù)不為0,計(jì)算結(jié)果正確。
這樣的實(shí)現(xiàn)方式不僅節(jié)省了可編程邏輯器件芯片中寶貴的邏輯資源,而且充分利用了芯片的塊RAM資源。所實(shí)現(xiàn)的乘法和除法運(yùn)算最多只需要4個時鐘周期,但是該實(shí)現(xiàn)方式要求芯片具有一定的塊RAM容量,其具體實(shí)現(xiàn)電路見圖4。
錯誤值按錯誤位置輸出電路9,其中的子模塊93,94和95中計(jì)算錯誤位置的電路,和子模塊95中計(jì)算錯誤值的電路,都是通過圖5A,圖5B和圖5C中有限域GF(28)元素乘以α,α2和α3電路實(shí)現(xiàn)的。
圖6是糾錯譯碼電路的時序信號波形圖。圖中CLK為時鐘信號,RST為復(fù)位信號,ENIN為輸入使能信號,RS為輸入待糾錯譯碼數(shù)據(jù),ECASE為錯誤情況,M為糾錯譯碼后數(shù)據(jù),ENOUT為輸出使能。每塊256字節(jié)數(shù)據(jù)輸入糾錯譯碼電路后經(jīng)過14個時鐘周期,輸出第一個經(jīng)過糾錯譯碼的字節(jié);經(jīng)過13個時鐘周期,該電路可以開始接收新一批256字節(jié)數(shù)據(jù);每個待糾錯字節(jié)進(jìn)入糾錯譯碼電路后經(jīng)過270個時鐘周期,輸出相應(yīng)的糾錯譯碼結(jié)果。
實(shí)施例2參見圖1,本實(shí)施例的RS(256,252)碼糾錯譯碼芯片還包括輸入接口電路1,實(shí)現(xiàn)了與嵌入式x86處理器的接口;其中輸入接口電路1一方面與具體的系統(tǒng)環(huán)境相連接,從系統(tǒng)中得到時鐘、復(fù)位、讀寫控制、片選等控制信號和數(shù)據(jù)/地址信號,另一方面與糾錯譯碼電路2和3相連,供給糾錯譯碼電路正確的數(shù)據(jù)輸入和糾錯譯碼使能信號。輸出接口電路4與糾錯譯碼電路2和3相連接,獲得糾錯譯碼結(jié)果,實(shí)現(xiàn)并給下級設(shè)備例如高速多路復(fù)接器,輸出串行數(shù)據(jù)和串行數(shù)據(jù)時鐘。
本實(shí)施例包括兩個糾錯譯碼電路2或3,其結(jié)構(gòu)同實(shí)施例1,在該實(shí)施例中兩個RS(256,252)糾錯譯碼電路2和3,并行接收16位總線上的數(shù)據(jù),其工作頻率達(dá)到了100MHz以上,所以數(shù)據(jù)率至少有1600Mbps。每塊數(shù)據(jù)輸入糾錯譯碼電路后最多經(jīng)過14個時鐘周期,就能輸出第一個經(jīng)過糾錯譯碼的字節(jié),即每個待糾錯字節(jié)進(jìn)入糾錯譯碼電路后經(jīng)過270個時鐘周期輸出相應(yīng)的糾錯譯碼結(jié)果。這樣,完成容量為2Gbit的數(shù)據(jù)的糾錯譯碼工作只用大約1.42秒,遠(yuǎn)遠(yuǎn)小于軟件譯碼時間。上述計(jì)算是對于具體實(shí)施方式
1中與x86CPU接口的芯片實(shí)現(xiàn)而言的,對于其他平臺,由于并行譯碼模塊數(shù)量的增加數(shù)據(jù)率還可能更高。另外,整個糾錯譯碼電路集成在一片芯片中,與之交互的信號很少,對大容量存儲器的復(fù)雜性影響很小。同時,多種接口的實(shí)現(xiàn)使得本發(fā)明所述的芯片可以應(yīng)用于多種系統(tǒng)環(huán)境。
在糾錯譯碼電路中,伴隨式計(jì)算電路5中乘以α,α2和α3的電路參見5A,圖5B,圖5C。在每個時鐘周期內(nèi),S0與輸入的并行數(shù)據(jù)累加;S1、S2和S3寄存器中上次計(jì)算的結(jié)果分別乘以α,α2和α3,并與8位并行數(shù)據(jù)相加,結(jié)果仍保存回原寄存器。256個時鐘周期以后,各個寄存器中保存的就是伴隨式計(jì)算結(jié)果。
由S=R·HT=(S0,S1,S2,S3)=(r0,r1,…,r255)·HT,以及HT=100011111αα2α3············1α254(α2)254(α3)254,]]>HT為256×4的矩陣有S0=r0+r1+···+r255=Σj=0255rj]]>Si=r1+r2α···+r255α254=Σj=1255rjαi(j-1),i=1,2,3]]>上式可以改寫為Si=(…((r255αi+r254)αi+r253)αi+…+r1)αi+r1,i=1,2,3在每個時鐘周期,上周期S1、S2和S3的計(jì)算結(jié)果乘以αi,與本周期輸入的碼字相加,作為本次計(jì)算結(jié)果;S0累加輸入碼字。各個伴隨式的初始值為0。
(2)輔助參數(shù)計(jì)算電路6輔助參數(shù)B0、B1、B2、E、CO0和CO1都分別需要通過伴隨式S0,S1,S2和S3的平方、乘除和相加運(yùn)算才能求得。這些數(shù)據(jù)都是以有限域的矢量形式表示的,因此計(jì)算是有限域中的運(yùn)算。加法電路是通過兩數(shù)對應(yīng)位的“異或”電路實(shí)現(xiàn)的,不需要進(jìn)位。有限域元素乘法(平方)和除法的電路實(shí)現(xiàn)方法很多,但是往往速度較慢或者占用大量的邏輯資源,尤其是除法電路。本發(fā)明實(shí)現(xiàn)的有限域GF(28)元素的乘法和除法電路,采用兩種實(shí)現(xiàn)方法,一種是通過查表映射,把乘除運(yùn)算轉(zhuǎn)換為加減運(yùn)算的實(shí)現(xiàn)方法;另一種是直接利用有限域的多項(xiàng)式模乘實(shí)現(xiàn)乘法,再利用乘法電路實(shí)現(xiàn)除法的實(shí)現(xiàn)方法。
(3)錯誤情況判斷電路7本實(shí)施例所實(shí)現(xiàn)的錯誤情況判斷電路根據(jù)表1實(shí)現(xiàn)。判斷條件沒有采用邏輯延遲較大的組合邏輯電路一次實(shí)現(xiàn),而是把各個條件放在伴隨式計(jì)算完成的時鐘周期和輔助參數(shù)計(jì)算完成的時鐘周期生成。
(4)錯誤值按錯誤位置輸出電路9該電路中錯誤位置的指示通過錢搜索電路完成,錯誤值計(jì)算電路與錢搜索電路同步進(jìn)行。該電路每周期運(yùn)算一次,與FIFO緩存數(shù)據(jù)同步輸出。錢搜索電路將有限域元素α254到α的倒數(shù)依次代入差錯位置方程中,從高位開始逐字校驗(yàn),如果代入后的方程成立,則說明此時FIFO輸出的數(shù)據(jù)發(fā)生錯誤,否則,說明該數(shù)據(jù)正確。
第一種情況,始終輸出0。
第二種情況,在第256時鐘周期,輸出錯誤值S0;其他時鐘周期,輸出0;第三種情況,在前255個時鐘周期,差錯位置方程S2+S1αi=0的求解通過錢搜索電路實(shí)現(xiàn)。即在每個時鐘周期,S1與以S2為初值的乘α電路的計(jì)算結(jié)果相加,如果和為0,則輸出錯誤值S0,否則,輸出0;在第256時鐘周期,輸出錯誤值0;第四種情況,在前255個時鐘周期,差錯位置方程S2+S1αi=0的求根通過錢搜索電路實(shí)現(xiàn),即在每個時鐘周期,S1與以S2為初值的乘α電路的計(jì)算結(jié)果相加,如果和為0,則輸出錯誤值E,否則,輸出0;在第256時鐘周期,輸出錯誤值E+S0;第五種情況,在前255個時鐘周期,每個時鐘周期,CO0與以CO1為初值的乘α電路的計(jì)算結(jié)果相加,計(jì)算錯誤值;差錯位置方程B0(αi)2+B2αi+B1=0的求根通過錢搜索電路實(shí)現(xiàn),即在每個時鐘周期,以B1為初值的乘α2電路的計(jì)算結(jié)果,加上以B2為初值的乘α電路的計(jì)算結(jié)果,在加上B0,如果和為0,則輸出此時的錯誤值,如果和不為0,則輸出0;在第256時鐘周期,輸出錯誤值0;根據(jù)錯誤情況,選擇以上五種情況的錯誤值輸出。
(5)糾錯譯碼電路10把輸出接口電路4輸出與FIFO8的輸出,作為異或門的輸入,進(jìn)行糾錯;輸出每256字節(jié)數(shù)據(jù)的前252個字節(jié),完成譯碼。
(6)錯誤字節(jié)計(jì)數(shù)電路11差錯字節(jié)計(jì)數(shù)電路把錯誤情況判斷電路輸出的錯誤情況轉(zhuǎn)化為計(jì)數(shù)值,并進(jìn)行累加。累加結(jié)果和糾錯結(jié)果一起輸出。本電路將計(jì)數(shù)結(jié)果返回?cái)?shù)據(jù)總線,供CPU讀取。
(7)先入先出緩存電路(FIFO)8可以使用外部單獨(dú)的FIFO器件,也可以在芯片內(nèi)直接中實(shí)現(xiàn)。本電路在可編程邏輯芯片中實(shí)現(xiàn),使完整的電路都集成在一個芯片中,在使用該芯片時不需要其他的器件配合。
實(shí)施例3本芯片輔助參數(shù)計(jì)算電路中,有限域乘法(平方)和除法電路的另一種實(shí)施方式如下。
有限域的乘法分兩步,首先需要進(jìn)行有限域乘法的兩個元素,以有限域矢量表達(dá)的形式進(jìn)行兩個一般的乘法運(yùn)算,然后其乘積通過模本元多項(xiàng)式的運(yùn)算,得到最終的乘法運(yùn)算結(jié)果。整個運(yùn)算中乘法通過對應(yīng)比特的相乘和相加完成,具體到硬件電路的實(shí)現(xiàn)就是“與門”完成比特乘,“異或門”完成比特加。
電路具體實(shí)現(xiàn)如下。設(shè)需要進(jìn)行乘法運(yùn)算的碼子為a=(a7,a6,a5,a4,a3,a2,a1,a0)和b=(b7,b6,b5,b4,b3,b2,b1,b0),經(jīng)過乘法運(yùn)算后的結(jié)果為c=(c7,c6,c5,c4,c3,c2,c1,c0),中間結(jié)果為t=(t14,t13,t12,t11,t10,t9,t8,t7,t6,t5,t4,t3,t2,t1,t0)。其具體的實(shí)現(xiàn)電路如下t14=a7and b7,t13=(a7and b6)xor(a6and b7),t12=(a7and b5)xor(a6and b6)xor(a5and b7),t11=(a7and b4)xor(a6and b5)xor(a5and b6)xor(a4and b7),
t10=(a7and b3)xor(a6and b4)xor(a5and b5)xor(a4and b6)xor(a3and b7),t9=(a7and b2)xor(a6and b3)xor(a5and b4)xor(a4and b5)xor(a3and b6)xor(a2and b7),t8=(a7and b1)xor(a6and b2)xor(a5and b3)xor(a4and b4)xor(a3and b5)xor(a2and b6)xor(a1and b7),t7=(a7and b0)xor(a6and b1)xor(a5and b2)xor(a4and b3)xor(a3and b4)xor(a2and b5)xor(a1and b6)xor(a0and b7),t6=(a6and b0)xor(a5and b1)xor(a4and b2)xor(a3and b3)xor(a2and b4)xor(a1and b5)xor(a0and b6),t5=(a5and b0)xor(a4and b1)xor(a3and b2)xor(a2and b3)xor(a1and b4)xor(a0and b5),t4=(a4and b0)xor(a3and b1)xor(a2and b2)xor(a1and b3)xor(a0and b4),t3=(a3and b0)xor(a2and b1)xor(a1and b2)xor(a0and b3),t2=(a2and b0)xor(a1and b1)xor(a0and b2),t1=(a1and b0)xor(a0and b1),t0=a0and b0,c7=t7xor t11xor t12xor t13,c6=t6xor t10xor t11xor t12,c5=t5xor t9xor t10xor t11,c4=t4xor t8xor t9xor t10xor t14,c3=t3xor t8xor t9xor t11xor t12,c2=t2xor t8xor t10xor t12xor t13,c1=t1xor t9xor t13xor t14,c0=t0xor t8xor t12xor t13xor t14,其中,符號xor使用異或門完成,符號and使用與門完成。
為了提高電路性能,上述電路實(shí)現(xiàn)中通過三級流水線實(shí)現(xiàn),也就是第一級計(jì)算每兩個比特的“與”操作,得到諸如(aiand bj)的中間結(jié)果,第二級對第一級的結(jié)果進(jìn)行“異或”操作,得到t,第三級對第二級的結(jié)果t再次進(jìn)行“異或”操作,得到最終的乘積。這樣,進(jìn)行一次乘法需要三個時鐘周期。
平方運(yùn)算的電路為乘法電路的特例,所以比乘法電路的實(shí)現(xiàn)更簡單。設(shè)需要進(jìn)行平方運(yùn)算的碼字為a=(a7,a6,a5,a4,a3,a2,a1,a0),經(jīng)過平方運(yùn)算后的結(jié)果為c=(c7,c6,c5,c4,c3,c2,c1,c0)。其具體的計(jì)算實(shí)現(xiàn)如下c7=a6,c6=a6xor a5xor a3,c5=a5,c4=a7xor a5xor a4xor a2,c3=a6xor a4,c2=a6xor a5xor a4xor a1,c1=a7,c0=a7xor a6xor a4xor a0,其中,符號xor使用異或門實(shí)現(xiàn)。平方運(yùn)算電路通過一個時鐘周期完成。
除法運(yùn)算的電路的實(shí)現(xiàn)。設(shè)需要進(jìn)行除法運(yùn)算的碼符號為a=(a7,a6,a5,a4,a3,a2,a1,a0)和b=(b7,b6,b5,b4,b3,b2,b1,b0),經(jīng)過除法運(yùn)算后的結(jié)果為c=(c7,c6,c5,c4,c3,c2,c1,c0)。根據(jù)費(fèi)馬小定理可知,a、b和c之間的關(guān)系為c=a/b=a×b2 +4+8+16+32+64+128=(((((((a×b2)×b4)×b8)×b16)×b32)×b64)×b128)。因此,通過乘法運(yùn)算電路和平方運(yùn)算電路可以完成除法運(yùn)算,同時進(jìn)行一次除法運(yùn)算,需要7倍于乘法運(yùn)算的時間,即21個時鐘周期。
這種實(shí)現(xiàn)方式也會出現(xiàn)除數(shù)為0的情況,其計(jì)算結(jié)果也是0,沒有物理意義。但是同樣地,通過除法電路計(jì)算得到的參數(shù)的使用條件,保證了在進(jìn)行這些除法計(jì)算的時候除數(shù)不為0,計(jì)算結(jié)果正確。
這種實(shí)現(xiàn)方法沒有對芯片的塊RAM資源做出要求,運(yùn)算頻率也很高。
其具體的電路框圖參見圖9。
附表表1錯誤情況判斷表 其中,“/”表示在判斷時不考慮該值
權(quán)利要求
1.一種可用于大容量存儲器的RS(256,252)碼糾錯譯碼芯片,包括一伴隨式計(jì)算電路(5),待糾錯的每塊數(shù)據(jù)(256字節(jié))輸入伴隨式計(jì)算電路(5),計(jì)算伴隨式,該256字節(jié)數(shù)據(jù)同時輸入FIFO電路(8);輔助參數(shù)計(jì)算電路(6)與伴隨式計(jì)算電路(5)連接,根據(jù)伴隨式計(jì)算電路(5)的輸出計(jì)算輔助參數(shù);錯誤情況判斷電路(7)分別與伴隨式計(jì)算電路(5)和輔助參數(shù)計(jì)算電路(6)相連接,錯誤情況判斷電路(7)根據(jù)伴隨式計(jì)算電路(5)和輔助參數(shù)計(jì)算電路(6)的輸出,判斷256字節(jié)數(shù)據(jù)的錯誤情況;錯誤值按錯誤位置輸出電路(9)與錯誤情況判斷電路(7)相連接,根據(jù)錯誤情況判斷電路(7)的輸出結(jié)果,錯誤值按錯誤位置輸出電路(9)中的糾錯選擇電路(91)選擇子模塊(92),子模塊(93),子模塊(94)和子模塊(95)之一工作,在發(fā)生錯誤的位置輸出對應(yīng)的錯誤值;最后各個子模塊的輸出通過多路選擇電路(96)選擇后輸出;FIFO電路(8)的輸出和錯誤值按錯誤位置輸出電路(9)的輸出都連接到糾錯譯碼電路(10),使錯誤值與待糾錯數(shù)據(jù)對應(yīng)相加,實(shí)現(xiàn)糾錯,最后輸出時去掉校驗(yàn)字節(jié),完成糾錯譯碼。
2.按權(quán)利要求1所述的可用于大容量存儲器的RS(256,252)碼糾錯譯碼芯片,其特征在于,還包括一輸入接口電路(1),該輸入接口電路(1)一方面與具體的系統(tǒng)環(huán)境相連接,完成系統(tǒng)與糾錯譯碼電路之間的交互,從系統(tǒng)中得到時鐘、復(fù)位、讀寫控制、片選控制信號和數(shù)據(jù),這些信號經(jīng)過變換和緩存后,供給糾錯譯碼電路;同時,系統(tǒng)也通過輸入接口電路查詢糾錯譯碼電路的工作情況。
3.按權(quán)利要求2所述的可用于大容量存儲器的RS(256,252)碼糾錯譯碼芯片,其特征在于,所述的輸入接口電路(1)包括“片選1”信號和系統(tǒng)的寫信號通過或非門(101)和D觸發(fā)器(102),產(chǎn)生糾錯譯碼器的時鐘,通過D觸發(fā)器(103)獲得并緩存系統(tǒng)總線上的待譯碼數(shù)據(jù);“片選2”信號和系統(tǒng)寫信號通過或非門(107)控制D觸發(fā)器(105)的使能,同時決定計(jì)數(shù)器(108)是否清零;總線上的信號(104)決定信號(106)的值,而信號(106)決定選擇器(109)選擇輸出0還是輸出計(jì)數(shù)器(108)的計(jì)數(shù)結(jié)果;信號通過D觸發(fā)器(110)輸出最終的譯碼器使能信號,計(jì)數(shù)器(108)重復(fù)輸出256個時鐘周期的高電平和13個周期的低電平。
4.按權(quán)利要求1所述的可用于大容量存儲器的RS(256,252)碼糾錯譯碼芯片,其特征在于,還包括輸出接口電路(4),所述的輸出接口電路(4)與糾錯譯碼電路(2)相連接,獲得糾錯譯碼結(jié)果,經(jīng)處理后按需要輸出給下級設(shè)備,實(shí)現(xiàn)對糾錯譯碼數(shù)據(jù)的并串轉(zhuǎn)換,輸出串行數(shù)據(jù)和串行時鐘;同時,還實(shí)現(xiàn)旁路邏輯,當(dāng)前端糾錯譯碼電路失效時,旁路糾錯譯碼輸出,直接輸出原始數(shù)據(jù)。
5.按權(quán)利要求4所述的可用于大容量存儲器的RS(256,252)碼糾錯譯碼芯片,其特征在于,所述的輸出接口電路(4)包括“片選2”信號和系統(tǒng)的寫信號通過或非門(41)和D觸發(fā)器(42)產(chǎn)生信號(43),控制選擇器(44)選擇糾錯譯碼后的數(shù)據(jù)和未經(jīng)糾錯譯碼的數(shù)據(jù)之一輸出給并串轉(zhuǎn)換電路(47),實(shí)現(xiàn)旁路功能;“片選1”信號和系統(tǒng)的寫信號通過或非門(45)和與門(46)產(chǎn)生并串轉(zhuǎn)換電路(47)的LOAD信號,并串轉(zhuǎn)換電路(47)完成并串轉(zhuǎn)換,輸出串行數(shù)據(jù)和串行時鐘。
6.按權(quán)利要求1所述的可用于大容量存儲器的RS(256,252)碼糾錯譯碼芯片,其特征在于,所述的CPU是x86或PowerPC,總線是PCI或USB或IEEE1394總線。
7.按權(quán)利要求1所述的可用于大容量存儲器的RS(256,252)碼糾錯譯碼芯片,其特征在于,所述的伴隨式計(jì)算電路(5),采用譯碼數(shù)據(jù)多項(xiàng)式R(x)除以最小多項(xiàng)式所得的余式來求伴隨式的實(shí)現(xiàn)方法。
8.按權(quán)利要求1、2或4所述的可用于大容量存儲器的RS(256,252)碼糾錯譯碼芯片,其特征在于,所述的先入先出緩存電路(8)采用外部單獨(dú)的FIFO器件,或在可編程邏輯芯片中直接實(shí)現(xiàn)。
9,按權(quán)利要求1、2或4所述的可用于大容量存儲器的RS(256,252)碼糾錯譯碼芯片,其特征在于,所述的錯誤字節(jié)計(jì)數(shù)電路(11)把錯誤情況判斷電路(7)輸出的錯誤情況轉(zhuǎn)化為計(jì)數(shù)值,并進(jìn)行累加,累加結(jié)果返回系統(tǒng)總線,供系統(tǒng)查詢。
10.按權(quán)利要求1所述的適用于RS(256,252)碼的糾錯譯碼芯片,其特征在于,輔助參數(shù)計(jì)算電路(6)中的乘法和除法運(yùn)算,利用芯片中的塊RAM資源,通過兩次查表和一次模加實(shí)現(xiàn)高速的乘法和除法運(yùn)算。
全文摘要
本發(fā)明公開了一種可用于大容量存儲器的RS(256,252)碼糾錯譯碼芯片,包括待糾錯的數(shù)據(jù)塊輸入伴隨式計(jì)算電路和先入先出緩存;輔助參數(shù)計(jì)算電路與伴隨式計(jì)算電路連接,根據(jù)伴隨式計(jì)算結(jié)果求輔助參數(shù);錯誤情況判斷電路與伴隨式計(jì)算電路和輔助參數(shù)計(jì)算電路相連接,根據(jù)它們的輸出判斷本數(shù)據(jù)塊的錯誤情況;錯誤值按錯誤位置輸出電路與錯誤情況判斷電路連接,錯誤值按錯誤位置輸出電路中的糾錯選擇電路,根據(jù)錯誤情況選擇四個子模塊中的一個工作,在發(fā)生錯誤的位置輸出錯誤值;各子模塊的輸出由多路選擇電路選擇后輸出;FIFO的輸出連接到糾錯譯碼電路,將求得的錯誤值與FIFO緩存的待糾錯數(shù)據(jù)相加,實(shí)現(xiàn)糾錯;最后輸出時去掉校驗(yàn)字節(jié),完成糾錯譯碼。
文檔編號G11C11/00GK1773863SQ20041009069
公開日2006年5月17日 申請日期2004年11月12日 優(yōu)先權(quán)日2004年11月12日
發(fā)明者曹松, 張玉良, 陳斌, 沈衛(wèi)華, 陳小敏, 孫輝先 申請人:中國科學(xué)院空間科學(xué)與應(yīng)用研究中心