FPGA İle Sayısal Devre Tasarımı

FPGA ile SAYISAL DEVRE TASARIMI
Gömülü Sistemler
Herhangi bir sistem içerisinde yer alarak, o sistemi akıllı hale getiren elektronik donanım ve yazılım ile oluşmuş entegre sisteme gömülü sistem denir. Bu yazılımların bilgisayarlarımızdaki yazılımlardan en büyük farkı tek bir görevi yerine getirmesi ve kullanıcıyla dolaylı olarak etkileşimde bulunmasıdır. Günlük yaşantımızda kullandığımız eşyalarımızın hemen hemen hepsinde bu sistemi görmek mümkündür. Kişisel bilgisayar, yazıcı, tarayıcı, hesap makinesi, cep telefonu, televizyon fotoğraf makinesi, bulaşık makinesi, elektronik oyuncaklar vb. Gömülü sistemler, genellikle daha büyük bir sistemin içinde “gömülü” olarak çalışırlar. Örneğin bir çamaşır makinesinde veya buzdolabında  birçok mekanik bölüm olmasıyla birlikte, bütün bunları kontrol eden bir veya birden fazla mikro denetleyici tabanlı sistem bulunur. Bu sistemler kullandığımız cihazların “akıllı olmasını” sağlayan, beyin vazifesi gören birimlerdir. Örneğin: buzdolabının kapağını açtığımızda ışığının yanması bu beyin vazifesi gören birim sayesinde olan bir işlemdir.

FPGA Yapısı
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 ara bağ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 kategoriye 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üç 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. 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 kaldı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 sinyalinin 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 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 Mimarisi
FPGA ’lar birçok firma tarafından üretilir ve birbirinden farklı yapıda bulunabilirler. Bu farklılıklara rağmen cihazlar arasında tasarım mimarisi açısından birçok benzerlik bulunmaktadır. FPGA; programlanabilir mantık blokları, bu blok dizisini çevreleyen giriş-çıkış blokları ve ara bağlantılar olmak üzere düzenlenebilir üç ana bölümden oluşmuştur. Programlanabilir mantık blokları, ara bağlantılar içerisine gömülü şekilde bulunur. Bunların yapılandırılması ve aralarındaki iletişim ara bağlantılar sayesinde gerçekleşir. Giriş-çıkış blokları, ara bağlantılar ile bütünleşmiş devrenin paket bacakları arasındaki bağlantıyı kurar.




FPGA’ nın Kullanım Alanları
·         ASIC tasarımında
·         Sayısal işaret işlemede
·         Yazılımsal mikroişlemci tasarımında
·         Haberleşme ağlarında iletişim ağı protokolleri kurmada
·         Donanım simülasyonlarında



Yorumlar

Bu blogdaki popüler yayınlar

VLSI Devre Tasarımı

Yapay Sinir Ağlarına Giriş

İnsan Bilgisayar Etkileşimi