Kodlayıcı

8×3 kodlayıcının simgesi. Sekiz girişten 1 olanın sıra numarası üç bitlik Y2Y1Y0 koduna çevrilir.

Kodlayıcı ya da enkoder (İngilizce: encoder), bilgiyi bir biçimden ya da koddan başka bir biçime çeviren devre, aygıt ya da algoritmadır. Terim birkaç alanda kullanılır. Sayısal elektronikte kodlayıcı, 2n girişten hangisinin 1 olduğunu n bitlik ikili bir koda çeviren birleşik devredir ve kod çözücünün tersidir. Haberleşmede kodlayıcı, bir veri kaynağını iletim kanalına uygun biçime çeviren aygıttır ve karşı uçtaki kod çözücüyle birlikte çalışır. Makine ve otomasyon tekniğinde ise bir milin dönüşünü ya da doğrusal bir hareketi elektrik işaretine çeviren konum algılayıcılarına kodlayıcı denir.

Sayısal kodlayıcı, birden çok aygıtın ya da işaretin aynı anda istekte bulunabildiği yerlerde öncelikli kodlayıcı biçiminde kullanılır: işlemcilerde kesme isteklerinin sıralanmasında, klavye tuşlarının kodlanmasında ve çoklu buyruk başlatımlı işlemcilerde yürütülecek buyrukların seçilmesinde bu yapı kullanılır.

Sayısal kodlayıcı

4×2 kodlayıcının kapı düzeyinde yapısı. İki VEYA kapısı yeter; I0 hiçbir çıkışa bağlanmaz.

Sayısal kodlayıcı, tek-sıcak bir girişi, başka bir deyişle aynı anda yalnızca birinin 1 olduğu bir giriş kümesini, ikili koda çevirir. 2n girişli bir kodlayıcının n bitlik çıkışı, 1 olan girişin sıra numarasıdır. Boyutu, giriş ve çıkış sayıları yan yana yazılarak gösterilir: dört girişli ve iki çıkışlı bir kodlayıcı 4×2 kodlayıcı, sekiz girişli ve üç çıkışlı bir kodlayıcı 8×3 kodlayıcı diye anılır.

Çıkışın her biti, o bitin 1 olduğu sıra numaralarına karşılık gelen girişlerin VEYA kapısıyla toplanmasıyla elde edilir; yalın bir kodlayıcı yalnızca VEYA kapılarından kurulabilir. 4×2 bir kodlayıcıda çıkış denklemleri şöyledir:

8×3 bir kodlayıcıda aynı yol üç dört girişli VEYA kapısıyla uygulanır: , , .

Yalın kodlayıcı, girişlerden yalnızca birinin 1 olduğu varsayımına dayanır ve bu varsayım bozulduğunda iki sorun çıkar. Birincisi, aynı anda birden çok giriş 1 olursa çıkış anlamsızlaşır: 8×3 bir kodlayıcıda I2 ile I5 birlikte 1 olduğunda VEYA kapıları 111 kodunu üretir; bu kod ne 2'yi ne 5'i, 7'yi gösterir. İkincisi, I0 hiçbir denkleme girmediği için I0 = 1 durumu ile hiçbir girişin 1 olmadığı durum aynı 00 çıkışını verir ve birbirinden ayırt edilemez.

Öncelikli kodlayıcı

4×2 öncelikli kodlayıcının kapı düzeyinde yapısı. V çıkışı en az bir girişin 1 olduğunu bildirir.
4×2 öncelikli kodlayıcının doğruluk tablosu. "–" o değerin önemsiz olduğunu gösterir; I3 en yüksek önceliklidir.
GirişlerÇıkışlar
I3I2I1I0Y1Y0V
0000––0
0001001
001–011
01––101
1–––111

Öncelikli kodlayıcı, yalın kodlayıcının iki sorununu birlikte giderir. Girişlere bir öncelik sırası verilir ve aynı anda birden çok giriş 1 olduğunda yalnızca en yüksek öncelikli olan kodlanır. Ayrıca girişlerden en az birinin etkin olduğunu gösteren ek bir çıkış konur; bu çıkışa geçerlilik çıkışı (İngilizce: valid) denir ve çoğunlukla V ile gösterilir. Stanford Üniversitesi'nin ders notlarında öncelikli kodlayıcı, girişlerdeki ilk 1'i bulup yalnızca onu geçiren bir devre ile bir kodlayıcının art arda bağlanması olarak anlatılır; çıkış, girişteki ilk 1'in konumunu gösterir.

I3'ün en yüksek öncelikli olduğu 4×2 bir öncelikli kodlayıcının çıkış denklemleri şöyledir:

Y0 denklemindeki terimi önceliği sağlar: I2 1 iken I1'in çıkışa etkisi kesilir. V = 0 iken çıkış kodu geçersiz sayılır ve I0 = 1 durumu hiçbir girişin 1 olmadığı durumdan ayrılmış olur.

Tümleşik devre olarak kodlayıcılar

Öncelikli kodlayıcılar TTL mantık ailesinden beri hazır tümleşik devre olarak üretilmektedir. Texas Instruments'ın SN74148 ve SN74LS148 yongaları sekiz veri hattını üç bitlik ikili koda, SN74147 ve SN74LS147 yongaları ise dokuz veri hattını dört bitlik 8-4-2-1 BCD koduna çevirir. Veri sayfasına göre bu kodlayıcılar girişlerin öncelikli çözülmesi sayesinde yalnızca en yüksek sıradaki veri hattını kodlar. 147'de sıfır için ayrı bir giriş yoktur; dokuz veri hattının hiçbiri etkin değilken sıfır kodlanır. Veri sayfası 147 için klavye kodlamasını ve aralık seçimini, 148 için n bitlik kodlamayı ve kod dönüştürücüleri uygulama örnekleri olarak sayar. Bu ailenin 147, 148 ve LS147 üyeleri artık üretilmemektedir.

148 yongasında etkinleştirme girişi (EI) ile etkinleştirme çıkışı (EO) vardır. Bu uçlar, birden çok yonganın dış devre eklenmeden arka arkaya bağlanarak daha geniş bir öncelikli kodlayıcı kurulmasını sağlar; veri sayfasında iki yongayla kurulan 16 bitlik bir öncelikli kodlayıcı örneği verilir. Aynı düzen yüksek hızlı CMOS serisindeki SN74HC148'de de sürmektedir. Bu serinin 10×4 üyesi CD74HC147'de iki ya da daha çok giriş birlikte etkin olduğunda en yüksek öncelikli giriş çıkışa yansır; en yüksek öncelik I9'dadır.

İşlemcilerde kullanımı

Kesme isteklerinin öncelikli kodlayıcıyla işlemciye iletilmesi. V çıkışı bekleyen bir istek olduğunu bildirir.

Kesme önceliği. Bir bilgisayardaki giriş ve çıkış aygıtları işlemcinin dikkatini çekmek için kesme isteğinde bulunur. İşlemcinin her aygıt için ayrı bir kesme ucu olamaz ve aynı anda yalnızca bir aygıta hizmet verebilir; bu yüzden istekler bir öncelikli kodlayıcıdan geçirilir. Kodlayıcının geçerlilik çıkışı işlemciye bir aygıtın hizmet beklediğini bildirir, kod çıkışları da hangi aygıtın istekte bulunduğunu gösterir. Birden çok istek aynı anda gelirse işlemci önce en yüksek öncelikli aygıta hizmet verir.

Buyruk seçimi. Çoklu buyruk başlatımlı işlemcilerde her çevrimde yürütülmeye hazır buyruklar arasından hangilerinin başlatılacağını seçme mantığı belirler. Palacharla, Jouppi ve Smith'in 1997'deki çalışmasında bu seçim mantığı, istekleri iki evrede işleyen ve ağaç biçiminde dizilmiş seçim hücrelerinden oluşur; buyrukların beklediği pencerenin en solundaki girdiler en yüksek önceliğe sahiptir. Birbiriyle yarışan istekler arasından en öncelikli olanı seçip onun konumunu veren bu yapı, öncelikli kodlayıcının genelleştirilmiş bir biçimidir.

Haberleşmede kodlayıcılar

Haberleşmede kodlayıcı, kodlama işlemini yapan aygıttır. Bir veri kaynağını, örneğin sayısal bir ses işaretini, bir dosyayı ya da bir görüntüyü, belirli bir iletim kanalına uygun biçime çevirir. Kodlayıcı belirli bir kodlama kuralına göre çalışır ve alıcı uçtaki kod çözücü işareti bu kuralla özgün biçimine geri çevirir. Aynı donanımda karşıt yönlerde çalışan bir kodlayıcı ile bir kod çözücüden oluşan birime kodek denir.

Kodlamanın iki ayrı amacı vardır. Kaynak kodlaması verideki fazlalığı atarak veriyi sıkıştırır; böylece aynı bilgi daha az bitle, yavaş bir kanaldan daha kısa sürede ya da aynı depolama alanında daha yüksek nitelikte aktarılabilir. Kanal kodlaması ise veriye denetimli bir fazlalık ekleyerek iletim sırasında oluşan bit hatalarına ve silinmelere karşı dayanıklılığı artırır; alıcı bu ek bilgi sayesinde veriyi hatadan ayırabilir.

Kodlayıcılar analog iletimde de kullanılır. Radyo yayınında stereo ses işaretleri vericide tek bir yayın işaretine kodlanır ve alıcıdaki stereo kod çözücü onları yeniden iki kanala ayırır. Siyah-beyaz görüntü bandı içinde renk bilgisinin aktarılması (NTSC, SECAM ve PAL) ile telefon hatlarında numaraların çok frekanslı tonlarla gönderilmesi de analog kodlamaya örnektir.

Konum kodlayıcıları

Solda üç bitlik Gray kodlu bir mutlak kodlayıcının diski, sağda artımlı bir kodlayıcının çeyrek periyot kaymalı A ve B işaretleri.

Makinelerde hareketten işaret üreten kodlayıcılar, bir milin ya da bir sürücü biriminin o anki konumunu algılayıp elektrik işareti olarak veren algılayıcılardır. Optik, manyetik ya da mekanik kontaklı olarak çalışabilirler; manyetik olanlarda alan değişimi Hall etkisi algılayıcıları ya da manyetik direnç algılayıcılarıyla ölçülür. Motor mili gibi dönen parçalara takılanlara döner kodlayıcı, düz hareket eden parçalara takılanlara doğrusal kodlayıcı denir.

Artımlı kodlayıcılar, milin dönüş miktarına karşılık bir darbe dizisi üretir; dönüş miktarı, ayrı bir sayacın bu darbeleri saymasıyla bulunur. Çoğu artımlı kodlayıcının iki kanalı vardır ve bu kanalların çıkışları, aralarında 90 derece faz farkı bulunan iki kare dalgadır. İki dalgadan hangisinin önde olduğu dönüş yönünü gösterir. Artımlı kodlayıcı yalnızca konumdaki değişimi verdiği için, makine açıldığında başlangıç konumunu bulmak üzere bir sınır anahtarı gibi ek bir düzenekle bir dayanak konumuna götürülmesi gerekir.

Mutlak kodlayıcılar, dönüş açısını 2n değer alabilen bir kod olarak doğrudan verir; kodun her biti için ayrı bir çıkış vardır. Konum her an okunabildiği için makine kapatılıp açıldıktan sonra da başlangıç konumu bilinir. Kod diski olağan ikili kodla bölmelenirse, iki komşu bölme arasındaki geçişte birden çok bit aynı anda değişir; okuma tam bu geçiş sırasında yapılırsa bitlerden bazıları eski, bazıları yeni değeri gösterebilir ve okunan konum büyük ölçüde yanlış çıkar. Bunu önlemek için olağan ikili kod yerine Gray kodu kullanılır. Gray kodunda komşu iki değer yalnızca bir bitte ayrılır. Kod, Bell Laboratuvarları'ndan Frank Gray'in 1947'de başvurduğu ve 1953'te verilen patentte "yansıtılmış ikili kod" (İngilizce: reflected binary code) adıyla tanımlanmıştır.

Konum kodlayıcıları sayısal denetimli tezgâhlarda motor millerinin konumunu izlemek, ses düzeyi gibi değişkenleri ayarlamak ve hareketleri elle denetlemek için kullanılır. Doğrusal artımlı kodlayıcının bir örneği, bir yazıcıda şerit üzerine basılmış çizgi deseninin optik olarak taranmasıdır; bu tarama, yazıcı kafasını taşıyan arabanın çizgi boyunca belirli bir hareketi yapmasını sağlar.

Kaynakça

  1. 1 2 3 4 5 Dally, William J.; Levis, Philip (16 Ocak 2008). "Lecture 3: Combinational Building Blocks" (PDF). EE108A (İngilizce). Stanford Üniversitesi. Erişim tarihi: 23 Eylül 2026.
  2. 1 2 3 4 5 6 7 8 Redekopp, Mark. "Introduction to Digital Logic, Lecture 11: Encoders and Priority Encoders" (PDF). EE101 (İngilizce). Güney Kaliforniya Üniversitesi. Erişim tarihi: 23 Eylül 2026.
  3. 1 2 3 "G.701: Vocabulary of digital transmission and multiplexing, and pulse code modulation (PCM) terms" (İngilizce). Uluslararası Telekomünikasyon Birliği (ITU-T). Mart 1993. Erişim tarihi: 23 Eylül 2026.
  4. 1 2 3 4 "Technical Guide: Rotary Encoders" (PDF) (İngilizce). Omron. Erişim tarihi: 23 Eylül 2026.
  5. 1 2 3 4 "SN54147, SN54148, SN54LS147, SN54LS148, SN74147, SN74148, SN74LS147, SN74LS148 10-Line to 4-Line and 8-Line to 3-Line Priority Encoders" (PDF) (İngilizce). Texas Instruments. Mayıs 2004. SDLS053B. Erişim tarihi: 23 Eylül 2026.
  6. ↑ "SNx4HC148 8-Line to 3-Line Priority Encoders" (PDF) (İngilizce). Texas Instruments. Mart 2022. SCLS109H. Erişim tarihi: 23 Eylül 2026.
  7. ↑ "CDx4HC147, CD74HCT147 High-Speed CMOS Logic 10- to 4-Line Priority Encoders" (PDF) (İngilizce). Texas Instruments. Ocak 2025. SCHS149G. Erişim tarihi: 23 Eylül 2026.
  8. ↑ Palacharla, Subbarao; Jouppi, Norman P.; Smith, James E. (1997). "Complexity-Effective Superscalar Processors". Proceedings of the 24th Annual International Symposium on Computer Architecture (ISCA) (İngilizce): 206-218. doi:10.1145/264107.264201.
  9. ↑ "Information, Entropy, and the Motivation for Source Codes" (PDF). 6.02 Introduction to EECS II: Digital Communication Systems, Fall 2012 (İngilizce). MIT OpenCourseWare. Erişim tarihi: 23 Eylül 2026.
  10. ↑ "HEDS-5500/5540, HEDS-5600/5640 Quick Assembly Two and Three Channel Optical Encoders" (İngilizce). Avago Technologies. 20 Kasım 2014. AV02-1046EN. Erişim tarihi: 23 Eylül 2026.
  11. ↑ "Lecture 3: Position and Velocity Measurements" (PDF). EECS461 Embedded Control Systems (İngilizce). Michigan Üniversitesi. 9 Eylül 2008. Erişim tarihi: 23 Eylül 2026.
  12. ↑ US 2632058, Gray, Frank, "Pulse Code Communication", 1953-03-17 tarihinde verildi

Dış bağlantılar