FPGA, ASIC’lerin gerçekleştirebildiği lojik fonksiyonları
gerçekleyebilen bir tür entegre devredir ama ASIC’lerden farklı olarak bu
entegrelerin iç konfigürasyonu entegrenin üretiminden sonra istenildiği gibi
değiştirilebilir. FPGA’ler içerisinde lojik kapılar ve hafıza elemanları
bulunmaktadır ama hangilerini birbirine bağlanıp nasıl bir sonuç üreteceği tamamen
kullanıcıya bırakılmıştır. Kullanıcı ihtiyacı olan tasarımı bir donanım
tanımlama dili (HDL: Hardware Description Language) yardımıyla ifade eder ve
FPGA içerisinde bulunan elemanların kapasitesi dahilinde tasarımını
gerçekleyebilir. Tasarımı gerçekledikten sonra test ettiğinde devre çalışmazsa
veya sisteme yeni bir özellik eklemek istediğinde, tasarım değiştirilip FPGA
entegre üzerinde tekrar gerçeklenebilir. Bu avantajından dolayı piyasadaki
birçok ASIC üreticisi tasarımını ilk önce FPGA üzerinde deneyip; gerektiğinde
değişiklik yapıp tasarımın son haliyle ASIC üretip piyasaya sunmaktadır. Hızlı
prototiplemenin haricinde diğer birçok uygulamada da FPGA kullanılmaktadır.
FPGA entegreler temelde 3 ana bölümden oluşur: mantık
blokları, ara bağlantılar ve giriş-çıkış blokları. Mantık bloklarında lojik
operasyonları gerçekleştirmeye yarayan LUT’lar (Look-up Table) ile bunların
sonuçlarını saklayacak hafıza elemanları (Flip-Flop) bulunmaktadır. Ara
bağlantılar geliştiricinin ihtiyacına göre mantık blokları arasında
bağlantıları sağlayarak istenen fonksiyonun çalışmasını sağlar. Giriş-çıkış
portları ise FPGA’in dışarıyla iletişim kurarak veri aktarabilmesini sağlar.
FPGA’in iç konfigürasyonunu belirlemek için kullanılan
dillere HDL (Hardware Description Language – Donanım Tanımlama Dili)
denmektedir. Bu dillerinin başlıcaları VHDL ( Very High Speed Integrated
Circuit Hardware Description Language – Çok Yüksek Hızlı Entegre Devre Donanım
Tanımlama Dili) ve Verilog’dur. Verilog C’ye benzeyen bir yapıya sahipken, VHDL
daha alt seviye bir dil gibidir. Ama bu diller geleneksel programlama
dillerinden tamamıyla farklı olup, bir akış ve işleyişten çok donanımın
yapısını yani elemanların birbiriyle bağlantısını ve entegrenin iç
konfigürasyonunu ifade etmektedirler.
Bir projeye başlamadan önce ihtiyaçlar belirlenmeli ve
tasarım aşamasında Mikroişlemci, FPGA yada ASIC teknolojilerinden hangilerinin
hangi aşamada kullanılması gerektiği iyice planlanmalıdır. Bir mikroişlemci
kullanarak rahatlıkla yapılabilecek bir proje, FPGA üzerinde gerçeklendiğinde
zaman ve maliyet açısından zarar ettirecektir.
Bununla birlikte entegre devre teknolojileri birbirinden bağımsız
teknolojiler değillerdir. Örnek olarak FPGA entegrelerin üretilmesinde ASIC
teknolojisi kullanılırken, herhangi bir uygulamaya yönelik ASIC tasarımında ilk
önce FPGA kullanılarak istenen fonksiyon tasarlanıp gerçeklendikten sonra
tasarım ASIC’e taşınmakta, yani FPGA prototip aşamasında kullanılmaktadır. Günümüzde
FPGA – ASIC arasındaki ilişki tavuk – yumurta ilişkisine benzeyen bir hal
almıştır.
FPGA üzerinde tasarım geliştirirken bir çeşit kontrolcüye
ihtiyaç duyulabilir. Bu gibi durumlarda FPGA içerisine mikroişlemci gömüp
sonrasında bu mikroişlemci programlanarak kullanılabilir. Bu işlemciyle
birlikte FPGA üzerinde yoğun işlem yapacak bloklar paralel olarak
çalışıtırılabilir. Bu sayede mikroişlemcinin getirdiği kolay kontrol, hızlı
geliştirme ve test özelliğiyle FPGA’in getirdiği yüksek performans birlikte
kullanılmış olur. Bu şekilde FPGA üzerine gömülerek kullanılan işlemcilere “softcore”
işlemci denilmektedir. MicroBlaze ve OpenRISC bunlardan en popüler olanlarıdır. Bu tip
işlemciler benzer tasarıma sahip olan entegre mikroişlemcilere göre daha düşük
performansa sahip olmaktadırlar. Bu sistemlere alternatif olarak FPGA entegrenin
üretimi aşamasında bir mikroişlemci çekirdeğinin de “hardcore” olarak aynı çip üzerinde
gömülmesidir. İçerisinde ARM mimarili mikroişlemci bulunduran Xilinx firmasının
Zynq-7000 All Programmable SoC’leri ve Intel (Altera) Cyclone V SoC’leri
bunlara örnek olarak verilebilir.
Piyasada birçok FPGA entegre üretici firması olmasına karşın,
Xilinx ile Intel’in 2015 yılında satın aldığı Altera firmaları en büyük iki
firmadır ve bu firmalar FPGA entegre üretiminin yanı sıra kullanıcıya
geliştirme ortamları da sunmaktadırlar. Intel’in de Altera’yı yakın zamanda
satın almış olması bu teknolojinin geleceğinin parlak olduğunun işaretlerinden
biridir.
FPGA'lerin Özellikleri
FPGA’lerin çoğu benzer mimariye sahip olduğundan dolayı
kullanıcıların tasarladıkları sayısal devreler farklı FPGA entegrelerde
çalışabilmektedir. Bu da kullanıcıya portatif tasarım geliştirme imkanı
sunmaktadır. Piyasada bu özelliği kullanan ve müşteriler için belirli bir
fonksiyonu olan özel sayısal devre tasarlayan firmalar mevcuttur. Bu firmalar görüntü
işlemeden kriptografik algoritmalara kadar birçok uygulamada kullanılan IP-Core
(Intellectual Property) tasarlamaktadır.
FPGA’ler geleneksel ASIC’lerin aksine yeniden
programlanabilme özelliğine sahiptir. Bu sayede, bir uygulama için FPGA
üzerinde tasarım yapılıp müşteriye satıldıktan sonra bile güncelleme ve özellik
iyileştirmesi yapmak mümkündür.
ASIC tasarıma göre FPGA entegrelerin geliştirilip, test edilip
pazara sürülmesi daha kısa sürede gerçekleşmektedir ancak mikroişlemcilerle
karşılaştırıldığında bu konuda dezavantaja sahiptir.
Tasarım esnasında sadece simülasyonlarla değil çoğu zaman
donanım hazır olduğu için donanım üzerinde de doğrulama yapma olanağı da mevcuttur.
Ama bazı durumlarda FPGA’de gerçeklenecek sayısal tasarım geliştirilirken bir
yandan da bu FPGA’i de içine alacak şekilde PCB tasarımı paralel yürütülebilir
ve bu tasarım bitmeden FPGA’i programlayıp test etme imkanı olmayabilir. Bu gibi
durumlarda ise FPGA entegre üreticilerinin geliştirme kartları (development
board) kullanılabilir.
FPGA’lerdeki en önemli özelliklerden biri de paralel işlem
yapabilmesidir. Bu özellik FPGA’in mikroişlemcilere karşı en büyük avantajıdır.
Paralel işlem yapmaya kameradan video görüntülerinin sürekli olarak alınması,
bunun işlenmesi ve filtrelerden geçirilmesi ile bunun bir haberleşme protokolü
ile kişisel bilgisayara gönderilmesi örnek olarak verilebilir. Burada önemli
olan bu işlerin hepsinin paralel olarak yani eşzamanlı olarak
gerçekleştirilebiliyor olmasıdır. Yani ilk görüntü alındıktan sonra işlenmesi
ve gönderilmesi beklenmeden ikinci görüntü alınmaya başlanır. FPGA yerine bir
mikroişlemci kullanıldığında bu işlemler sırayla yapılmak zorunda kalınacak ve
bu da yeterince hızlı olamayabileceğinden bazı girişlerin zorunlu olarak ihmal
edilmesine neden olabilecektir.
FPGA Kullanım Alanları
FPGA’ler tekrar programlanabilir doğası, yüksek performansı
ve paralel işlem yapabilme kapasitesiyle birçok entegre devre uygulamasında
kullanılmaktadır. Bu uygulamalara örnek olarak şunlar verilebilir:
- Kriptoloji
- Görüntü ve Ses İşleme
- ASIC prototipleme
- Yapay Zeka ve Makine Öğrenmesi
- Uydu ve Radar Haberleşmesi
- Tüketici Elektroniği
- Tıp Elektroniği
- Savunma, Havacılık, Otomotiv ve Robotik Sistemler
Yazının devamı niteliğindeki FPGA Teknolojisinin Geleceği ve FPGA Tasarımınında Yol Haritası hakkındaki yazımı okuyabilirsiniz.
Hiç yorum yok:
Yorum Gönder