Hata Denetim Kodlaması D Roddy Chapter 11
11.1: Giriş Eb/No arttıkça Pe azalır Hata sezme (detection) Gücü arttırmak Gürültüyü azaltmak İkisi de masraflı 10-4’ten daha az BER için (data) kodlama gerekir Hata sezme (detection) Daha kolay Yeniden iletim gerekir (Uydu için kötü) Hata düzeltme (correction) Forward Error correction (FEC) Kodlama Mesaja kod bitleri eklemek Kodlanmamış bit dizisini (yani, mesajı) geri elde etmek Codec
11.2: Doğrusal Blok Kodlar Linear Block Codes Blok: Mesaj bloklara ayrılıyor k bitlik mesaj bloğu: 2k adet farklı mesaj olabilir n-k adet kod biti eklenir: 2n adet farklı kod kelimesi Bunların sadece 2k adedi kullanılır – her mesaja bir kod Diğerleri artık (redundant) kod kelimeleri olur Hata olduğu zaman Kod kelimesi başka kod kelimesine dönüşür Kullanılmayan bir kod kelimesine dönüşürse (büyük ihtimalle) Hata anlaşılır Hatta düzeltilebilir Lineer: İki kod kelimesinin lineer kombinasyonu yine bir kod kelimesi Mod 2 toplama (XOR): 0+0=0, 0+1=1+0=1, 1+1=0
11.2: Doğrusal Blok Kodlar Kod Oranı (Code rate): rc=k/n Ör: (7,4) code: 4 bitlik mesaj 7 bitlik kod kelimesi Ör: tekrar kodlaması (repetition coding) Mesaj bloğu: k=1 bit Kod kelimesi n bit (mesaj bitini n defa tekrar) Majority vote: Ör. n=3 olsun 2 veya 3 tane 1 olursa : 1 2 veya 3 tane 0 olursa : 0 3 tane hata olursa düzeltilemez (az ihtimal)
11.2: Doğrusal Blok Kodlar Ör. Eşlik denetimi (parity check codes) 1’lerin sayısı çift olacak şekilde bir bit eklenir Hamming Uzaklığı İki kod kelimesinin farklı olduğu bit sayısı Kodun Hamming uzaklığı Herhangi iki kelimenin minimum uzaklığı Yandaki kodun Hamming uzaklığı 2’dir 1 bitlik hataları sezer 1 bitlik hataları düzeltemez D bitlik hatayı düzeltmek için H.D. 2D+1 Sezmek için H.D. D+1 olmalıdır
11.2: Doğrusal Blok Kodlar Mesaj d, kod kelimesi c, Üreteç matrisi G (4x7) c=dG G’nin Nasıl oluşturulduğuna girmiyoruz Ör: (7,4) kodu G, yanda görülüyor İlk kısmı birim matris (I4X4) Sistematik kod: Mesajı içerir [1 0 1 0]G=[1 0 1 0 0 1 0] Kod çözerken PT kullanılır Parity check matrix H (3x7)
11.2: Doğrusal Blok Kodlar GHT=0 Bu yüzden cHT=0 (syndrome) cR=cT+e (e hata vektörü) s=(cT+e)HT=eHT 2n adet hata vektörü olabilir Sendrom vektörü 2n-k değer alabilir 2n-k-1 adet farklı hata kombinasyonu düzeltilebilir. Amacımız belli sayıda bitten oluşan hataları düzeltebilmek Hangi sendrom hangi hatalara karşılık gelir Ör. Hamming kodlamasında sendrom vektörü hatalı bit pozisyonunu verir. [1 0 1 0 0 1 0][1 0 1 0 1 1 0] [1 0 1 0 1 1 0] HT =[100] Hata var.. Eğer 1 bit hatalıysa bu soldan 5. bittir (Neden?)
11.3: Çevrimsel (Cyclic) Kodlar Doğrusal kodların bir alt koludur Dairesel bir kaydırma yine bir kod kelimesi ile sonuçlanır Shift register ve XOR ile gerçeklenebilir Belli k ve n değerleri için gerçeklenebilir 11.3.1:Hamming Kodları 2k(n+1)≤2n Her kod kelimesine karşılık n tanesi atılır Bir hata düzeltilebilir 11.3.2: BCH (Bose, Chaudhuri, Hocqenghen) t hata düzeltebilir 2k(n(n-1)…(n-t+1)+1)≤2n m=3, n=7, k=4, t=1 m=5, n=31, t=2, k≥21 Daha fazla esneklik
11.3.3: Reed Solomon Kodları Patlamalı hataları daha iyi düzeltir Bitler semboller halinde gruplanır k bit/sembol q=2k adet sembol olabilir K adet sembol N adet sembollük kod kelimesi olarak kodlanır q=2k N=q-1 2t=N-K Ör. k=2 ise q=4 adet sembol olabilir (A B C D) Her kod kelimesinde N=3 sembol olur t=1 ise K=1’dir yani 3 sembolün 1’i veridir qN= 64 adet kod kelimesi olabilir AP1P2, BP3P4, CP5P6, DP7P8 dışındakiler geçerli değil Standart: k=8, q=256, N=255, t=8, K=239 (NASA) Concatenated codes DVB N=204, K=188 (kısaltılmış RS)
11.4: Evrişimsel (Convolutional) Kodlar Doğrusal Kod Shift register: k=1 bit n=2 kod (2,1,3) encoder (n,k,stages) Bir taraftan yeni bitler girerken diğer taraftan çıkıyor. Input: 1001 Output: 0011011111 Alıcıda 0001011111 alınırsa Alıcı 00dan sonra 11 veya 00 bekliyor 00 seçerse sonraki eşleştirmeler yapılamıyor 11 seçerse her şey yerli yerine oturuyor Kod çözme oldukça zor Viterbi algoritması CDV 10 MIC codec: m=7, k/n=1/2,2/3,3/4 Punctured code Mars (1/6,15 stage), Jupiter (1/2, 7 stage)
11.5: Interleaving (Serpiştirme) Bitlerin kodlanma sıralarını değiştirerek patlamalı hataların dağılmasını sağlamak Blok veya evrişimsel kodlarla kullanılabilir Yandaki şekilde sütunlar kodlanır Satırlar halinde iletim yapılır, sütunlar halinde çözülür Ör: b3,b4,b5 hatalı olursa Bunlar üç ayrı kod kelimesinde birer bitlik hata olarak görünür ve düzeltilebilir.
11.6, 11.7 11.6: Birleşik (Concatenated) Kodlar 11.7: Parametreler Rasgele ve patlamalı hataları düzelten kodlar beraber kullanılabilir InputOuter encoderInner EncoderModulatorTxRxDemodulatorInner decoderOuterdecoderOutput DVB-S: Outer (Reed Solomon (204,188)), Inner (Convolutional, ½, 2/3 , ¾ , 5/6 , 7/8 ) DVB-S2: Outer (BCH), Inner (LDPC) 11.7: Parametreler Rb/Rc=rc<1 (Ör. T1 1.544Mbps x 8/7) Bant genişliğini artırmak gerekebilir Veya iletim süresi artar Güç/bit azalır Ec/Eb=rc<1 Pe Hata ihtimali artar PeC=0.5erfc(√(rcEb/No)) Önemli olan sonuçtaki BER’in ne olduğudur Kodlama sayesinde hata oranı çok fazla düşer
11.8: Kodlama kazancı Kodlama kazancı Belli bir hedef BER için kodlamasız gereken SNR değerinin kodlamayla gereken SNR değerine oranı BERU=PeU BERC=PeCt+1(n-1)!/(t!(n-1-t)!) BER=10-5 için Blok kodlar 3-5dB, Evrişimsel kodlar ve Viterbi kod çözümü 4-5.5dB Birleşik R-S ve evrişimsel 6.5-7.5 dB
11.9: Hard/Soft Decision Decoding (a)Hard Decision: Alıcıda sinyal dijitale çevrilip “temizlendikten sonra” kod çözümü yapılır (b)Soft decision: Kod çözme işlemi alıcıdaki gürültülü sinyal üzerinden yapılır Öklid mesafesi 2dB SNR kazancı sağlayabilir Ancak, daha karmaşık bir işlem.
11.10: Shannon Kapasitesi 1949: Claude Elwood Shannon Bir noktadan diğerine iletişimde veri hızının üst limitini bulmuştur. Bu üst limiti biliyoruz ama buna tam olarak ulaşmak mümkün değil Ancak yakınlaşmak mümkündür (Turbo kodlar)
11.11 Turbo Kodları (1993) Döngülü (iterative) kod çözümü Kodlayıcı – Paralel evrişimsel kodlar Aynı veri değişik evrişimsel kodlarla kodlanıyor. En son ana kadar kati kararlar alınmaz. Yumuşak kararlar (soft decisions) Olabilirlik değerleri (voltaj seviyesine göre sinyalin asıl değerinin olabilirliği) Olabilirlik değerlerine göre bir evrişimsel kod çözülür Daha sonra olabilirlik değerleri güncellenir. Diğer evrişimsel kod çözülür. Bu işlem tekrar tekrar yapılıyor En sonunda hard decision (0/1) yapılıyor Log olabilirlik değeri LLR=log2(p(1/r)/p(0/r)) 1 ve 0 eşit ihtimalle ise LLR=log2(p(r/1)/p(r/0))
11.11 Turbo Kodlayıcı Parity-1 veriden üretilir Parity-2 verinin karıştırılmış versiyonundan (pseudorandom) Amaç bağımsız iki adet eşlik biti yaratmak İteratif evrişimsel kod Biri başarısız olsa bile diğeri başarılı olabilir Bir yandan verinin kendisi de çıkışa gönderilir (sistematik) Normalde 1/3 kod oranı Puncturing ile bazı eşlikler rasgele atılıp kod oranı artırılabilir. Alıcıda atılanlar yerine dummy 1 veya 0lar koyularak kod çözülür.
11.11 Turbo Kod çözücü Klasik kod çözücü (hard decision-katı karar) Sinyal 0’dan büyükse 1, değilse 0 Oysa ki sinyalin 0’dan ne kadar büyük veya küçük olduğu da onemlidir (soft decision) Yumuşak karar Log-likelihood ratio LLR=logep(r|1)-logep(r|0) Soft input – Soft Output decoder İlk iterasyonda anahtarlar “1” konumunda Sonraki iterasyonda “2” konumunda ve ilk çözücünün “yumuşak” çıktısı kullanılır (extrinsic information) 4-10 arası iterasyon
11.11 Turbo Kod Çözücü Demultiplexer eşlik ve veri bitlerini ayırır. Yumuşak çıktı (soft output) Decoder çıktısı da yumuşak Anahtarlar önce 1 sonra 2 konumunda olur
11.11.1 LPDC Turbo kodlar gibi bu da döngülü bir kod çözme sistemine ve yumuşak karar mekanizmasına sahiptir. Eşlik denetim matrisi H seyrektir (sparse) Şekil: (16,9) kodu Her kod kelimesine iki veri kelimesi katılır Alıcıda HT ile çarpım yapılır
11.11.1 LPDC Ör. c0=1 olması için c1c2c9=100,010,100 veya 111 olmalı Bu tahminler diğer düğümlerle paylaşılır. Yeni tahminler yapılır. Tanner Şeması
11.11.1 LPDC LPDC ve Turbo kodları Reed Solomon ve Convolutional Kodlara göre çok daha iyi başarım göstermektedir. LPDC: DVB-S2’de iç kod olarak kullanılır Turbo: DVB-RCS’te kullanılmaktadır.
11.12 Automatic Repeat Request(ARQ) Hata sezen kodlar Hata yoksa ACK gönderilir Hata varsa NAK Stop and wait İletici bir pakete ACK gelene kadar bir sonrakini göndermez Uyduda bu süre çok uzun sürer Go Back N (ileticide hafıza gerekir) İletici belli sayıda paketi art arda iletir. Bir tanesine NAK gelirse ondan itibaren herşeyi tekrar eder. Selective repeat (hem iletici hem de alıcıda hafıza) Sadece hatalı olanlar tekrar iletilir Alıcı seriyi tamamladığında üst katmana iletim yapar Timeout mekanizması Her iletilen paket için zamanlama tutulur Belli sürede tepki gelmezse hata olmuş muamelesi yapılır Hybrid ARQ Alıcıdan NAK geldikçe ek kodlar gönderilir