1,rs編碼首先是線性循環編碼,所謂線性循環編碼就是說編碼后的碼組T(x)左移或右移都必然還是有限組碼組中的一組,並且T(X)碼組能夠被g(x)整除,g(x)為生成多項式。
2,由信息碼m(x)得到T(x)的原理:
3,關於域
所指的域為伽羅華域,簡寫為GF(2^m)域中的每個元素都可以用a^0,a^1,a^2...a^(m-1) 的和表示。
運算法則可以參考模2運算,不過乘法運算有區別,是模N算法,N不一定是2。
4,生成多項式g(x)=(x-a)(x-a^2)(x-a^3).....(x-a^(n-k))或者減號變為加號,因為模二加法和模二減法效果相同,展開之后再結合域的元素之間的關系,得到各項系數g0,g1,g2.......
5,fpga實現原理圖
至於m是在最高位輸入還是在最低位輸入根據原理可以知道,要算的是x^(n-k)*m(x)/g(x),那么就是在最高位輸入,如果是m(x)/g(x),那么就是在低位輸入。其他部分按照除數的表達式去抽頭。輸入順序為由高到低。
6,上圖中關鍵部分在於域乘法的實現,實現原理如下所示
其中m*g0=q;化簡一下就可以得到。