Reed-Solomon hata düzeltme - Reed–Solomon error correction

Reed-Solomon kodları
AdınıIrving S. Reed ve Gustave Solomon
Sınıflandırma
HiyerarşiDoğrusal blok kodu
Polinom kodu
Reed-Solomon kodu
Blok uzunluğun
Mesaj uzunluğuk
Mesafenk + 1
Alfabe boyutuq = pmn  (p önemli)
Sıklıkla n = q − 1.
Gösterim[n, k, nk + 1]q-code
Algoritmalar
Berlekamp – Massey
Öklid
et al.
Özellikleri
Ayrılabilir maksimum mesafe kodu

Reed-Solomon kodları bir grup hata düzeltme kodları tarafından tanıtıldı Irving S. Reed ve Gustave Solomon 1960 yılında.[1]En belirgin olanı gibi tüketici teknolojilerini içeren birçok uygulamaya sahiptirler. CD'ler, DVD'ler, Blu-ray diskler QR kodları, veri aktarımı gibi teknolojiler DSL ve WiMAX, yayın yapmak uydu iletişimi gibi sistemler, DVB ve ATSC ve gibi depolama sistemleri RAID 6.

Reed-Solomon kodları, bir dizi veri olarak işlenen bir veri bloğu üzerinde çalışır. sonlu alan semboller olarak adlandırılan öğeler. Reed-Solomon kodları, çoklu sembol hatalarını tespit edip düzeltebilir. Toplayarak t = n − k verilere sembolleri kontrol edin, bir Reed-Solomon kodu aşağıdakilere kadar ve dahil olmak üzere herhangi bir kombinasyonu algılayabilir (ancak düzeltemez) t hatalı semboller, veya bul ve düzelt t/2⌋ bilinmeyen yerlerde hatalı semboller. Bir silme kodu kadar ve dahil düzeltebilir t Algoritma tarafından bilinen ve sağlanan konumlardaki silmeler veya hata ve silme kombinasyonlarını tespit edip düzeltebilir. Reed-Solomon kodları da çoklu-patlamak bit hatası düzeltme kodları, bir dizi b + 1 ardışık bit hataları en fazla iki boyut sembolünü etkileyebilir b. Un seçimi t kodun tasarımcısına bağlıdır ve geniş sınırlar içinde seçilebilir.

İki temel Reed-Solomon kodu türü vardır - orijinal görünüm ve BCH görünüm - BCH görünümü en yaygın olanıdır, çünkü BCH görünümü kod çözücüleri daha hızlıdır ve orijinal görünüm kod çözücülerinden daha az çalışan depolama gerektirir.

Tarih

Reed-Solomon kodları 1960 yılında Irving S. Reed ve Gustave Solomon, daha sonra çalışanları olan MIT Lincoln Laboratuvarı. Yeni ufuklar açan makaleleri "Belirli Sonlu Alanlar Üzerindeki Polinom Kodları" başlığını taşıyordu. (Reed ve Solomon 1960 ). Reed & Solomon makalesinde açıklanan orijinal kodlama şeması, kodlayıcının ve kod çözücünün yalnızca kodlanacak sabit bir değerler kümesinin (değerlendirme noktaları) bilindiği kodlanacak mesaja dayalı bir değişken polinom kullanmıştır. Orijinal teorik kod çözücü, aşağıdaki alt kümelere dayalı potansiyel polinomlar üretti. k (kodlanmamış mesaj uzunluğu) / n Alınan bir mesajın (kodlanmış mesaj uzunluğu) değerleri, en popüler polinomu doğru olanı olarak seçer; bu, en basit durumlar dışında herkes için pratik değildir. Bu, başlangıçta orijinal şemayı bir BCH kodu hem kodlayıcı hem de kod çözücü tarafından bilinen sabit bir polinomu temel alan benzer bir şema, ancak daha sonra, BCH şemalarından daha yavaş olmasına rağmen, orijinal şemaya dayalı pratik kod çözücüler geliştirildi. Bunun sonucu, iki ana tip Reed Solomon kodu olmasıdır; orijinal kodlama şemasını kullananlar ve BCH kodlama şemasını kullananlar.

Ayrıca 1960 yılında, pratik bir sabit polinom kod çözücü BCH kodları tarafından geliştirilmiş Daniel Gorenstein ve Neal Zierler, Ocak 1960'ta Zierler tarafından bir MIT Lincoln Laboratuvarı raporunda ve daha sonra Haziran 1961'de bir makalede anlatılmıştır.[2] Gorenstein – Zierler kod çözücü ve BCH kodları üzerindeki ilgili çalışma, Hata Düzeltme Kodları kitabında şu şekilde açıklanmıştır: W. Wesley Peterson (1961).[3] 1963'te (veya muhtemelen daha önce), J.J. Stone (ve diğerleri), Reed Solomon kodlarının, sabit bir üreteç polinomu kullanan BCH şemasını kullanabileceğini ve bu tür kodları özel bir BCH kodları sınıfı haline getirebileceğini fark etti[4] ancak orijinal kodlama şemasına dayanan Reed Solomon kodları, bir BCH kodu sınıfı değildir ve değerlendirme noktalarının setine bağlı olarak, döngüsel kodlar.

1969'da, geliştirilmiş bir BCH şeması kod çözücüsü, Elwyn Berlekamp ve James Massey ve o zamandan beri Berlekamp – Massey kod çözme algoritması.

1975'te, başka bir geliştirilmiş BCH şeması kod çözücüsü, Yasuo Sugiyama tarafından geliştirildi. genişletilmiş Öklid algoritması.[5]

DVB-vs-DVB-X2.png

1977'de Reed – Solomon kodları Voyager programı şeklinde sıralı hata düzeltme kodları. Kitlesel üretilen tüketici ürünlerinde ilk ticari uygulama 1982 yılında kompakt disk, nerede iki aralıklı Reed – Solomon kodları kullanılır. Günümüzde Reed-Solomon kodları, dijital depolama cihazlar ve dijital iletişim standartlar, yavaş yavaş daha modern düşük yoğunluklu eşlik denetimi (LDPC) kodları veya turbo kodları. Örneğin, Reed – Solomon kodları, Dijital Video Yayını (DVB) standardı DVB-S, ancak halefinde LDPC kodları kullanılır, DVB-S2.

1986'da, orijinal bir şema kod çözücüsü olarak bilinen Berlekamp – Welch algoritması geliştirildi.

1996 yılında, liste kod çözücüleri veya yumuşak kod çözücüler olarak adlandırılan orijinal şema kod çözücülerinin varyasyonları Madhu Sudan ve diğerleri tarafından geliştirildi ve bu tür kod çözücüler üzerinde çalışmalar devam ediyor - bkz. Guruswami – Sudan listesi kod çözme algoritması.

2002 yılında, başka bir orijinal şema kod çözücüsü, Shuhong Gao tarafından geliştirildi. genişletilmiş Öklid algoritması Gao_RS.pdf .

Başvurular

Veri depolama

Reed-Solomon kodlaması, ortam kusurlarıyla ilişkili patlama hatalarını düzeltmek için yığın depolama sistemlerinde çok yaygın olarak kullanılmaktadır.

Reed – Solomon kodlaması, kompakt disk. Seri üretilen bir tüketici ürününde güçlü hata düzeltme kodlamasının ilk kullanımıydı ve DAT ve DVD benzer şemalar kullanın. CD'de, Reed-Solomon kodlamasının iki katmanı 28 yolla ayrılmış evrişimli serpiştirici Cross-Interleaved Reed – Solomon Coding adlı bir şema (CIRC ). Bir CIRC kod çözücünün ilk öğesi, 8 bitlik sembollerle (255,251) koddan kısaltılmış, nispeten zayıf bir iç (32,28) Reed-Solomon kodudur. Bu kod, 32 baytlık blok başına en fazla 2 bayt hatasını düzeltebilir. Daha da önemlisi, düzeltilemeyen blokları, yani 2 bayttan fazla hatası olan blokları siler olarak işaretler. Silme göstergeleri ile kodu çözülmüş 28 baytlık bloklar daha sonra serpiştirici tarafından dış kodun (28,24) farklı bloklarına yayılır. Ayrıştırma sayesinde, iç koddan silinen 28 baytlık bir blok, 28 dış kod bloğunun her birinde silinen tek bir bayta dönüşür. Dış kod, blok başına bu tür 4 silmeyi işleyebildiği için bunu kolayca düzeltir.

Sonuç, 4000 bit'e kadar veya disk yüzeyinde yaklaşık 2,5 mm'ye kadar hata patlamalarını tamamen düzeltebilen bir CIRC'dir. Bu kod o kadar güçlüdür ki, çoğu CD çalma hatası, düzeltilemez hata patlamaları değil, lazerin iz atlamasına neden olan izleme hatalarından kaynaklanır.[6]

DVD'ler benzer bir şema kullanır, ancak çok daha büyük bloklarla, bir (208,192) iç kod ve bir (182,172) dış kodla.

Reed-Solomon hata düzeltmesi ayrıca parşömen multimedya dosyalarına eşlik eden yaygın olarak yayınlanan dosyalar USENET. Dağıtılmış çevrimiçi depolama hizmeti Wuala (2015'te üretilmiyor) ayrıca dosyaları ayırırken Reed-Solomon'u kullanıyordu.

Barkod

Neredeyse tüm iki boyutlu barkodlar, örneğin PDF-417, MaxiCode, Veri matrisi, QR kod, ve Aztek Kodu barkodun bir kısmı hasar görmüş olsa bile doğru okumaya izin vermek için Reed-Solomon hata düzeltmesini kullanın. Barkod tarayıcısı bir barkod sembolünü tanıyamadığında, onu bir silme işlemi olarak değerlendirecektir.

Reed-Solomon kodlaması, tek boyutlu barkodlarda daha az yaygındır, ancak PostBar semboloji.

Veri aktarımı

Özellikle Reed – Solomon kodlarının özel biçimleri Cauchy -RS ve Vandermonde -RS, veri aktarımının güvenilmez doğasının üstesinden gelmek için kullanılabilir. kanalları silme. Kodlama işlemi bir RS kodunu varsayar (NK) sonuçlanır N uzunluk kod sözcükleri N her birinin sakladığı semboller K Oluşturulan ve daha sonra bir silme kanalı üzerinden gönderilen verilerin sembolleri.

Herhangi bir kombinasyonu K Diğer uçta alınan kod sözcükleri, tüm bunları yeniden yapılandırmak için yeterlidir. N kod sözcükleri. Kod oranı, kanalın silinme olasılığı yeterince modellenmediği ve daha az olduğu görülmedikçe genellikle 1 / 2'ye ayarlanır. Sonuç olarak, N genellikle 2'dirKBu, gönderilen tüm kod sözcüklerin yeniden yapılandırılması için gönderilen tüm kod sözcüklerinin en az yarısının alınması gerektiği anlamına gelir.

Reed – Solomon kodları ayrıca xDSL sistemler ve CCSDS 's Uzay İletişim Protokolü Özellikleri bir biçim olarak ileri hata düzeltme.

Uzay aktarımı

Derin uzay birleştirilmiş kodlama sistemi.[7] İşaretleme: RS (255, 223) + CC ("kısıtlama uzunluğu" = 7, kod oranı = 1/2).

Reed-Solomon kodlamasının önemli bir uygulaması, cihaz tarafından geri gönderilen dijital resimleri kodlamaktı. Voyager uzay aracı.

Voyager, Reed – Solomon kodlamasını tanıttı sıralı ile evrişimli kodlar o zamandan beri derin uzay ve uydu (örneğin, doğrudan dijital yayın) iletişiminde çok yaygın hale gelen bir uygulamadır.

Viterbi kod çözücüler kısa patlamalarda hatalar üretme eğilimindedir. Bu patlama hatalarının düzeltilmesi, en iyi kısa veya basitleştirilmiş Reed-Solomon kodlarıyla yapılan bir iştir.

Birleştirilmiş Reed-Solomon / Viterbi-kodu çözülmüş evrişimli kodlamanın modern versiyonları, Mars Yol Bulucu, Galileo, Mars Keşif Gezgini ve Cassini yaklaşık 1–1,5 arasında performans gösterdikleri görevler dB nihai sınırın Shannon kapasitesi.

Bu birleştirilmiş kodların yerini artık daha güçlü turbo kodları:

NASA misyonları tarafından kullanılan kanal kodlama şemaları[8]
YıllarKodMisyon (lar)
1958-günümüzKodlanmamışExplorer, Mariner ve diğerleri
1968-1978evrişimli kodlar (CC) (25, 1/2)Öncü, Venüs
1969-1975 (32, 6)Reed-Muller koduMariner, Viking
1977-günümüzİkili Golay koduVoyager
1977-günümüzRS (255, 223) + CC (7, 1/2)Voyager, Galileo ve diğerleri
1989-2003RS (255, 223) + CC (7, 1/3)Voyager
1958-günümüzRS (255, 223) + CC (14, 1/4)Galileo
1996-günümüzRS + CC (15, 1/6)Cassini, Mars Pathfinder, diğerleri
2004-günümüzTurbo kodları[nb 1]Messenger, Stereo, MRO, diğerleri
tahmini 2009LDPC kodlarıTakımyıldız, MSL

İnşaatlar

Reed-Solomon kodu, aslında her kodun üç parametre ile karakterize edildiği bir kodlar ailesidir: alfabe boyut q, bir blok uzunluğu nve bir mesaj uzunluğu k, ile k Alfabe sembolleri seti şu şekilde yorumlanır: sonlu alan düzenin q, ve böylece, q olmalı asal güç. Reed-Solomon kodunun en kullanışlı parametrelendirmelerinde, blok uzunluğu genellikle mesaj uzunluğunun bir sabit katıdır, yani oran R = k/n bir miktar sabittir ve dahası, blok uzunluğu alfabe boyutuna eşittir veya alfabe boyutundan bir küçüktür, yani n = q veya n = q − 1.[kaynak belirtilmeli ]

Reed ve Solomon'un orijinal görüşü: Değerler dizisi olarak kod sözcüğü

Reed-Solomon kodu için farklı kodlama prosedürleri vardır ve bu nedenle, tüm kod sözcükleri kümesini tanımlamanın farklı yolları vardır. Reed ve Solomon (1960) Reed-Solomon kodunun her kod sözcüğü, şundan küçük bir derece polinomunun işlev değerleri dizisidir. k. Reed-Solomon kodunun bir kod sözcüğünü elde etmek için, mesaj bir polinomun açıklaması olarak yorumlanır p derecenin altında k sonlu alan üzerinde F ile q sırayla, polinom p değerlendirilir nq farklı noktalar Alanın Fve değerler dizisi karşılık gelen kod sözcüğüdür. Bir dizi değerlendirme noktası için yaygın seçenekler arasında {0, 1, 2, ..., n − 1}, {0, 1, α, α2, ..., αn−2}, yada ... için n < q, {1, α, α2, ..., αn−1}, ... , nerede α bir ilkel öğe nın-nin F.

Resmen, set Reed-Solomon kodunun kod sözcükleri aşağıdaki gibi tanımlanır:

Herhangi ikisinden beri farklı şundan küçük polinomlar en çok katılıyorum Bu, Reed-Solomon kodunun herhangi iki kod sözcüğünün en azından uyuşmadığı anlamına gelir. Ayrıca, aynı fikirde olan iki polinom vardır. puan ama eşit değildir ve bu nedenle, mesafe Reed-Solomon kodunun tam olarak Ardından göreceli mesafe , nerede bağıl mesafe ile oran arasındaki bu takas, asimptotik olarak optimaldir, çünkü Singleton bağlı, her kod tatmin ediyor Bu optimum değiş tokuşa ulaşan bir kod olan Reed-Solomon kodu, maksimum mesafe ayrılabilir kodlar.

Farklı polinomların sayısı daha az iken k ve farklı mesajların sayısı şuna eşittir: ve böylece her mesaj böyle bir polinomla benzersiz bir şekilde eşlenebilir, bu kodlamayı yapmanın farklı yolları vardır. Reed ve Solomon (1960) mesajı yorumlar x olarak katsayılar polinomun p, oysa sonraki yapılar mesajı değerler ilk başta polinom k puan ve polinomu elde edin p bu değerleri, daha küçük bir derece polinomu ile enterpolasyon yaparak kİkinci kodlama prosedürü, biraz daha az verimli olmakla birlikte, bir sistematik kod yani, orijinal mesaj her zaman kod sözcüğünün bir alt dizisi olarak bulunur.

Basit kodlama prosedürü: Bir katsayı dizisi olarak mesaj

Orijinal yapımında Reed ve Solomon (1960), mesaj polinomla eşlenir ile

Kod sözcüğü değerlendirilerek elde edilir -de farklı noktalar Alanın Böylece klasik kodlama işlevi Reed – Solomon kodu için şu şekilde tanımlanır:

Bu işlev bir doğrusal haritalama yani tatmin ediyor takip etmek için -matris öğeleriyle :

Bu matris, bir Vandermonde matrisi bitmiş . Başka bir deyişle, Reed – Solomon kodu bir doğrusal kod ve klasik kodlama prosedüründe, jeneratör matrisi dır-dir .

Sistematik kodlama prosedürü: İlk değer dizisi olarak mesaj

Reed – Solomon kodunu da üreten alternatif bir kodlama prosedürü vardır, ancak bunu bir sistematik yol. İşte mesajdaki eşleme polinom için farklı çalışır: polinom şimdi, şundan küçük olan benzersiz polinom olarak tanımlanmaktadır öyle ki

herkes için geçerli .

Bu polinomu hesaplamak için itibaren , biri kullanabilir Lagrange enterpolasyonu Bulunduktan sonra diğer noktalarda değerlendirilir. Alanın alternatif kodlama işlevi Reed – Solomon kodu için yine sadece değerler dizisidir:

İlkinden beri her kod sözcüğün girişi rastlamak , bu kodlama prosedürü gerçekten sistematik Lagrange enterpolasyonu doğrusal bir dönüşüm olduğundan, doğrusal bir haritalamadır. Aslında bizde , nerede

Ayrık Fourier dönüşümü ve tersi

Bir ayrık Fourier dönüşümü esasen kodlama prosedürü ile aynıdır; jeneratör polinomunu kullanır p(x) yukarıda gösterildiği gibi bir dizi değerlendirme noktasını mesaj değerlerine eşlemek için:

Ters Fourier dönüşümü, hatasız bir kümeyi dönüştürmek için kullanılabilir. n < q mesaj değerleri, kodlama polinomuna geri k katsayılar, bunun çalışması için, mesajı kodlamak için kullanılan değerlendirme noktalarının bir dizi artan güçler kümesi olması gerektiği kısıtlamasıyla birlikte α:

Bununla birlikte, Lagrange enterpolasyonu, değerlendirme noktaları kümesi üzerinde kısıtlama olmadan veya hatasız bir mesaj değerleri kümesi gerekliliği olmadan aynı dönüşümü gerçekleştirir ve sistematik kodlama için ve aşağıdaki adımlardan birinde kullanılır. Gao kod çözücü.

BCH görünümü: Bir katsayı dizisi olarak kod sözcüğü

Bu görünümde, gönderen mesajı tekrar eşler bir polinom için ve bunun için, az önce açıklanan iki eşlemeden herhangi biri kullanılabilir (mesajın katsayıları olarak yorumlandığı veya değerlerin başlangıç ​​dizisi olarak ). Gönderen polinomu oluşturduktan sonra ancak bir şekilde göndermek yerine değerler nın-nin tüm noktalarda, gönderen bazı ilgili polinomları hesaplar en fazla derece için ve gönderir katsayılar bu polinom. Polinom mesaj polinomu çarpılarak oluşturulur , en fazla derecesi olan , Birlikte oluşturucu polinom derece bu hem gönderen hem de alıcı tarafından bilinir. Jeneratör polinomu kökleri tam olarak olan polinom olarak tanımlanır yani

Verici, katsayıları . Böylece, Reed – Solomon kodlarının BCH görünümünde, küme kod sözcüklerinin sayısı aşağıdaki gibi:[9]

Sistematik kodlama prosedürü

Reed – Solomon kodlarının BCH görünümü için kodlama prosedürü, bir sistematik kodlama prosedürü, burada her kod sözcüğü mesajı bir önek olarak içerir ve sadece hata düzeltme sembollerini bir sonek olarak ekler. Buraya göndermek yerine kodlayıcı, iletilen polinomu oluşturur öyle ki katsayıları en büyük tek terimliler, karşılık gelen katsayılara eşittir ve alt sıra katsayıları tam olarak öyle seçildi ki ile bölünebilir hale gelir . Daha sonra katsayıları katsayılarının bir alt dizisidir (özellikle bir önek) . Genel olarak sistematik bir kod elde etmek için, mesaj polinomunu oluşturuyoruz mesajı katsayılarının sırası olarak yorumlayarak.

Biçimsel olarak, inşaat çarpılarak yapılır tarafından yer açmak kontrol sembolleri, bu ürünü bölerek kalanı bulmak ve sonra bu kalanı çıkararak telafi etmek. çek sembolleri, kalanı hesaplayarak oluşturulur :

Kalanın en fazla derecesi var katsayıları ise polinomda sıfırdır. Bu nedenle, kod sözcüğün aşağıdaki tanımı ilk olma özelliğine sahiptir katsayıları katsayıları ile aynıdır :

Sonuç olarak, kod sözcükleri gerçekten unsurları yani, oluşturucu polinom ile bölünebilir :[10]

Özellikleri

Reed – Solomon kodu bir [n, k, nk + 1] kodu; başka bir deyişle, bu bir doğrusal blok kodu uzunluk n (bitmiş F) ile boyut k ve minimum Hamming mesafesi Reed-Solomon kodu, minimum mesafenin doğrusal bir boyut kodu için mümkün olan maksimum değere sahip olması açısından optimaldir (nk); bu olarak bilinir Singleton bağlı. Böyle bir kod aynı zamanda ayrılabilir maksimum mesafe (MDS) kodu.

Bir Reed-Solomon kodunun hata düzeltme yeteneği, minimum mesafesiyle veya eşdeğer bir şekilde şu şekilde belirlenir: , bloktaki fazlalık ölçüsü. Hata simgelerinin yerleri önceden bilinmiyorsa, bir Reed-Solomon kodu en fazla hatalı semboller, yani bloğa eklenen fazlalık sembollerin yarısı kadar hatayı düzeltebilir. Bazen hata yerleri önceden bilinir (ör. "Yan bilgiler" demodülatör sinyal-gürültü oranları )-bunlara denir silmeler. Bir Reed – Solomon kodu (herhangi bir MDS kodu ) hataların iki katı kadar silme işlemini düzeltebilir ve herhangi bir hata ve silme kombinasyonu, ilişki 2 olduğu sürece düzeltilebilir.E + S ≤ n − k memnun, nerede hata sayısıdır ve bloktaki silme sayısıdır.

Reed-Solomon kodunun teorik BER performansı (N = 255, K = 233, QPSK, AWGN). Adım benzeri karakteristik.

Teorik hata sınırı, aşağıdaki formülle açıklanabilir: AWGN için kanal FSK:[11]

ve diğer modülasyon şemaları için:

nerede , , , kodlanmamış AWGN durumunda sembol hata oranı ve modülasyon sırasıdır.

Reed-Solomon kodlarının pratik kullanımları için sonlu bir alan kullanmak yaygındır ile elementler. Bu durumda, her sembol bir -bit değeri. Gönderen, veri noktalarını kodlanmış bloklar olarak gönderir ve kodlanmış bloktaki sembol sayısı . Dolayısıyla, 8 bitlik semboller üzerinde çalışan bir Reed – Solomon kodu, blok başına sembol. (Bu, yaygınlığı nedeniyle çok popüler bir değerdir. bayt odaklı bilgisayar sistemleri.) numara , ile , nın-nin veri bloktaki semboller bir tasarım parametresidir. Yaygın olarak kullanılan kod kodlamaları sekiz bitlik veri sembolü artı 32 sekiz bitlik eşlik sembolü bir - sembol bloğu; bu bir kod ve blok başına 16'ya kadar sembol hatasını düzeltebilir.

Yukarıda tartışılan Reed-Solomon kod özellikleri, onları özellikle hataların meydana geldiği uygulamalar için çok uygun hale getirir. patlamalar. Bunun nedeni, bir semboldeki kaç bitin hatalı olduğunun kodun önemi olmamasıdır - eğer bir semboldeki birden fazla bit bozulursa, bu yalnızca tek bir hata olarak sayılır. Tersine, bir veri akışı, hata patlamaları veya eksikliklerle değil, rastgele tek bitli hatalarla karakterize edilirse, bir Reed-Solomon kodu, bir ikili koda kıyasla genellikle zayıf bir seçimdir.

Reed-Solomon kodu, tıpkı evrişimli kod, şeffaf bir koddur. Bu, kanal sembollerinin ters hat boyunca bir yerde, kod çözücüler çalışmaya devam edecektir. Sonuç, orijinal verilerin tersine çevrilmesi olacaktır. Ancak Reed-Solomon kodu, kod kısaltıldığında şeffaflığını kaybeder. Kısaltılmış bir koddaki "eksik" bitlerin, verilerin tamamlanıp tamamlanmadığına bağlı olarak sıfırlarla veya birlerle doldurulması gerekir. (Başka bir deyişle, semboller ters çevrilmişse, sıfır dolgusunun bir tek dolgulu olarak ters çevrilmesi gerekir.) Bu nedenle, verilerin anlamının (yani, doğru veya tamamlanmış) çözülmesi zorunludur. Reed-Solomon kod çözmeden önce.

Reed – Solomon kodunun döngüsel veya yapının ince detaylarına bağlı değildir. Reed ve Solomon'un kod sözcüklerinin bir polinomun değerleri olduğu orijinal görünümünde, değerlendirme noktalarının sırası kodu döngüsel yapacak şekilde seçilebilir. Özellikle, eğer bir ilkel kök Alanın , sonra tanım gereği sıfır olmayan tüm elemanlar formu al için , nerede . Her polinom bitmiş bir kod sözcüğüne yol açar . İşlevinden beri aynı derecede bir polinomdur, bu fonksiyon bir kod sözcüğüne yol açar ; dan beri tutar, bu kod sözcüğü döngüsel sola kaydırma orijinal kod sözcüğünden türetilen . Dolayısıyla, değerlendirme noktaları olarak bir dizi ilkel kök güçleri seçmek, orijinal görünümü Reed-Solomon kodunu döngüsel. BCH görünümündeki Reed-Solomon kodları her zaman döngüseldir, çünkü BCH kodları döngüseldir.

Uyarılar

Tasarımcıların Reed – Solomon kod bloklarının "doğal" boyutlarını kullanması gerekmez. "Kısaltma" olarak bilinen bir teknik, daha büyük bir koddan istenen herhangi bir boyutta daha küçük bir kod üretebilir. Örneğin, yaygın olarak kullanılan (255,223) kod, kaynak bloğun kullanılmayan kısmını 95 ikili sıfır ile doldurarak ve bunları iletmeyerek bir (160,128) koda dönüştürülebilir. Kod çözücüde, bloğun aynı kısmı yerel olarak ikili sıfırlarla yüklenir. Delsarte-Goethals-Seidel[12] teorem kısaltılmış Reed-Solomon kodlarının bir uygulamasının bir örneğini gösterir. Kısaltmaya paralel olarak bilinen bir teknik delme kodlanmış eşlik simgelerinin bazılarının çıkarılmasına izin verir.

BCH görünümü kod çözücüleri

Bu bölümde açıklanan kod çözücüler, bir kod sözcüğünün BCH görünümünü bir katsayı dizisi olarak kullanır. Hem kodlayıcı hem de kod çözücü tarafından bilinen sabit bir üretici polinomu kullanırlar.

Peterson – Gorenstein – Zierler kod çözücü

Daniel Gorenstein ve Neal Zierler, Ocak 1960'ta Zierler tarafından MIT Lincoln Laboratuvarı raporunda ve daha sonra Haziran 1961'de bir makalede açıklanan bir kod çözücü geliştirdi.[13] Gorenstein – Zierler kod çözücü ve BCH kodlarıyla ilgili ilgili çalışma bir kitapta anlatılmıştır. Hata Düzeltme Kodları tarafından W. Wesley Peterson (1961).[14]

Formülasyon

İletilen mesaj, , bir polinomun katsayıları olarak görülür s(x):

Reed-Solomon kodlama prosedürünün bir sonucu olarak, s(x) oluşturucu polinom ile bölünebilir g(x):

nerede α ilkel bir köktür.

Dan beri s(x) jeneratörün bir katıdır g(x), tüm köklerini "miras aldığını" takip eder:

İletilen polinom, bir hata polinomu ile geçiş sırasında bozulmuş e(x) alınan polinomu üretmek için r(x).

nerede eben katsayısı ben-nin gücü x. Katsayı eben o gücünde hata yoksa sıfır olacaktır. x ve bir hata varsa sıfırdan farklıdır. Eğer varsa ν farklı güçlerdeki hatalar benk nın-nin x, sonra

Kod çözücünün amacı, hata sayısını bulmaktır (ν), hataların konumları (benk) ve bu konumlardaki hata değerleri (ebenk). Onlardan, e(x) hesaplanabilir ve buradan çıkarılabilir r(x) orijinal olarak gönderilen mesajı almak için s(x).

Sendrom kod çözme

Kod çözücü, polinomu belirli noktalarda alındığı şekliyle değerlendirerek başlar. Bu değerlendirmenin sonuçlarını "sendromlar" olarak adlandırıyoruz. Sj. Bunlar şu şekilde tanımlanır:

Sendromlara bakmanın avantajı, mesaj polinomunun çıkmasıdır. Başka bir deyişle, sendromlar yalnızca hatayla ilgilidir ve iletilen mesajın gerçek içeriğinden etkilenmez. Sendromların tümü sıfırsa, algoritma burada durur ve mesajın aktarım sırasında bozulmadığını bildirir.

Hata bulucular ve hata değerleri

Kolaylık sağlamak için tanımlayın hata bulucular Xk ve hata değerleri Yk gibi:

Daha sonra sendromlar bu hata bulucular ve hata değerleri açısından şu şekilde yazılabilir:

Sendrom değerlerinin bu tanımı öncekine eşdeğerdir, çünkü .

Sendromlar bir sistem verir n − k ≥ 2ν 2'deki denklemlerν bilinmeyenler, ancak bu denklem sistemi doğrusal değildir. Xk ve bariz bir çözümü yok. Ancak, Xk (aşağıya bakınız) biliniyorsa, sendrom denklemleri, aşağıdakiler için kolayca çözülebilen doğrusal bir denklem sistemi sağlar. Yk hata değerleri.

Sonuç olarak sorun, Xk, çünkü o zaman en soldaki matris bilinecek ve denklemin her iki tarafı da tersiyle çarpılarak Yk

Hataların konumlarının zaten bilindiği bu algoritmanın varyantında (bir hata olarak kullanıldığında) silme kodu ), bu son. Hata yerleri (Xk) başka bir yöntemle zaten bilinmektedir (örneğin, bir FM iletiminde, bit akışının net olmadığı veya parazitle üstesinden gelinen bölümler olasılıksal olarak frekans analizinden belirlenebilir). Bu senaryoda, hatalar düzeltilebilir.

Algoritmanın geri kalanı, hataları bulmaya hizmet eder ve şu değerlere kadar sendrom değerleri gerektirir: , sadece şimdiye kadar kullanıldı. Bu nedenle, konumlarını bilmeden düzeltilebilecek kadar hata düzeltme sembolünün 2 kat daha fazla eklenmesi gerekir.

Hata bulucu polinomu

Doğrusal denklem sistemine yol açan doğrusal bir tekrarlama ilişkisi vardır. Bu denklemleri çözmek, bu hata konumlarını belirler Xk.

Tanımla hata bulma polinomu Λ (x) gibi

Λ'nin sıfırları (x) karşılıklı . Bu, yukarıdaki ürün gösterim yapısından kaynaklanır, çünkü çarpılan terimlerden biri sıfır olacaktır , tüm polinomun sıfır olarak değerlendirilmesi.

İzin Vermek herhangi bir tam sayı olabilir ki . İki tarafı da çarpın ve yine de sıfır olacaktır.

Toplamı k = 1 ila ν ve yine de sıfır olacaktır.

Her terimi kendi toplamında toplayın.

Extract the constant values of that are unaffected by the summation.

These summations are now equivalent to the syndrome values, which we know and can substitute in! This therefore reduces to

Çıkarma from both sides yields

Recall that j was chosen to be any integer between 1 and v inclusive, and this equivalence is true for any and all such values. Therefore, we have v linear equations, not just one. This system of linear equations can therefore be solved for the coefficients Λben of the error location polynomial:

The above assumes the decoder knows the number of errors ν, but that number has not been determined yet. The PGZ decoder does not determine ν directly but rather searches for it by trying successive values. The decoder first assumes the largest value for a trial ν and sets up the linear system for that value. If the equations can be solved (i.e., the matrix determinant is nonzero), then that trial value is the number of errors. If the linear system cannot be solved, then the trial ν is reduced by one and the next smaller system is examined. (Gill n.d., s. 35)

Find the roots of the error locator polynomial

Use the coefficients Λben found in the last step to build the error location polynomial. The roots of the error location polynomial can be found by exhaustive search. The error locators Xk are the reciprocals of those roots. The order of coefficients of the error location polynomial can be reversed, in which case the roots of that reversed polynomial are the error locators (not their reciprocals ). Chien search is an efficient implementation of this step.

Calculate the error values

Once the error locators Xk are known, the error values can be determined. This can be done by direct solution for Yk içinde error equations matrix given above, or using the Forney algorithm.

Calculate the error locations

Hesaplamak benk by taking the log base nın-nin Xk. This is generally done using a precomputed lookup table.

Fix the errors

Finally, e(x) is generated from benk ve ebenk and then is subtracted from r(x) to get the originally sent message s(x), with errors corrected.

Misal

Consider the Reed–Solomon code defined in GF(929) ile α = 3 ve t = 4 (this is used in PDF417 barcodes) for a RS(7,3) code. The generator polynomial is

If the message polynomial is p(x) = 3 x2 + 2 x + 1, then a systematic codeword is encoded as follows.

Errors in transmission might cause this to be received instead.

The syndromes are calculated by evaluating r at powers of α.

Kullanma Gauss elimine etme:

Λ(x) = 329 x2 + 821 x + 001, with roots x1 = 757 = 3−3 and x2 = 562 = 3−4

The coefficients can be reversed to produce roots with positive exponents, but typically this isn't used:

R(x) = 001 x2 + 821 x + 329, with roots 27 = 33 and 81 = 34

with the log of the roots corresponding to the error locations (right to left, location 0 is the last term in the codeword).

To calculate the error values, apply the Forney algorithm.

Ω(x) = S(x) Λ(x) mod x4 = 546 x + 732
Λ'(x) = 658 x + 821
e1 = −Ω(x1)/Λ'(x1) = 074
e2 = −Ω(x2)/Λ'(x2) = 122

Çıkarma e1 x3 ve e2 x4 from the received polynomial r reproduces the original codeword s.

Berlekamp–Massey decoder

Berlekamp–Massey algorithm is an alternate iterative procedure for finding the error locator polynomial. During each iteration, it calculates a discrepancy based on a current instance of Λ(x) with an assumed number of errors e:

and then adjusts Λ(x) ve e so that a recalculated Δ would be zero. Makale Berlekamp–Massey algorithm has a detailed description of the procedure. In the following example, C(x) is used to represent Λ(x).

Misal

Using the same data as the Peterson Gorenstein Zierler example above:

nSn+1dCBbm
0732732197 x + 117321
1637846173 x + 117322
2762412634 x2 + 173 x + 1173 x + 14121
3925576329 x2 + 821 x + 1173 x + 14122

The final value of C is the error locator polynomial, Λ(x).

Euclidean decoder

Another iterative method for calculating both the error locator polynomial and the error value polynomial is based on Sugiyama's adaptation of the extended Euclidean algorithm .

Define S(x), Λ(x), and Ω(x) for t syndromes and e hatalar:

The key equation is:

İçin t = 6 and e = 3:

The middle terms are zero due to the relationship between Λ and syndromes.

The extended Euclidean algorithm can find a series of polynomials of the form

Birben(x) S(x) + Bben(x) xt = Rben(x)

where the degree of R decreases as ben artışlar. Once the degree of Rben(x) < t/ 2, sonra

Birben(x) = Λ(x)

Bben(x) = −Q(x)

Rben(x) = Ω(x).

B(x) and Q(x) don't need to be saved, so the algorithm becomes:

R−1 = xt
R0 = S(x)
Bir−1 = 0
Bir0 = 1
i = 0
while degree of Rben ≥ t/2
i = i + 1
Q = Ri-2 / Ri-1
Rben = Ri-2 - Q Ri-1
Birben = Ai-2 - Q Ai-1

to set low order term of Λ(x) to 1, divide Λ(x) and Ω(x) by Aben(0):

Λ(x) = Aben / Aben(0)
Ω(x) = Rben / Aben(0)

Birben(0) is the constant (low order) term of Aben.

Misal

Using the same data as the Peterson–Gorenstein–Zierler example above:

benRbenBirben
−1001 x4 + 000 x3 + 000 x2 + 000 x + 000000
0925 x3 + 762 x2 + 637 x + 732001
1683 x2 + 676 x + 024697 x + 396
2673 x + 596608 x2 + 704 x + 544
Λ(x) = A2 / 544 = 329 x2 + 821 x + 001
Ω(x) = R2 / 544 = 546 x + 732

Decoder using discrete Fourier transform

A discrete Fourier transform can be used for decoding.[15] To avoid conflict with syndrome names, let c(x) = s(x) the encoded codeword. r(x) ve e(x) are the same as above. Tanımlamak C(x), E(x), ve R(x) as the discrete Fourier transforms of c(x), e(x), ve r(x). Dan beri r(x) = c(x) + e(x), and since a discrete Fourier transform is a linear operator, R(x) = C(x) + E(x).

Dönüştürme r(x) için R(x) using discrete Fourier transform. Since the calculation for a discrete Fourier transform is the same as the calculation for syndromes, t coefficients of R(x) ve E(x) are the same as the syndromes:

Kullanım vasıtasıyla as syndromes (they're the same) and generate the error locator polynomial using the methods from any of the above decoders.

Let v = number of errors. Generate E(x) using the known coefficients -e , the error locator polynomial, and these formulas

Then calculate C(x) = R(x) − E(x) and take the inverse transform (polynomial interpolation) of C(x) to produce c(x).

Decoding beyond the error-correction bound

Singleton bound states that the minimum distance d of a linear block code of size (n,k) is upper-bounded by n − k + 1. The distance d was usually understood to limit the error-correction capability to ⌊d/2⌋. The Reed–Solomon code achieves this bound with equality, and can thus correct up to ⌊(n − k + 1)/2⌋ errors. However, this error-correction bound is not exact.

1999 yılında Madhu Sudan ve Venkatesan Guruswami at MIT published "Improved Decoding of Reed–Solomon and Algebraic-Geometry Codes" introducing an algorithm that allowed for the correction of errors beyond half the minimum distance of the code.[16] It applies to Reed–Solomon codes and more generally to algebraic geometric codes. This algorithm produces a list of codewords (it is a list-decoding algorithm) and is based on interpolation and factorization of polynomials over and its extensions.

Soft-decoding

The algebraic decoding methods described above are hard-decision methods, which means that for every symbol a hard decision is made about its value. For example, a decoder could associate with each symbol an additional value corresponding to the channel demodülatör 's confidence in the correctness of the symbol. Gelişi LDPC ve turbo codes, which employ iterated soft-decision belief propagation decoding methods to achieve error-correction performance close to the theoretical limit, has spurred interest in applying soft-decision decoding to conventional algebraic codes. In 2003, Ralf Koetter and Alexander Vardy presented a polynomial-time soft-decision algebraic list-decoding algorithm for Reed–Solomon codes, which was based upon the work by Sudan and Guruswami.[17]In 2016, Steven J. Franke and Joseph H. Taylor published a novel soft-decision decoder.[18]

Matlab example

Encoder

Here we present a simple Matlab implementation for an encoder.

işlevi[encoded] =rsEncoder(msg, m, prim_poly, n, k)% RSENCODER Encode message with the Reed-Solomon algorithm    % m is the number of bits per symbol    % prim_poly: Primitive polynomial p(x). Ie for DM is 301    % k is the size of the message    % n is the total size (k+redundant)    % Example: msg = uint8('Test')    % enc_msg = rsEncoder(msg, 8, 301, 12, numel(msg));     % Get the alpha    alfa = gf(2, m, prim_poly);     % Get the Reed-Solomon generating polynomial g(x)    g_x = genpoly(k, n, alfa);     % Multiply the information by X^(n-k), or just pad with zeros at the end to    % get space to add the redundant information    msg_padded = gf([msg sıfırlar(1, n - k)], m, prim_poly);     % Get the remainder of the division of the extended message by the    % Reed-Solomon generating polynomial g(x)    [~, kalan] = deconv(msg_padded, g_x);     % Now return the message with the redundant information    kodlanmış = msg_padded - kalan;son% Find the Reed-Solomon generating polynomial g(x), by the way this is the% same as the rsgenpoly function on matlabişlevig =genpoly(k, n, alpha)g = 1;    % A multiplication on the galois field is just a convolution    için k = mod(1 : n - k, n)        g = conv(g, [1 alfa .^ (k)]);    sonson

Decoder

Now the decoding part:

işlevi[decoded, error_pos, error_mag, g, S] =rsDecoder(encoded, m, prim_poly, n, k)% RSDECODER Decode a Reed-Solomon encoded message    %   Example:    % [dec, ~, ~, ~, ~] = rsDecoder(enc_msg, 8, 301, 12, numel(msg))    max_errors = zemin((n - k) / 2);    orig_vals = kodlanmış.x;    % Initialize the error vector    hatalar = sıfırlar(1, n);    g = [];    S = [];     % Get the alpha    alfa = gf(2, m, prim_poly);     % Find the syndromes (Check if dividing the message by the generator    % polynomial the result is zero)    Synd = polyval(kodlanmış, alfa .^ (1:n - k));    Sendromlar = kırpmak(Synd);     % If all syndromes are zeros (perfectly divisible) there are no errors    Eğer isempty(Syndromes.x)        decoded = orig_vals(1:k);        error_pos = [];        error_mag = [];        g = [];        S = Synd;        dönüş;    son% Prepare for the euclidean algorithm (Used to find the error locating    % polynomials)    r0 = [1, sıfırlar(1, 2 * max_errors)]; r0 = gf(r0, m, prim_poly); r0 = kırpmak(r0);    size_r0 = uzunluk(r0);    r1 = Sendromlar;    f0 = gf([sıfırlar(1, size_r0 - 1) 1], m, prim_poly);    f1 = gf(sıfırlar(1, size_r0), m, prim_poly);    g0 = f1; g1 = f0;     % Do the euclidean algorithm on the polynomials r0(x) and Syndromes(x) in    % order to find the error locating polynomial    süre doğru        % Do a long division        [bölüm, kalan] = deconv(r0, r1);        % Add some zeros        bölüm = pad(bölüm, uzunluk(g1));             % Find quotient*g1 and pad        c = conv(bölüm, g1);        c = kırpmak(c);        c = pad(c, uzunluk(g0));             % Update g as g0-quotient*g1        g = g0 - c;             % Check if the degree of remainder(x) is less than max_errors        Eğer all(remainder(1:end - max_errors) == 0)            kırmak;        son% Update r0, r1, g0, g1 and remove leading zeros        r0 = kırpmak(r1); r1 = kırpmak(kalan);        g0 = g1; g1 = g;    son% Remove leading zeros    g = kırpmak(g);     % Find the zeros of the error polynomial on this galois field    evalPoly = polyval(g, alfa .^ (n - 1 : - 1 : 0));    error_pos = gf(bulmak(evalPoly == 0), m);     % If no error position is found we return the received work, because    % basically is nothing that we could do and we return the received message    Eğer isempty(error_pos)        decoded = orig_vals(1:k);        error_mag = [];        dönüş;    son% Prepare a linear system to solve the error polynomial and find the error    % magnitudes    size_error = uzunluk(error_pos);    Syndrome_Vals = Sendromlar.x;    b(:, 1) = Syndrome_Vals(1:size_error);    için idx = 1 : size_error        e = alfa .^ (idx * (n - error_pos.x));        hata = e.x;        ee(idx, :) = hata;    son% Solve the linear system    error_mag = (gf(ee, m, prim_poly) \ gf(b, m, prim_poly))';    % Put the error magnitude on the error vector    hatalar(error_pos.x) = error_mag.x;    % Bring this vector to the galois field    errors_gf = gf(hatalar, m, prim_poly);     % Now to fix the errors just add with the encoded code    decoded_gf = kodlanmış(1:k) + errors_gf(1:k);    decoded = decoded_gf.x;son% Remove leading zeros from Galois arrayişlevigt =kırpmak(g)gx = g.x;    gt = gf(gx(bulmak(gx, 1) : son), g.m, g.prim_poly);son% Add leading zerosişlevixpad =pad(x, k)len = uzunluk(x);    Eğer (len < k)        xpad = [sıfırlar(1, k - len) x];    sonson

Reed Solomon original view decoders

The decoders described in this section use the Reed Solomon original view of a codeword as a sequence of polynomial values where the polynomial is based on the message to be encoded. The same set of fixed values are used by the encoder and decoder, and the decoder recovers the encoding polynomial (and optionally an error locating polynomial) from the received message.

Theoretical decoder

Reed & Solomon (1960) described a theoretical decoder that corrected errors by finding the most popular message polynomial. The decoder only knows the set of values -e and which encoding method was used to generate the codeword's sequence of values. The original message, the polynomial, and any errors are unknown. A decoding procedure could use a method like Lagrange interpolation on various subsets of n codeword values taken k at a time to repeatedly produce potential polynomials, until a sufficient number of matching polynomials are produced to reasonably eliminate any errors in the received codeword. Once a polynomial is determined, then any errors in the codeword can be corrected, by recalculating the corresponding codeword values. Unfortunately, in all but the simplest of cases, there are too many subsets, so the algorithm is impractical. The number of subsets is the binom katsayısı, , and the number of subsets is infeasible for even modest codes. Bir code that can correct 3 errors, the naive theoretical decoder would examine 359 billion subsets.

Berlekamp Welch decoder

In 1986, a decoder known as the Berlekamp–Welch algorithm orijinal mesaj polinomunu kurtarabilen bir kod çözücü ve aynı zamanda hatalara karşılık gelen girdi değerleri için sıfırlar üreten bir hata "yer belirleyici" polinomu olarak geliştirilmiştir, zaman karmaşıklığı O (n ^ 3) ile burada n sayıdır bir mesajdaki değerlerin Kurtarılan polinom daha sonra orijinal mesajı kurtarmak için (gerektiğinde yeniden hesaplayın) kullanılır.

Misal

RS (7,3), GF (929) ve değerlendirme noktaları kümesini kullanma aben = ben − 1

a = {0, 1, 2, 3, 4, 5, 6}

Mesaj polinomu ise

p(x) = 003 x2 + 002 x + 001

Kod sözcüğü

c = {001, 006, 017, 034, 057, 086, 121}

İletimdeki hatalar bunun yerine bunun alınmasına neden olabilir.

b = c + e = {001, 006, 123, 456, 057, 086, 121}

Anahtar denklemler:

Maksimum hata sayısını varsayın: e = 2. Anahtar denklemler şu hale gelir:

Kullanma Gauss elimine etme:

Q(x) = 003 x4 + 916 x3 + 009 x2 + 007 x + 006
E(x) = 001 x2 + 924 x + 006
Q(x) / E(x) = P(x) = 003 x2 + 002 x + 001

Yeniden hesapla P (x) nerede E (x) = 0: {2, 3} düzeltmek b düzeltilmiş kod sözcüğü ile sonuçlanır:

c = {001, 006, 017, 034, 057, 086, 121}

Gao kod çözücü

2002 yılında, Shuhong Gao tarafından genişletilmiş Öklid algoritmasına dayalı geliştirilmiş bir kod çözücü geliştirildi. Gao_RS.pdf .

Misal

Yukarıdaki Berlekamp Welch örneğiyle aynı verileri kullanarak:

Lagrange enterpolasyonu için ben = 1 ila n
benRbenBirben
−1001 x7 + 908 x6 + 175 x5 + 194 x4 + 695 x3 + 094 x2 + 720 x + 000000
0055 x6 + 440 x5 + 497 x4 + 904 x3 + 424 x2 + 472 x + 001001
1702 x5 + 845 x4 + 691 x3 + 461 x2 + 327 x + 237152 x + 237
2266 x4 + 086 x3 + 798 x2 + 311 x + 532708 x2 + 176 x + 532
Q(x) = R2 = 266 x4 + 086 x3 + 798 x2 + 311 x + 532
E(x) = Bir2 = 708 x2 + 176 x + 532

bölmek Q(x) ve E(x) en önemli katsayısına göre E(x) = 708. (İsteğe bağlı)

Q(x) = 003 x4 + 916 x3 + 009 x2 + 007 x + 006
E(x) = 001 x2 + 924 x + 006
Q(x) / E(x) = P(x) = 003 x2 + 002 x + 001

Yeniden hesapla P(x) nerede E(x) = 0 : {2, 3} düzeltmek b düzeltilmiş kod sözcüğü ile sonuçlanır:

c = {001, 006, 017, 034, 057, 086, 121}

Ayrıca bakınız

Notlar

  1. ^ Yazarlar[8] aynı kod oranı (1/6) için turbo kodlarının 2 dB'ye kadar Reed-Solomon birleştirilmiş kodlardan daha iyi performans gösterdiğini gösteren simülasyon sonuçları sağlayın (bit hata oranı ).

Referanslar

  • Gill, John (tarih yok), EE387 Notlar # 7, El Notu # 28 (PDF), Stanford Üniversitesi, arşivlendi orijinal (PDF) 30 Haziran 2014, alındı 21 Nisan 2010
  • Hong, Jonathan; Vetterli, Martin (Ağustos 1995), "BCH Kod Çözme için Basit Algoritmalar" (PDF), İletişimde IEEE İşlemleri, 43 (8): 2324–2333, doi:10.1109/26.403765
  • Lin, Shu; Costello, Jr., Daniel J. (1983), Hata Kontrol Kodlaması: Temel Bilgiler ve Uygulamalar, New Jersey, NJ: Prentice-Hall, ISBN  978-0-13-283796-5
  • Massey, J.L. (1969), "Kaydırmalı yazmaç sentezi ve BCH kod çözme" (PDF), Bilgi Teorisi Üzerine IEEE İşlemleri, IT-15 (1): 122–127, doi:10.1109 / tit.1969.1054260
  • Peterson, Wesley W. (1960), "Bose-Chaudhuri Kodları için Kodlama ve Hata Düzeltme Prosedürleri", Bilgi Teorisi Üzerine IRE İşlemleri, BT-6 (4): 459–470, doi:10.1109 / TIT.1960.1057586
  • Reed, Irving S.; Süleyman, Gustave (1960), "Belirli Sonlu Alanlar Üzerindeki Polinom Kodları", Journal of the Society for Industrial and Applied Mathematics, 8 (2): 300–304, doi:10.1137/0108018
  • Welch, L.R. (1997), Reed-Solomon Kodlarının Orijinal Görünümü (PDF), Ders Notları

daha fazla okuma

Dış bağlantılar

Bilgi ve öğreticiler

Uygulamalar

  1. ^ Reed ve Solomon (1960)
  2. ^ D. Gorenstein ve N. Zierler, "p ^ m sembollerindeki döngüsel doğrusal hata düzeltme kodları sınıfı", J. SIAM, cilt. 9, s. 207-214, Haziran 1961
  3. ^ Hata Düzeltme Kodları, W_Wesley_Peterson, 1961
  4. ^ Hata Düzeltme Kodları, W_Wesley_Peterson, ikinci baskı, 1972
  5. ^ Yasuo Sugiyama, Masao Kasahara, Shigeichi Hirasawa ve Toshihiko Namekawa. Goppa kodlarının kodunu çözmek için anahtar denklemi çözmek için bir yöntem. Bilgi ve Kontrol, 27: 87–99, 1975.
  6. ^ Immink, K. A. S. (1994), "Reed-Solomon Codes and the Compact Disc", Wicker, Stephen B .; Bhargava, Vijay K. (editörler), Reed-Solomon Kodları ve Uygulamaları, IEEE Basın, ISBN  978-0-7803-1025-4
  7. ^ J. Hagenauer, E. Offer ve L. Papke, Reed Solomon Kodları ve Uygulamaları. New York IEEE Press, 1994 - s. 433
  8. ^ a b Andrews, Kenneth S., vd. "Derin uzay uygulamaları için turbo ve LDPC kodlarının geliştirilmesi." IEEE 95.11 (2007) Bildirileri: 2142-2156.
  9. ^ Lidl, Rudolf; Pilz, Günter (1999). Uygulamalı Soyut Cebir (2. baskı). Wiley. s. 226.
  10. ^ Görmek Lin ve Costello (1983, s. 171), örneğin.
  11. ^ "Bercoding ve BERTool'da Kullanılan Analitik İfadeler". Arşivlendi 2019-02-01 tarihinde orjinalinden. Alındı 2019-02-01.
  12. ^ Pfender, Florian; Ziegler, Günter M. (Eylül 2004), "Öpüşme Numaraları, Küre Paketleri ve Bazı Beklenmedik Kanıtlar" (PDF), American Mathematical Society'nin Bildirimleri, 51 (8): 873–883, arşivlendi (PDF) 2008-05-09 tarihinde orjinalinden, alındı 2009-09-28. Hata düzeltme kodu bağlamında kullanıldığı şekliyle Delsarte-Goethals-Seidel teoremini açıklar kompakt disk.
  13. ^ D. Gorenstein ve N. Zierler, "p ^ m sembollerinde döngüsel doğrusal hata düzeltme kodları sınıfı," J. SIAM, cilt. 9, s. 207–214, Haziran 1961
  14. ^ Hata Düzeltme Kodları W Wesley Peterson, 1961 tarafından
  15. ^ Shu Lin ve Daniel J. Costello Jr, "Error Control Coding" ikinci baskı, s. 255–262, 1982, 2004
  16. ^ Guruswami, V .; Sudan, M. (Eylül 1999), "Reed-Solomon kodlarının ve cebirsel geometri kodlarının geliştirilmiş kod çözme", Bilgi Teorisi Üzerine IEEE İşlemleri, 45 (6): 1757–1767, CiteSeerX  10.1.1.115.292, doi:10.1109/18.782097
  17. ^ Koetter, Ralf; Vardy, Alexander (2003). "Reed-Solomon kodlarının cebirsel yumuşak karar kod çözme". Bilgi Teorisi Üzerine IEEE İşlemleri. 49 (11): 2809–2825. CiteSeerX  10.1.1.13.2021. doi:10.1109 / TIT.2003.819332.
  18. ^ Franke, Steven J .; Taylor, Joseph H. (2016). "JT65 (63,12) Reed – Solomon Kodu için Açık Kaynak Yumuşak Karar Kod Çözücü" (PDF). QEX (Mayıs / Haziran): 8-17. Arşivlendi (PDF) 2017-03-09 tarihinde orjinalinden. Alındı 2017-06-07.