Bölüm 3 : HATA SEZME TEKNİKLERİ Türkçe (İngilizce) karşılıklar Eşlik sınaması (parity check) Eşlik biti (parity bit) Çevrimli fazlalık sınaması (cyclic redundancy check) Sağnak/çoğuşma (burst) Bölüm Hedefi Bu bölümü bitirdiğinizde Hata nedir? Hata sezme tekniklerini Eşlik sınamasını Çevrimli fazlalık sınamasını Üreteç polinomunu Çevrimli fazlalık sınamasının farkedemediği hata durumlarını öğrenmiş olacaksınız. 1. Hata nedir? Veri paketlerinin iletimi sırasında değişik nedenlere bağlı olarak bazı bitler bozulabilir. Bu bozulmalara hata denir. Ortama bağlı olarak hataların oluşma olasılığı değişim gösterir. Örneğin optik lifler üzerinde meydana gelebilecek hata oranı diğer ortamlardan çok daha azdır. Yıldırım ve benzeri atmosferik olaylar telli ve telsiz ortamlarda hata patlamalarının oluşmasına yol açarlar. Ortamdaki hatalarla ilgili olarak yapılması gereken ilk iş bu hataların sezilmesidir. Gerekiyorsa hatalı verinin düzeltilmesi ya da yeniden gönderilmesi üzerine çalışılabilir. En basitinden, hatalı olduğu bilinen bir veri parçası atılarak, doğru olarak algılanması engellenebilir. Bazı ortamlarda, örneğin telsiz ortamlarda, hataların sağnak halinde oluştuğunu görebiliriz. Bu ortamlardaki hataların zamana göre homojen dağıldığını söylemek mümkün değildir. Sağnak halinde oluşmuş hatalar bir paketin içeriğini, çoğunlukla, orijinal veriyi tekrar oluşturamayacak şekilde bozarlar. Bu bölümde hata sezme teknikleri üzerinde duracağız. Hata düzeltme teknikleri, hata sezme tekniklerinden daha karmaşıktır. Bu yöntemler konularımız arasında yer almamasına karşın, detaylı bilgi için kodlama teorisi konusundaki kitaplara bakılması tavsiye edilir. Hata sezme işlemlerinin hepsi ek veri üretilmesini gerektirir. Üretilen ek veri, aktarılmak istenen veri ile birlikte taşınır. Bu da kullanıcıya sunulan veri kapasitesinin düşmesine yol açar. 2. Hata Sezme Teknikleri Bu bölümde bazı hata sezme teknikleri üzerinde durulacaktır. 1
2.1 Eşlik Sınaması Aktarılan veride oluşan tek sayıda hatayı sezmek için kullanılır. Amaç, verideki birlerin sayısını tek ya da çift olacak şekilde düzenlemektir. Bu amaçla veriye bir eşlik biti eklenir. Eşlik biti bir ya da sıfır yapılarak tüm veri grubunun içindeki birlerin sayısının çift ya da tek olması sağlanır. Birlerin sayısının çift olmasına çift eşlik, tek olmasına da tek eşlik durumu denir. Aşağıda tek eşlik ve çift eşlik durumu için 0100010100 verisine eklenmesi gereken eşlik bitleri gösterilmiştir. Tek eşlik Veri: 0 1 0 0 0 1 0 1 0 0 1 + 1 + 1 = 3 tek Eşlik biti 0 olmalı Veri + eşlik biti: 0 1 0 0 0 1 0 1 0 0 0 2
Çift eşlik Veri: 0 1 0 0 0 1 0 1 0 0 1 + 1 + 1 = 3 tek Eşlik biti 1 olmalı Veri + eşlik biti: 0 1 0 0 0 1 0 1 0 0 1 Bu teknik 1, 3, 5, 7, gibi tek sayıda hatayı sezer. Çift sayıda hata olduğunda eşlik biti, ne yazık ki, etkisiz hale gelir ve hata sezilmez. Genellikle yedi sekiz bit gibi kısa verilerin aktarımı sırasında kullanılır. 2.2 Çevrimli Fazlalık Sınaması Bu yöntemde taşınacak veriden hesaplanan bir sınama katarı verinin sonuna eklenir. Sınama katarına tekniğin İngilizce adının (Cyclic Redundancy Check) kısaltılmışı olarak CRC katarı da denir. Varış noktasında gelen verinin CRC katarı hesaplanır ve daha önce hesaplanarak veriye eklenmiş CRC katarı ile karşılaştırılır. CRC katarlarının farklı olması verinin bozulduğunu gösterir. Bu yöntemde kaynak ve varış düğümlerinde gerçeklenen işlemleri iki alt başlık altında açıklayabiliriz. 2.2.1 Kaynak Tarafında Gerçeklenenler (CRC Katarının Hesaplanması) Bu işlem üç adımdan oluşur : 1) Öncelikle aktarılmak istenen veri grubu P(x) adı verilen bir polinom ile ifade edilir. Şöyle ki, verinin sağdan ilk değeri x 0 ın katsayısı, ikinci değeri x 1 in katsayısını... gösterir. Bu durumda 10010100110 verisine karşılık düşen polinom aşağıdaki gibidir. P(x) = 1 x 10 + 0 x 9 + 0 x 8 + 1 x 7 + 0 x 6 + 1 x 5 + 0 x 4 + 0 x 3 + 1 x 2 + 1 x 1 + 0 x 0 Bu da P(x) = x 10 + x 7 + x 5 + x 2 + x demektir. 2) Elde edilen P(x) polinomunun x p polinomu ile çarpılır. Bu işlem, aktarılmak istenen verinin sonuna eklenmiş p adet sıfır şeklinde de düşünülebilir. Şöyle ki: 3
(x 10 + x 7 + x 5 + x 2 + x). (x p ) = x 10+p + x 7+p + x 5+p + x 2+p + x 1+p + x p Çarpma işlemi sonunda elde edilen polinom veri olarak 100101001100000...000 p adet sıfır şeklinde gösterilir. 3) Çarpma işlemi sonunda elde edilen polinom (P(x).x p ), G(x) adı verilen bir üreteç polinomuna bölünür. G(x) polinomu p. dereceden hata sezme işlerinde kullanılan özel bir polinomdur. Bu polinomlar standartlar da tanımlıdır. G(x) in x 4 + x 2 + x + 1 polinomu olarak verildiğini düşünürsek, p=4 olacaktır ve çarpma işlemi veri katarımızın sonuna ekleyeceğimiz dört adet sıfır ile ifade edilecektir. 100101001100000 -> x 14 + x 11 + x 9 + x 6 + x 5 (x 14 + x 11 + x 9 + x 6 + x 5 ) (x 4 + x 2 + x + 1) işleminin sonucunda elde edilen Bölüm = x 10 + x 8 + x 4 + 1 Kalan = x 2 + x + 1 dir. Bu işlemin detayları aşağıda verilmiştir: x 14 + x 11 + x 9 + x 6 + x 5 x 4 + x 2 + x + 1 x 14 + x 12 + x 11 + x 10 x 12 + x 10 + x 9 + x 6 + x 5 x 10 + x 8 + x 4 + 1 bölüm x 12 + x 10 + x 9 + x 8 x 8 + x 6 + x 5 x 8 + x 6 + x 5 + x 4 x 4 x 4 + x 2 + x + 1 x 2 + x + 1 kalan 4
Unutmayınız bölme işlemi sırasında modulo 2 aritmetiği kullanarak çıkarma yapmanız gerekir. Bu durumda çıkarma ve toplama aynı işlemleri tanımlar. Şöyle ki : 0 + 0 = 0, 0-0 = 0 0 + 1 = 1, 0-1 = 1 1 + 0 = 1, 1-0 = 1 1 + 1 = 0, 1-1 = 0 Karmaşıklık yaratmamak için toplama işlemi gerçeklenir ve sonuçlar artı işareti kullanarak gösterilir. Bölme işlemi sonunda ortaya çıkan kalan P(x).x p polinomuna eklenir. Bu işlem modulo 2 aritmetiği ile yapıldığı için çıkarma işlemi ile aynı sonucu verir. Yukarıdaki örnekte elde edilen kalan x 2 + x + 1 polinomudur ve 111 olarak ifade edilir. Bu polinom, 100101001100000 katarının ifade ettiği polinomuna eklendiğinde sonuç 100101001100111 katarı şeklinde gösterilebilir. Burada dikkat edilmesi gereken önemli bir nokta vardır: tüm bu işlemlerden sonra elde edilen 100101001100111 katarı polinom olarak ifade edildiğinde üreteç polinomuna (G(x)) tam olarak bölünebilir! Toplama işlemi sonunda ortaya çıkan polinomun ifade ettiği veri katarı aktarılmak istenen ve P(x) polinomu ile ifade edilen veri katarının yerine gönderilir. Bu durumda sizlerin de fark ettiği gibi aktarılan verinin miktarı p bit artmıştır. 2.2.2 Varış Tarafında Gerçeklenenler (CRC Katarının Doğrulanması) Varış tarafında yapılan işlem ise verinin aktarılması sırasında meydana gelebilecek bozulmaları anlamayı hedef alır. Varsayalım ki alıcıya V(x) polinomu ulaştı. Eğer yolda bir hata olmadıysa V(x) in üreteç polinomuna tam olarak bölünmesi gerekir çünkü kaynak ve varış aynı üreteç polinomunu kullanır. Yukarıdaki örneğimiz üzerinden devam ederek aktarım sırasında mavi ile gösterilen bitlerin bozulduğunu düşünelim. 100101001100111 Bu durumda varışa ulaşan veri katarı 100001011101111 olacaktır. Bu veri katarı üreteç polinomuna bölündüğünde (x 14 + x 9 + x 7 + x 6 + x 5 + x 3 + x 2 + x 1 + 1 ) (x 4 + x 2 + x + 1) Kalan = x 3 + x 2 + x olur. 5
Veri hatasız aktarılsaydı kalanın sıfır olması gerekirdi. Dikkat edilmesi gereken bir nokta kalandaki terim sayısının bozulan bit sayısına eşit olduğudur. Bu yöntem bozulan bit sayısını gösterir ancak hangi bitlerin bozulduğu konusunda bilgi vermez. Bozulan bitlerin hangileri olduğunu anlamak için hata düzelten teknikler kullanılmalıdır. Hata düzelten teknikler verinin ardına daha fazla bit eklenmesini gerektirir. 2.2.3 Bu yöntem ile bozulan tüm bitler hissedilebilir mi? Ne yazık ki hayır. Bu yönteme göre V(x) polinomu üreteç polinomuna tam olarak bölündüğünde hata olmamıştır. Yani V(x) polimonu üreteç polinomunun bir katı ise sorun yoktur. Bu varsayım bazı sorunların gözden kaçmasına yol açar: ya oluşan hatalar V(x) polinomunu üreteç polinomunun bir katı haline getirdiyse? Bu durumda hatanın farkedilmesine imkan yoktur. 2.2.3.1 Bu durumda dikkat edilmesi gereken durum ne olmalıdır? Üreteç polinomumuz p. dereceden olduğuna göre ilk bozuk bit ile son bozuk bit arasındaki uzaklık p den kısa ise bu durum alıcı tarafında mutlaka hissedilir. Diğer durumlarda ise V(x) in üreteç polinomunun bir katı haline gelme şansı olduğu için hatalar hissedilemeyebilir. 6