本發(fā)明涉及通信技術領域,特別是涉及一種rs碼譯碼方法及裝置。
背景技術:
rs(reed-solomon)碼是一種既能糾隨機錯誤又能糾突發(fā)錯誤的多進制分組信道差錯控制碼,隨著以fpga為代表的可編程大規(guī)模集成電路vlsi技術的迅猛發(fā)展,rs碼也得到了廣泛應用,其廣泛應用于各種通信系統(tǒng)及數據存儲中。rs碼糾錯能力強,更適合惡劣通信環(huán)境的應用,但rs碼的譯碼復雜性隨著碼長的增加而激增。
在復雜的信道傳輸條件下,使用rs碼作為信道編譯碼可以提高傳輸的可靠性。對比編碼而言,rs碼譯碼的復雜性較高,需要的存儲空間較大,資源耗費較為嚴重?,F有的rs碼譯碼步驟較為復雜,硬件實現起來更加困難。
所以,如何高效實現rs碼譯碼,減小硬件實現難度,縮減硬件資源,提高譯碼速度,是目前本領域技術人員急需解決的技術問題。
技術實現要素:
本發(fā)明的目的是提供一種rs碼譯碼方法及裝置,以高效實現rs碼譯碼,減小硬件實現難度,縮減硬件資源,提高譯碼速度。
為解決上述技術問題,本發(fā)明提供如下技術方案:
一種rs碼譯碼方法,包括:
接收碼多項式r(x);
根據碼多項式r(x),計算伴隨式si;
根據伴隨式si和修正的迭代算法,計算錯誤位置多項式σ(x)和錯誤值多項式ω(x);
使用錢搜索求解錯誤位置多項式σ(x)的根,確定錯誤位置數和錯誤位置;
通過錯誤值多項式ω(x)計算錯誤值,獲得錯誤圖樣e(x);
根據碼多項式r(x)和錯誤圖樣e(x),獲得針對碼多項式r(x)的譯碼結果。
在本發(fā)明的一種具體實施方式中,所述根據伴隨式si和修正的迭代算法,計算錯誤位置多項式σ(x)和錯誤值多項式ω(x),包括:
根據伴隨式si,確定錯誤位置多項式σ(x)、錯誤值多項式ω(x)的初始條件分別為:σ0(x)=1,ω0(x)=1,dj=s1,φ0(x)=1,
更新序列號j;
根據dj與0的對比結果,確定迭代規(guī)則;
使用所述迭代規(guī)則計算錯誤位置多項式σ(x)和錯誤值多項式ω(x);
更新dj,并重復執(zhí)行所述更新序列號j的步驟,直至j=2t-1,確定錯誤位置多項式σ(x)和錯誤值多項式ω(x)。
在本發(fā)明的一種具體實施方式中,所述根據dj與0的對比結果,確定迭代規(guī)則,包括:
如果dj=0,則確定迭代規(guī)則為第一迭代規(guī)則:
σj+1(x)=σj(x);
ωj+1(x)=ωj(x);
φj+1(x)=xφj(x);
在本發(fā)明的一種具體實施方式中,所述根據dj與0的對比結果,確定迭代規(guī)則,包括:
如果dj≠0,則確定迭代規(guī)則為第二迭代規(guī)則:
σj+1(x)=σj(x)+djxφj(x);
其中,在
在本發(fā)明的一種具體實施方式中,所述更新dj,包括:
根據以下公式更新dj:
在本發(fā)明的一種具體實施方式中,所述根據碼多項式r(x),計算伴隨式si,包括:
根據碼多項式r(x)和以下公式,計算伴隨式si:
si=((((yn-1·αi+yn-2)·αi+yn-3)·αi+yn-4)·αi…)·αi+y0;
其中,i=1,2,…,2t。
在本發(fā)明的一種具體實施方式中,所述通過錯誤值多項式ω(x)計算錯誤值,獲得錯誤圖樣e(x),包括:
根據以下公式計算錯誤值yi,獲得錯誤圖樣e(x):
在本發(fā)明的一種具體實施方式中,rs碼為(31,15)rs碼,
通過以下公式計算錯誤值yi的分母:
通過以下公式計算錯誤值yi的分子:
一種rs碼譯碼裝置,包括:
碼多項式接收模塊,用于接收碼多項式r(x);
伴隨式計算模塊,用于根據碼多項式r(x),計算伴隨式si;
錯誤計算模塊,用于根據伴隨式si和修正的迭代算法,計算錯誤位置多項式σ(x)和錯誤值多項式ω(x);
錯誤確定模塊,用于使用錢搜索求解錯誤位置多項式σ(x)的根,確定錯誤位置數和錯誤位置;
錯誤圖樣獲得模塊,用于通過錯誤值多項式ω(x)計算錯誤值,獲得錯誤圖樣e(x);
譯碼結果獲得模塊,用于根據碼多項式r(x)和錯誤圖樣e(x),獲得針對碼多項式r(x)的譯碼結果。
在本發(fā)明的一種具體實施方式中,所述錯誤計算模塊,具體用于:
根據伴隨式si,確定錯誤位置多項式σ(x)、錯誤值多項式ω(x)的初始條件分別為:σ0(x)=1,ω0(x)=1,dj=s1,φ0(x)=1,
更新序列號j;
根據dj與0的對比結果,確定迭代規(guī)則;
使用所述迭代規(guī)則計算錯誤位置多項式σ(x)和錯誤值多項式ω(x);
更新dj,并重復執(zhí)行所述更新序列號j的步驟,直至j=2t-1,確定錯誤位置多項式σ(x)和錯誤值多項式ω(x)。
應用本發(fā)明實施例所提供的技術方案,在接收到碼多項式后,根據碼多項式,計算伴隨式,根據伴隨式和修正的迭代算法,計算錯誤位置多項式和錯誤值多項式,使用錢搜索求解錯誤位置多項式的根,確定錯誤位置數和錯誤位置,通過錯誤值多項式計算錯誤值,獲得錯誤圖樣,根據碼多項式和錯誤圖樣,獲得針對碼多項式的譯碼結果。通過修正迭代算法實現了rs碼的高效譯碼,減小了硬件實現難度,縮減了硬件資源,提高了譯碼速度。
附圖說明
為了更清楚地說明本發(fā)明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例中一種rs碼譯碼方法的實施流程圖;
圖2為本發(fā)明實施例中錯誤位置多項式和錯誤值多項式計算流程圖;
圖3為本發(fā)明實施例中一種rs碼譯碼裝置的結構示意圖。
具體實施方式
為了使本技術領域的人員更好地理解本發(fā)明方案,下面結合附圖和具體實施方式對本發(fā)明作進一步的詳細說明。顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
參見圖1所示,為本發(fā)明實施例所提供的一種rs碼譯碼方法的實施流程圖,該方法可以包括以下步驟:
s110:接收碼多項式r(x)。
在編碼過程中,使用rs碼對在信道中待傳輸信息進行編碼,獲得碼多項式,在譯碼過程中,可以接收碼多項式r(x)。
s120:根據碼多項式r(x),計算伴隨式si。
根據接收到的碼多項式r(x),可以計算伴隨式si。
假設錯誤圖樣e(x)=en-1xn-1+en-2xn-2+…+e1x+e0,ei為gf(2m)的元素。若信道產生t個錯誤,分別位于xi,相應的錯誤值為yi,i=1,2,…,2t。
則有:e(x)=y(tǒng)1x1+y2x2+…+ytxt。
伴隨式si的計算式為:
在本發(fā)明的一種具體實施方式中,可以根據碼多項式r(x)和公式(1),計算伴隨式si:
si=((((yn-1·αi+yn-2)·αi+yn-3)·αi+yn-4)·αi…)·αi+y0,i=1,2,…,2t公式(1)
即:
s1=((((yn-1·α+yn-2)·α+yn-3)·α+yn-4)·α…)·α+y0;
s2=((((yn-1·α2+yn-2)·α2+yn-3)·α2+yn-4)·α2…)·α2+y0;
……
s2t=((((yn-1·α2t+yn-2)·α2t+yn-3)·α2t+yn-4)·α2t…)·α2t+y0。
這樣更方便使用fpga實現,用veriloghdl語言來描述伴隨式si的計算過程,硬件實現變得簡單,簡化了計算量。
在計算伴隨式時,可以采用乒乓操作:設置兩個用來存儲輸入數據y0、……、yn-1的臨時存儲器,在接收一組數據并存儲的過程中,取出另一組已經存儲的數據,同時進行譯碼,過程由乒乓開關來操作。
s130:根據伴隨式si和修正的迭代算法,計算錯誤位置多項式σ(x)和錯誤值多項式ω(x)。
在步驟s120計算得到伴隨式si,根據伴隨式si和修正的迭代算法,可以計算錯誤位置多項式σ(x)和錯誤值多項式ω(x)。
在本發(fā)明的一種具體實施方式中,步驟s130可以包括以下步驟:
步驟一:根據伴隨式si,確定錯誤位置多項式σ(x)、錯誤值多項式ω(x)的初始條件分別為:σ0(x)=1,ω0(x)=1,dj=s1,φ0(x)=1,
步驟二:更新序列號j;
步驟三:根據dj與0的對比結果,確定迭代規(guī)則;
步驟四:使用迭代規(guī)則計算錯誤位置多項式σ(x)和錯誤值多項式ω(x);
步驟五:更新dj,并重復執(zhí)行更新序列號j的步驟,直至j=2t-1,確定錯誤位置多項式σ(x)和錯誤值多項式ω(x)。
為便于描述,將上述五個步驟結合起來進行說明。
在現有技術中,多是通過bm迭代算法來計算錯誤位置多項式σ(x)和錯誤值多項式ω(x),具體計算公式為:
其中,i滿足
本發(fā)明實施例中對bm迭代算法進行修正,獲得修正的迭代算法。
參見圖2所示,根據伴隨式si,可以確定錯誤位置多項式σ(x)、錯誤值多項式ω(x)的初始條件分別為:σ0(x)=1,ω0(x)=1,dj=s1,φ0(x)=1,
令j=j+1,更新序列號j。更新序列號j后,根據dj與0的對比結果,可以確定迭代規(guī)則。
具體的,如果dj=0,則可以確定迭代規(guī)則為第一迭代規(guī)則:
σj+1(x)=σj(x);
ωj+1(x)=ωj(x);
φj+1(x)=xφj(x);
如果dj≠0,則可以確定迭代規(guī)則為第二迭代規(guī)則:
σj+1(x)=σj(x)+djxφj(x);
其中,在
使用確定的迭代規(guī)則可以計算錯誤位置多項式σ(x)和錯誤值多項式ω(x)。
判斷j是否等于2t-1,如果否,則更新dj,具體的,可以使用公式(2)更新dj:
重復執(zhí)行更新j的步驟,直至j=2t-1,確定錯誤位置多項式σ(x)和錯誤值多項式ω(x):
σj(x)=σj+1(x);
ωj(x)=ωj+1(x)。
假設在第j步迭代時,已經確定了i,那么σi(x)也就確定了,則
令第j步迭代中
σj+1(x)=σj(x)-djxφj(x);
此與i完全無關。且φj(x)和
本發(fā)明實施例修正的迭代算法簡單快速,在迭代過程中只需存儲最近一次迭代的結果,前面的迭代結果在完成迭代后都可以舍棄,所需存儲空間也降低到很小。另外,降低了算法的迭代次數。相對于原bm迭代算法,修正的迭代算法在迭代過程中,不再需要回溯此前的結果,從而極大的簡化了錯誤位置多項式σ(x)和錯誤值多項式ω(x)的計算,降低了處理難度。
s140:使用錢搜索求解錯誤位置多項式σ(x)的根,確定錯誤位置數和錯誤位置。
錯誤位置多項式σ(x)的根即為實際錯誤位置。使用錢搜索可以求解得到錯誤位置多項式σ(x)的根,從而可以確定出錯誤位置數和錯誤位置。使用錢搜索求解錯誤位置多項式σ(x)的根為現有技術,本發(fā)明實施例對此不再贅述。
s150:通過錯誤值多項式ω(x)計算錯誤值,獲得錯誤圖樣e(x)。
在本發(fā)明實施例中,可以根據公式(3)計算錯誤值yi,獲得錯誤圖樣e(x):
為在fpga中簡單實現,在本發(fā)明的一種具體實施方式中,如果rs碼為(31,15)rs碼,則可以通過以下公式計算錯誤值yi的分母:
通過以下公式計算錯誤值yi的分子:
根據不同的d值,可以方便得到錯誤圖樣e(x)。
s160:根據碼多項式r(x)和錯誤圖樣e(x),獲得針對碼多項式r(x)的譯碼結果。
通過步驟s110至步驟s150獲得了碼多項式r(x)和錯誤圖樣e(x),根據碼多項式r(x)和錯誤圖樣e(x),可以獲得針對碼多項式r(x)的譯碼結果。具體的譯碼結果c(x)=r(x)^e(x)。最終完成譯碼。
應用本發(fā)明實施例所提供的方法,在接收到碼多項式后,根據碼多項式,計算伴隨式,根據伴隨式和修正的迭代算法,計算錯誤位置多項式和錯誤值多項式,使用錢搜索求解錯誤位置多項式的根,確定錯誤位置數和錯誤位置,通過錯誤值多項式計算錯誤值,獲得錯誤圖樣,根據碼多項式和錯誤圖樣,獲得針對碼多項式的譯碼結果。通過修正迭代算法實現了rs碼的高效譯碼,減小了硬件實現難度,縮減了硬件資源,提高了譯碼速度。
相應于上面的方法實施例,本發(fā)明實施例還提供了一種rs碼譯碼裝置,下文描述的一種rs碼譯碼裝置與上文描述的一種rs碼譯碼方法可相互對應參照。
參見圖3所示,該裝置包括以下模塊:
碼多項式接收模塊310,用于接收碼多項式r(x);
伴隨式計算模塊320,用于根據碼多項式r(x),計算伴隨式si;
錯誤計算模塊330,用于根據伴隨式si和修正的迭代算法,計算錯誤位置多項式σ(x)和錯誤值多項式ω(x);
錯誤確定模塊340,用于使用錢搜索求解錯誤位置多項式σ(x)的根,確定錯誤位置數和錯誤位置;
錯誤圖樣獲得模塊350,用于通過錯誤值多項式ω(x)計算錯誤值,獲得錯誤圖樣e(x);
譯碼結果獲得模塊360,用于根據碼多項式r(x)和錯誤圖樣e(x),獲得針對碼多項式r(x)的譯碼結果。
應用本發(fā)明實施例所提供的裝置,在接收到碼多項式后,根據碼多項式,計算伴隨式,根據伴隨式和修正的迭代算法,計算錯誤位置多項式和錯誤值多項式,使用錢搜索求解錯誤位置多項式的根,確定錯誤位置數和錯誤位置,通過錯誤值多項式計算錯誤值,獲得錯誤圖樣,根據碼多項式和錯誤圖樣,獲得針對碼多項式的譯碼結果。通過修正迭代算法實現了rs碼的高效譯碼,減小了硬件實現難度,縮減了硬件資源,提高了譯碼速度。
在本發(fā)明的一種具體實施方式中,所述錯誤計算模塊330,具體用于:
根據伴隨式si,確定錯誤位置多項式σ(x)、錯誤值多項式ω(x)的初始條件分別為:σ0(x)=1,ω0(x)=1,dj=s1,φ0(x)=1,
更新序列號j;
根據dj與0的對比結果,確定迭代規(guī)則;
使用所述迭代規(guī)則計算錯誤位置多項式σ(x)和錯誤值多項式ω(x);
更新dj,并重復執(zhí)行所述更新序列號j的步驟,直至j=2t-1,確定錯誤位置多項式σ(x)和錯誤值多項式ω(x)。
在本發(fā)明的一種具體實施方式中,所述錯誤計算模塊330,具體用于:
如果dj=0,則確定迭代規(guī)則為第一迭代規(guī)則:
σj+1(x)=σj(x);
ωj+1(x)=ωj(x);
φj+1(x)=xφj(x);
在本發(fā)明的一種具體實施方式中,所述錯誤計算模塊330,具體用于:
如果dj≠0,則確定迭代規(guī)則為第二迭代規(guī)則:
σj+1(x)=σj(x)+djxφj(x);
其中,在
在本發(fā)明的一種具體實施方式中,所述錯誤計算模塊330,具體用于:
根據以下公式更新dj:
在本發(fā)明的一種具體實施方式中,所述伴隨式計算模塊320,具體用于:
根據碼多項式r(x)和以下公式,計算伴隨式si:
si=((((yn-1·αi+yn-2)αi+yn-3)·αi+yn-4)·αi…)·αi+y0;
其中,i=1,2,…,2t。
在本發(fā)明的一種具體實施方式中,所述錯誤圖樣獲得模塊350,具體用于:
根據以下公式計算錯誤值yi,獲得錯誤圖樣e(x):
在本發(fā)明的一種具體實施方式中,rs碼為(31,15)rs碼,所述錯誤圖樣獲得模塊350,具體用于:
通過以下公式計算錯誤值yi的分母:
通過以下公式計算錯誤值yi的分子:
本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其它實施例的不同之處,各個實施例之間相同或相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。
專業(yè)人員還可以進一步意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結合來實現,為了清楚地說明硬件和軟件的可互換性,在上述說明中已經按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術方案的特定應用和設計約束條件。專業(yè)技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發(fā)明的范圍。
結合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結合來實施。軟件模塊可以置于隨機存儲器(ram)、內存、只讀存儲器(rom)、電可編程rom、電可擦除可編程rom、寄存器、硬盤、可移動磁盤、cd-rom、或技術領域內所公知的任意其它形式的存儲介質中。
本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的技術方案及其核心思想。應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進行若干改進和修飾,這些改進和修飾也落入本發(fā)明權利要求的保護范圍內。