20 Kasım 2017 Pazartesi

FPGA Nedir? Özellikleri Nelerdir? Hangi Alanlarda Kullanılırlar?

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.

Okumaya devam etmeden önce Entegre Devre Teknolojisi hakkındaki yazımı okumanızı tavsiye ederim.

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