Paket Tamamlama Özelliği ( Eksik Gelen Data Paketlerinin Tamamlanması )

Başlatan serhat1990, 03 Mayıs 2014, 22:56:01

serhat1990

Merhabalar değerli PicProje Ailesi. Uzun zamandır foruma pek giremiyorum işlerimin yoğunluğu nedeniyle , bir sorum olacaktı. Öncelikle başlık ile konuyu tam olarak ifade edip edemediğimi bilmiyorum kusuruma bakmayın. Bazı kablosuz haberleşme sistemlerinde eksik gelen data paketlerinin tamamlanabilmesi gibi bir durumdan bahsediliyor. Bu konuyu bir yerden okumadım fakat konuşulana bakacak olursak durum bu. Burada nasıl bir yol izlenmiş olabilir , siz değerli hocalarıma soruyorum. Gönderilmesi gereken datalar için oluşturulacak paket içerisinde aynı dataların birden fazla farklı kombinasyonlarda dizilimi gibi bir durum olabilir mi ?

Gökhan BEKEN

Benim bildiğim, sayısal elektronikte bazı kodlama standartlarında var bu özellik:

Parity Kodu (Hata Tesbit Kodu)
Sayısal sistemler birbirleri ile haberleşirken bilginin değişmesi oldukça sıklıkla karşılaşılan bir konudur Bilgi değişimlerini kontrol edebilmek ve gönderilen bilginin doğruluğunu kontrol etmek amacı ile Parity Kodu (Hata Tesbit ) kodları ortaya çıkmıştır
Veriye özel bir bit ekleme yöntemi ile veri tümleştirme sağlanabilir Fazladan eklenen
eşlik biti (parity bit)i verilen kod kelimesindeki hatanın bulunmasını sağlayacaktır Basit bir eşlik bitinin kodlanması tek yada çift taban üzerine yapılır Tek eşlik bitinde veri içindeki 1' lerin sayısı tek, çift eşlik bitinde ise 1'lerin sayısı çifttir



Not: Tek eşlik biti ile çift eşlik bitinin birbirinin tümleyeni olduğu tablodan görülmelidir
Özel mesaj okumuyorum, lütfen göndermeyin.

fatih6761

Paketler birkaç on bayt veya daha fazla ise CRC kullanabilirsiniz. CRC nin yanında sıralı veri transferi yapıyorsanız paketleri numaralandırabilirsiniz. Yani atıyorum 1024 bayt veriniz var. Bir pakette 64 bayt gidiyor. 16 paket gönderilmesi gerekir. 16 paketi her pakete ait CRC ve paket numarası ile yollayın.
Burada paket boyutu/paket sayısı arasındaki oranı deneyerek de bulabilirsiniz. Mantıken ortam gürültüsü yani hata yapma olasığı fazla ise paketleri küçük boyutlu tutmak aktarım başarısını arttırır. Hatalı paketlerde az miktarda veri kaybedilir. Tekrar göndermesi daha kısa sürer. Ortam çok gürültülü değilse veya alıcı-vericiler bir kere SYNC olduktan sonra tek seferde aktarım yapabiliyorsa paket boyutu büyütülebilir.
Karşıda sağlam ve bozuk paketleri ayırın. Eksik paket numaralarını tekrar isteyin. Tabi küçük boyutlu verilerde bu işlem vakit kaybettirir.

@meftun hocamın bahsettiği ODD/EVEN Parity yöntemi genelde 7-bitlik verilerde kullanılıyor. ASCII karakterler 7-bit olduğu için 1 bitte parity konuyor. Yanlış bilmiyorsam bu 1-bit parity aynı zamanda CRC-1 oluyor...

mufitsozen

Bu konu error-correcting codes bahsinin konusu. Bıldiginiz gibi Shannon limiti kanal kapasitesini limitler

Shannon limitine en yakin olan ve 3g ve uzay haberlesmesinde kullanilan en modern yontemler "turbo codes"(patent suresi gecen sene doldu!) ve LDPC.

Modern Telekomunikasyon sistemlerinde cok kullanilirlar.

Bu forumda ogretilecek kadar basit değil. Kendi basiniza biraz arastirmaniz yerinde olur. 

http://www.amazon.com/Channel-Codes-Classical-William-Ryan/dp/0521848687/ref=pd_bxgy_b_text_y
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

Gökhan BEKEN

Bantwith ile ilgili sıkıntı yoksa bence en garantili yöntem, gönderilen her veriyi tekrar etmek.
10 byte'lık paketler halinde gönderililiyorsa,
ilk paket gittikten sonra ikinci paketi göndermeden önce ilk paketi bir daha göndermek ve alıcı tarafından kontrol ettirmek. Eğer değişen birşeyler varsa, "hatalı veri aldım" diye vericiye sinyal vermek ve tekrar veri istemek şeklinde.

Eğer çok riskli bir veri varsa uzun sürer ama, 3-4 kere daha doğrulama yapılabilir.
Özel mesaj okumuyorum, lütfen göndermeyin.

serhat1990

@Meftun ve @fatih6761 Hocam cevaplarınız için teşekkürler yalnız bahsettiğiniz 2 yöntemide ben çok sıklıkla kullanıyorum. Benim bahsettiğim data doğrulamadan daha çok eksik gelen dataların tamamlanabilmesi ile ilgili bir konu. Aynı datayı tekrar gönderme işlemini bir çok projede uyguluyorum fakat  bu konuda böyle lüksüm olmayacak maalesef yoksa ilk olarak kullanıcıya sunulan data iletim süresinin dışına çıkılmış olacaktır bu durumda.

@mufitsozen Hocam ilginize çok teşekkür ederim Hocam , inceleyeceğim. Forumda öğretilecek kadar basit olmadığının farkındayım Hocam ama en basitinden biraz fikir yürütülebilir diye düşündüm.

İyi çalışmalar dilerim.

mufitsozen

Alıntı yapılan: serhat1990 - 04 Mayıs 2014, 09:26:34
@mufitsozen Hocam ilginize çok teşekkür ederim Hocam , inceleyeceğim. Forumda öğretilecek kadar basit olmadığının farkındayım Hocam ama en basitinden biraz fikir yürütülebilir diye düşündüm.


Anlasilir olabilmesi icin turkce aciklamalar bulmaya calistim. Kayit olmasi acisinda eksisozlukte bu konudaki kisa aciklama soyle:
Alıntı Yapsayısal haberleşme sistemlerinde bit hata başarımını arttırma amaçlı kullanılan paralel sıralı kodlara (ayrıca seri sıralı kodlar için de geçerli) alıcıdaki iteratif kod çözücü yapısı nedeniyle verilen diğer ad. kod sözcüğü genelde verinin farklı şekilde serpiştirilip geribeslemeli katlamalı 2 ayrı kodlayıcıdan geçirilmiş halleri ve istenirse verinin kendisinin birleşiminden oluşur. alıcıdaki map ya da soft-viterbi algortimasını uygulayan 2 kod çözücü bu serpiştirilip kodlanmış ek bit dizilerini, birbirlerinin çıkışlarını ve varsa verinin kodlanmamış hali olan sistematik girişi göz önünde bulundurarak daha önceden belirlenen sayıda iterasyon boyunca çözerler. kod çözücülerin elde ettiği bilgileri birbirlerine aktarımının turbo bir motorun çalışmasına benzetilmesi, bahsedilen kodlama yönteminin bu ismi almasına sebep olmuştur. iterasyon sayısının arttırılmasıyla genelde sistemin bit hata performansında kayda değer bir iyileşme sağlanır. alıcıda verinin ancak tüm blok çözüldükten sonra elde edilebilmesi ve yapılan iterasyonların alıcı yapısına bağlı olarak uzun sürebilmesi nedeniyle gecikmeye duyarlı (telefon konuması, karşılıklı video görüşmesi) veri iletimler için pek uygun değildir. ancak 3. nesil yapılar dahilinde gecikmeye duyarlı olmayan veri iletişiminde kullanılmaktadırlar. daha sonraki nesil sistemlerde muhtemelen telif hakkı gerektirmediğinden dolayı benzer bir çalışma şekline sahip ldpc kodlarının kullanılması söz konusudur.


birde 2010 senesinde Baskent Universitesinde yazilmis bir tez buldum. Size yardimci olacaktir umarim.

http://lib.baskent.edu.tr/tezbaskent1/00516.pdf
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

speak48

hangi kablosuz iletişim yöntemlerini kullanıyorsun.
kulladığın modulasyona ve kanalına göre hata düzeltme yöntemleride değişiyor.

serhat1990

@mufitsozen Hocam çok teşekkür ederim yardımlarınız için. Hepsini tek tek inceleyeceğim çok derin bir konu olduğunu düşünüyorum. Umarım çalışmalar sonucunda birşeyler ortaya çıkacaktır.

@speak48 Hocam FSK , GFSK ve MSK Modülasyonlarını kullanıyorum. Benim şahsi görüşüm bu iş sinyalin modüle edilmesinde kullanılacak bir kodlama algoritması olduğu yönünde, sadece bir görüş tabiki. Müfit Hoca'nın bahsetmiş olduğu dökümanlar konuyla birebir örtüşüyor diye düşünüyorum, onları inceleyeceğim.

muhittin_kaplan


serhat1990

Muhittin Hocam , teşekkür ederim. İnceliyorum hepsini. İyi çalışmalar dilerim.

speak48

FSK derken bu 400 bilmem kaç mhzde çalışan rx -tx modüllermi.
yoksa kendi iletişim sisteminimi kuruyorsunuz.

eğer hazır modülse blok fec kullanabilirsiniz. reedsolomon,bch,haming....

fec ile modululasyonun birleşmiş sisteme örnek olarak
Turbo Trellis Coded Modulation deniyor var zaten.

eğer benim gibi information teorisi bilmiyorsan
yada bilen birini tanımıyorsan
bu işe hiç bulaşma derim.

serhat1990

@speak48 Hocam kendi iletişim sistemimizi kullanıyorum , yani hazır bulunan RFIC'leri kullanarak tasarladığımız sistemleri diyeyim daha doğrusu. Konuları inceleyeceğim Hocam teşekkürler haming kod sistemini biliyorum ama diğerlerini biraz araştırmak gerek. Hocam onu bilmiyorsan buna bulaşma, bunu bilmiyorsan şuna bulaşma diyerek biz daha çok geri kalırız. Maalesef bir yerlerden başlamak gerek. Yanıtınız için teşekkür ederim.

İyi çalışmalar dilerim.

speak48

demek istediğim modulasyonu taşıyıcı frekansını falan tamamen siz tasarlıyorsanız.
kullanacağınız  yere göre rs,turbo,ldpc,bch,viterbi ve bunların kombinasyonu kullanılabilmekte

berat23

mufitsozen bahsetmiş ama bu ecc meselesi başlı başına bir lisansüstü uzmanlık alanı, ciddi olasılık ve matematik bilgisi gerekli. burada bahsedlen crc ve parity ise error detection codes kapsamında, düzeltmeye dair birşeyler içermez.

bence gürültülü kanallarda en kolay hata düzeltme/azaltma metodu bit süresini uzatmak yani hızı yavaşlatmaktır. ya da aynı veriyi n defa gönderip o süre içinde hiç alınmışmı şeklinde de yapabilirsiniz. süre ne kadar uzarsa hata azalır hatta sonsuz uzunluktaki bir bitte hata olasılığı sıfır oluyor. onun haricinde turbo codes falan burada soru soran birinin yapabileceği birşey değil bence.

birde şu var,  neden lazım? bu konu öyle birşey varmış bi bakayım tadında değil ama bence digital communication, ecc çok zevkli konular.