Makaleler / Elektronik / İletişim Teknolojisi / Dijital - Analog Dönüştürücü


Yazar: Mehmet Özlav
Gönderen: Elektro   Tarih: 28-12-2001 15:40
Yorumlar: (0)   Oylar:
Henüz yorum yapılmamıştır.
D/A ve A/D dönüştürücüler sayısal kontrol sistemlerinde sıkça kullanılan lojik devrelerdir. Bir mikroişlemcinin (yada herhangi bir sayısal işlemcinin) çıkışı 0 ve 1 bit dizilerinden oluşmaktadır. Mikroişlemci tarafından kontrol edilecek cihazların büyük çoğunluğu ise anolog bir işaretle çalışmaktadır. Bu durumlarda digital bit serisi D/A dönüştürücü ile bir gerilim seviyesine karşı düşürülür.

8 bitlik bir verinin anoloğa çevrilmesi problemini gözönüne alalım.

| bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
MSB <----------------------------------------------[ LSB

Bu şekildeki bir bit dizisini D/A çeviriciye gönderdiğimiz zaman anolog çıkışa en az katkıyı LSB (Least Significant Bit) en çok katkıyı MSB (Most Significant Bit) sağlamalıdır. LSB ve MSB arasındaki her bit kendinden bir önceki bite göre 2 kat daha fazla ağırlık yapmalıdır. Çünkü ardışıl bitler arasındaki oran 2 dir. Böyle bir çıkışı üretebilecek basit ağılıklandırma modelinin devresi aşağıdaki gibidir:


Şekil1. 4 Bit Ağırlıklı D/A Dönüştürücü

Vref gerilimi LSB üzerinde Vref/8R lik bir akım oluştururken MSB üzerinde Vref/R akımını oluşturuyor. Başka bir deyişle:


MSB = 8 x LSB

LSB'den sonraki bir m. bit için anolog çıkış = LSB x m

Anolog çıkış Vref 'den beslenen bitlerin ağırlıklarınn toplamıdır. Toprağa anahtarlanmış bitlerin çıkışa katkısı 0'dır.

Bu model D/A dönüştürücü tercih edilmez. Çünkü şekilden de anlaşılacağı gibi LSB'ye karşı düşen direnç DAC'ın bit sayısı arttıkça büyür. Örneğin 8 bitlik bir D/A için LSB'ye karşı düşen direnç 128R'dir. Bu sakıncayı ortadan kaldırmak için R-2R modeli geliştirilmiştir.



Aşağıda Vref = 7V olan 3 bitlik bir D/A dönüştürücü için giriş/çıkış ilişkisi verilmiştir.

Girişler

b2 b1 b0

Çıkış

0 0 0 0V
0 0 1

1V

0 1 0

2V

0 1 1

3V

1 0 0

4V

1 0 1

5V

1 1 0

6V

1 1 1

7V



Burada verilen değerler idealdir. Ançak DAC' lar da fiziksel cihazlar olduklarından ideal değildirler. Bu nedenle üreticiler DAC' ların doğruluğu ile ilgili bir takım parametreler verirler. Mutlak doğruluk (absolute accuracy) gerçek DAC çıkışı ile ideal çıkış arasındaki farkın maximum anolog çıkışa bölünmesi ile elde edilen bir parametredir. Bazı üreticiler bunun yerine basitçe ideal ve gerçek değerler arasındaki maximum farkın daima en anlamsız bitin ağırlığının yarısından küçük olduğunu belirtmek için "1/2 LSB' den küçük" gibi kelimeler kullanırlar. Böyle DAC' lar için "monoton" da denir. Çünkü giriş arttıkça çıkışta artar.

Uygulamalar

1. Mikroişlemcili Fonksiyon Üreteci

Bu uygulamadaki asıl amaç 8 bitlik mikroişlemcilerle DAC'ın kullanılmasını anlatmaktır.

Fonksiyon üreteçinin blok yapısı şekildeki gibidir :

Şekil3. Fonksiyon Üreteç Lojiği

Öncelikle PIA hakkında kısa bir bilgi vereyim. PIA, MC6821 entegresi olup 40 bacaklı NMOS bir elemandır. CPU ile dış cihazlar arasında parelel giriş/çıkış yapılacağı zaman yüzleştirme elemanı olarak kullanılır.

Şekil4. MC6821'in Blok Yapısı

PIA iki dış cihaza hizmet edebilecek iki register takımına sahiptir. Üçü A tarafında üçü de B tarafındadır. Bu altı keydedici bellekte E000-E004 arasında oturur. (2 adres hattı yani 4 adres var) Dört adres altı kaydediciye yetmeyeceği için veri kaydediciler ile veri yön kaydediciler aynı adresi paylaşacaktır. Öncelikle denetim kaydedicisindeki 2.bit (DDR biti) 0 yapılarak A yada B'nin giriş mi çıkış mı olacağına karar verilir. Bu aşamadan sonra veri yön kaydedicilere ihtiyaç duyulmayacağından DDR biti 1' e setlenerek veri kaydedici seçilir. Artık bu kaydedicilerin oturduğu adrese gönderilecek herşey veri olarak kabul edilir.

E000: A veri ve veri yön kaydedicisi, E002: B veri ve veri yön kaydedici

E001: A kontrol kaydedicisi, E003: B kontrol kaydedici

Mikroişlemci olarak Motorola tarafından geliştirilen 6802 kullanacağız. 6802, 40 bacaklı bir yongadır. 8 bit veri ve 16 bit adres yoluna sahiptir.

Digital/Anolog dönüştürücü yerine R-2R modeli daha uygundur.

Öncelikle PIA için gerekli setlemeleri yapmamız gerekir. Bunun için aşağıdaki kodu koşmalıyız :

Adres

6802 Makine Kodu

6802 Assembly Kodu

Açıklama

0100

7F E0 03

CLR PIA BC

B kont. kayd. DDRB = 0 (veri yön)< /FONT >

0103

86 FF

LDA A#$FF

A = 11111111 (çıkış)

0105

B7 E0 02

STA A#$E002

B çıkış olarak seçildi

0108

86 04

LDA A#$04

A = 00000100 (DDRB = 1) < /FONT >

010A

B7 E0 03

STA A$E003

Ortak kaydedici veri içindir.



Tablo 1. PIA'i Setleyecek Makine Kodu

PIA'in setlenmesi tamamlandıktan sonra istediğimiz fonksiyonları üretecek proğramı koşalım. Örneğin testere dişi dalga üretmek için aşağıdaki kısa kodu kullanabiliriz :

010D

B7 E0 02

STA A$E002

A' nın içeriğini B veri kayd. gönder

0110

4C

INC A

A = A +1< /FONT >

0111

7E 01 0D

JMP 010D

010D' ye dallan



Tablo 2. Testere Dişi Dalga Üreten Makine Kodu

Yukardaki kod A kaydedicisinin içeriğini sürekli artırarak PIA'in veri kaydedicisinin oturduğu $E002 adresine gönderiyor. A, 8 bitlik bir register olduğundan A = 11111111 (255) olduğunda A' yı 1 artırırsak A = 0 olacaktır. PIA kendisine gelen parelel 8 bitlik digital veriyi D/A dönüştürücüye gönderir. D/A dönüştürücü karşı düşen anolog işareti üretir. Bu anolog çıkışı bir osiloskop ile incelediğimiz zaman testere dişi şeklinde bir grafik göreceksiniz.