FPGA Nedir ? Ne İşe Yarar ? Nerelerde Kullanılır ?

FPGA (Field Programmable Gate Array ) üniteleri 1980’lerden itibaren pazarda yerini alan birimler olsa da yapıları itibariyle göz önünde olmamış ve kendine ait özel bir sektörü olmuştur. Mikrodenetleyici ve mikroişlemciler tüketici elektroniğinde, beyaz eşyalarda, otomotivde, oyuncaklarda ve diğer pek çok yaygın üründe kullanılmakta ve hayatımızın elekronikle alakalı hemen her alanında yer almaktadır. Bu yüzden sektörde mikrodenetleyicilerin hakimiyetini görüyoruz. Fakat birkaç dolara satılacak ve yüzbinlerce üretilmesi gereken bir elektronik cihazda mikrodenetleyicileri pek görmemiz mümkün değildir. Onun yerine ASIC (Amaca özel tasarlanmış entegre) kullanılıp tek bir cihaza yönelik özel bir entegre tasarlanıp üretilir. Böylelikle o entegre mikrodenetleyiciden çok daha ucuza mal edilmiş olur. Çok miktarda kullanılması üstünlük göstergesi değildir. Ancak maliyet bakımından bir avantajı olmaktadır.

Size çok miktarda üretilen ucuz bir üründen örnek vererek bu konuyu açıklayayım. Bizim Atari olarak bildiğimiz Nintendo NES sistemlerinde Super Mario, Duck Hunt, Tank, Road Fighter gibi oyunlar vardı. Bu oyunları oynamak için oyun konsoluna kaset adını verdiğimiz plastik kutu içerisindeki devre kartını takmamız gerekiyordu. Bu devre kartı bir ROM hafıza olup üretici tarafından fabrikada programlanmış oyun verisini içeriyordu. Oyun verisini okuyan mikroişlemci bize oyun olarak bu veriyi sunuyordu. Bu kasetin içini açıp  baktığımızda her kasette benzer ROM entegreleri görürüz. Entegreleri üreten üretici, entegre kodları belli olduğu için bu ROM hafızalar tekrar programlanabilirse başka alanlarda bile kullanılabilir.

Resim: https://2static2.fjcdn.com/comments/Ehhm+a+quick+google+serch+gave+me+this+_ece61ef63e4f7b37d3f10a18114de75a.jpg

Böyle bir kartın kullanılabilirliği ve esnekliği her ne kadar belli bir amaca yönelik üretilmiş olsa da yine de mevcuttur. Fakat böyle bir kartı üretmenin maliyeti onbinlerle ifade edilen bir üretimde cidden göze batan bir miktar olacaktır. O yüzden maliyeti düşürmek adına esnekliği ve kullanılabilirliği terk etmek gerekir. Damla entegre adını verdiğimiz bir kılıfta bile olmayan kart üzerine makineler tarafından yerleştirilip epoksi dolgu ile kapatılan entegreler ile bu kaseti üretmek çok daha ucuza mal olacaktır. Çin malı NES konsollarının kasetinde gördüğümüz üzere damla entegreler şu şekildedir.

Resim: https://qph.fs.quoracdn.net/main-qimg-ba7185a141fd09944a8fa3e7fd4854a1

Tek bir “siyah nokta” ile koca devre kartının yaptığı işi yapmamız mümkündür. Böyle bir üretim yapmak için ise bu kartın on binlerce satan bir cihazda kullanılması gereklidir. O yüzden tüketici elektroniğinde bir noktaya kadar mikrodenetleyici ve mikroişlemci bir noktadan sonra ise amaca özel entegre kullanılmasının ardında gelişen teknolojiyi değil azalan maliyetleri düşünmemiz gerekir.

FPGA entegreleri piyasada pek görmediğimizi söylemiştik. Bu entegrelerin pek kullanılmaması bunların işlevsizliğinden yani bir işe yaramamasından dolayı değildir. FPGA ile her dijital sistemin işini yapmamız mümkündür. Fakat çoğu iş için FPGAlar pahalı, zor ve karmaşık olmaktadır. Onbinlerce satacak bir cihazda FPGA kullanmanın bir anlamı yoktur. FPGAlar, belki birkaç yüz belki 10-20 adet satacak fakat birim fiyatı milyon dolara varan yüksek katma değerli cihazları üretmek için kullanılır. FPGA’nın kullanım alanlarına geldiğimizde makerların aslında FPGA öğrenmesi gerektiği kanısına varacaksınız. 🙂

Buraya kadar FPGA’nın pahalı ve seri üretim için uygun olmayan bir birim olduğu gibi bir düşünceniz varsa doğru anlamışsınız demektir.

FPGA bize diğer hiçbir entegrenin ve sistemin sağlayamayacağı bir esneklik ve kullanışlılık verir. Bir çipi diğer her çip yerine kullanabilmeniz mümkündür. Fakat yerine kullandığınız çipler sizin FPGA çipinizden daima ucuz olacaktır. O yüzden FPGAlar sadece gerektiği yerde kullanılmaktadır. Bu gerekli alan ise oldukça spesifik ve önemli alanlar olup çok ileri teknoloji, bilimsel ve hassas işlerin yapıldığı alanlardır.

Dijital elektronikte elimizde yeterli NAND kapısı olduğu sürece istediğimiz her mantıksal uygulamayı yapmamız mümkündür. Tek yapmamız gereken iş bu kapıları doğru bir şekilde birbirine bağlamaktır. NAND kapısı yeri geldiğinde AND yeri geldiğinde OR ve diğer kapılar yerine kullanılabilmektedir. O halde binlerce, on binlerce NAND kapısını içinde bulunduran bir entegre ile yapılamayacak bir şey kalmaz değil mi? Çünkü önümüzdeki tek engel kapıların yetersizliği kalıyor. FPGA’lar da basit olarak prensipte sırayla dizilmiş mantık kapılarından meydana gelir. Bu kapılar program vasıtasıyla birbirine bağlanır. Aslında kendi çipimizi sıfırdan kendimiz tasarlamış oluruz. İstersek bir işlemci olabilir, istersek mikrodenetleyici olabilir. Tek bir çip hem PIC hem AVR hem ARM hem de Arduino olabilir. 🙂 Bu bizim programlamamıza kalmış bir şey. Elimizdeki sistemde mikrodenetleyici, mikroişlemci ve diğer dijital sistemlerde olan kısıtlamalar olmadığı için kafamıza göre bir şeyler ekleyip çıkartabiliriz. Arduino her şeye bağlanmasa da FPGAları her “dijital” şeye bağlamamız mümkündür.

Şimdi FPGA’nın “oldukça basitleştirilmiş” olarak bir şemasını sizlerle paylaşalım ve bunun üzerinden bu birimi anlatmaya devam edelim.

Resim: http://jjmk.dk/MMMI/PLDs/FPGA/fpga.h11.jpg

Resimde görüldüğü gibi çipin dışında yer alan bloklar ile çipin içinde yer alan bloklar bir elek gibi birbirine bağlanmıştır. Bu bağlantıların programlanmasıyla her ayak ve her birim birbiriyle farklı bir şekilde iletişme geçmiş olur. Mikrodenetleyici mimarisinde anlattığımız gibi bir merkezi işlem birimi ya da belli başlı görevi yapan bir birim yoktur. Entegre tasarım olmadan bir anlam ifade eder nitelikte değildir. Giriş ve çıkış blokları dijital giriş ve çıkışı sağlamaktadır. SPI, UART, I2C gibi protokolleri kullanmak istiyorsak kendimiz sıfırdan yapıp entegre içine eklememiz gereklidir. CLB adı verilen programlanabilir mantıksal bloklar temel olarak basit mantık işlemi yapan ünitelerdir. Bunların birbirine bağlanması ile seri üretimi yapılan bütün dijital devrelerin bir kopyasını yapmak mümkündür. Üstelik üretimde olmayan bir entegreyi de yazılımsal olarak üretmek mümkündür. Bir işlemcinin, mikrodenetleyicinin, dijital sinyal işlemcisinin kopyasını yapabileceğimiz gibi kendi sistemimizi de yapabiliriz. Aynı zamanda kontrol ve otomasyon uygulamalarında mikroişlemcilerin bile yetersiz kaldığı yerlerde FPGAlar hiç sıkıntı çekmeden çalışabilir. Bu noktada Arduino’dan bahsetmek komedidir. 🙂

FPGAların bir diğer üstün yanı ise tam anlamıyla paralel çalışabilmeleridir. Bu paralel çalışmaya rakip olabilecek bir sistem yoktur. Mikroişlemciler bile tüketici elektoriğinde en fazla dört ya da sekiz çekirdekli olabilirken FPGAların yaptığı paralel işlemlerin sayısını belirlemek oldukça zordur. Mikroişlemci yapısı itibariyle program komutlarını sırasıyla işleyip komutları çok hızlı işleyerek aynı anda birden fazla işi yapmış gibi görünse de FPGAlar gerçek manada aynı anda bir sürü işi yapabilmektedir. Mikrodenetleyiciler okuma, işleme, yazma gibi bir süreç ile aldığı veriyi gecikmeli olarak çıktı olarak çıkarsa da FPGAlar “anında” işlem yapabilir. Çünkü program ile değil donanımsal ve aracısız olarak bu işi yapmaktadır. Bu işi yapmak için mikroişlemciye bile muhtaç değildir çünkü donanım olarak buna uygun olarak programlanmaktadır.

Yukarıda donanımın programlandığından bahsetmemiz sizi şaşırtmasın. FPGAların çalıştıracağı bir yazılım yoktur. Mikroişlemciler gibi makine dilinden anlamazlar. O dilden anlayacak seviyeye getirmek için bile yine donanım programlanması yapmamız gereklidir. Bizim yazdığımız program ile donanım oluşturulmaktadır. HDL (Hardware Definition Language) adı verilen bir dil ile bu donanım tasarımı yani programlaması yapılır. Bu dil zor bir dil olup üzerinde çalıştığımız donanım da oldukça karmaşıktır. O yüzden FPGA üzerinde çalışmak herhangi bir mikrodenetleyici ve mikroişlemci üzerinde çalışmaktan daha zordur. Burada basit iş ile zor bir işi değil aynı seviyede bir işi farklı donanımda karşılaştırarak yorum yapmak gerekir.

FPGA ile ne yapılabileceği konusuna gelirsek söylenecek çok söz var.

  • Uzay, Havacılık ve Savunma Sanayinde kullanılabilir.
  • ASIC yani Entegre Prototiplerinde kullanılabilir. Üretmek istediğimiz bir entegreyi binlerce üretmek zorunda kalmadan deneme imkanı sunar.
  • Ses alanında kullanılabilir.
  • Otomotiv sektörü
  • Basın ve Medya
  • Tüketici Elektroniği
  • Veri Merkezi (Data Center)
  • Yüksek performansta hesaplama ve veri depolama
  • Endüstri
  • Tıbbi Cihazlar
  • Video ve Görüntü İşleme
  • Kablolu iletişim
  • Kablosuz iletişim

Bu saydıklarımızın hepsi ayrı birer sektördür. FPGAları bu liste ile kısıtlamak bile mümkün değildir. İstediğimiz her alanda kullanabiliriz.

Kullanımı zor ve pahalı oldukları için basit işlerde kullanılmasının uygun olmadığını bilmek yeterlidir.

Resim: https://cdn.arstechnica.net/wp-content/uploads/2015/06/altera-640×425.jpg

 

FPGAların yüksek teknoloji alanında kullanılan ve kısıtlı bir pazarı olan entegreler olduğunu söylemiştik. Bu entegreleri üreten iki büyük üretici vardır. Bunlar XilinX (Zilinks diye okunur)  ve Altera’dır. Altera’yı Intel satın aldığı için şimdi Intel çatısı altında üretilmeye devam etmektedir. Bu entegrelerin gelişmiş olanları BGA kılıfta olsa da daha alt seviyede olanları SMD lehimlemeye uygun olanları da vardır. Fakat yapısı gereği aşırı derecede fazla ayağa sahip olduğundan lehimlemesi zor olmaktadır. Bunun için geliştirme kartları kullanılabilir. Biraz araştırma ile bayağı uygun kart bulmuştum. Bunu sonraki yazıda anlatacağım.

FPGAların Avantajlarını ve Dejavantajlarını madde madde özetleyelim.

Avantajları

  • İstediğimiz her dijital şeyi yapabiliriz.
  • Oldukça Hızlıdır.
  • Kart üzerinde programlanabilir.
  • Aşırı derecede paralel işlem kapasitesine sahiptir.
  • Yüksek giriş ve çıkış ünitesi vardır.

Dezavantajları

  • Pahalıdır
  • Yüksek Güç Tüketimi (Mikrodenetleyicilere göre)
  • Yüksek Ayak Sayısı (BGA kılıfta ve lehimlemesi zor olması)
  • Karmaşık Yapıdadır
  • Karmaşık Geliştirme Araçları
  • Zor Programlama Dili

Özetlemek gerekirse FPGAlar herkes için değil de yüksek teknolojili ürün tasarımı yapmak isteyenler ve katma değeri yüksek projeler ortaya çıkarmak isteyenler için uygun entegrelerdir. Yapacağımız çoğu basit projede 8-bit mikrodenetleyiciler bile yeterli olmaktadır. Aynı projeyi FPGA ile yapmanın hiçbir anlamı yoktur. Eğer maker iseniz ve gözünüz yükseklerde ise FPGA öğrenmenizi tavsiye ederim. :)4

Bizi Facebook grubumuzda takip etmeyi unutmayın. Bilgili ve öğrenmeye hevesli bir topluluk oluşturmak istiyoruz.

https://www.facebook.com/groups/1233336523490761/

 

 

 

Kaynaklar,

Xlinix, What is an FPGA?, https://www.xilinx.com/products/silicon-devices/fpga/what-is-an-fpga.html, Erişim Tarihi 08.10.2018

Kapak Resmi, https://www.electronicdesign.com/sites/electronicdesign.com/files/Stratix10_Promo.gif

UYARI!!

 

 

 

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

4 Responses

  1. çok teşekkürler çok bilgilendirici olmuş. eğitim serisi de yaparsanız mükemmel olur. ki artık ihtiyaç var bence

  2. ahmet b dedi ki:

    Sagolun hocam hayalimiz bir gun fpga ile calisan sistemler yapmak

  3. Mesut Turan dedi ki:

    Güzel bir yazı olmuş. Elinize sağlık. Böyle tane tane anlatan blog bulmak zor.

  4. Adem dedi ki:

    Çok teşekkürler yeni yeni ilgilenmeye başlıyorum fpga’lar hakkında ilk bilgiyi sizden edindim.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.