Donanım Tanımlama Dilleri (HDL) Nedir?

Günümüzde gelişen teknoloji ile beraber sayısal devre tasarımı artık eskiden olduğu gibi doğruluk tabloları, karnaugh haritası ve devre şemasından ibaret olmamaktadır. Bu tasarım basit sayısal devrelerde çok sıkıntı doğurmasa da karmaşık devreler ve fonksiyonları gerçek hayata aktarmak istediğimizde işimizi zorlaştırmaktadır. Bunun için aynı bilgisayar programları için programlama dilleri geliştirildiği gibi sayısal tasarım için de donanım tanımlama dilleri (Hardware Description Languages) geliştirilmiştir.

Burada bilmeniz gereken en önemli nokta bunların programlama dili olmadığı ve programlama dilleri gibi çalışmadığıdır. Her ne kadar sözdizimsel olarak birbirine benzer yönleri olsa da programlama dilleri mikroişlemci komutları üretmek için tasarlanmıştır ve bu komutlara yönelik deyimleri içermektedir. Donanım tanımlama dilleri ise doğrudan doğruya donanımı tasarlamaya yönelik dil yapısını içerir ve yapısal olarak bir bilgisayar programından çok bir aygıtın özelliklerini betimlediğimiz bir yapıya sahiptir. Donanım tanımlama dillerinin zorluğu ise buradan kaynaklanmaktadır. Donanım tanımlama dilini kullanabilmek için dijital elektroniğe dair teorik bilginin çoğunu bilmek gerektiği gibi donanım tasarımı konusunda da donanımın her kısmına hakim olmayı gerektirir. Biz programlama dillerinde bize hazır olarak gelen bir donanımı çalıştıracak program kodunu yazarız. Bu bir nevi bize hazır olarak gelen bir makinanın düğmelerini, ayarlarını ve göstergelerini kontrol etmek gibidir. Ama donanım tanımlama dillerinde bu kullanacağımız makinayı sıfırdan yapacak derecede bilgiye sahip olmamız gereklidir.

Donanım tanımlama dilleri elektronik ve bilgisayar teknolojisinde en üst sıralarda yer alan konulardan biridir. Bir mikroişlemci tasarlamak veya karmaşık bir sayısal entegre devreyi yapmak istiyorsak donanım tanımlama dillerini öğrenmemiz şarttır. Hepimizin bildiği ARM firması donanım tanımlama dillerini kullanır ve ARM çekirdeklerini Verilog dili ile metinsel olarak yazar ve firmalara satar. Yerli ve milli mikroişlemciyi yapmanın en önemli adımı da donanım tanımlama dillerini bilmektir. Donanım tanımlama dilleri bilgisayar programlama dilleri gibi bir popülerliğe sahip değildir. Çünkü sayısal sistem tasarımı oldukça spesifik bir alandır. Donanım tanımlama dilleri sıklıkla CPLD ve FPGA gibi programlanabilir mantık aygıtları için kullanılmaktadır. Bu ikisi ile dijital elektronikte yapabileceklerinizin sınırını belirlemek çok güçtür. Siz de yeni ve benzersiz bir ürün ortaya koymak istiyorsanız hazır geliştirme ortamlarını bırakıp bu alana yönelmelisiniz.

Donanım tanımlama dilinde yazdığımız tasarım programı aynı mikrodenetleyiciye program yüklediğimiz gibi yine programlayıcı aygıt vasıtasıyla bilgisayardan programlanabilir mantık birimine yüklenmektedir. Bu arada HDL ile tasarım yaptığımız program bunu aygıtın anlayacağı konfigürasyon verisine çevirmektedir. Ortada bir işlemci olmadığı için program verisinden veya makine kodundan söz etmemiz mümkün değildir. Konfigürasyonu EEPROM’u programlamak gibi düşünebilirsiniz.

Şimdi donanım tanımlama dillerinin bazılarına göz atalım. Donanım tanımlama dillerinin bazıları açık halde bazıları ise kapalı haldedir. Bazı diller belli kuruluşlara özel olmakta ve bizim kullanmamız hiç mümkün olmamaktadır. Bazı diller ise bizim alışkın olduğumuz C, C++ dilleri gibi programlama dillerine şeklen benzemektedir. Böylelikle öğrenmemiz bir nebze daha kolay olur.

ABEL HDL

Bu donanım tanımlama dili DATA I/O firması tarafından piyasaya sürülmüş ve basit PLD aygıtlarını konfigüre etmek için eskiden kullanılmıştır. Genelde PAL, PLA gibi aygıtlar için de kullanılan bu dilin en önemli özelliği doğruluk tabloları, boolean fonksiyonları ve durum diyagramlarını dile aktarma imkanımızın olmasıdır. Böylelikle donanımdan bağımsız programlar yazılabilir ve birden çok programlanabilir mantık aygıtında kullanılabilir.

VHDL – VHSIC Hardware Description Language

VHDL sayısal tasarımda en yaygın olarak kullanılan donanım tanımlama dilidir. CPLD ve FPGA’lar için en karmaşık dijital devre tasarımında bile kullanılmaktadır. VHDL için sentez araçlarında (HDL dilinde konfigürasyon yazdığımız araç) çeşitli optimizasyon seçenekleri mevcuttur. VHDL’de yazılan program istenildiği zaman donanım olarak da sentez araçları vasıtasıyla tasarlanabilir. Yani biz kendi entegremizi üretmek istiyorsak VHDL bunun için uygun bir dil olacaktır. VHDL’nin zor bir dil olması ise en büyük dezavantajıdır.

VHDL donanım tanımlama dilleri arasında en yaygını olduğu için zor olmasının yanı sıra hakkında pek çok kitap, örnek ve kaynak bulunmaktadır. Yaygın olmayan bir teknoloji olduğu için kaynak sıkıntısı çekmeniz en büyük sorunlardan biri olacaktır. Bu yönden VHDL diğer donanım tanımlama dillerinden çok daha iyi bir konumdadır. VHDL dilinde örnek bir kod olarak AND kapısı fonksiyonunu gerçekleştiren programı sizlere gösterelim.

Verilog

VHDL gibi Verilog da tasarımı, tasarım tasdiğini ve müteakip uygulama yapma imkanını bize sunmaktadır. Ayrıca analog, dijital ya da karışık sinyal devrelerini çeşitli soyutlama seviyelerinde tasarlayabiliriz. Verilog modüller ve modüller arasındaki bağlardan oluşan bir yapıdadır. Modülleri kod blokları gibi düşünebiliriz. Bu modüllerde giriş, fonksiyon ve çıkış noktaları bulunmaktadır. Bu bloklar begin ve end deyimleriyle kapsam altına alınır. Verilog VHDL diline göre kolaydır ve C diline sözdizimsel benzerlik göstermektedir. O yüzden programlanabilir mantığa yeni başlayanların tercih etmesi iyi olacaktır. Verilog dilinde bir örnek programı inceleyelim.

Görüldüğü gibi yukarıda VHDL dilinde verdiğimiz AND fonksiyonu burada çok daha basit bir şekilde ifade edilmektedir. y = a & b şeklinde ifade ettiğimiz AND işlemi C diline oldukça benzemektedir. Ayrıca komut satırları C dilinde olduğu gibi noktalı virgül ile bitirilmektedir.

Java HDL

Java HDL (JHDL) Brighan Young üniversitesi tarafından tasarlanan düşük seviye donanım tanımlama dilidir. Devre tasarımında nesne tabanlı yönelimi tercih ediyorsak bunu kullanabiliriz. Genellikle FPGA aygıtları için kullanılır.

Programlanabilir mantık hakkında ilerleyen zamanlarda daha ayrıntılı bilgileri sizlere vermeye devam edeceğiz.

Bizi Facebook grubumuzda takip etmeyi unutmayın. Bilgili ve öğrenmeye hevesli bir topluluk oluşturmak istiyoruz.

https://www.facebook.com/groups/1233336523490761/

UYARI!!

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.