Галоа Поле мултипликатор за Рийд Соломон кодекс

L

leongch

Guest
Здравейте момчета,

Аз съм за прилагане ReedSolomon кодекс (256191) с 8bits на символ

Намерих някои от онлайн код за Галоа Поле Мултипликационен 256, както следва.Кой може да ми каже как да излязат с този вид XOR?

gf256mult модул (A, B, Z);
вход [7:0] а;
вход [7:0] б;
продукция [7:0] Z;
присвоите Z [0] = б [0] & A [0] ^ б [1] & A [7] ^ б [2] & A [6] ^ б [3] & A [5] ^ б [4] & A [4] ^ б [5] & A [3] ^ б [5] & A [7] ^ б [6] & A [2] ^ б [6] & A [6] ^ б [6] & A [7] ^ б [7] & A [1] ^ б [7] & A [5] ^ б [7] & A [6] ^ б [7] & A [7];
присвоите Z [1] = б [0] & A [1] ^ б [1] & A [0] ^ б [2] & A [7] ^ б [3] & A [6] ^ б [4] & A [5] ^ б [5] & A [4] ^ б [6] & A [3] ^ б [6] & A [7] ^ б [7] & A [2] ^ б [7] & A [6] ^ б [7] & A [7];
присвоите Z [2] = б [0] & A [2] ^ б [1] & A [1] ^ б [1] & A [7] ^ б [2] & A [0] ^ б [2] & A [6] ^ б [3] & A [5] ^ б [3] & A [7] ^ б [4] & A [4] ^ б [4] & A [6] ^ б [5] & A [3] ^ б [5] & A [5] ^ б [5] & A [7] ^ б [6] & A [2] ^ б [6] & A [4] ^ б [6] & A [6] ^ б [6] & A [7] ^ б [7] & A [1] ^ б [7] & A [3] ^ б [7] & A [5] ^ б [7] & A [6];
присвоите Z [3] = б [0] & A [3] ^ б [1] & A [2] ^ б [1] & A [7] ^ б [2] & A [1] ^ б [2] & A [6] ^ б [2] & A [7] ^ б [3] & A [0] ^ б [3] & A [5] ^ б [3] & A [6] ^ б [4] & A [4] ^ б [4] & A [5] ^ б [4] & A [7] ^ б [5] & A [3] ^ б [5] & A [4] ^ б [5] & A [6] ^ б [5] & A [7] ^ б [6] & A [2] ^ б [6] & A [3] ^ б [6] & A [5] ^ б [6] & A [6] ^ б [7] & A [1] ^ б [7] & един [2] ^ б [7] & A [4] ^ б [7] & A [5];
присвоите Z [4] = б [0] & A [4] ^ б [1] & A [3] ^ б [1] & A [7] ^ б [2] & A [2] ^ б [2] & A [6] ^ б [2] & A [7] ^ б [3] & A [1] ^ б [3] & A [5] ^ б [3] & A [6] ^ б [3] & A [7] ^ б [4] & A [0] ^ б [4] & A [4] ^ б [4] & A [5] ^ б [4] & A [6] ^ б [5] & A [3] ^ б [5] & A [4] ^ б [5] & A [5] ^ б [6] & A [2] ^ б [6] & A [3] ^ б [6] & A [4] ^ б [7] & A [1] ^ б [7] & един [2] ^ б [7] & A [3] ^ б [7] & A [7];
присвоите Z [5] = б [0] & A [5] ^ б [1] & A [4] ^ б [2] & A [3] ^ б [2] & A [7] ^ б [3] & A [2] ^ б [3] & A [6] ^ б [3] & A [7] ^ б [4] & A [1] ^ б [4] & A [5] ^ б [4] & A [6] ^ б [4] & A [7] ^ б [5] & A [0] ^ б [5] & A [4] ^ б [5] & A [5] ^ б [5] & A [6] ^ б [6] & A [3] ^ б [6] & A [4] ^ б [6] & A [5] ^ б [7] & A [2] ^ б [7] & A [3] ^ б [7] & A [4];
присвоите Z [6] = б [0] & A [6] ^ б [1] & A [5] ^ б [2] & A [4] ^ б [3] & A [3] ^ б [3] & A [7] ^ б [4] & A [2] ^ б [4] & A [6] ^ б [4] & A [7] ^ б [5] & A [1] ^ б [5] & A [5] ^ б [5] & A [6] ^ б [5] & A [7] ^ б [6] & A [0] ^ б [6] & A [4] ^ б [6] & A [5] ^ б [6] & A [6] ^ б [7] & A [3] ^ б [7] & A [4] ^ б [7] & A [5];
присвоите Z [7] = б [0] & A [7] ^ б [1] & A [6] ^ б [2] & A [5] ^ б [3] & A [4] ^ б [4] & A [3] ^ б [4] & A [7] ^ б [5] & A [2] ^ б [5] & A [6] ^ б [5] & A [7] ^ б [6] & A [1] ^ б [6] & A [5] ^ б [6] & A [6] ^ б [6] & A [7] ^ б [7] & A [0] ^ б [7] & A [4] ^ б [7] & A [5] ^ б [7] & A [6];
endmodule

Благодарности

 
Ако се питат защо този XOR постига GF умножение:

следва от факта, че размножаването на примитивен елемент GF е проста работа, а вие можете лесно да добавите няколко такива продукти да се постигне чрез умножаване всеки елемент GF.

-B

 
Здравейте Благодаря за отговора, аз питам, как да го постигне.

Подобно на функцията
присвоите Z [0] = б [0] & A [0] ^ б [1] & A [7] ^ б [2] & A [6] ^ б [3] & A [5] ^ б [4] & A [4] ^ б [5] & A [3] ^ б [5] & A [7] ^ б [6] & A [2] ^ б [6] & A [6] ^ б [6] & A [7] ^ б [7] & A [1] ^ б [7] & A [5] ^ б [7] & A [6] ^ б [7] & A [7];
Защо е тази функция?Как да отида в тази функция?

 
Надявам се, че вече са запознати с основите GF ..

един primitve поли за GF (2 ^

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Охлаждам" border="0" />

е
α ^ 8 α ^ 4 α ^ 3 α ^ 2 1 = 0

всяка една GF (256) еле може да се запише като властта на примитивните α елемент.се елемент α ^ i.Тя може да се запише като
α ^ I = A7 * α ^ 7 A6 * α ^ 6 A5 * α ^ 5 * A4 α ^ 4 A3 * α ^ 3 * A2 α ^ 2 A1 * α ^ 1 A0

позволява умножава по-горе елемента с primitve елемент α
α α * ^ I = A7 * α ^ 8 A6 * α ^ 7 A5 * α ^ 6 A4 * α ^ 5 A3 * α ^ 4 A2 * α ^ 3 * A1 α ^ 2 A0 * α ^ 1

използвайки примитивни поли, ние може да замени α ^ 8
α ^ (I 1) = A7 * (4 α ^ ^ 3 α α ^ 2 1) A6 * α ^ 7 A5 * α ^ 6 A4 * α ^ 5 A3 * ^ 4 α A2 * α ^ 3 A1 * α ^ 2 A0 * α ^ 1

, които могат да се запише като
α ^ (I 1) = A6 * α ^ 7 A5 * α ^ 6 A4 * α ^ 5 (A3 XOR А7) * α ^ 4 (A7 XOR A2) * α ^ 3 (A7 XOR a1 ) * α ^ 2 (A7 XOR A0)
(Надявам се, че имам това право)

Сега можете да видите, че "се умножава по α" може да бъде постигната чрез промяна и операции XOR.Ние можем само да се повтаря това да се размножават и α ^ ^ 2 от α, α ^ 3, 4 ^ α, α ^ 5, 6 и α α ^ ^ 7.

Сега мисля за умножение по друг еле GF.Всяко еле GF може да се запише като
α ^ J = B7 α ^ * 7 * b6 α ^ 6 b5 * α ^ 5 b4 * α ^ 4 * B3 α ^ 3 * B2 α ^ 2 b1 * α ^ 1 B0

можете да видите, че за да получите продукт на α α и аз ^ ^ J, от което имаме нужда за да се размножава и α ^ ^ 1 от α, α ^ 2, α ^ 3, 4 ^ α, α ^ 5, 6 и ^ α α ^ 7 и надбавка.Все пак, не всички трябва да се добавят само тези продукти, чиито б не са равни на нула трябва да бъде.Това е точно това, което ви expresion прави.
-B

 

Welcome to EDABoard.com

Sponsor

Back
Top