Makaleler / Elektronik / İletişim Teknolojisi / Veri İletimi


Yazar: Recep Hakan Adakan
Gönderen: Recep Hakan Adakan   Tarih: 14-09-2008 17:30
Yorumlar: (0)   Oylar:
1. Veri İletimi
Bir noktadan diğer bir noktaya digital veya binary bilgilerin iletilmesine, transfer edilmesine veri iletimi denir. Veri iletim sistemleri; bilgisayar - bilgisayar, bilgisayar - terminal veya bilgisayar-device arasındaki veri iletimlerini gerçekleştirir. Digital veya binary (ikili bilgi) hale dönüştürülebilen ses, görüntü gibi analog bilgilerin iletilmesi de veri iletimi ile gerçekleştirilir. Digital tekniklerin, yüksek verimliliğin yanı sıra maliyetlerinin de düşük olması veri iletiminde kullanılmasının en önemli sebeplerindendir.
Digital sinyaller, her biri bir voltaj seviyesiyle tanımlanan ve birbirinden farklı iki durumdan oluşan binary pulselerdir (iki konumlu sinyaller). Bu pulse'ler iki seviye arasında değişir. Bu seviyeler sırasıyla; 0 veya low ve 1 veya high seviyeleridir. Şekil 2.1’de ki gibi Binary 0 seviyesi genellikle 0 V veya ground, binary 1 seviyesi de genellikle +5 V olarak tanımlanır. Ayrıca kullanılan sisteme göre bunların dışında başka voltaj değerleri de kullanılabilir.


Şekil 1: Binary pulse’lar (iki konumlu sinyal)


2 FORMATLAR VE PROTOKOLLER

İletim durumundaki çevresel aygıtların farklı tiplerde olması mümkündür. Ancak veri alışverişinde bulunacaklarsa belli kurallar üzerinde anlaşıyor olmaları gerekir. Böyle bir anlaşma hem iletinin hedefe varmasını hem de mesajların taraflarca anlaşılmasını sağlar.

2.1 Paralel Veri İletimi

Digital olarak kodlanmış bilginin tüm bitleri aynı anda transfer ediliyorsa buna paralel veri iletimi denir. Bu olay aşağıdaki şekilde daha net olarak anlaşılabilir.



Şekil 2: Paralel Veri İletimi


Transfer edilecek binary (ikili) bilgi, içerisinde herbir bit için bir flip flop bulunan bir yazmaç'a yüklenir. Herbir verici flip-flop çıkışı uygun kablo bağlantıları ile alıcı devrenin flip-flop'una bağlanır. Alıcı devresi de genellikle bir yazmaç'dır. Görüldüğü gibi paralel veri iletiminde, iletilecek bilginin her biti için bir kablo bağlantısı vardır. Bu ise, çok kablolu (multi-wire) bir hattın kullanımını gerektirir. Binary (ikili) bilgi taşıyan çoklu paralel hatlara "data bus" denir.

2.1.1 Paralel Veri İletiminin Avantajları :

Seri veri iletiminde, bir kerede bir karakterin sadece bir biti iletilir. Alıcı makine doğru haberleşme için karakter uzunluğunu, start-stop bitlerini ve iletim hızını bilmek zorundadır. Paralel veri iletiminde, bir karakterin tüm bitleri aynı anda iletildiği için start-stop bitlerine ihtiyaç yoktur. Dolayısıyla doğruluğu daha yüksektir.

Paralel veri iletimi, bilginin tüm bitlerinin aynı anda iletimi sebebiyle çok hızlıdır. Paralel veri iletiminde, bir kerede bir karakter iletildiği için bilgi iletim hızı "cps" (Character Per Second-Karakter Sıralama Zamanı ) olarak bilinir. Sıradan bir paralel portun veri iletim hızı yaklaşık 100.000 cps'dir. Benzer şekilde, sıradan bir seri portun veri iletim hızı yaklaşık 9600 bps'dir. Pek çok paralel port uygulamasında bir karakter yaklaşık olarak birkaç mikro saniyede (10msn) alıcı devreye iletilebilir.

Örnek olarak, 8 bitlik bir ASCII kodunun (1 karakter) paralel iletimini seri iletim ile karşılaştıralım. ASCII kodundaki herbir bitin transferi için 10msn geçtiği düşünülürse, seri haberleşmede 8 bitlik ASCII kodu için 80msn gerekir. Paralel haberleşmede ise bu iletim sadece 10msn'de yapılabilir.

2.1.2 Paralel Veri İletiminin Dezavantajları :

Veri iletiminde kullanılan portlardaki kablolar pahalıdır. Telefon ve seri iletişim bağlantılarında genellikle ikili hatlar kullanılır (örneğin mouse). Tipik paralel port bağlantıları için genellikle 25'li hatlar kullanılır. Ancak bunların sadece 8 tanesi data hattıdır. Geriye kalan diğer hatlardan kontrol sinyalleri iletilir. Çok kablolu hatları pahalı olması, paralel iletişiminin kısa mesafelerde tercih edilmesinin sebeplerinden biridir. Bilgisayarlarda mikroişlemci ile harddisk, printer, scanner vb. elemanlar arasındaki kısa mesafelerde paralel iletişim kullanılır. Örnek olarak Centronix firmasının ürettiği 36 pinli paralel porttan yapılan bir printer bağlantısında, paralel kablonun uzunluğunun 9 feet'den (274,42cm) fazla olması önerilmez.

2.2 SERİ VERİ İLETİMİ

Seri haberleşmede 8 yada daha farklı sayıda veriler 2 tel üzerinden iletilirler. Paralel haberleşmeye göre daha uzun mesafelere veriler iletilebilirler. Paralele göre dezavantajı ise veri iletim hızının yavaş olmasıdır.

2.2.1 SERİ İLETİŞİM STANDARTLARI

Mikroişlemci ile çalışan sistemlerde, bilgi seri şekilde gönderilmek istenildiğinde uyulması gereken bazı standartlar vardır. Bunlar senkron seri ve asenkron seri iletişim standartlarıdır. Her iki yöntemde de bilginin seri olarak karşı tarafa ulaşması sağlanır.

2.2.2 Seri Haberleşmede Önemli Terimler:

Baud Rate: Veri iletim hızıdır. 1 saniyede iletilen veri adedine denir. Standart olarak veri hızları 300,600,1200,2400,4800,9600,19200, ... şeklindedir.

Start Bit: Seri haberleşmede veriler senkron yada asenkron olarak iletilebilirler. Senkron iletimde belirli bir başlangıçtan sonra veriler sıralı olarak ard arda gelirler. Uzun bir dosyanın iletiminde bu yol kullanılabilir. Asenkron iletimde ise bir veri gönderildikten sonra yeni bir veri belirli olmayan bir zamanda gelir. İşte bu yeni verinin başlangıcı start biti ile bildirilir.

Stop Bit: Gönderilen verinin bittiğini ifade eden bittir. Bu biti alan alıcı yeni bir veri için start bitini gözlemeye başlar. Haberleşmenin tipine göre 1 yada 2 bit uzunluğunda olabilir.

Eşlik Biti (Parity Bit): Bir çeşit hata denetim bitidir. Start ve 8 bitlik bir veri iletildikten sonra stop biti gönderilmeden parity gönderilir. İletilen 8 bitlik veride 1’lerin sayısı çift ise EVEN, tek ise ODD biti gönderilir. Alıcı bu biti kontrol ederek alınan verinin doğru olup olmadığını kontrol eder. 1 parity 1 bit uzunluğundadır.


Şekil 3: Ardarda Gelen 8 Bitlik İki Adet Veri Katarı.


Burada dikkat edilmesi gereken Start , Stop ve veri bitlerinin süresidir. Buda bize baud rate'i verir. örnek olarak 2400 Baud'da Start birinin süresi:

Bit Süresi = 1/2400 = 416.6 uS

Buna göre 8 bitlik bir veri parity ile birlikte 4.58 mS de iletim hattından iletilir. 9600 baud için bu hız 1.14 mS ye düşer.

2.2.3 Senkron Seri İletişim Standartları

Senkron seri iletişimde, seri verinin 1 ve 0'larının doğru sıralanıp sıralanmadığını
araştırmanın yanı sıra verinin ilk bitini de belirlemeye ihtiyaç vardır. Alıcı ve verici arayüz ünitelerinin başlangıç senkronizasyonu ile bu işlem yapılır. Senkronizasyondan sonra alıcı, n bitlik bir sözcüğü oluşturmak için n tane pals alır. Güvenirliliği devam ettirmek için alıcı ve verici arayüz ünitelerinin, iletim süresi boyunca senkronizasyon içinde olması gerekir. Alıcı clock’undaki gürültü ve kaymadan dolayı senkronizasyonun kaybolmasını engellemek için başlangıçtaki senkronizasyon yeterli değildir. Bunun için gönderici ve alıcı aynı clock sinyali ile çalışırlar. Genellikle bu clock sinyali, gönderici uçtaki clock generatöründen alınır. Bu iletişim moduna senkron seri iletişim adı verilir.

Senkron seri iletişimin başlangıcında verici bir seri pulse gönderir. Bu gönderilen pulselerin ilk birkaç biti önceden belirlenmiş olan formattadır. Bunlara match karakter (karşılaştırma parametrelri) veya sync pattern adı verilir. Bu match karakter, alıcıda belirli bir registerda depolanır. Alınan diğer sinyaller, match karakterle uyuşuyorsa alıcı match karakteri kendi alıcı registerine yerleştirir ve devamına n tane bit sayar. Seri veri transferinin senkron modunda peş peşe iki sözcüğün arasında bekleme yoktur.

Veri genellikle pulse dizisi şeklinde veya sözcük sayısı önceden belirlenmiş pals blokları halinde gönderilir. Verinin iletilmediği zaman aralığı genellikle null veya fill karakterlerle doldurulur. Bu karekterler, herhangi bir bilgiyi içermezler. Fakat alıcının zamanlama palslerinin akışını sağlarlar.

2.2.4 Asenkron Seri İletişim Standartı :

Asenkron iletişimde, veri-veri demetinin özel bitlere ayrılmış hali olan word’ün başladığını alıcıya işaret eden bir start bitinin arkasındadır. Diğer bitlerle karşılığı önlemek için, start biti iletimdeki diğer herhangi bir bitin boyutunu ikiler. Word’ün sonu alıcıya word’ün sona erdiğini söyleyen bir stop bitiyledir. Bu diğer start biti olabilir. Veri bütünlüğünü sağlamak için parity (eşlik) biti stop biti ile verinin son biti arasına eklenir. Parity biti gönderilen veri ile gelen verinin bit diziminin aynılığını ve bit sayısının doğruluğunu kontrol eder.


Şekil 4: Ideal Asenkron Veri Örneği


Veri iletiminin bu şeklinde, alıcı ve verici arayüz modülleri için iki ayrı clock sinyali kullanılır. Bu iki clock sinyalinin iletiminin yapıldığı süre boyunca birbiri ile çok iyi senkronizasyon içinde olması gerekir. Bu metot, alıcı modülüne bazı karmaşıklıklar getirmesine rağmen avantajı sadece iki hatta ihtiyaç duymasıdır. Eğer ortak topraklama mümkün ise tek hat yeterlidir. Çok sayıda iletişim hattı olduğunda bu metot uygundur. Örneğin telefon, telex gibi. Asenkron modunda start biti alıcı için başlangıç zamanlama sinyali olarak çalışır. Bu bit yardımı ile alıcı clockunu senkronize eder. Bu senkronizasyon biti alındıktan sonra önceden belirtilmiş iletilmekte olan verinin karakterleri, veri olarak kaydedilir. Eğer alıcı ve verici clock frekansları tam uyumlu değilse alıcı shift registerına son bit yükleninceye kadar geçen zaman içinde senkronizasyonda küçük bir kayıp olabilir. Buna bağlı olarak hata olasılığını yok etmek için her sözcüğün sonunda stop bitleri bulunur. Bu bitler, doğru okumayı sağlayabilecek ölçüde alıcı clockunun bozulup bozulmadığını anlayabilmek için kontrol amacıyla kullanılırlar. Eğer bozulmuşsa çerçeve hata sinyali üretilir.



Şekil-2.5: Asenkron iletişimin nasıl işlediğini anlatmaktadır.


2.2.5 Sistem Desteği

Asenkron formatlarda veri iletimine yönelik programlamanın çok zor olmadığı söylenebilir. Bir çok PC’ de ve mikrokontrolörde bulunabilen UART(Universal Asynchorous Receiver/Transmitter) adlı devre elemanı seri-veri gönderim ve alımına ilişkin ayrıntıları halleder.
PC’ lerde işletim sistemi ve programlama dilleri UART’ın mimarisini detaylarıyla bilmeyi gerektirmeksizin seri linklerin programlanmasına imkan vermektedir. Bir linki açmak için, uygulama bir veri hızıyla birlikte diğer ayarları belirler ve istenilen portu devreye sokar. Gönderilecek byte uygulama tarafından seçilen portun tamponuna yazılır. Format belirlemesi, Start ve Stop bitinin eklenmesi, parite bitinin gerekip gerekmediğine ilişkin ayrıntılar ve nihayet gönderim, UART tarafından yapılır. Benzer şekilde, gelen veri portun tamponunda tutulur. UART bir kesme (interrupt) tetikleyerek CPU’ya, dolayısıyla uygulamaya, bir veri geldiğini bildirir.

Bazı mikrokontrolörlerde bir UART yoktur. Oysa birden fazla UART’a ihtiyaç olabilir. Böyle durumlarda iki seçenek vardır: İlki UART’ın yerini tutacak bir program yazmaktır. İkincisi ise harici bir UART eklemektir. İkinciye örnek Parallax’ ın Basic Stamp’ ıdır. Yongada bir UART programı bulunur.

Hem senkron hem de asenkron iletimleri destekleyen cihazlar da mümkündür. Bunlara bir örnek olarak USART (Universal Synchorous Asynchorous Receiver/Transmitter) gösterilebilir.

2.2.6 Byte İletimi

Seri linkin kullanımı, programlaması ya da tasarımı için bir byte’ın nasıl iletildiğini bilmek bir zorunluluk değildir. Ancak, protokol seçimi ve arabirim konusunda doğabilecek sorunlarla baş edebilmek için bir parça bilgiden zarar gelmez

2.2.7 Bit Formatı

8-N-1 formatı, Şekil 2-3’de gösterilmişti. Verici boşken çıkışı lojik 1’dir. Çıkış, 1-bit genişliğinde lojik 0 göndererek gönderimi başlatır. Bu, Start bitidir. 1-bit genişlik 300 bps’ de 3.3 milisaniye, 9600 bps’ de 0.1 milisaniyedir.

Start bitinin ardından, 8 adet veri biti, 0 nolu bitten başlayarak sırayla gönderilir. Bunu göndericinin yolladığı bir lojik 1 takip eder ki Stop bitidir. Böylece çıkış yine, en azından bir bitin genişliği boyunca, lojik 1 olur. Verici ancak bundan sonra yeni bir byte göndereceğini bildirmek üzere bir Start biti yollayabilir. Alıcı uçta lojik 1’den start bitişini belirten lojik 0’a geçiş bir byte geldiğini belirtir ve izleyen bitleri algılamak üzere zamanlamayı takip eder. Alıcı, her bitin lojik değerini (-durumunu) bitin ortasına yakın bir yerde ölçer. Bu, gönderim ve alım saatlerini uyuşmazlığı halinde bile alıcının hatasız bir şekilde okumasını sağlar. RS-232 gibi bazı arabirimler tersinmiş voltajlarla karar verirler: Stop biti yerine negatif; Start biti yerine de pozitif voltaj.

UART ise bit frekansını 16 katına eşit alıcı saat sinyali kullanır. Örneğin veri hızı 300 bps ise, alıcı saati 4800 bps olmalıdır. Start bitini bildiren bir geçiş algılandıktan sonra UART, bitin geçmesi için 16 çevrimi bekler. Ardından 0 nolu biti ortasında okuyabilmek için 8 çevrim daha bekler. Bundan sonra, her 16 çevrimde bir gelen biti okuyarak devam eder.

Gönderen ve alan cihazların saat darbeleri birbirlerine tam olarak uymuyorsa, alıcı izleyen her bir biti, aynı kenara bir öncekinden daha yakın bir yerde okuyacaktır. 10-bitlik bir word’ ün hatasız olarak okunabilmesi için alıcıyla vericinin saat darbeleri arasındaki farkın %3 ‘ten fazla olmaması gerekir. Çünkü, fazla olması halinde, alıcının son bitleri okumaya çalıştığı sırada zamanlama bozulmuş olacak ve alıcı, mbitleri ya henüz başlamadan ya da bittikten sonra okur duruma düşecektir. Bununla birlikte, her bir Word’ün, darbeleri senkronize eden yeni bir Start bitiyle başlaması nedeniyle, darbelerdeki bu kayma, bir word uzunluğundaki aralık (sync) ile sınırlı kalacaktır.

Asenkron arabirimlerde zamanlamanın öylesine hassasiyet taşıması, kararlı bir zamanlama referansını gerektirmektedir. Bu nedenle arabirimler çoğunlukla bir kristal veya seramik rezonatörle kontrol edilirler. En iyi sonucu alabilmek için, referans frekansının, alıcı tarafındaki saatin standart bit hızlarında kullanıldığı frekanslarla tam bölünebilir olması gerekir. PC’lerde standart UART saat frekansı 1.8432 Mhz’tir. 16 ile bölümünden elde edilen 115,200 bps, UART’in desteklediği en yüksek bit hızıdır.


Şekil 6: Her uç bitin ne zaman gönderileceğini ya da alınacağını belirlemek için bit hızının 16 katını saat frekansı olarak kullanır.


Bir mikro kontrolörde çoğu kez, yonganın ana zamanlama kristali, UART saatini kontrol eden donanım zamanlayıcıları için bir referans işlevi görür. 8051 ailesinde, donanım zamanlayıcıları 1/12 kristal frekansında çalışırlar. 11,0592 Mhz bir kristalle, mümkün en yüksek UART zamanı 921,600 Hz olur. Bu da 57,600 bps’ye karşılık gelir.

Parazit kaynaklı hataları ortadan kaldırmanın bir yolu olarak bazı UART’lar , 8051 mikro kontrolörler gibi, her bitin ortasında üç örnekleme yapar ve bunların iki yada üçüne uyan lojik düzeyi kullanır.

2.2.8 Bir Hızın Otomatik Algılanması

Her iki ucun da otomatik olarak kendilerini aynı bit hızına ayarladıkları bir link, kullanıcı açısından en iyi durumdur. Bunun iki yöntemi vardır. Her iki yöntemde de düğümlerden biri (ayarlanabilir düğüm) diğerinin (sabit düğüm) bit hızını yoklar ve kendi hızını ona göre ayarlar.

İlk yöntemde, özel bir donanım ya da donanım düzeyinde bir programlama gerekmez. Bir düğüm iletişim kurmak istediği zaman, belli aralıklarla bir karakter yollar. Bu karakter, en anlamlı biti yani iletilen son biti “0” olduğu sürece, her hangi bir (CHR(0) ile CHR(127) arasında) ASCII karakter olabilir.

Ayarlanabilir düğüm kendi en yüksek hızından başlar. Bir byte aldıktan sonra , beklenen en düşük bit hızında (300 bps’ de 33 milisaniye) bir byte göndermek üzere bekler ve sonra alınan byte’ı ya da byte’ları okur.

Alıcı, birden fazla karakter algılaması halinde bit hızları uymaz. Bu durumda , sonraki daha düşük bit hızını dener. Doğru hız, alıcının yalnızca bir tek karakter algılamasını sağlayan hızdır. İlave olarak , aldığı karakterin beklenen bir değere uyup uymadığı kontrol edebilir. Bunun ardından ayarlanabilir düğüm sabit düğüme bir tasdik (acknowledment) göndererek karakter iletimine son verir ve iletişim başlar.

Alıcının bit hızı vericininkinden fazla olması durumunda, yeni bitler gelirken alıcı okumayı bitirir. (Alıcı bir Stop biti beklerken lojik 1’i algılamazsa, karakter çerçeve hatasına (framing error) sebep olur. Ancak bu noktanın şu anda bir önemi yoktur. Alıcının karakterin iletildiğini düşünmesinin ardından alınan her hangi bir 0, Start biti gibi görünür. Böyle bir durumda alıcı, başka bir karakter okumaya çalışacaktır. İletilen son bit 0 ise, bit hızı yüksekken alıcı daima birden fazla karakter algılayacaktır.

İkinci yöntemde, darbe genişliği en az UART’ın alıcı saati kadar hassasiyetle ölçen bir program gerekir (16 darbe beklenen en yüksek bit hızıdır). Ayarlanabilir düğüm bir karakteri alırken alınan bitlerin genişliklerini ölçer. Düğüm belli bir karakter beklediği için biti hızını ölçtüğü genişlikten hesaplayabilir ve kendi hızını ona göre ayarlayabilir.

8052-Basic mikro kontrolörü bu yöntemi kendi bit hızını bir terminalin ya da bağlı olduğu diğer bir cihazın terminal hızına uydurmak için kullanılır. Bilgisayarın açılışının ardından mikro kontrolör seri portundan alacağı karakteri beklemeye başlar. Terminaldeki kullanıcı boş-karakter tuşuna (space bar) basarak karakteri (20h) yollar. Bu yöntemde 8052-Basic’te bir kristal frekansına dahi gerek duyulmaz. Çünkü yongadaki sabit yazılım, (firmware) hızını, aldığı darbelere göre uyarlamaktadır.

2.2.9 Veri Formatları

Bir seri-iletimdeki veri bitleri komut, sensör okuması, status bilgisi, hata kodu ya da metin mesajı olabilir. İletilen bilgi ikili kod ya da metin formunda da olabilir.

İkili(Binary) Veri:

Alınan byte değeri 0-255 aralığındaki bir değerin binary karşılığıdır. Bitler 0’dan 7’ye kadar numaralandırılmıştır ve bu numaralar 2’nin karşılık gelen kuvvetini gösterir. Her bir bit, değeriyle karşılık gelen 2’nin kuvvetinin çarpımını temsil eder. VB sözdizimiyle şöyle ifade edebiliriz:

Bit0 =BitValue *(2^0)
Bit1 =BitValue *(2^1)
Bit7 =BitValue *(2^7)
1111 1111 byte’ı 255’e veya FFh’a; 0001 0001 byte’ı 17’ye ya da 11h’a karşılık gelir. Asenkron linklerde 0 nolu bit, en-önemsiz-bit (least-significany-bit, veya LSB), gelen ilk bittir. Dolayısıyla, veri bir osiloskoptan ya da bir lojik çözümleyiciden izlendiğinde, en-önemsiz-bitin (Most-significant -bit, MSB) sol başta yazıldığı standart biçimi elde etmek için sırayı tersine çevirmek gerekir.

Metin Veri:

Binary veriler çoğu linklerde sorun çıkarmaz. Ancak bazı linklerde mesajların ya da metin içeren dosyaların gönderilmesi gerekir. Kimi durumlarda da binary verinin metin olarak kodlanıp gönderilmesi gerekir.

Metin yollarken, program her bir karaktere karşılık bir sayısal değer tahsis eden bir kodlama kullanır. Çeşitli kodlama türleri vardır. En yaygınlarından biri ASCII(American Standart Cod for Information Exchange)’dir. 128 koddan oluşur. 7 veri bitine ihtiyaç duyar. Sekizinci bit, ya 0 ya da parite biti olarak kullanılabilmektedir. Diğer biri ANSI (American National Standarts Institute)’tur. 256 koddan oluşur. Büyük değerler özel ve vurgulu karakterleri temsil ederler. Orjinal IBM PC’deki 127’den sonraki IBM ASCII değerler, genellikle DOS programlarının ekran ve baskı çıktılarında yer alan basit grafik ve tablo formlarını oluşturmakta kullanılan çizim karakterleri içerir.

Diğer formatlar karakteri tanımlarken 16 bit kullanırlar. Bu 65,536 farklı karakter anlamına gelir. Unicode standardı ise ilave olarak yüzlerce alfabeye imkan vermektedir. Ayrıca, DBCS (Double-byte character set)-çoğu Asya dillerini destekleyen daha eski bir standarttır.

ASCII Hex:

Katar (string) değişkenlerin ya da metin içeren dosyaların transferine yönelik olarak metin modu (text mode) uygun bir moddur. Ancak bu mod, binary verinin transferinde de kullanılabilir. Bunun için veri, ASCII Hex formatında ifade edilir. Her bir byte, iki hex (hexadesimal) karakterine karşılık gelen bir çift ASCII kodla temsil edilir. Bu formatta, her hangi bir değer, 30h-39h (0-9) ile 41h-46h (A-F) aralıklarındaki ASCII kodlarla ifade edilebilir.
0-255 arasındaki bir değer, tek bir byte olarak gönderilebileceği gibi iki byte olarak da gönderilebilir. Burada her bir byte bir hex sayıyı temsil eder. Alıcı, gelen değerleri metin olarak görür. Veriler bir kez alındıktan sonra, istenilen şekle dönüştürülmesi mümkündür. Bir ondalık sayıyı ele alalım:

163
Bunun binary karşılığı:1010 0011
Hex karşılığı:
A3h (VB’ de &hA3 şeklinde yazılır)
A karakterinin ve 3 karakterinin ASCII koddaki hex karşılıkları,sırasıyla:
41h, 33h
Bu iki ASCII hex’ in binary kod karşılıkları iki ayrı byte olarak yazılır:
01000001, 00110011.

ASCII hex formatını kullanan bir seri-link A3h değerini, yukarıdaki iki byte şeklinde yollayacaktır.

Bu durumda, iki byte gönderilecek olması nedeniyle, süre iki katına çıkar. Öte yandan, çoğu kez her iki uçta da modların birbirlerine dönüştürülmesi gerekir. Bununla birlikte ASCII hex’ in kullanıldığı yerler vardır. Bir kere, belirtilenler dışındaki kodlar-el sıkışma ve dosya-sonu kodları vb-serbest kalmaktadır. Ayrıca, sayısal veri iletiminde sadece 7-bit iletime izin veren tüm protokolleri karşılayabilmektedir.
Veri gönderiminde, 0-9 arasındaki ASCII ondalık kodları, ya da 0 ve 1 ASCII binary kodları kullanan başka seçenekler de bulunmaktadır. Basic-Stamp hem bunları hem de ASCII hex’ i desteklemektedir.

2.2.10 Veri Kaybının Engellenmesi

Seri linklerdeki bilgisayarlar veri almayı beklemek dışında işler de yaparlar. Örneğin, bir veri-kabul (data-acquisition) birimi, bir diğer düğüm isteyene kadar veri toplayıp kaydedebilir. Yahut, bir kontrolör link üzerinden bilgi göndererek yada talimat alarak kontrol ve takip yapabilir.

Düğümün, alıcı meşgulken iletimde bulunmak istemesi pek ala mümkündür. Bir linkte her alıcının gönderilen veriyi görebilmesi ve verinin de hatasız iletilmesi gerekir.
Bunu sağlamanın çeşitli yolları vardır. El sıkışma, tamponlama, alınan veriyi algılamak üzere kesme ya da yoklamaya ( polling ) başvurulması, hata kontrolü ve tasdik bu yollar arasındadır. Bir link bunların birini ya da birkaçını kullanabilir.

2.2.11 El Sıkışma

El sıkışma sinyalleriyle vericiler veri göndermeye, alıcılarsa almaya hazır olduklarını belirtirler. RS-232 ve RS-485 linkler standart protokolleri izlerler. Ancak sinyallerin izlediği protokoller değişebilmektedir.

Yaygın donanım el sıkışma biçimlerinden birinde, alıcı alıma hazır olduğunda hattı yükseğe getirir. Verici ise gönderime başlamadan önce bu sinyalin gelmesini bekler. Alıcı, hattı her hangi bir anda, hatta blok veri alımının tam ortasında düşüğe getirebilir. Verici bunu algılamalıdır ki, iletimi bitirmek için hattın yeniden yükseğe geçmesini beklemek üzere o anda gönderimi durdurabilsin. Bazı linkler bu işi yazılım el sıkışmasıyla kotarırlar. Alıcı veri almaya hazır olduğu yolunda bir kod; verici ise gönderimi durduracağı şeklinde başka bir kod yollar.

2.2.12 Tamponlar

Alıcılara yollanan verinin kaybolmasını engellemede kullanılan yöntemlerden biridir. Verici tarafında da işe yarayabilmektedirler. Özellikle uygulamaların link üzerinden yollayacakları bilgileri depolayarak daha verimli çalışmalarını sağlarlar. Tamponlar donanımda, yazılımda ya da her ikisinde de olabilirler. En eskiler hariç bütün PC’lerde UART üzerinde 16-byte donanım tamponları bulunur. Bu, yazılım tarafından okununcaya kadar UART’ın 16-byte veriyi depolayabileceğini anlatır. Gönderimde ise, 16-byte veri tamponda tutulurken UART protokole bağlı olarak , byteların tek tek bitler şeklindeki gönderim ayrıntılarıyla uğraşmasına imkan verir.

Donanım tamponlarının yeterince geniş olmadığı durumlarda, yazılım tamponlarına başvurulabilir. Boyutları programlanabilmektedir. Sistemin bellek kapasitesi kadar geniş tutulabilirler. Donanım ve yazılım tamponları arasındaki transfer portun yazılım sürücüsü tarafından yapılır.
Mikrokontrolörlerdeki tamponlar oldukça küçüktür. Hatta bazı yongalarda donanım tamponu bulunmayabilir. Donanım tamponları küçüldükçe veri kaybının önlenmesi için, diğer tekniklere başvurma gereği artar.

2.2.13 Yoklama Ve Kesmeler:

Veri alımı/gönderimi, el sıkışma sinyallerindeki değişmeler, hata mesajlarının iletimi bir seri portta meydana gelen olaylardandır. Bunlara yol açan veya bunları algılayan bir uygulamanın önünde iki yöntem vardır:

Birincisi, olayın gerçekleşmesi halinde programın bir rutine dallanmasını sağlamaktır. Uygulama, porttaki oluşuma derhal ve otomatik olarak tepki verir. Kontrolle vakit kaybı söz konusu olmaz. Yani, tek kontrol olayın olmadığına ilişkin bilgiyi almaya yöneliktir.
Bu tip bir programlama olay-uyarımlı (event-driven)’dır. Program dışsal olaya bağlı olarak herhangi bir anda kesilebilir. Bu durumda rutin devreye girer.

Ikinci yöntemde, bir olay meydana gelip gelmediğini öğrenmek için port periyodik yoklanır. Buna, prosedür-programlama adı verilir. Uygulama , bir kayba yol açmamak için portu uygun aralıklarla yoklamak durumundadır. Yoklama sıklığı tamponun büyüklüğüne, beklenen veri miktarına ve verilecek tepkinin aciliyetine bağlıdır. 16-byte tamponlu bir cihaz, portu saniyede bir yokluyorsa, saniyede 16-byte’ten veri alamayacak demektir. Yoksa taşma meydana gelecek ve veriler kaybolacaktır.

Yoklama (polling) genellikle, bir anda yapılaması gereken yoğun veri transferlerinde ya da bilgisayarın gönderdiği veriye acil cevap gerektiği durumlarda uygundur. Yoklamalı bir arabirimde donanım kesmelerine gerek olmaz. Dolayısıyla bu tür bir program, kesme hattı olmayan bir programda çalıştırılabilir. Çoğu yoklamalı programlar porttan okuma aralıklarını belirlemede sistem zamanlayıcısına başvururlar.

2.2.14 Onaylar (Acknowledgements)

Bazı linklerdeki düğümler komutları tepki vermeksizin alabilirler. Ancak bir düğümün karşılığında herhangi bir bilgi yollamayacaksa bile, komutu aldığını vericiye bildirmesi istenir. Bu tür onaylar özellikle ağlarda çok yararlıdır. Çünkü böyle durumlarda aynı veri yolunu paylaşan çok sayıda düğüm vardır. Nitekim bir vericinin yanlış bir zamanda başka bir düğüme yönelmesi, başka bir vericinin mesaj iletimini bloke edebilir.
Onay tanımlı bir byte olabilir. Örneğin, alıcıyı belirlemeye yarayan bir değer böyledir. Yani, verici düğüm, yolladığı bir mesaj karşılığında bir mesaj almışsa mesajın alındığını varsayar. Verici beklediği tepkiyi alamadığı durumda ya problem olduğunu düşünerek yeniden girişimde bulunacak ya da başka bir operasyona geçecektir.

Giriş tamponu olmayan ya da düşük kapasiteli tamponu olan bir düğüme iletim yapılması halinde, verici teyyite ihtiyaç duyabilir. Örneğin, blok veri yollayacağını belirmek amacıyla alıcı düğümü uyarmak isteyebilir. Böyle bir durumda verici , gönderim yapacağını belirtmek üzere önden bir byte yollar. Alıcı byte’ı okuduğunda bir teyit gönderir ve ardından tüm dikkatini seri portu izlemeye yöneltir. Verici karşılık teyyid’ini görünce iletime geçebileceğini anlar.

2.2.15 Hata Kontrolü

Alıcı tüm verinin doğru bir şekilde geldiğini doğrulamak için hata kontrolüne gidebilir. Bir mesajdaki hataları kontrol etmek için çeşitli yollar vardır. Örneğin aynı veriyi tekrar yollamak ya da hata- byteları yollamak bunlar arasındadır.

En basit denetim biçimi tekrarlamalı veri kullanımıdır. Verici bir mesajı iki kere yollar. Alıcı her ikisinin de aynı olup olmadığına bakar. Haliyle bu durumda sure de iki katına çıkar. Yine de, sık veri gönderilmediği hallerde yararlı bir yöntemdir. Kızılaltı denetimlerde sık başvurulur.

Ikinci bir yöntemde veriyle birlikte bir hata-denetim byte’ı yollanır. Mesajdaki bytelar üzerinde mantıksal ya da aritmetik işlemlerle denetim toplamı (check-sum) hesaplanır. En tipik olanı, mesajdaki tüm byteların değerlerini toplamak ve en düşük değerli byte’ı denetim toplamı olarak kullanmaktır.

Alıcı uç hesabı tekrarlar, sonuç farklı çıkıyorsa, aldığı verinin gönderilenden farklı olduğunu anlar. Denetim toplamı tek bir byte’a karşılık geldiği için mesajın boyunu fazlaca arttırmaz. Özellikle uzun mesajlarda yararlıdır. Ancak bu yöntem çok güvenilir değildir. Çünkü, veride sorun olmasa bile toplamların birbirine uyması düşük bir ihtimaldir. Intel Hex ve Motorola S-Record, her bir ASCII hex veri satırında denetim toplamına başvuran veri formatlarıdır.

Bir diğer yöntem, çevrimsel tekrar kodu kısaca CRC (cylic redundancy code)’dur. Daha karmaşık bir matematiği olmakla birlikte yukarıdakinden daha sağlıklıdır. Kermit, XModem, YModem ve Zmodem dosya transferlerinde bu yöntemi kullanan protokoller arasındadır.

Bir düğüm hata algıladığında ya da anlamadığı bir mesaj aldığında, vericiyi ya yeniden göndermesi ya da sorunu halledecek başka bir çare bulması için uyarmaya çalışır. Belli sayıda denemeden sonra verici, soruna bir çare bulamamışsa ya da alıcı tepki vermiyorsa, belli bir süre sonra alıcıyı ihmal edeceğini bir hata mesajı ile veya ses ile bildirerek kullanıcıyı uyarmalıdır.

Alıcının da gelen mesajın beklendiğinden kısa olması durumunda ne yapacağını bilmesi gerekir. Bir mesajı ebediyen beklemek yerine belli bir sürenin sonunda efendinin (master) durumdan haberdar olmasını sağlamalıdır ki, efendi de ne yapacağını bilsin. Aksi takdirde ağ, sonu belirsiz bir süre beklemede kalır.