FPGA Nedir?

FPGA (Field Programmable Gate Array) programlanabilen bir yongadır (entegre veya çipdir). Türkçede bu entegrelere "Alanda Programlanabilir Kapı Dizini" denilmektedir.

FPGA'lerin içerisinde sayısal(dijital) devre tasarlamak için kullanılabilen temel devre elemanları bulunur - Flip-flop, VE, VEYA kapıları vb. Bu devre elemanları VHDL veya Verilog gibi donanım tanımlama dilleri (Hardware Description Language - HDL) kullanılarak veya şematik tasarım yapılarak birbirlerine bağlanır. Böylece istenilen sayısal devre sadece bir FPGA entegresi kullanarak oluşturulabilir.

Xilinx Spartan 3 FPGAAltera Stratix IV FPGA

FPGA'lerin en önemli özelliklerinden birisi tekrar programlanabilir olmalarıdır. Yani tasarımında bir hata tespit ettiğiniz FPGA kodunuzu tekrar tasarlayıp testini gerçekleştirdikten sonra kart üzerindeyken FPGA'e yükleyebilirsiniz. 

Bu esnek tasarım özelliklerinden dolayı, bazı entegre üreticileri, tasarımlarını önce FPGA ile denerler ve son aşamada FPGA üzerinde doğrulanmış olan bu tasarımı ASIC tasarıma dönüştürüp entegrelerini piyasaya sunarlar.

FPGA entegreleri genelde paralel işlem gerektiren yüksek performanslı özel tasarımlar için kullanılmaktadır. Görüntü işleme, sayısal işaret işleme (Digital Signal Processing - DSP) işlemleri buna örnek olarak verilebilir. Ama tasarımınız sıralı bir işlem akışına uygun ise mikroişlemci kullanmak daha mantıklı olacaktır. Bu noktada unutulmaması gereken şudur: Mikroişlemcilerin iç mimarisi sabittir ve kod değişiklikleri temelde bu mimari üzerinde komut akışının değişimi anlamına gelir ve FPGA'lere göre test ve doğrulama işlemleri daha kolay gerçekleştirilebilir. FPGA'lerde ise, tasarımınız, entegrenin içindeki donanım yapısını ifade eder. Her kod değişikliği mimari ve sinyal zamanlamaları açısından farklı yapılar ile sonuçlanabilir. Aynı zamanda FPGA tasarımı sırasında bir veya birden fazla tasarım yazılımı kullanmanız gerekebilir (tasarım girişi, sentez ve benzeşim adımları için). Bundan dolayı FPGA tasarımlarında yapılan kod/tasarım değişikliklerini doğrulamak daha uzun zaman alabilir ve uzmanlaşma gerektirir.

Daha detaylı bilgilere aşağıdaki linklerden ulaşabilirsiniz: