Programlanabilir Mantık -6- FPGA

Sayfamızı takip edenlerin bildiği üzere daha önceden “FPGA Nedir?” başlıklı bir yazı yazmış ve FPGA’yı ayrıntılı bir şekilde sizlere açıklamıştık. Burada “Nedir?” tarzında bir blog yazısından daha ayrıntılı bir şekilde konuyu ele alacağız. FPGA’lardan bahsederken hakkında kaynak bulunmayan, zor ve oldukça ileri seviye bir konu olarak elektronikte pek çok kişinin duyduğu fakat hakkında pek bilgiye sahip olmadığını fark edebiliriz. Bu konuda Türkçe bilgi pek olmadığı gibi internette yabancı kaynaklarda da bilgiye rastlamamız güçtür. Aslında HDL ve FPGA konusu akademik noktaya kaydığı için bu konu hakkındaki bilgileri kitaplarda ve akademik yayınlarda görmekteyiz. O yüzden CPLD, FPGA gibi sistemlerin pek amatör dostu olduğunu savunmamız mümkün olmaz. Yine de kaynakları kullanmayı, araştırma yapmayı ve bilgisayar okur-yazarlığını bildikten sonra FPGA’yı öğrenmek çok da zor değildir.

Programlanabilir mantık serisini anlatmanın yanında ileriye dönük bu alanda projelerimizin olduğunu sizlere şimdiden haber verelim.

FPGA’nın açılımı “Field Programmable Gate Array” şeklindedir. “Field Programmable” yani sahada programlanabilir olması üreticiden çıktıktan sonra kullanıcının uygulama aşamasında programlayabilmesi anlamına gelmektedir. Yani biz boş bir çipi alıp kurduğumuz devreye program yazıp kullanabilmemiz anlamı taşımaktadır. “Gate Array” ise kapı dizisi anlamına gelmektedir. Mantık kapılarından oluşan bir dizi olduğundan bu ad verilmiştir. Türkçe çevirisi o halde “Sahada Programlanabilir Kapı Dizisi” şeklinde olur. Bu tarz çiplerin üretimde programlanmış hali de mevcuttur. Üretimde metal iç bağlantı ağı kullanıcının tasarımı olarak devreye entegre edilir. Buna Mask-programmable gate array (MPGA) adı verilir. Tamamen özel bir entegre üretme yerine programlanmış bir entegre üretimi entegre üretiminde farklı bir çözüm olabilir. Biz sadece kendimiz programlayabildiğimiz FPGA entegreleri ele alacağız.

Daha önceki yazımızda CPLD’leri anlatmıştık. CPLD ile FPGA’yı kıyaslamadan FPGA’yı sağlıklı bir şekilde anlatmamız pek mümkün değildir. Çünkü bütün bu aygıtlar gelişen teknoloji ile beraber sırasıyla ortaya çıkmış ve birbirinin üzerine katılarak en yeni ürünler ortaya çıkmıştır. PAL, GAL gibi aygıtlardan sonra CPLD çıkmış, CPLD yetersiz kalınca da FPGA ortaya çıkmıştır. O yüzden gelişen teknolojinin en son ürünü olarak FPGA’yı söyleyebiliriz. CPLD ve FPGA bir yönden de 8-bit ve 32-bit mikrodenetleyicilere benzemektedir. CPLD 8-bit bir mikrodenetleyici gibi basit işleri görmekte fakat aynı zamanda etkili olmakta fakat 8-bit mikrodenetleyicinin 32-bit mikrodenetleyiciye yaklaşamaması gibi CPLD’ler de FPGA’ya yaklaşamamaktadır. Fakat CPLD ve FPGA arasındaki fiyat farkına baktığımızda hiç 8-bit ve 32-bit mikrodenetleyici fiyatı arasındaki fark gibi olmadığını görürüz. FPGA pazarı oldukça geniş bir fiyat aralığında olup CPLD’ye göre çoğu entegre oldukça pahalıdır. Fiyat olarak CPLD’ye yakın olan FPGA’lar bile özellik bakımından CPLD’den çok uzakta değildir. Kısacası verdiğiniz para kadar teknoloji alabilirsiniz.

CPLD aygıtları kontrol mantığında, basit makinelerde ve ufak yazmaç gruplarında oldukça işe yaradığı halde uygulama karmaşık bir hale gelip binlerce flop gerektirdiğinde CPLD’ler işe yaramaz elemanlar haline gelmektedir. Yapacağımız uygulama karmaşık olduğu zaman bunu CPLD ile yapmaya çalışmanın bir anlamı kalmaz. Karmaşık uygulamalar büyük miktarda boruhattı yazmacı, tampon veri yazmacı, geniş ölçekli sayaç gibi elemanları gerektirir ve bu elemanlar için de flopları kullanmamız gereklidir. Bu durumda daha karmaşık bir aygıt olarak FPGA’ları kullanmamız gerekir.

FPGA’lar mimarisi olarak bağımsız ayarlanabilir mantık bloklarından oluşan bir örgüden oluşmaktadır. Bu örgü dizi halinde blokların arasındaki iç bağlantı ağı ile sağlanmaktadır. CPLD ve FPGA’nın mimarisi birbirine benzese de aynı zamanda farklılığı da mimarisinden kaynaklıdır. CPLD mimarisinde makrohücre adı verilen programlanabilir mantık dizileri bulunmaktadır ve bunlar da küçük miktardaki saatle çalışan flip-flopları beslemektedir. Bu mimarinin esnekliğini azaltsa da mimari zamanlama konusunda önceden kestirilebilir bir karakteristiğe sahiptir. FPGA’ya baktığımızda ise basit mantık bloklarının açık bir şekilde iç bağlantı ağı ile birbirine bağlandığını görürüz. Bu mimari hem daha basit hem daha esnek bir yapıdadır. Bu bloklar CPLD’de olduğu gibi büyük değildir.

Resimde görüldüğü gibi FPGA üç ana unsurdan oluşmaktadır. Bunlar CLB adı verilen düzenlenebilir mantık bloku, iç bağlantı ağı ve giriş/çıkış birimleridir. FPGA’nın bu kadar basit yapıda olması içerisine çok daha fazla düzenlenebilir mantık blokunu alabilmesine sebep olmuştur. Basit yapıda olan bir parçanın kapasitesi artarken maliyeti kapasiteye oranla düşük olacaktır. Şimdi bu mantık bloklarının iç yapısına bakarak konumuza devam edelim.

Resimde gördüğümüz üzere dört girişli yoklama tablosunun çıkışı saatle çalışan flip-flopu beslemektedir. Bu seçim çıkışı da çoklayıcıya girmektedir. Yoklama tablosu tek bit genişliğinde bellek dizisi ve girişi temsil eden adres hatlarından başka bir şey değildir. Tek bitlik veri çıkışı yoklama tablosu (Look-up table)  çıkışı görevini yapmaktadır. Yani burada önceden ROM belleklerde anlattığımız gibi 4 bitlik giriş ve tek bitlik çıkışın mantığını bu hafıza birimi yapmaktadır.

Bu mantıksak bloku en basit haliyle gösterip anlatsak da hepsi tek bir yoklama tablosu ve flip-floptan meydana gelmemektedir. Daha karmaşık işleri yapmak üzere birden fazla bu birimleri içeren mantık blokları olabilir. Bu bloklar daha fazla girişe sahip olur.

Şekilde Xilinx firmasının XC4000 entegresini düzenlenebilir mantık blokunu görmekteyiz. Burada Toplamda üç adet yoklama tablosu ve sağ tarafta da iki adet flip-flop yer almaktadır. Boolean işlemlerinin yapıldığı yoklama tabloları girdi ve çıktıya göre işlem yapmaktadır. CPLD ya da GAL aygıtlarında olduğu gibi AND ve OR dizileri FPGA’da bulunmamaktadır. Burada boolean fonksiyonları mantık hücrelerinin bağlantısı ile yapılmaktadır. Biz HDL’de program yazarken bu bağlantıları çok dert etmesek de FPGA’yı anlamak için başta öğrenmeliyiz. FPGA ve CPLD arasındaki bir fark da FPGA’nın SRAM teknolojisi tabanlı olmasıdır. CPLD’deki Flash program hafızasına bir kere yüklediğimiz program aynı mikrodenetleyicilerde olduğu gibi her açılışta çalışıyordu. FPGA’nın konfigürasyonu RAM bellekte tutması konfigürasyonlarını geçici hale sokmaktadır.

FPGA’ların kullanım alanı ilk çıktıkları güne nazaran oldukça genişlemiş ve hemen her şey için kullanılabilir olmuşlardır. İstenirse bir işlemci yapılabilir, istenirse RAM birimi istenirse bir sürücü olabilir. İstediğimiz entegreyi yapmamızın önündeki engel yine FPGA’nın kapasitesi olmaktadır. Bazı FPGA’ların tek bir çipi binlerce dolar fiyata satılmaktadır. En gelişmiş FPGA üreticileri olarak Altera (Intel) ve XilinX’i sayabiliriz. Aşağıdaki Intel FPGA geliştirme kartının fiyatının 9500 dolar olduğunu söyleyelim.

Bu kadar pahalı kart ve entegreler olsa da bunlar oldukça ileri seviye sistemlerdir. Genel kullanıma yönelik FPGA entegreleri mikrodenetleyiciler kadar seri üretime yönelik olmasa da makul bir seviyededir.

FPGA’lar hakkında daha ayrıntılı bilgiyi daha ileriye bırakıyoruz. Bu seride bu seviyede bırakıp akıcılığı bozmayalım. FPGA’ları anlatarak “Programlanabilir Mantık” serisini bitiriyoruz. Bundan sonra C programlama ve STM32 üzerinden yazılarımıza devam edeceğiz.

Bizi Facebook grubumuzda takip etmeyi unutmayın. Bilgili ve öğrenmeye hevesli bir topluluk oluşturmak istiyoruz.

https://www.facebook.com/groups/1233336523490761/

UYARI!!

 

 

 

 

 

 

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.