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