FPGA Nedir? fpganedir.com'da ara
XILINX HAKKINDA ALTERA HAKKINDA FPGA NEDİR?
FPGA’i , üretimden sonra istenen fonksiyona göre donanım yapısı kullanıcı tarafından değiştirilebilen entegre devreler olarak tanımlayabiliriz. FPGA ile yeni tanışanlar ya da tanışmak üzere olanlar için bu tanım zor anlaşılır gelebilir fakat yazımızın devamında bu tanımı açacağız ve mümkün olduğunca örneklerle daha anlaşılır hale getirmeye çalışacağız. Bu sayfamızın amacı “ FPGA de nedir?” ya da “Anladım gibi ama tam değil.” diyen arkadaşlarımızın “ FPGA'i ben de zor bir şey sanıyordum.” diyebilmelerini sağlamak. Sonrasında da sitemizin birbirinden güzel örneklerle zenginleştirilmiş diğer bölümlerini inceleyerek ‘Nasıl...’la başlayan sorularınıza cevap bulabileceğinizi umuyoruz.
Girişteki tanımda da belirttiğimiz gibi FGPA bir tür entegredir fakat onu diğer entegrelerden ayıran yanı donanım yapısını yani iç konfigürasyonunu istediğimiz gibi değiştirebilmemizdir. Bunu şöyle açıklayabiliriz: Donanım-programlanabilir olmayan Standart entegrelerde, transistörler arasındaki bağlantılar sabittir ve (entegre yanmadığı yada başına başka talihsiz bir olay gelmediği sürece) değişmezler. FPGA’i, içindeki transistörleri birbirinden bağımsız ve serbest olarak üretilmiş ham bir entegre olarak düşünebiliriz. Bizim belirlediğimiz fonksiyona göre FPGA içindeki transistörler birbirlerine bağlanır ve bu sayede istediğimiz fonksiyonu gerçekleştirir. Yani teorik olarak transistör kapasitesi dahilinde akılmıza gelen herhangi bir entegrenin yaptığı işi FPGA ile yapabiliriz. Burada şunu belirtmek gerekir ki; verdiğimiz transistör benzetmesi FPGA’in iç yapısını tam olarak anlatmamaktadır, FPGA Yapısı sayfamızda iç yapıyla ilgili ayrıntılı ve daha kapsamlı bilgiyi bulabilirsiniz.
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. Paralel İşleme Güzel Bir Örnek: Video Sinyali İşleme / Filtreleme Örneğin gerçek zamanlı yüksek çözünürlüklü bir video görüntüsü üzerinde filtreleme işlemi yapmak istiyoruz. Video aslında peş peşe sıralanan resimlerdir ve bu resimlerin her birine “frame” denilmektedir. En basit haliyle bunun için videonun bir resim karesini giriş portlarından almamız, onu filtrelememiz ve çıkış portlarından göndermemiz gerekir. Sonra ikinci resim için de aynı işlemleri gerçek zamanlı olarak tekrarlamak durumundayız. Standart entegreler (örneğin bir mikroişlemci) kullanırsak bu üç işlemi (alma, filtreleme, gönderme) sırayla yapıp bitirdikten sonra gelen ikinci resmi almaya başlarız. Eğer bu işlemleri yeterince hızlı yapamazsak sıradaki resmi kaçırabiliriz. FPGA’de ise bu işlemler paralel olarak devam eder. Örneğin ilk resmi alıp filtreleme işlemini yaparken ikinci resmi almaya başlarız. İlk resmi gönderirken ikinci resmi filtrelemeye ve üçüncü resmi almaya başlarız. Bunun yanında, filtreleme işlemi genel olarak yoğun çarpım gerektirmektedir. Standart bir işlemci ile bu çarpma işlemlerini de sırayla yapmak zorundayız. Oysaki FPGA ile bu işlemleri de paralel olarak yani çok hızlı bir şekilde yapabiliriz. Özet olarak, FPGA’ler bize paralel işlem kabiliyeti sunan ve içyapısını istediğimiz fonksiyon ve uygulamaya göre değiştirebildiğimiz donanım-programlanabilir entegrelerdir.
Intellectual Property (IP) belli bir FPGA ailesine göre hız ve performans yönüyle optimize edilmiş hazır fonksiyonları ifade etmektedir. Basit fonksiyonlar üretici tarafından ücretsiz sunulurken ileri seviye fonksiyonlar için genelde belli bir ücret ödemek gerekmektedir. IP’ler üretici tarafından sunulabildiği gibi 3.parti firmalar veya şahıslar tarafından da sunulabilmektedir.