20 Kasım 2017 Pazartesi

Sayısal Sistem Tasarımı ile FPGA Teknolojisinin Geleceği ve FPGA Tasarımını Öğrenmek İsteyenlere Yol Haritası

Entegre devreler Jack Kilby’nin ilk prototipinden bu yana uzunca bir yol almıştır ve şuanda Dünya üzerinde hiçbir teknolojinin ulaşamadığı bir yerdedir. Bu teknoloji günümüzün bilgisayarlarla çevrili toplumunun temelini oluşturmaktadır. Günümüzde milyonlarca eleman içeren düğme büyüklüğünde devreler mevcut olup, her geçen yıl daha güçlü ve daha az güç ve alan tüketimine sahip entegre devreler geliştiriliyor. Intel’in kurucularından Gordon Moore’un şu sözü de bu teknolojideki gelişimi gözler önüne sermektedir: “Otomobil endüstrisi yarı iletken endüstrisi kadar hızlı ilerleseydi, bir Rolls Royce galon (1 galon = 3,8 litre) başına 500.000 mil (1 mil = 1,6 km) yol alabilecek ve araçları park etmektense atmak daha ucuza gelecekti.”

Okumaya devam etmeden önce Entegre Devre Teknolojisi ve FPGA ve Özellikleri hakkındaki yazılarımı okumanızı tavsiye ederim.

Moore Yasasına göre her 18 ayda, bir tümleşik devre üzerine yerleştirilebilecek bileşen sayısı iki katına çıkarken, üretim maliyetleri aynı kalır, hatta düşme eğilimi gösterir. Bu yasa 2010’lu yıllara kadar gayet iyi işlemiştir. Ancak son yıllarda bu teknolojinin sınırları zorlamasıyla birlikte Moore Yasası geçerliliğini kaybetmeye başlamış ve bu teknolojinin geliştirilmesi için farklı çözümler aranmaya başlamıştır. Quantum bilgisayarlar da bu çözümlerden biri olarak görülebilir.


Genel olarak entegre devre teknolojilerinde durum böyleyken, bu teknolojiden çok daha sonraları ortaya çıkmış olan FPGA teknolojisinde durum biraz daha farklıymış gibi gözüküyor. İlk FPGA’ler ortaya çıktığında performans olarak ASIC tasarımların çok gerisindelerdi. Ancak bu teknolojinin hızlı geliştirmeye ve yeniden programlamaya imkan tanıması bu alanda yapılan araştırmaları hızlandırmıştır. Günümüzde FPGA teknolojisi performans bakımından ASIC teknolojisinin halen arkasında kalmaktadır ancak aradaki farkı bayağı azaltmıştır. Geçtiğimiz senelerde ise en büyük entegre devre üreticilerinden Intel’in en büyük FPGA üreticilerinden Altera’yı satın almış olması bu alanda yapılacak olan araştırma ve geliştirmelerin önümüzdeki senelerde daha da artacağının bir habercisi olarak görülebilir. Bununla birlikte bazı FPGA entegrelerinin üretimi aşamasında bir mikroişlemci çekirdeğinin de “hardcore” olarak aynı çip üzerinde gömülmesiyle aynı entegre hem mikroişlemci hem de FPGA’lerin avantajlarına sahip olmuş oldu. Bu da son yıllarda kullanıcıların bu ürünlere yönelimini arttırmıştır. 



Ülkemizin tam bağımsızlığı için mümkün olduğunca fazla alanda kendine yetmesi ve iyi bir ekonomiye sahip olabilmemiz için de katma değeri yüksek ürünlerin yüksek yerlilik oranıyla geliştirilip üretilmesi gerektiği aşikardır. Bu da demek oluyor ki; kendi enerjimizi, temel besin maddelerimizi üretebilmeli ve aynı zamanda son teknolojilere yatırım yaparak ihtiyaç duyduğumuz teknolojik ürünleri geliştirebilmeliyiz. Bunu sağlamak için her bir ferdin yaptığı işte mümkün olduğunca uzmanlaşması gerekmektedir.


Özellikle son yıllarda ülkemizde birçok yeni teknolojik girişimler olmuş ve AR-GE’ye eskiden olduğundan çok daha fazla yatırım yapılmaya başlanmıştır. Bu çalışmaların çoğunda da ihtiyaç duyulan elektronik sistemler yerli mühendislerimiz tarafından geliştirilmektedir. Bu sistemlerin çoğu mikroişlemci tabanlı sayısal sistemler olsa da FPGA ve ASIC tabanlı sayısal sistemlerin geliştirilmesi konusunda büyük atılımlar yapılmakta olup görüntü işleme, kriptoloji gibi birçok alanda özellikle FPGA entegre tasarımı yapılmaktadır. Ancak bu yapılan çalışmalarda kullanılan entegreler ülkemizde üreticisi olmadığından dolayı yurtdışından ithal edilmektedir. İnşallah bu soruna çözüm olması için başlatılan çalışmaların sayısı artar. Neden Türkiye’de de FPGA entegre üretimi yapılmasın ki?

FPGA Tasarımını Öğrenmek İsteyenlere Yol Haritası

Öncelikle şunu ifade etmek isterim ki bu konuda tecrübeli sayılmam. Lisans eğitimimin son senesinde aldığım Sayısal Sistem Tasarımı ve Uygulamaları, VLSI-2, Mikroişlemci Sistem Tasarımı dersleriyle FPGA ile tanışmış olup bu derslerdeki projeleri FPGA üzerinde yapmıştım. Bununla birlikte Procenne şirketinde yarı zamanlı çalışmaya başlayıp Donanımsal Güvenlik Modülü projesinde Kriptografik Uygulamaların FPGA üzerinde tasarlanıp test edilmesi üzerinde çalıştım ve mezuniyetten bu yana da bu proje üzerinde tam zamanlı olarak çalışmaya devam etmekteyim.

FPGA gibi bir alanda kendini tecrübeli sayabilmek için en azından 5 sene boyunca bu alanda çalışmış olmak gerekir diyorlar. Ben de bu fikirdeyim. Her geçen gün yeni bir şeyler öğrendikçe aslında ne kadar az şey bildiğimi de görüyorum. Bu yüzden yazdıklarımı okurken bunların pek tecrübeli sayılmayacak ama bu konuları araştırmış bir kişinin sözleri olduğunu unutmayın lütfen.


FPGA üzerinde çalışırken birçok zorlukla ve problemle karşı karşıya kaldığım oldu ve bu sorunları aşmanın önemli miktarda zaman aldığını gördüm. Bu nedenle bu alanda çalışmaya başlamak isteyenlerin araştırma becerisi yüksek, sabırlı ve inatçı kişiler olması gerektiğini düşünüyorum. FPGA hakkında bulacağınız Türkçe kaynak miktarı çok az olduğu için araştırmalarınızı İngilizce yapmanız gerekecektir. Bununla birlikte bu alandaki terimlere aşina olmalı ve probleminizin tanımını düzgün yapabiliyor olmalısınız.

FPGA tasarımına adım atacaksanız öncelikle bu teknolojinin temelindeki teorik bilgileri öğrenmelisiniz. İlk olarak Sayısal Devreler dersini tam olarak kavramanız gerekiyor. Mantık kapıları, MUX, Flip-Flop’lar ve bunlar gibi birçok temel elemanı tanımanız gerekir. Durum makinalarını ve sayıcıları öğrenmeli, Sayısal Sistem Tasarımı dersinin içeriğini kavramalısınız. FPGA tasarımı yapılırken en çok zorlanılan konu olan zamanlama meselesini tam olarak kavrayabilmek ve FPGA teknolojisinin üzerine kurulduğu temel meseleleri öğrenmeniz için de Sayısal Elektronik Devreleri dersindeki bilgilere ihtiyaç duyacaksınız.


Sonrasında bir HDL (Hardware Description Language – Donanım Tanımlama Dili) seçip bunu öğrenin. Ama bunları yazılım dilleriyle karıştırmayın ve mümkünse öğrenim aşamasında yazılım dillerindeki mantığı kullanmayın. En popüler olanları VHDL ve Verilog. Benim kişisel tercihim VHDL’den yana olmuştu ama üniversitede Verilog kullanıyorduk. Size de birinde uzmanlaşırken diğerini de temel manada öğrenmenizi tavsiye ederim. Bazen işinize yarayabiliyor. Bu dillerden ikisinin de avantajlı ve dezavantajlı olduğu noktalar mevcut. Şu sitede yapılan karşılaştırma da dil seçiminizi kolaylaştırabilir: Verilog vs VHDL. Dilin yapısını tam anlamıyla öğrenmek için bir kitabı takip etmeniz faydalı olacaktır. VHDL için VHDL 101, Free Range VHDL, FPGA Prototyping By VHDL Examples; Verilog için de FPGA Prototyping By Verilog Examples kitaplarını tavsiye ederim.


Sonrasında bir geliştirme kartı seçin. Sizlere tavsiyem Zynq SoC’a sahip Digilent Zedboard kullanmanızdır. Ancak kendisi biraz pahalıdır; belki daha ucuz bir geliştirme kartı almak isteyebilirsiniz. Eğer öğrenciyseniz üniversitenin envanterinde olan kartları öğretim görevlileriyle konuşup kullanabilirsiniz belki. Bir geliştirme kartına sahip olmadan önce de tasarımlarınızı oluşturmaya başlayıp simülatörler üzerinde sonuçlarını görebilirsiniz.


Seçtiğiniz kartın üreticisinin geliştirmiş olduğu yazılımı bilgisayarınıza yükleyin ve bu karta yönelik kullanım kılavuzu, rehberler ve tasarım örneklerini bulup inceleyiniz. Sonrasında çerçeveyi kullandığınız geliştirici kartının dışına çekerek daha çeşitli kaynaklar araştırıp bunları da inceleyiniz. Bunlara ek olarak bu konularda yazılmış olan kitaplardan okumanız gerekecektir. Örnek vermek gerekirse: 
  • FPGA Prototyping By VHDL / Verilog Examples
  • Advanced FPGA Design
  • Design Recipes for FPGA
  • FPGA Design Best Practices for Team-based Reuse
  • FPGA’s 101 

Bunlarla birlikte şu siteler de faydalı olacaktır: 

Kitaplardaki ve rehberlerdeki örnekleri takip ederek önce led yakmakla başlayıp çeşitli uygulamalar geliştirin. Yazılım ya da gömülü program geliştirmede olduğundan daha fazla problemle karşılaşabilirsiniz. Karşılaştığınız problemleri internette araştırın; FPGA üreticilerinin forumlarında ve Reddit gibi platformlarda sorun, çoğu zaman sorularınızın cevabını ve problemin çözümünü bulacaksınızdır.


3 bölümden oluşan bu yazı dizisiyle Entegre Devreler, VLSI Teknolojisi ve FPGA hakkında genel ve karşılaştırmalı bilgiler vermeye çalıştım. En sonunda da bu alanda kendini geliştirmek isteyenler için tavsiyelerimi paylaştım. Umarım faydasını görürsünüz. 

Hiç yorum yok:

Yorum Gönder