Mühendisbilir'i Instagramdan takip ediyor musunuz?

Field Programmable Gate Array (FPGA)

Öncelikle FPGA nedir ? sorusuna cevap arayalım.

FPGA, sürümünden sonra kullanıcı tarafından programlanabilir bir çeşit entegredir. Peki bu entegrenin diğer entegrelere göre üstünlüğü nedir? FPGA nın üstünlüğü paralel işlemleri ve seri işlemleri aynı anda yapabilmesidir ve bu özelliği ile diğer entegrelerden birkaç adım öndedir.Paralel işlem yapabilmek aynı anda birden fazla işlemi yapabilmek demektir. Örneğin bir insanın aynı anda hem araba kullanıp hem telefonla konusması gibi sayılabilir.

Sıradan entegreler ya hiç paralel işlem yapamazlar ya da çok sınırlı yapabilirler. FPGA’de ise uygulamaya ve kapasiteye göre, birbirine paralel onlarca belki binlerce işlemi aynı anda yapabiliriz. Bu da paralel işlem gerektiren uygulamalarda FPGA’leri eşsiz kılmaktadır.

                          

FPGA YAPISI

FPGA temel olarak Mantık Hücreleri (Logic Cell), Giriş/Çıkış Blokları (IO Block) ve Arabağlantılar’dan oluşur.

 Mantık Hücresi (Logic-Cell)                                                                                                              

FPGA’in ana yapısını Mantık Hücreleri oluşturur. Bir Logic-Cell 1 adet Lookup Table (LUT), 1adet D Flip-Flop ve bir adet 2 to 1 Mux’ tan oluşur.

LUT ‘lar aslında bir mantık işlemi yerine getiren küçük belleklerdir (RAM). N girişli bir LUT, 2 eN ’li bir belleğe işaret eder.
Binlerce Mantık Hücreleri’nin birleşimi sonucunca kompleks ve büyük programlar oluşturulur.

Mantık hücrelerinin arabağlantıları matris şeklindeki veri yolları ve programlanabilir anahtarlarla (FPGA yüklenen programa göre) sağlanır. FPGA tasarımı, her bir mantık hücresinin uygulayacağı fonksiyonu ve programlanabilir anahtarların durumunu (açık/kapalı) belirleyerek bu mantık hücreleri arasındaki bağlantıları tanımlar.

FPGA Pinleri

FPGA pinleri genel olarak 2 katagoriye ayrılır.

  • Ayrılmış pinler (Dedicated pins)
  • Kullanıcı pinleri (User pins)

a) Ayrılmış pinler:

Bir FPGA’de tüm pinlerin %20 ila %30’u ayrılmış pindir. Bu pinler, FPGA’de gerçekleştirdikleri özel fonksiyonlara göre 3’e ayrılır.

  • Güç Pinleri : FPGA için gerekli olan güc ve ground (Toprak) sağlayan pinlerdir.
  • Konfigürasyon Pinleri : Oluşturulan programın FPGA yüklanmesi (download) için kullanılan pinlerdir.
  • Clock Pinleri :  Clock sinyalleri için ayrılmış özel pinlerdir.

b) Kullanıcı Pinleri:

Bunlar kullanıcı tarafından konfigüre edilebilen standart I/O pinleridir. Input, Output, Input/Output olarak üç kategoriye ayrılır. Her bir I/O pini FPGA’de bir IO hücresine bağlıdır. IO hücrelerinin güçleri VCCIO tarafından sağlanır. Eski FPGA’ ler birden fazla VCCIO pinine sahip olmalarına rağmen, bütün pinler aynı voltajla beslenirdi. Yeni üretilen FPGA’lerde ise IO’lar gruplara ayrılabilir ve bu gruplar farklı voltajlardan beslenebilirler. Böylelikle bir grup IO pinleri 3.3 V ile çalışırken; diğer grup IO pinleri de 2.5 volt ile çalışabilmektedir.

CLOCK ve GLOBAL Lines

FPGA genellikle senkronize dizayn edilir (synchronous). Yani FPGA tasarımları clock tabanlıdır ve FPGA içerisindeki D Flip-Floplar, clock sinyalinin yardımıyla durum değiştirirler. Senkronize dizaynlarda bir clock sinyalinin, bütün flip-flop’ları aynı anda tetiklemesi gerekir. Aksi takdirde FPGA’de elektriksel ve zamansal problemler oluşmaktadır. FPGA üreticileri bu problemleri ortadan kadırabilmek için, “Global Routing”  veya “Global Line” olarak adlandırılan özel bir iç bağlantı geliştirmişlerdir. Bu bağlantı sayesinde, Clock sinyalininin FPGA içerisindeki bütün Flip-Flop’lara aynı anda ulaşması sağlanır.

Bundan dolayı clock beslemelerinin, FPGA’in clock için ayrılmış pinlerinden verilmesi gerekir.

RAM Blokları

Günümüzde FPGA’lerin hemen hepsinde ayrılmış RAM yani bellek üniteleri bulunmaktadır. Bunlar mantık devrelerinin işleyişi sırasında duyulan geçici depolama ihtiyacı için kullanılırlar. Bu RAM’ler tek veya çoklu erişimi destekleyebilirler.  Çoklu erişimde birden fazla uygulama  RAM üzerinde okuma/yazma yapabilmektedir. Çoklu erişim farklı clock’ta çalışan işlem blokları arasında veri aktarımı için iyi bir çözümdür. Örneğin 25 MHz clock ile çalışan bir veri toplama ünitesinden 50 Hz ile çalışan bir veri işleme ünitesine veri aktarmak için 2 port’lu bir RAM kullanabiliriz. 25 MHz ile çalışan veri toplama ünitesi veriyi RAM’e yazar ve 50 MHz de çalışan veri işleme ünitesi veriyi RAM’den okuyarak kullanır.
FPGA içerisinde büyük RAM ihtiyaçları için Block RAM’ler bulunurken küçük veriler için mantık hücreleri arasına serpiştirilmiş dağınık (distributed) küçük RAM’ler bulunmaktadır. Dağınık RAM için Xilinx ihtiyaca göre mantık hücrelerinin bazılarını RAM olarak kullanırken Altera block RAM’leri FPGA içerisinde değişik boyutlarda paylaştırmaktadır.

FPGA PROGRAMLAMA

FPGA’leri yazılım ile programlanabilen donanımlar olarak tanımlamıştık.

FPGA’lerin kullanıma hazır hale getirilebilmesi için programlanmaları gerekir. XLINX ISE programından indirerek kullanabiliriz.Birkaç program daha var ama genellikle kulanılan prgramı ISE dir.

FPGA programlamak için iki yöntem kullanılır.

  • Grafiksel tasarım
  • HDL

Grafiksel tasarımda tasarım, derleyici programın (ISE, Quartus vs) kütüphanesinde yer alan araç ve mantık kapıları kullanılarak yapılır.

HDL(Donanım Tanımlama Dili) :Tasarımın, HDL dillerinden her hangi bir tanesinin kullanılarak yapılmasıdır.

HDL: bir donanım parçasını modellemek için kullanılan yazılım dilidir. VHDL ile Verilog en yaygın kullanılan iki türüdür. Biz örneklerimizde VHDL dilini kullanacağız.

Neden VHDL: Verilog ile VHDL arasında herhangi bir üstünlük veya yetersizlik yoktur. Her iki dilide FPGA programlamak için kullanabilirsiniz. Biz FPGA nedir ekibi olarak VHDL’e aşina olduğumuz için , örneklerimizde bu dili kullanacağız.

Program tasarlanırken hem grafik hemde VHDL kodu kullanılabilir. HDL ile oluşturduğunuz modellerinizin şematiklerini oluşturup, tasarımınıza grafiksel olarak da devam edebilirsiniz.

FPGA Uygulama Alanları
FPGA; sayısal işaret işleme, radar haberleşme sistemi, uzay, savunma sistemleri,
ASIC, medikal resimleme, robotik, ses tanıma, şifreleme ve kod çözme gibi bir çok
alanda kullanılmaktadır. Ayrıca hızlı Fourier dönüşümü (FFT) ve konvolüsyon gibi
yüksek performanslı hesaplamaların yapılmasını gerektiren uygulamalarda
FPGA’ların kullanımı giderek artmaktadır.Fakat şu da söylenmelidir ki; FPGA’ların
yüksek performanshesaplamalarında kabul görmeleri, tasarım zorluğundan dolayı
hala belli bir limittedir.

                        YANİ ŞUAN Kİ TEKNOLOJİNİN İSMİDİR FPGA