İçeriğe atla

Donanım tanımlama dili

Donanım tanımlama dili veya DTD, elektronik devrelerin tanımlanması amacıyla kullanılan herhangi bir bilgisayar dilinin sınıfına verilen addır. Donanım tanımlama dili, devrenin yürüttüğü işlemi, tasarımını ve benzetim (simülasyon) yoluyla doğrulamasını gerçekleştirebilir.

Yazılım programlama dilinden farklı olarak, DTD'nin sözdizimi ve semantiği donanımın birinci özelliği olan zaman ve uyumluluk açısından açık ifadelere yer vermektedir. Sadece devre bağlantılarını ifade etmeye yarayan ve bloklar arasındaki hiyerarşiyi tanımlamaya yarayan dillere netlist denmektedir.

DTD önceleri herhangi bir donanım için çalıştırılabilir özelliklerin benzetimini yapmak amacıyla kullanılıyordu. Zamana bağlı işlem yapan benzetim programları sayesinde bir donanım parçası fiziksel olarak üretilmeden önce tasarımcı tarafından test edilebiliyordu. Bu çalıştırılabilirlik DTD'nin bir programlama dili olduğu hissini vermiştir.

Donanım anlamı C++ gibi geleneksel programlama dilleri ile kazanılabilir; fakat, C++ dilinde zamanı açık bir şekilde ifade etmek mümkün olmadığından düzgün bir donanım tanımlama dili değildir.

Herhangi uygun bir donanım tanımlama dili ile yazılmış kod, sentezleyici adı verilen bir yazılım tarafından işlenir. Bu işlem koddan mantıksal işlemlerin çıkarılması ve buna eş değer bir netlist yaratılarak donanımın taslağının oluşturulması işlemidir. Bu işlem koddaki herhangi bir zaman yapısının ihmal edilmesi ile elde edilir. Bir dilin bir altkümesinin sentezlenebilir olması o dilin bir DTD olduğunu temin etmez.

Bir sistemi DTD kullanarak tasarlamak, bir programlama dili ile yapmaktan çoğu zaman daha zor ve daha çok zaman gerektiren bir Çişlemdir. Bu sebeple C programlama dili kodunu otomatik olarak DTD'ye çevrilmesi üzerinde birçok uğraş verilmiştir fakat 2004 yılı itibarıyla bu işlemin yüksek bir ticari başarıya ve kullanıma ulaştığı söylenemez.

Donanım tanımlama dillerinin tarihçesi

İlk donanım tanımlama dilleri olan ISP (Carnegie Mellon üniversitesi) ve KARL (Kaiserslautern Üniversitesi) 1977 yılı civarında bulunmuştur. Bu diller daha çok tasarımın giriş ve çıkışı arasındaki bağlantıları tanımlayan yazılım programlama dilleri gibiydi. Bu sebeple tasarım benzetimi için kullanılabilirken, sentezlenemezlerdi.(kitap bölümü[1])

İlk modern DTD, Verilog 1985 yılında Gateway Design Automation tarafından bulunmuştur. Daha sonraları Cadence Design Systems gelecek on senenin DTD benzetim standardı haline gelecek olan Verilog-XL'nin haklarını aldı. 1987 yılında Amerika Savunma Dairesi tarafından yapılan bir istek ile VHDL (Very High Speed Integrated Circuit Hardware Description Language) doğdu. DTD benzetimleri mühendislere şematik seviyesinden daha ileri bir seviyede çalışma imkânı vermiş ve tasarım sığasını yüzlerce transistörden binlerceye yükseltmiştir.

Donanım tanımlama dillerinin mantık kapıları seviyesinde sentezlenebilmesi sayısal tasarım alanında DTD'leri ön plana çıkarmıştır. Sentezleme araçları DTD kaynak dosyalarını (yazmaç aktarımı seviyesi adı verilen bir biçimde yazılmış olan) derleyerek kapı/transistor seviyesinde üretime hazır netlist tanımlamaları yaratmaktadır.

Verilog ve VHDL senelerdir sayısal tasarımın en önde gelen iki donanım tanımlama dilidir fakat ikisi de hemen hemen aynı sınırlamalara sahiptir. Örneğin iki DTD analog veya karışık-sinyal devrelerinin benzetimleri için uygun değillerdir. Özyinelemeli kurulan mantık yapıları için gerekli tanımlamalara sahip değillerdir. Bu amaçla ortaya çıkan özelleşmiş DTD'ler olsa dahi hiçbiri VHDL/Verilog'un yerini tutamamıştır.

Uzun bir süredir DTD'leri geliştirmek için büyük bir emek harcanmaktadır. Verilog'un IEEE 1800-2005 Systemverilog olarak bilenen son sürümü daha iyi rastgele hale getirilmiş test, tasarım hiyerarşisi ve tekrar kullanım adına birçok yenilik (sınıflar, rastgele değişkenler vs.) içermektedir. Böylece hem VHDL hem de Verilog sahip oldukları yeniliklerle gelecek senelerde de aktif olarak kullanılacaktır.

DTD kullanarak tasarım

Modern sayısal devre tasarımlarının büyük çoğunluğu istenilen devrenin, aygıtın ve sistemin donanım tanımlama dili ile gerçekleştirilmiş hali ile yürümektedir.

Çoğu tasarıma geleneksel olarak kâğıt ve kalem ile istenilenlerin bir özeti ve mimari düzeyinde şemalarla başlanır. Donanım tanımlama dili ile tanımlama işlemi genel olarak devrenin yapısına ve kodu yazanın geçmişine bağlıdır. Kontrol ve karar verme yapıları genel olarak akış diyagramları veya durum diyagramları ile modellenir. Tasarımcılar kendi kendini otomatik olarak tekrarlayan devre yapıları için DTD içerisinde komut dizisi dillerini (PERL gibi) dahi kullanabilir.

Tasarımın ana hatları gerçekleşmeye başlayınca, yazılan kod bir gözden geçirmeye tabi tutmalıdır. Sentezlemeye hazırlanırken DTD otomatik kontrol edicilerden geçer. Bu kontrol ediciler genel olarak yapılan mantıksal hataları (kısa devre veya bağlanmamış bağlantı noktaları gibi) saptama amacıyla kullanılır.

Endüstriyel bir deyişle, DTD tasarımı sentezlemeden sonra sona erer. Sentezleme aracı DTD tanımlamasını kapıların netlisti şeklinde haritaladıktan sonra, netlist son kısma gönderilir. Fiziksel teknolojiye göre (FPGA veya çeşitli ASIC türleri olabilir) donanım tanımlama dilinin görevi devam edebilir veya etmeyebilir. Eğer sonuçta silikon bir yonga üretilecekse tasarım veritabanı daha çok üretim teknolojisi ile ilgili verilerle yüklü olur.

DTD kodunun benzetimi ve hata ayıklaması

DTD kodunun benzetimi, tasarımın amacı ile ilgili doğrulamayı geçmesini sağlamasının yanında tasarımın gerekli işlemi doğru yaptığını gösteren önemli bir basamaktır. Aynı zamanda farklı tasarım seçenekleri bu basamakta denenerek mimari açısından da gelişmeyi sağlayabilecek yararlar edinilebilir. Bu sebeplerden dolayı benzetim basamağı başarılı bir DTD tasarımı için çok önemlidir.

Modern DTD benzeticilerinin birçok hata ayıklama aracıyla birlikte grafiksel ara yüzü bulunmaktadır. Bu araçlar tasarımcıya benzetimi herhangi bir zamanda durdurup yeniden başlatma koddan bağımsız bir şekilde kesme noktası koyabilme gibi avantajlar sağlamaktadır.

Tasarım doğrulaması genelde tasarım işleminin en çok zaman alan kısmıdır. Bunun nedeni tasarımın işlevsel gerekliliğin tasarımcı tarafından farklı yorumlanması olabileceği gibi DTD dilinin net olmayan ifadelerinden de kaynaklanabilir. Bir DTD tanımlaması aynı zamanda bir donanımda da ilk örnek (prototip) haline getirilip test edilebilir. Programlanabilir mantık aygıtı ile gerçekleştirilen bu işlem benzetime göre pahalı olsa da, tasarımın gerçek çalışan halinin elde edilmesi daha tutarlı sonuçlar vermektedir. İlk örnekleme, eldeki tasarımı, yavaş çalışan FPGA'lerde gerçekleştirilse dahi, en hızlı test/benzetim şeklidir.

Diller

Sayısal Devre tasarımı

En çok bilinen, kullanılan ve desteklenen DTD dilleri:

Diğerleri:

  • Advanced Boolean Expression Language (ABEL)
  • AHDL (Altera HDL, Altera'nın tescilli dili)
  • Atom 2 Ocak 2008 tarihinde Wayback Machine sitesinde arşivlendi. (Haskell üzerine kurulmuş yüksek seviyeli bir DTD)
  • Bluespec (Haskell üzerine kurulmuş bir DTD. Şu anda SystemVerilog sözdizimine sahiptir.)
  • Confluence 22 Mayıs 2020 tarihinde Wayback Machine sitesinde arşivlendi. (Fonksiyonel bir DTD fakat devamı gelmemiştir.)
  • CUPL (Logical Devices, Inc. firmasının tescilli dili)
  • HDCaml 14 Aralık 2007 tarihinde Wayback Machine sitesinde arşivlendi. (Objective Caml temelli)
  • Hardware Join Java(404 Error) (Join Java temelli)
  • HML (SML temelli)
  • Hydra 18 Temmuz 2011 tarihinde Wayback Machine sitesinde arşivlendi. (Haskell temelli)
  • JHDL (Java temelli)
  • Lava 27 Temmuz 2011 tarihinde Wayback Machine sitesinde arşivlendi. (Haskell temelli)
  • Lola (eğitim amaçlı basit bir dil)
  • MyHDL (Python temelli)
  • PALASM (Programmable Array Logic (PAL) aygıtları için)
  • Ruby (donanım tanımlama dili)
  • RHDL (Ruby programlama dili temelli)
  • CoWareC, CoWare tarafından yaratılmış C-temelli DTD. SystemC kullanımı amacıyla kullanılmamaktadır.
  • SystemVerilog, sistem seviyesi tasarım ve doğrulama iyileştirmeleriyle Verilog'un bir üst kümesi gibi görülmektedir.
  • SystemC, C++ kütüphanelerinin bir sistem tanımlama dili şeklinde standartlaşmış hali.

Dış bağlantılar

Kaynakça

  1. ^ J. Mermet (editor): Fundamentals and Standards in Hardware Description Languages (Springer Verlag, 1993)

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">Pascal (programlama dili)</span> yüksek seviyeli programlama dili

Pascal bilgisayar programlama dili pek çok öğrenciye bilgisayar programlamayı öğreten ve çeşitli versiyonları bugün hâlâ yaygın olarak kullanılmaya devam eden en önemli programlama dillerinden biridir. İlk Macintosh işletim sisteminin çoğu ve TeX Pascal ile yazılmıştır.

<span class="mw-page-title-main">İşletim sistemi</span> bilgisayar donanım kaynaklarını yöneten yazılım

İşletim sistemi ya da işletim dizgesi, bir bilgisayarın donanım kaynaklarını yöneten ve uygulama yazılımlarına hizmet sağlayan yazılımların bir bütünüdür. İşletim sistemleri, bilgisayarın donanımı ile uygulama yazılımları arasında bir köprü görevi görerek kullanıcıların sistemle etkileşim kurmasını sağlar. Öne çıkan örnekler arasında Microsoft Windows, macOS, GNU/Linux dağıtımları, Android ve iOS yer alır.

<span class="mw-page-title-main">COBOL</span> İngilizce dil özelliklerine benzer programlama dili

COBOL, bir programlama dili. Ticaret alanı ve özellikle iş yerlerinin yönetimiyle ilgili konularda, tüm dünyada kullanılmak üzere hazırlanmıştır. ISAM yapısına izin veren sınırlı sayıdaki dilden biridir. Sayı tipi sınırsızdır. COBOL 2002 'den beri Nesne Yönelimli Programlama'yı desteklemektedir. COBOL 1959'da Üniversiteler, Hükûmetler ve Ticari Kuruluşlar tarafından oluşturulan bir komite tarafından yaratılmıştır. "COBOL" ismi 18 Eylül 1959'da toplanan komitenin kararıdır.

<span class="mw-page-title-main">Yazılım</span> bilgisayarın somut olmayan çalıştırılabilir bileşeni

Yazılım, değişik ve çeşitli görevler yapma amaçlı tasarlanmış elektronik aygıtların birbirleriyle haberleşebilmesini ve uyumunu sağlayarak görevlerini ya da kullanılabilirliklerini geliştirmeye yarayan makine komutlarıdır.

ASP.NET, Microsoft tarafından geliştirilmiş olan bir açık kaynak Web uygulama gelişimi teknolojisidir. Dinamik Web sayfaları, Web uygulamaları ve XML tabanlı Web hizmetleri geliştirilmesine olanak sağlar. Aynı işletme tarafından geliştirilen .NET çatısı'nın yazılım iskeleti parçası ve artık işletmece desteklenmeyen ASP teknolojisinin devamını teşkil etmiştir.

İndirgenmiş Buyruk Küme Bilgisayar, işlemci tasarım alanında 1980'li yıllarda önerilen ve giderek CISC'in yerini alan bir buyruk kümesi mimarisidir.

VHDL sayısal devrelerin tasarlanması ve denenmesi amacıyla yaygın olarak kullanılan bir donanım tanımlama dilidir. Dilin adı "yüksek hızlı tümleşik devreler için donanım tanımlama dili" teriminin İngilizce karşılığı olan Very high speed integrated circuit Hardware Description Language tümcesindeki sözcüklerin baş harflerinin bir araya getirilmesiyle oluşturulmuştur.

<span class="mw-page-title-main">Bilgisayar mimarisi</span>

Bilgisayar mimarisi, en küçüğe ve en başarılıya ulaşmayı hedeflerken aynı zamanda maliyeti de göz önünde bulundurduğu için sanat ve bilimin ortak buluştuğu nokta olarak da tanımlanır. Bilgisayar Mimarisi, bilgisayar parçalarının iç yapıları ve aralarındaki haberleşme bağlantıları ile ilgilidir.

Verilog elektronik sistemleri modellemek için kullanılan bir donanım tanımlama dilidir. Verilog analog, sayısal ve karışık işaretli devrelerin tasarımını, doğrulanmasını ve yürütülmesini değişik düzeylerde desteklemektedir. Verilog dilinin tasarımcıları dilin C programlama diline yakın bir söz dizimine sahip olmasını istemişlerdir. Böylece bu dile yatkın olan mühendislerin dili kolayca kullanmasını amaçlamışlardır. Dil küçük/büyük harf duyarlılığına sahiptir ve temel denetim akışının “if” ve “while” gibi anahtar kelimeleri, C'ye benzemektedir. Verilog birkaç temel yönde C’den farklıdır. Verilog bir blok kodu tanımlamak için kıvrık parantezler yerine Begin/End kullanmaktadır. Verilog 95 ve 2001 işaretçi veya yinelemeli alt yordamlar yapılarına sahip değildir fakat SystemVerilog bu özelliklere sahiptir. Son olarak Donanım Tanımlama Dilleri için çok önemli olan zaman kavramı C dilinde bulunmamaktadır. Verilog geleneksel programlama dilleri gibi basamaklarını tam olarak ardışık bir şekilde yürütmez. Verilog tasarımı modüller arasında bir hiyerarşi bulundurur. Modüller bir takım giriş, çıkış ve çift yönlü portlar şeklinde tanımlanır. Bir modül içinde yazmaç ve kablo listesi bulunur. Eş zamanlı ve ardışık ifadeler modülün davranışını; portların, kabloların ve yazmaçların arasındaki ilişki ile tanımlar. Ardışık ifadeler bir begin/end bloğuna konur ve blokla beraber ardışık olarak yürütülür. Tüm eş zamanlı ifadeler ve begin/end blokları koşut olarak yürütülür. Bir modül aynı zamanda diğer bir modülün bir veya daha çok örneğini içererek bir alt-davranışı belirtebilir. Eğer tasarımdaki modüller sadece sentezlenebilir ifadeler içeriyorsa bu tasarımın donanımda gerçekleştirilecek temel bileşenlerini ve bağlantılarını içeren netlist, yazılım sayesinde sentezlenebilir. Elde edilen bu netlist bir tümleşik devreyi tanımlamak amacıyla kullanılabilir.

<span class="mw-page-title-main">Alanda programlanabilir kapı dizisi</span>

FPGA, programlanabilir mantık blokları ve bu bloklar arasındaki ara bağlantılardan oluşan ve geniş uygulama alanlarına sahip olan sayısal tümleşik devrelerdir. Tasarımcının ihtiyaç duyduğu mantık işlevlerini gerçekleştirme amacına yönelik olarak üretilmiştir. Dolayısıyla her bir mantık bloğunun işlevi kullanıcı tarafından düzenlenebilmektedir. FPGA ile temel mantık kapılarının ve yapısı daha karmaşık olan devre elemanlarının işlevselliği artırılmaktadır. Alanda programlanabilir ismi verilmesinin nedeni, mantık bloklarının ve ara bağlantıların imalat sürecinden sonra programlanabilmesidir.

<span class="mw-page-title-main">Altera</span>

Altera Corporation programlanabilir mantık devrelerinin önde gelen üreticilerinden biridir. Altera hisseleri NASDAQ-100 ve S&P 500 endekslerinde işlem görmektedir.

AHDL, Altera ortaklığı tarafından kendi ürettiği CPLD ve FPGA türündeki aygıtlarla birlikte kullanılmak üzere geliştirilen ve pazarlanan bir sayısal donanım tanımlama dilidir. Bu donanım tanımlama dilinin C programlama diline benzer yapısı ve VHDL diline benzer işlevi vardır. Altera'nın Quartus ve Max+ serisi derleyicileriyle derlenir.

Bölüm, Karadeniz Teknik Üniversitesi Kanuni Kampüsü içinde yer alan kendi bölüm binasındaki derslik ve laboratuvarları ile her yıl 600 civarında lisans öğrencisine hizmet vermektedir. Her yıl 85-100 arasında öğrenci alınan bölümde 6 profesör, 6 doçent, 12 yardımcı doçent, 1 öğretim görevlisi ve bir uzman bulunmaktadır. Ayrıca 20 araştırma görevlisi de eğitim-öğretimin değişik kademelerinde yardımcı elemanlar olarak hizmet vermektedir.

<span class="mw-page-title-main">Notepad++</span>

Notepad++, Windows işletim sistemi içerisine gömülü olarak gelen Notepad yazılımının yerine kullanılmak üzere C++ ile saf Win32 API ve STL ile geliştirilmiş GPL ile dağıtılan açık kaynak kodlu bir kaynak kod düzenleyicisidir. Scintilla düzenleyicisi temel alınarak geliştirilen Notepad++, birçok yazılımlama diline ait kodu görüntüleyip uygun olarak renklendirebilir. Türkçe dâhil birçok konuşma diline destek veren bir arabirimi vardır.

Programlama paradigmaları, programlama dillerini özelliklerine göre sınıflandırmanın bir yoludur. Diller birden fazla paradigma içinde sınıflandırılabilir.

Bilgi işlem platformu, bir uygulama yazılımı çalıştırmak için donanım mimarisi ve bir yazılım çerçevesi, yazılım, çeşitli bazı kombinasyon veya sıralamalarını içermektedir. Tipik platformlarda bir bilgisayar mimari, işletim sistemi, programlama dilleri ve ilgili kullanıcı arabirimi içerir.

<span class="mw-page-title-main">Gömülü sistem</span> Belli bir fonksiyonu yapmaya yönelik bilgisayar sistemi

Gömülü sistem, bilgisayarın kendisini kontrol eden cihaz tarafından içerildiği özel amaçlı bir sistemdir. Genel maksatlı, örneğin kişisel bilgisayar gibi bir bilgisayardan farklı olarak, gömülü bir sistem kendisi için önceden özel olarak tanımlanmış görevleri yerine getirir. Sistem belirli bir amaca yönelik olduğu için tasarım mühendisleri ürünün boyutunu ve maliyetini azaltarak sistemi uygunlaştırabilirler. Gömülü sistemler genellikle büyük miktarlarda üretildiği için maliyetin düşürülmesinden elde edilecek kazanç, milyonlarca ürünün katları olarak elde edilebilir.

Seed7 Thomas Mertes tarafından geliştirilmiş olan genişletilebilir ve genel amaçlı bir programlama dilidir. Sözdizim kuralları açısından C'ye ve Pascal'a çok benzer.

<span class="mw-page-title-main">Açık kaynak donanım</span>

Açık kaynak donanım, herkesin kullanımına açık olarak tasarlanmış donanımdır. Böylece herhangi biri özgürce donanım tasarımı üzerinde çalışabilir, değiştirebilir, donanımın aynısından yapabilir ve satabilir. Özgür ve açık kaynak kodlu yazılım ve açık kaynak donanım, açık kaynak kültürü hareketi tarafından başlatılmıştır. Açık kaynak donanım terimi genellikle donanım hakkındaki bilgilerin kolaylıkla anlaşılması ile ilgilidir. Donanımsal tasarım ile birlikte donanımların sürücü yazılımları tamamen açık kaynak olarak yayınlanır.

Bir sistem mimarisi veya çoklu sistemlerin mimarisi; sistemin yapısını, davranışını ve biçimselliğini tanımlayan kavramsal modeldir. Bir mimari tanımı; sistemin yapıları ve davranışları hakkında mantıksallığı destekleyecek şekilde organize edilen ilişkiselliğin standart bir açıklaması veya temsilidir.