Sahada Programlanabilir Kapı Dizileri (FPGA) Sayısal CMOS Tümdevre Tasarımı Y. Fırat Kula
Programlanabilir Lojik Basit Programlanabilir Lojik Cihazlar (Simple Programmable Logic Device - SPLD) ** PAL (Programmable Array Logic), PLA (Programmable Logic Array) Karmaşık Programlanabilir Lojik Cihazlar (Complex PLD - CPLD) ** PAL benzeri birçok blok ve bunları birbirine bağlayan programlanabilir bağlantılar Sahada Programlanabilir Kapı Dizileri (Field Programmable Gate Array - FPGA)
PROM (1970)
PLA (1975)
PAL (1978)
CPLD (1983)
FPGA (1985)
FPGA Tekrar tekrar programlanabilen lojik bloklar, ara bağlantılar Aritmetik devre blokları, hafıza blokları vb. de içerebilmektedirler Sahada programlanabilirlik?
CPLD Az sayıda SPLD benzeri lojik bloklardan oluşur EEPROM tabanlı programlama Yapısının daha basit olması nedeniyle gecikmeler düşük Küçük çapta lojik uygulamaları için uygun FPGA Çok sayıda, çoklayıcı ve LUT (Look-UpTable) tabanı lojik bloklardan oluşur. Çoğunlukla RAM tabanlı programlama Karmaşık yapı nedeniyle gecikmeler daha fazla olabilmekte ve tahmin edilebilirliği düşük Karmaşık lojik uygulamalar için uygun SPLDs CPLDs FPGAs Equivalent gates 0 ~ 200 200 ~ 12,000 1000 ~ 1,000,000
Programlanabilir Devrelerin Artıları/Eksileri Hızlı tasarım süreleri Küçük çaplı üretimler için daha ekonomik Üretimden sonra tekrar değiştirilebilme Hız, alan ve güç tüketimi açısından ASIC lerden (Application Specific Integrated Circuit) daha düşük performans Büyük miktarda üretimlerde bir programlanabilir yonganın üretim maliyeti sabit kaldığından toplam maliyet daha yüksek olmaktadır
FPGA Uygulama Alanları Sayısal işaret işleme uygulamaları Haberleşme uygulamaları (Radarlar, yazılım tanımlı radyolar, haberleşme cihazları...) Otomasyon, mikrodenetleyicili sistemler Donanım hızlandırma devreleri (FPGA üzerinde paralel işlem blokları oluşturmaya dayanır) Tasarımlar için prototip oluşturma FPGA'in ASIC yerine alternatif olarak kullanılabileceği, özellikle piyasaya hızlı ürün sürme önceliği bulunan çeşitli uygulamalar.
FPGA mimarisi Lojik Bloklar Çoklayıcı Tabanlı Lojik Blok
Shannon Açılımı
LUT (Look-up Table) Tabanlı Lojik Blok Bir lojik fonksiyonun tüm çıkış değerlerini tutan ve ilgili girişe göre çıkışta görülmesi gereken değeri seçen yapılara LUT adı verilir. K sayısına kadar farklı değişkene sahip her tür lojik fonksiyon K girişli LUT (LUT-K) ile gerçeklenebilir.
Source: Altera white paper: FPGA Architecture
Optimum LUT Boyutu
27 Source: Altera white paper: FPGA Architecture
Programlama Teknikleri Ters-sigorta (Anti-fuse) EEPROM SRAM
SRAM ile Programlama FPGA da kullanılan CMOS prosesine uygundur. Yazılan veri kalıcı değildir. Güç kesildikten sonra tekrar programlanmalıdır. Alternatif olarak yeniden programlamayı sağlamak için SRAM hücrelerini programlayacak veriyi tutan EEPROM blokları kullanılabilmektedir.
EEPROM ile Programlama Bir veya iki transistor ile hafıza hücresi gerçeklenebilir Güç kesildiğinde programlama bilgisi korunur Yeniden programlanabilme ömrü RAM lere göre azdır Yüzen geçit kullanımı imalat sürecinin karmaşıklığını arttırmaktadır
Ters Sigorta (Anti-fuse) ile Programlama Metal yüzeyler arasına sıkıştırılmış amorf dielektrik kullanılarak gerçeklenir (Transistor kullanılmaz) Güç kesildiğinde programlama bilgisi korunur Yeniden programlanamaz Düşük direnç ve parazitik kapasiteler
Programlama Teknolojisi SRAM Metal-Metal antifuse EEPROM Üretim Karmaşıklığı Düşük Yüksek Yüksek Yeniden Programlanabilirlik Var Yok Var Programlama Ömrü Çok Yüksek Bir defa Düşük Alan İletim Halindeki İç Direnci(Ω) Kesim Halindeki İç Kapasitesi (ff) 6 transistor Transistor kullanılmaz 1-2 transistor 600 800 30 80 1-4K 10 50 1 10 50 Güç Tüketimi Düşük En düşük Düşük Kalıcılık Kalıcı değil Kalıcı Kalıcı
FPGA mimarisi Ara Bağlantılar
FPGA mimarisi Ara Bağlantılar
FPGA datasarımın Aşamaları 1. Gerçeklenecek yapının tasarımı: Gereksinimlere göre beklenen işlevi yerine getirecek devrenin ve alt bloklarının fonksiyonlarının belirlenmesi, bağlantı ara yüzünün yapılması işlemlerini içerir 2. Tasarımın HDL ile ifadesi: Yapılan tasarım bir donanım tanımlama dili (Hardware Description Language - HDL) ile ifade edilir. Günümüzde en sık kullanılan donanım tanımlama dilleri Verilog ve VHDL dir.
FPGA datasarımın Aşamaları 3. Test ortamı tasarımı: Yazılan HDL tasarımın işlevsel olarak beklendiği şekilde çalıştığını doğrulamak için bir test ortamı yazılır ve burada tasarıma verilecek test giriş değerleri belirlenir. 4. Davranışsal Benzetim: Yazılmış olan test ortamı çalıştırılarak devrenin verilen test girişlerine karşılık hangi çıkışları ürettiği incelenir. Bu benzetimde sadece üretilen çıkışlar önemlidir, gecikmeler hesaba katılmamaktadır.
FPGA datasarımın Aşamaları 5. Sentez: Bu aşamada, ikinci adımda yazılmış olan devreye ait HDL kodun netlist adı verilen ve devrede hangi elemanın nereye bağlanacağını ifade eden bir başka kodlamaya çevirir. Bu iş için sentezleyici adı verilen yazılımlar kullanılmaktadır. Bu adımın önemi, sentezleme sonucunda devrede ortaya çıkabilecek zamanlama ve bağlantı problemlerinin öngörülebilir olmasıdır.
FPGA datasarımın Aşamaları 6. Gerçekleme (Implementation): Çeviri (Translate): Sentez tarafından üretilen bağlantı listesi, kullanılacak FPGA cihazın iç elemanları cinsinden ifadesine çevrilir. Planlama (Map): Yapılan çeviri sonucunda ortaya çıkan lojiğin FPGA üzerindeki bloklara (kaynaklara) göre nasıl yerleşeceğini planlar. Yerleştirme ve Bağlama (Place and Route): Planda oluşturulan haritaya ve belirlenen alan ve gecikme kıstaslarına göre tasarımı FPGA üzerine yerleştirir ve ara bağlantıları yapar.
FPGA datasarımın Aşamaları 7. Zamanlama Analizi: Gerçekleme işleminden sonra FPGA üzerinde kurulması planlanmış olan hatlar üzerindeki gecikmeleri analiz edilir. Tasarım kısıtlamalarına uymayan gecikme veya yeterli saat frekansı olup olmadığına bakılır. Bütün bu işlemler sonunda FPGA üzerindeki programlamayı yapacak olan bit dizilimi üretilecektir.