Nios SoC系統(tǒng)中的BCH編解碼IP核的設(shè)計(jì)
發(fā)布時(shí)間:2007/8/28 0:00:00 訪問(wèn)次數(shù):703
來(lái)源:電子工程師 作者:蘇勇 張劍峰等
0引 言
循環(huán)碼是最重要的一類線性分組糾錯(cuò)碼,而B(niǎo)CH碼又是目前發(fā)現(xiàn)的性能很好且應(yīng)用廣泛的循環(huán)碼,它具有嚴(yán)格的代數(shù)理論,對(duì)它的理論研究也非常透徹。BCH碼的實(shí)現(xiàn)途徑有軟件和硬件兩種。軟件實(shí)現(xiàn)方法靈活性強(qiáng)且較易實(shí)現(xiàn),但硬件實(shí)現(xiàn)方法的工作速度快,在高數(shù)據(jù)速率和長(zhǎng)幀應(yīng)用場(chǎng)合時(shí)具有優(yōu)勢(shì)。FPGA(現(xiàn)場(chǎng)可編程門(mén)陣列)為DSP算法的硬件實(shí)現(xiàn)提供了很好的平臺(tái),但如果單獨(dú)使用一片F(xiàn)PGA實(shí)現(xiàn)BCH編解碼,對(duì)成本、功耗和交互速度都不利。最新的SoC(片上系統(tǒng))設(shè)計(jì)方法可以很好地解決這個(gè)問(wèn)題。
本文基于Altera公司的Nios軟核+可編程資源的SoC平臺(tái)設(shè)計(jì)了BCH編解碼IP核,這樣,在Nios系統(tǒng)中可以將BCH碼作為一種片內(nèi)資源進(jìn)行調(diào)用,在工程設(shè)計(jì)上具有積極的意義。
1 BCH碼
BCH碼于1960年前后發(fā)明,可以糾檢多個(gè)錯(cuò)誤。通常的二進(jìn)制BCH碼元是取自加羅瓦域GF(2m)。對(duì)于參數(shù)m和可糾錯(cuò)碼元數(shù)目t,BCH碼的碼長(zhǎng)為n=2m-1,對(duì)于m≥3,t<2m-1的BCH碼,監(jiān)督碼元數(shù)目n-k=mt;dmin≥2t+1。同時(shí),BCH碼元多項(xiàng)式的根為GF(2m)中的元素α,α3,…,α2t+1。例如一個(gè)m=6,t=3的BCH碼,其參數(shù)為:n=63,n-k=18,dmin=7。這就構(gòu)成了可以糾正3個(gè)錯(cuò)誤的(63,45)BCH碼。
BCH碼基于加羅瓦域,BCH編解碼的運(yùn)算也是域內(nèi)的閉合運(yùn)算。加羅瓦有限域產(chǎn)生于一個(gè)本原多項(xiàng)式,GF(2m)有限域內(nèi)有2m個(gè)元素。以GF(23)域?yàn)槔谋驹囗?xiàng)式p(x)假定為p(x)=x3+x+1,基本元素α定義為p(x)=0的根,GF(23)中的元素可以計(jì)算如下:
BCH碼的編碼取決于其生成多項(xiàng)式,令φ2i-1(x)是加羅瓦域元素α2i-1的最小多項(xiàng)式,則可以糾正t個(gè)錯(cuò)誤的BCH碼的生成多項(xiàng)式為:
有了生成多項(xiàng)式,BCH編碼與普通的循環(huán)碼編碼相同,使用除法電路可以實(shí)現(xiàn)。
一個(gè)復(fù)雜度較低的BCH譯碼算法對(duì)于BCH碼的應(yīng)用有著重要的意義。BCH譯碼可以分為伴隨式計(jì)算和Berlekamp迭代譯碼兩部分。設(shè)接收碼元多項(xiàng)式為r(x),由于生成多項(xiàng)式的性質(zhì),如果傳輸過(guò)程中信道沒(méi)有引入錯(cuò)誤,α,α2,α3,…,α2t應(yīng)是r(x)的根。因此,伴隨式計(jì)算即將加羅瓦域中的元素代入接收碼元多項(xiàng)式,如果所有伴隨式結(jié)果都為0,則說(shuō)明沒(méi)有錯(cuò)誤,否則就有錯(cuò)誤。如果只使用BCH碼進(jìn)行檢錯(cuò),則譯碼過(guò)程就結(jié)束了。
伴隨式計(jì)算結(jié)束后,如果有錯(cuò),首先需要計(jì)算錯(cuò)誤位置多項(xiàng)式δ(x),譯碼的核心主要集中在這一步上。Berlekamp迭代算法不僅求解了錯(cuò)誤位置多項(xiàng)式的關(guān)鍵方程,而且運(yùn)算速度快,可以說(shuō)它解決了BCH碼譯碼的工程實(shí)用問(wèn)題。其次,使用錢搜索找出δ(x)的根,即錯(cuò)誤位置。最后,由于是二進(jìn)制編碼,只需把相應(yīng)位置的碼元取反就完成了整個(gè)譯碼過(guò)程。
2 BCH編解碼IP核的設(shè)計(jì)
2.1 整體設(shè)計(jì)及CPU接口
在NiosⅡ系統(tǒng)中,平臺(tái)免費(fèi)提供了各種常用接口IP核以及對(duì)這些外設(shè)的驅(qū)動(dòng)程序包,例如UART接口、Flash接口等。作為一個(gè)自行設(shè)計(jì)的IP核,需要掛接在NiosⅡ系統(tǒng)的Avalon總線上。這個(gè)過(guò)程使用Sopc Builder工具中的Interface t0 user logic模塊可以方便地進(jìn)行設(shè)計(jì)。NiosⅡ處理器和BCH IP核之間通過(guò)Avalon總線使用寄存器映射方式進(jìn)行交互。圖1是整個(gè)IP核的實(shí)現(xiàn)方框圖。
其中與NiosⅡ的接口分為控制接口和數(shù)據(jù)接口兩部分。控制接口包括復(fù)位、編解碼控制、存儲(chǔ)器狀態(tài)報(bào)告和編解碼狀態(tài)報(bào)告等。數(shù)據(jù)接口為FPGA內(nèi)部的RAM,分為發(fā)送和接收兩部分,它在NiosⅡ中映射成存儲(chǔ)空間。在NiosⅡ和BCH碼IP核之間設(shè)置簡(jiǎn)單的數(shù)據(jù)協(xié)議,控制寄存器的起始控制位設(shè)置后,寫(xiě)入數(shù)據(jù)緩存的第1個(gè)字節(jié)為編解碼輸入數(shù)據(jù)的長(zhǎng)度字節(jié)。BCH編解碼模塊從數(shù)據(jù)緩存中讀入數(shù)據(jù)進(jìn)行相應(yīng)處理。其中,加羅瓦域的運(yùn)算主要通過(guò)對(duì)域元素的查表得到。
2.2 BCH編碼
BCH碼屬于系統(tǒng)碼,其編碼與一般循環(huán)碼的編碼形式基本相同,即為信息碼元多項(xiàng)式與生成多項(xiàng)式之間的除法電路實(shí)現(xiàn)。除法電路采用帶反饋的移位寄存器完成。信息碼元發(fā)送完后,寄存器內(nèi)存儲(chǔ)的就是監(jiān)督碼元,再接著發(fā)送即可。其中反饋抽頭連接為生成多項(xiàng)式控制。其基本結(jié)構(gòu)見(jiàn)圖2。
信息碼元首先從數(shù)據(jù)緩存中被讀出,然后通過(guò)并/串變換進(jìn)入編碼器后,一方面直接輸出,同時(shí)送入除法電路,當(dāng)信息碼元輸入結(jié)束后,開(kāi)關(guān)進(jìn)行相應(yīng)的變換,存在寄存器中的監(jiān)督碼元輸出。圖3為(31,16)BCH編碼的RTL(寄存器傳輸級(jí))仿真結(jié)果。
來(lái)源:電子工程師 作者:蘇勇 張劍峰等
0引 言
循環(huán)碼是最重要的一類線性分組糾錯(cuò)碼,而B(niǎo)CH碼又是目前發(fā)現(xiàn)的性能很好且應(yīng)用廣泛的循環(huán)碼,它具有嚴(yán)格的代數(shù)理論,對(duì)它的理論研究也非常透徹。BCH碼的實(shí)現(xiàn)途徑有軟件和硬件兩種。軟件實(shí)現(xiàn)方法靈活性強(qiáng)且較易實(shí)現(xiàn),但硬件實(shí)現(xiàn)方法的工作速度快,在高數(shù)據(jù)速率和長(zhǎng)幀應(yīng)用場(chǎng)合時(shí)具有優(yōu)勢(shì)。FPGA(現(xiàn)場(chǎng)可編程門(mén)陣列)為DSP算法的硬件實(shí)現(xiàn)提供了很好的平臺(tái),但如果單獨(dú)使用一片F(xiàn)PGA實(shí)現(xiàn)BCH編解碼,對(duì)成本、功耗和交互速度都不利。最新的SoC(片上系統(tǒng))設(shè)計(jì)方法可以很好地解決這個(gè)問(wèn)題。
本文基于Altera公司的Nios軟核+可編程資源的SoC平臺(tái)設(shè)計(jì)了BCH編解碼IP核,這樣,在Nios系統(tǒng)中可以將BCH碼作為一種片內(nèi)資源進(jìn)行調(diào)用,在工程設(shè)計(jì)上具有積極的意義。
1 BCH碼
BCH碼于1960年前后發(fā)明,可以糾檢多個(gè)錯(cuò)誤。通常的二進(jìn)制BCH碼元是取自加羅瓦域GF(2m)。對(duì)于參數(shù)m和可糾錯(cuò)碼元數(shù)目t,BCH碼的碼長(zhǎng)為n=2m-1,對(duì)于m≥3,t<2m-1的BCH碼,監(jiān)督碼元數(shù)目n-k=mt;dmin≥2t+1。同時(shí),BCH碼元多項(xiàng)式的根為GF(2m)中的元素α,α3,…,α2t+1。例如一個(gè)m=6,t=3的BCH碼,其參數(shù)為:n=63,n-k=18,dmin=7。這就構(gòu)成了可以糾正3個(gè)錯(cuò)誤的(63,45)BCH碼。
BCH碼基于加羅瓦域,BCH編解碼的運(yùn)算也是域內(nèi)的閉合運(yùn)算。加羅瓦有限域產(chǎn)生于一個(gè)本原多項(xiàng)式,GF(2m)有限域內(nèi)有2m個(gè)元素。以GF(23)域?yàn)槔,它的本原多?xiàng)式p(x)假定為p(x)=x3+x+1,基本元素α定義為p(x)=0的根,GF(23)中的元素可以計(jì)算如下:
BCH碼的編碼取決于其生成多項(xiàng)式,令φ2i-1(x)是加羅瓦域元素α2i-1的最小多項(xiàng)式,則可以糾正t個(gè)錯(cuò)誤的BCH碼的生成多項(xiàng)式為:
有了生成多項(xiàng)式,BCH編碼與普通的循環(huán)碼編碼相同,使用除法電路可以實(shí)現(xiàn)。
一個(gè)復(fù)雜度較低的BCH譯碼算法對(duì)于BCH碼的應(yīng)用有著重要的意義。BCH譯碼可以分為伴隨式計(jì)算和Berlekamp迭代譯碼兩部分。設(shè)接收碼元多項(xiàng)式為r(x),由于生成多項(xiàng)式的性質(zhì),如果傳輸過(guò)程中信道沒(méi)有引入錯(cuò)誤,α,α2,α3,…,α2t應(yīng)是r(x)的根。因此,伴隨式計(jì)算即將加羅瓦域中的元素代入接收碼元多項(xiàng)式,如果所有伴隨式結(jié)果都為0,則說(shuō)明沒(méi)有錯(cuò)誤,否則就有錯(cuò)誤。如果只使用BCH碼進(jìn)行檢錯(cuò),則譯碼過(guò)程就結(jié)束了。
伴隨式計(jì)算結(jié)束后,如果有錯(cuò),首先需要計(jì)算錯(cuò)誤位置多項(xiàng)式δ(x),譯碼的核心主要集中在這一步上。Berlekamp迭代算法不僅求解了錯(cuò)誤位置多項(xiàng)式的關(guān)鍵方程,而且運(yùn)算速度快,可以說(shuō)它解決了BCH碼譯碼的工程實(shí)用問(wèn)題。其次,使用錢搜索找出δ(x)的根,即錯(cuò)誤位置。最后,由于是二進(jìn)制編碼,只需把相應(yīng)位置的碼元取反就完成了整個(gè)譯碼過(guò)程。
2 BCH編解碼IP核的設(shè)計(jì)
2.1 整體設(shè)計(jì)及CPU接口
在NiosⅡ系統(tǒng)中,平臺(tái)免費(fèi)提供了各種常用接口IP核以及對(duì)這些外設(shè)的驅(qū)動(dòng)程序包,例如UART接口、Flash接口等。作為一個(gè)自行設(shè)計(jì)的IP核,需要掛接在NiosⅡ系統(tǒng)的Avalon總線上。這個(gè)過(guò)程使用Sopc Builder工具中的Interface t0 user logic模塊可以方便地進(jìn)行設(shè)計(jì)。NiosⅡ處理器和BCH IP核之間通過(guò)Avalon總線使用寄存器映射方式進(jìn)行交互。圖1是整個(gè)IP核的實(shí)現(xiàn)方框圖。
其中與NiosⅡ的接口分為控制接口和數(shù)據(jù)接口兩部分?刂平涌诎◤(fù)位、編解碼控制、存儲(chǔ)器狀態(tài)報(bào)告和編解碼狀態(tài)報(bào)告等。數(shù)據(jù)接口為FPGA內(nèi)部的RAM,分為發(fā)送和接收兩部分,它在NiosⅡ中映射成存儲(chǔ)空間。在NiosⅡ和BCH碼IP核之間設(shè)置簡(jiǎn)單的數(shù)據(jù)協(xié)議,控制寄存器的起始控制位設(shè)置后,寫(xiě)入數(shù)據(jù)緩存的第1個(gè)字節(jié)為編解碼輸入數(shù)據(jù)的長(zhǎng)度字節(jié)。BCH編解碼模塊從數(shù)據(jù)緩存中讀入數(shù)據(jù)進(jìn)行相應(yīng)處理。其中,加羅瓦域的運(yùn)算主要通過(guò)對(duì)域元素的查表得到。
2.2 BCH編碼
BCH碼屬于系統(tǒng)碼,其編碼與一般循環(huán)碼的編碼形式基本相同,即為信息碼元多項(xiàng)式與生成多項(xiàng)式之間的除法電路實(shí)現(xiàn)。除法電路采用帶反饋的移位寄存器完成。信息碼元發(fā)送完后,寄存器內(nèi)存儲(chǔ)的就是監(jiān)督碼元,再接著發(fā)送即可。其中反饋抽頭連接為生成多項(xiàng)式控制。其基本結(jié)構(gòu)見(jiàn)圖2。
信息碼元首先從數(shù)據(jù)緩存中被讀出,然后通過(guò)并/串變換進(jìn)入編碼器后,一方面直接輸出,同時(shí)送入除法電路,當(dāng)信息碼元輸入結(jié)束后,開(kāi)關(guān)進(jìn)行相應(yīng)的變換,存在寄存器中的監(jiān)督碼元輸出。圖3為(31,16)BCH編碼的RTL(寄存器傳輸級(jí))仿真結(jié)果。
熱門(mén)點(diǎn)擊
- 一種基于CPLD的偽隨機(jī)序列發(fā)生器
- 嵌入式系統(tǒng)硬件抽象層的原理與實(shí)現(xiàn)
- 利用XPS工具快速生成Virtex FPGA
- 在MC68HC908GP32上移植μC/OS
- 基于PIC18F系列單片機(jī)的嵌入式系統(tǒng)設(shè)計(jì)
- 嵌入式Email發(fā)送模塊
- 便攜系統(tǒng)中微處理器功耗的設(shè)計(jì)考慮
- 嵌入式瀏覽器Konqueror/E的實(shí)現(xiàn)
- 在Windows環(huán)境下調(diào)用動(dòng)態(tài)庫(kù)實(shí)現(xiàn)VXI嵌
- 使用LeonardoSpectrum綜合Xi
推薦技術(shù)資料
- 羅盤(pán)誤差及補(bǔ)償
- 造成羅盤(pán)誤差的主要因素有傳感器誤差、其他磁材料干擾等。... [詳細(xì)]
- CV/CC InnoSwitch3-AQ 開(kāi)
- URF1DxxM-60WR3系
- 1-6W URA24xxN-x
- 閉環(huán)磁通門(mén)信號(hào)調(diào)節(jié)芯片NSDRV401
- SK-RiSC-SOM-H27X-V1.1應(yīng)
- RISC技術(shù)8位微控制器參數(shù)設(shè)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究
深圳服務(wù)熱線:13751165337 13692101218
粵ICP備09112631號(hào)-6(miitbeian.gov.cn)

深圳市碧威特網(wǎng)絡(luò)技術(shù)有限公司
付款方式