12 Kasım 2018 Pazartesi

VERİ İLETİMİ(DATA TRANSMISSION)

VERİ İLETİMİ




İletişim(Haberleşme): Bir sistemin başka bir sistemle bilgi alışverişinde bulunması.

Protokol: Bir dizi kural ve düzenleme.

İletişim Protokolü: İki elektronik cihazın birbirleri arasında iletişimi sağlamak için verileri düzenlemeye yarayan, standart olarak kabul edilmiş kurallar dizisi.

1)Paralel Haberleşme

Paralel İletişim, paralel kanallar üzerinden bir seferde çoklu veri bitlerinin gönderilmesi/alınması işlemidir.

Bilgisayarda, işlemcide, mikrodenetleyicide bilgiler dijital olarak '1' ve '0' lar şeklinde kodlanır. Bu ifadelerden her birine bit denir. Paralel arabirimler aynı andan birden fazla biti eşzamanlı olarak  ayrı yoldan iletir. Örneğin verilerimiz 8 bitlik veriler olsun. Bu verinin iletilmesi için bize 8 bit veri yolu ve saat(clock)  hattı lazımdır ve toplamda bir iletişim için 9 hat kullanmış oluruz.




Avantajları-Dezavantajları:  

  • Paralel iletişimde alıcı taraf verinin uzunluğunu, başlangıç/bitiş bitlerini ve iletim hızını    bilmek zorunda değildir.
  •  Hızlı ve basittir ancak fazla ha kullandığımızdan dolayı maliyeti arttırır.
  • Seri iletişime göre gürültü dayanıklılığı çok daha azdır.


2)Seri Haberleşme

Seri iletişimde bir seferde bir bit veri akışı olur.  Saat hattının olup olmamasına göre iki şekilde gerçekleşir.

a-Full-dublex Seri İletişim:

Bu yöntemde her iki taraf da alıcı ve verici olarak çalışır. Yani aynı anda veri gönderip alabilirler. Telefon konuşmaları gibi.

b-Half-dublex Seri İletişim:

Bu yöntemde de her iki taraf alıcı ve verici olarak çalışabilir. Fakat biri veri gönderirken diğer dinlemek zorundadır. Aynı anda karşı taraf veri yollayamaz .Telsiz konuşmaları gibi.


c-Simplex Seri İletişim:

Bu yöntemde bir taraf verici bir taraf alıcıdır. Değişmesi mümkün değildir. Radyo yayınları gibi.

2.1)Asenkron Seri İletişim

Asenkron iletişim, verilerin harici bir saat sinyalinden destek almadan aktarılması anlamına gelir. Bu iletim metodu kullanacağımız kablo sayısını azaltmak için uygundur fakat verilerin güvenilir bir şekilde aktarılması ve alınması için ekstra çaba sarf etmemiz gerekir.

Bu iletişim için bize lazım olan değerler şunlardır.
  • Baud Hızı-Oranı:Verilerin seri hat üzerinden ne kadar hızla gönderileceğini belirtir. Saniyede gönderilecek bit sayısını ifade eder. Genelde bps(bit per second) şeklinde ifade edilir. En yaygın olan değer 9600 bps'dir. Orange pi'yi UART ile boot ederken daha çok 115200 bps hızını kullanırız.
  • Veri Bitleri Yığını: Asıl verinin taşındığı kısımdır. Bu kısma veri yığını deniyor, veri boyutu özellikle belirtilmiyor. Her paketteki veri miktarı 5-9 bit arası bir değere ayarlanabilir. Yine de standart veri boyutu 8 bittir. Gönderimde ilk öncece LSB(en az anlamlı bit) gönderilir.
  • Senkronizasyon Bitleri: "Başlangıç", "bitiş" ve "parity" bitleridir. Başlangıç biti bir bittir fakat bitiş biti bir veya iki bit olabilir. Başlangıç biti değeri '0'dır, bitiş biti değeri ise '1'dir. Parity biti ise opsiyoneldir ve hata ayıklamak için kullanılır. Fakat günümüzde yaygın bir biçimde kullanılamamaktadır.
Yukarıda bahsettiğim gibi baud hızı saniyede gönderilen bitleri tanımlar. Ancak bu hız her iki tarafın senkronize bir saati varsa anlam kazanır. Örneğin; mikrodenetleyici kristalinde bir saniyelik bir sapma oldu. Bu durumda baud oranımız bozulur. Her iki cihazında aynı saat kaynağını kullanması bu sorunu yok sayabilir. Asenkron iletimde böyle bir durumla karşılaşmayız. Çünkü asenkron iletimde, gönderenin alıcıya bir saat sinyali gönderilmesi gerekmeden veri iletimine izin verilir. Bunun olması için de gönderici ve alıcı önceden zamanlama parametrelerini kabul etmeli. Asenkron iletimler için UART’a bir veri verildiğinde bu veriye başlangıç, bitiş biti ve parity biti eklenir.






Veri bitlerine eklenip oluşturulan paket bu şekilde asenkron seri iletişimle gönderilir. Bitlerin sırasının ters olduğunu fark etmiş olabilirsiniz fakat bu iletişimde LSB(en anlamlı bit) ilk önce gönderilir.




Yukarıdaki veri iletimi için yüksek voltaj  “1”dir , düşük voltaj değeri ise “0”değerini gösterir. Bu doğru mantık olarak bilinir. Bazı protokoller ise ters mantık kullanır. Bu durumda yüksek voltaj “0”, düşük voltaj ise “1” anlamına gelir. Protokolün doğru mu yoksa ters mantık mı olduğunu bilmek önemli. Örneğin RS-232 ters mantık kullanır. 

Şimdi bir örnek ile bu haberleşme adımları nasıl olur inceleyelim. U harfini bir cihazdan diğerine göndermek istiyorum. U=> ASCII’ye göre “85” sayısına karşılık gelir. Peki arkada ne olur? “85 “ sayısı ikili biçimde “01010101” dir.

"85" sayısı çipin kendi içinde transistör anahtarlarından yapılmış bir ikilide “01010101” ikili modeli ile depolanmaktadır. Seri ara birimlerde boştayken çıkış pini yüksektir. Gönderilecek veri yoksa çıkış pini sürekli yüksek kalabilir. Çıkış pini düştüğünde bu veri iletimin başladığını gösterir. Buna başlangıç biti deriz ve “0” olmasının sebebi budur.

,

Her bit iletim hızına bağlı olarak belli bir süre için aynı konumda kalmalı. Yukarıdaki örneğe bakacak olursak bit uzunluğu A-B yaklaşık 26 mikrosaniyedir. Bu hızda saniyede 38400 bit iletebiliriz. Bu hıza "Baud oranı" denir ve bu bilgiye bakacak olursak alıcı ve vericinin baud oranları eşit olmalıdır. 

Başlangıç bitinden sonra veri bitleri gelir. Veri biti sırası en az anlamlı bitten(LSB) en anlamlı bite(MSB) doğrudur. Bu örnekte ikili sayımız ”01010101” olduğuna göre ilk önce 1 biti iletilmelidir. Veri bitlerinden sonra son olarak çıkış tekrar yüksek bir seviyeye yükseltilerek ve bir bit uzunluğunda tutularak sona erer. Bu bite bitiş biti deriz.

Başka bir örnek;  enter tuşuna basalım . Enter(ASCII 13) 00001101  ikili değere denk geliyor.  İletimde LSB-> MSB olduğu için iletim 1-0-1-1-0-0-0-0 şeklinde olacaktır. Burada da görebileceğiniz gibi hat bir bit süresinden uzun süre yüksek veya düşük olabiliyor. Alıcının veriyi doğru bir şekilde yorumlaması için veri bit uzunluğunu(aktarım oranını ) bilmesi gerekir.


Senkronizasyon bitleri kısmında bahsettiğim parity bit kullanımı ise  hata ayıklama amacıyla kullanılan bittir. Günümüzde yaygın olarak kullanılmamaktadır. 

2 tip kullanımı mevcuttur:

a) Even Parity: Burada parity biti verideki '1' bitini çift sayıya tamamlayacak bit oluyor.




Gördüğünüz gibi even parity biti verideki '1' bit sayısını çift yapacak değer olur.

b) Odd Parity: Burada '1' bitini tek sayıda tutacak değerdir.




Asenkron iletişimde veri göndermek için 3 pine ihtiyacımız vardır. Bunlar “alıcı RX” , “verici TX” ve toprak hattıdır.


2.2) Senkron İletişim

Veri bitleri bir saat darbesi iletildiğinde senkron veri iletimi olur.

Senkron seri iletişimde alıcı ve verici ortak saat sinyalini kullanırlar. Bu sinyal için, harici saatten gelen fazladan bir kabloya ihtiyaç duyulmaktadır. Bu nedenle haberleşmede daha çok asenkron seri iletişim kullanılmaktadır.

Senkron sistemlerde veri ve eş zamanlama bilgisinin iletimi için iki ayrı kanal kullanılır. Zamanlama kanalı saat darbelerini alıcıya gönderir. Saat darbesinin alınması üzerine alıcı veri kanalını okuyarak o anda kanal üzerinde bulunan bit değerini yakalar. Veri kanalı bir sonraki saat darbesi gelene kadar okunmaz. Verici hem veri ve hem de zamanlama darbelerini gönderdiğinden alıcı veri kanalını yalnızca verici tarafından belirtildiğinde okur ve böylelikle eş zamanlama garanti altına alınır.



2.3) Veri Nasıl Seri Olarak İletilir?

Mikrodenetleyicide belirli bir veri kümesi varsa, o veri paralel formdadır ve o veriye herhangi bir bite, bit numarasına bakılmaksızın erişilebilir. Bu veri seti, iletilecek çıktı tamponuna aktarıldığında, hala paralel formdadır.

Çıktı tamponu, bu verileri "Seri" verilere (PISO)(Parallel In Serial Out)(Paralel Giriş Seri Çıkış) dönüştürür. Dönüştürme işlemine protokole göre MSB’den veya LSB’den başlanır.

Bu veri başka bir mikrodenetleyici tarafından alındığında alıcı tamponunda bu sefer paralel veriye(SIPO)(Serial In Parallel Out)(Seri Giriş Paralel Çıkış) dönüştürülür.


Kısaca seri olarak haberleşmek demek, karşılıklı olarak üzerinde anlaşılan bir oranda cihazlar arasında bir dizi dijital darbelerin(0-1) gönderilmesidir. Gönderen, üzerinde kararlaştırılan veri hızında gönderilecek verileri temsil eden darbeleri gönderir ve alıcı da aynı hızda darbeleri dinler.

Genel olarak haberleşme bu şekildedir. Önümüzdeki yazıda haberleşme için kullanılan protokollere ve yapılara bakacağız.

Okuduğunuz için teşekkür ederim. Aklınıza takılan bir soru veya karşılaştığınız bir sorun olduğunda yorumlarda belirtebilirsiniz. Burada eksik olarak anlattığımı düşündüğünüz veya sizlerin gerekli olarak gördüğünüz bilgileri yine yorumlarda yazarsanız, bundan herkesin faydalanmasını sağlamış olursunuz. Herkese iyi çalışmalar.


Kaynakça:

  • https://www.microcontrollertips.com/asynchronous-serial-communication-explained-including-ttl-uart-rs232/
  • http://www.robotroom.com/Asynchronous-Serial-Communication-1.html
  • http://maxembedded.com/2013/09/serial-communication-introduction/#SerialvsParallel
  • https://learn.sparkfun.com/tutorials/serial-communication/all


,












Hiç yorum yok:

Yorum Gönder

Öne Çıkan Yayın

ORANGE PI PYTHON UART

ORANGE PI PYTHON UART Python kurulum  yazısında Orange pi'de Python konusuna giriş yapmıştık. Daha sonra  Python Gpio  yazısında gir...