FPGA Teknolojisi ve Kullanımı Sahada Programlanabilir Kapı Dizileri
FPGA Teknolojisi ve Kullanımı
(Field Programmable Gate Array: FPGA)
Programlanabilir lojik ürünler (Programmable Logic Devices: PLD) sayısal devrelerin tasarlanmasında uzun zamandan beri önemli kolaylıklar sağlamaktadırlar. 1970 yılında PROM (Programmable Random Access Memory)’ların ve 1980 başlarında 4-5 TTL tümdevre yerine geçen PAL tümdevrelerinin Boole fonksiyonlarının gerçeklenmesinde kullanılmasıyla PLD alanında günümüze kadar süren bir yarış başlamıştır. Geçen zaman içinde tümdevrelerin kapı eşdeğerlikleri birkaç yüzden binlere ulaşmış, merkezi işlem ünitelerinde ise bu rakam çok daha fazla bir değere ulaşmıştır. PLD teknolojisinin günümüzde en önemli uygulaması Sahada Programlanabilir Kapı Dizileri’dir.(Field Programmable Gate Array: FPGA) Bazı üretim firmaları tarafından “do-it-yourself processors” sloganıyla lanse edilen bu yeni ürün sayesinde eğitim ve çalışma dünyasında bir çok insanın kendi işlemcilerini eskisinden daha kolay bir şekilde oluşturma şansları doğmuştur. FPGA’ların piyasadaki popülerliklerinin sebebiyse daha önce geliştirilmiş olan PLD’lerden hız ve kapasite bakımından çok daha yüksek performans göstermeleri, böylelikle işlemci üretiminde esneklik sağlamalarıdır.
FPGA’lar yukarda bahsi edilen kullanım alanlarının yanısıra dijital dizayn ve bilgisayarların donanım mimarilerini öğrenmek isteyenler açısından yerinin başka hiçbir kaynakla değiştirilmesi mümkün olamayacak bir niğmettir. FPGA’ların her bakımdan yüksek performenslarının sağladığı olanaklar sayesinde değişik kullanım alanları doğmuştur. Programlanabilir Logic’in ne olduğundan başlamak üzere bu dökümanda sırasıyla günümüzde kullanılan programlanabilir logic üniteleri, FPGA teknolojisinin bunlardan üstünlükleri, FPGA’ların iç yapıları, kombinezonsal lojik devrelerin FPGA kullanılarak gerçeklenmeleri, mis-FPGA yöntemi, FPGA kullanımı için sistem gereksinimleri, ISP(In-system programmable) özelliği ve bu durumda verdiği performans ile Transmogrifier C compiler’ından bahsedilecektir.
2 Programlanabilir Lojik Ne Demektir?
Porogramlanabilir lojik devreler kapıların ve flip-flopların birbirlerine bağlanmasıyla oluşturulan devreler şeklinde basitçe tanımlanabilir. Bellek hücreleri lojik kapıların gerçekleştirdiği fonksiyonların tanımlanmasında, kontrolünde ve birbirleriyle olan giriş-çıkış bilgisi ilişkilerinin kayıtlı tutulmasında kullanılır. Bu alanda üretilen çoğu ürünün farklı mimarilerde dizayn edilmelerine karşın mantık olarak hepsi aynı temel prensiplerle çalışırlar.
2.1 Günümüzde Bilinen Programlanabilir Lojik Ürünleri Ve Aralarındaki Farklar
Günümüzde çok çeşitte programlanabilir lojik ürünleri mevcuttur. Bunları üretim tasarımlarına göre değerlendirdiğimizde her tasarımın altında yine tasarımlarına göre farklı ürünler göze çarpmaktadır. Sınıflandırmalar sonucunda aşağıdaki temel tipler sayılabilr,
· SPLDs(Simple Programmable Logic Devices)
· CPLDs(Complex Programmable Logic Devices)
· FPGAs(Field Programmable Gate Arrays)
2.1.1 SPLD – Simple Programmable Logic Devices
SPLD’ler teknolojilerine göre farklı adlarlada bilinirler.Bunlar,
· PAL(Programmable Array Logic, Vantis)
· GAL(Generic Array Logic, Lattice)
· PLA(Programmable Logic Array)
· PLD(Programmable Logic Device)
SPLD’ler kapasiteleri en düşük, bunun sonucu olarakda en ucuz programlanabilir lojik ünitelerdendir. Bir SPLD ünitesinde 4 ile 22 arası hücre vardır. SPLD’ler bu özelliklerinden ötürü sadece 7400 serisi TTL ürünlerine göre tercih edilirler. SPLD’lerdeki her hücrenin bir diğeri ile direk olarak bağlantısı vardır. SPLD’lerdeki hücrelerin yapımında genellikle sigorta, EPROM, EEPROM veya FLASH gibi değiştirilemeyen bellek hücreleri kullanılır.
2.1.2 CPLD – Complex Programmable Logic Device
CPLD’ler teknolojilerine göre farklı adlarlada bilinirler.Bunlar,
· EPLD(Erasable Programmable Logic Device)
· PEEL(Programmable Electricallay-Erasable Logics)
· EEPLD(Electricallay-Erasable Programmable Logic Device)
· MAX(Multiple Array matriX, Altera)
CPLD’ler SPLD’lerle hemen hemen aynıdırlar. CPLD’ler sadece kapasiteleri bakımından SPLD’lerden üstündürler. Bir CPLD nin kapasitesi hakkında SPLD’lerin kapasitesitelerinin 2 ile 64 katı arasındadır denebilir. CPLD’lerde yüzlerce hücre vardır. Bu hücrelerin her CPLD’nin modeline göre 8 ile 16 arasında değişen herbir grubu bir fonksiyon bloğunda toparlanmış ve içerisinde hepsine direk bağlantıları yapılmıştır. Bu fonksiyon blokları arasında da iletişim sağlanmıştır. Fakat, CPLD’lerdeki fonksiyon blokları arası bu iletişim türünde kullanılan mantık, dolayısıylada CPLD’nin hızı üretici firmasına göre değişir. CPLD’lerin temel mantığı matris şeklinde anahtarlama yapabilen bir birime dayanır. Bu birimin anahtarlaması sonucu işlem yapılacak lojik blok seçilir.
CPLD’lerin birkaç PAL ünitesini kapsaması ve ABEL, CuPL, PALASM gibi bazı SPLD geliştirme dillerinide desteklemesi piyasanın CPLD kullanımına geçişini hızlandırmıştır.
Şekil 1. CPLD’lerin iç yapısı
2.1.3 FPGA – Field Programmable Gate Array
FPGA’larda MPGA(Mask Programmable Gate Arrays)’lar gibi bağlantıları çeşitli yollarla yapılan lojik bloklardan oluşmuştur. Bu bağlantılar PAL teknolojisinde olduğu gibi bazı arayüzelerle kullanıcılar tarafından programlanmışlardır.1985 yılında Xilinix firması tarafından ilk Sahada Programlanabilir Kapı Dizileri üretilmiştir. Ardından Actel, Altera, Atmel, Chip Express, Clear Logic, Cypress, DynaChip, Fast Analog Soltions Ltd, Gatefield, HenmerGres, Lattice, Lucent Technnologies, Military Aerospace Applications of Proggrammable Devices and Technologies Conference(MAPLD), Motorola, Orbit, Quicklogic, QuickTurn Vantis gibi firmalarda değişik özelliklere sahip FPGA’lar üretmeye başlamışlardır.
Üretilen bu FPGA’lar için demo kartları üreten firmalar ve kartları ise, ACS/Insight’s Demo Boards, AEE Engenharia Eletronica: AEE3298 – FPGA Evaluation Borad, Alpha Data Parllel Systems, Associated Professional Systems, Baldwin Technologies – Actel A1280CQFP Adap
ter, Bright Stars’ipEng’ne 1, Digitals PCI Pamette, NEF Design’s FPGA Downloader, NOVA Engineering’s Constellation FLEX 10K, Nallatech, Sun MicroSystem’s Laboratories, Reconfigurable Interface Cards, Virtual Computer Corporation firmalarıdır.
FPGA tasarım ve programlamasında kullanılan yardımcı programlar ve üretici firmaları ise, Accolade Design Automation, Acugen Software, Aldec, Alternative System Concepts(ACS), Aptix, Associated Professional Systems (APS), C2SynVHDL, Cadence Design Systems, Capilano Computing, CompiLogic Corporation, Data I/O, Design Acceleration (DAI), Embedded Solutions, Enable++ Development Environment(EDE), Envision Technologies, Escalade, Exemplar, Giga Operations, Handler, Ikos Systems, Institute for Computer Systems, InterHDL, MINC, Mentor Graphics, MicroSim, Model Technology, Morphplogic, Olympus Synthesis System, Orcad, Phase 3, Pilkington APR, Protel, Right Track CAD, Saros Technology, Snaketech, Synario, Synopsys, Tanner Research, Translogic, Transmogrifier C, VeriBest, ViewLogic, X Engineering Softwsre Systems(XESS), Zeelan Technology ve Zycad v.b.dir.
FPGA’larda hücreler arası iletişim mimarisi daha önce anlatılan üretim teknolojilerinden çok üstündür. Şekil 2’de de görülebileceği gibi bir FPGA boole fonksiyonlarının gerçekleştirildiği lojik bloklar ve bu blokların arasındaki iletişimi sağlayan bağlantı kanallarıyla giriş-çıkış bloklarından oluşmaktadır
Şekil 2. Genel FPGA yapısı
2.1.3.1 FPGA’ların Yapıları
FPGA’ları yapılarına göre başlıca iki grubta toplamak mümkündür. Bu yapılar aşağıda açıklandığı gibidir.
· “Look-Up Table(LUT)” (Doğruluk Tablolu) Tabanlı Yapı
“Look-up Table” tabanlı yapının temel bloğu “Look-up Table (LUT)” adı verilen ve m (M>1) değişkenli her Boole fonksiyonunu gerçekleştirebilen devredir. Verilen bir LUT yapısı için m genelde 3 ile 6 arasında olan sabit bir sayıdır. Bu yapı genelde m tane adres, 1 tane de veriyolu olan statik RAM ile gerçekleştirilir ve kısaca m-LUT olarak adlandırılır. LUT-tabanlı yapıda her temel blok bir ya da daha fazla LUT ile flip-flop gibi diğer lojik elemanlardan oluşur.
· Çoklayıcı (MUX) Tabanlı Yapı
MUX-tabanlı yapının temel bloğu çoklayıcıların çeşitli konfigürasyonlarından ve olabildiğince az VE ve VEYA gibi lojik kapılardan oluşur. Bu yapıdaki FPGA’ların içinde veri tutucu ve flip-flop gibi bellek elemanları bulunmadığından çoklayıcılar ile bu elemanların gerçeklenmesi gerekmektedir.
· Xilinx Firması Tarafından Üretilen FPGA’ların Mimarisi
Şekil 3. Xilinx FPGA’ların genel yapısı
Şekil 3’de Xilinx firması tarafından üretilmiş olan LUT-tabanlı FPGA’ların genel yapısı görülmektedir. Bu yapıdan da görülebileceği gibi bu FPGA’lar “Konfigüre Edilebilir Lojik Blok (Configurable Logic Block -CLM)” adı verilen programlanabilir blok dizileri ile satırlar ve sütunlar arasındaki bağıntı kanallarından oluşmaktadırlar.
Şekil 4. XC2000 CLB yapısı
Bu FPGA’ların XC2000, XC3000, XC4000, XC5200, XCS gibi değişik modelleri bulunmaktadır. Şekil 4’te yapısı görülen XC2000 CLB ile 4 değişkenli herhangi bir boole fonksiyonu veya toplam değişken sayısı en fazla 4 olan 3 değişkenli herhangi iki Boole fonksiyonu gerçekleştirilebilir. CLB’nin çıkışlarının ikisi de doğrudan veya biri flip-flop üzerinden olabilir.
XC3000 seerisi FPGA’lar XC2000 serisinin geliştirilmiş şeklidir.Bu FPGA’lar ile 5 değişkenli herhangi bir Boole fonksiyonunu veya toplam değişken sayısı 5 olan 4 değişkenli iki Boole fonksiyonu gerçekleştirilebilir. XC3000 serisinin CLB’leri ikisi de kombinezonsal ya da ardışıl olabilecek iki çıkışa sahiptir.
XC7000 serisinini her CLB’si ile beş değişkenli herhangi bir fonksiyon, değişkenleri birbirinden farklı 4 değişkenli herhangi iki fonksiyon ve 9 değişkenliye kadar bazı fonksiyonlar gerçekleştirilebilir.
· Actel Firması Tarafından Üretilen FPGA’ların Mimarisi
Şekil 5. Actel FPGA’ların genel yapısı
Şekil 5’te Actel firması tarafından üretilmiş olan MUX tabanlı FPGA’ların genel yapısı görülmektedir. Bu yapıdanda görülebileceği gibi FPGA’lar “Lojik Modül” adı verilen programlanabilir bloklar ile bunların arasındaki yatay bağlantı kanallarından oluşmaktadır.
Bu FPGA’ların Act-1, Act-2 gibi ilk üretilen 2 modellerinin iç yapısı Şekil 6’da gösterilmektedir. Act-1 lojik modülü ile 2 değişkenli herhangi bir fonksiyon, 3 değişkenli pek çok fonksiyon ve 4 değişkenli bazı fonksiyonlar gerçekleştirilebilir.
Şekil 6. Act-1 ve Act-2 Lojik Modülleri
2.1.3.2 Kombinezonsal Lojik Devrelerin LUT-Tabanlı FPGA’lar ile Gerçeklştirilmesinde Kullanılan Yöntemler
İstenen özellikleri gerçekleştiren bir lojik devre tasarlanırken maliyetinde minimum olması istenir. Lojik kapılar kullanılarak yapılan tasarımlarda maliyet ölçüsünün kapı ve giriş sayısı olmasına karşılık FPGA’lar kullanılarak yapılan tasarımlarda maliyet ölçüsü, gereken lojik blok sayısıdır. FPGA’lar ile tasarımın maliyetini gerçeklenecek fonksiyonun değişken sayısı belirlemektedir. Dolayısıyla lojik kapılar ile tasarlandığında maliyeti fazla olacak bir devre FPGA ile çok daha az bir maliyetle gerçekleştirilebilir. Ya da lojik kapılar ile değişik maliyetleri olan devreler FPGA ile aynı maliyette gerçekleştirlebilir. Örneğin,
f1 = X1| X2| X3| X4 X5 + X1| X2| X3 X4 X5|
f2 = X1| X2| X3| X4 X5 X6
f3 = X1 X2 + X2| X3
fonksiyonlarının 2 seviyeli VE-VEYA devresi ile gerçeklenmesi durumunda f1 için 12 giriş ve 3 kapı, f2 için 6 giriş ve 1 kapı, f3 için 6 giriş ve 3 kapı gerekmektedir. Aynı fonksiyonların 5-LUT tabanlı bir FPGA ile gerçeklenmesinde ise, f1 için 1 tane 5-LUT, f2 için 2 tane 5-LUT ve f3 için 1 tane 5-LUT kullanılır. Görüldüğ&u
uml; gibi lojik kapılarla gerçeklemede en fazla maliyeti olan f1 fonksiyonu FPGA ile en az maliyetle gerçekleşmektedir. Tersine lojik kapılarla en az maliyetle gerçekleştirilen f2 fonksiyonu ise FPGA ile en fazla maliyet ile gerçekleştirilebilmektedir.
· “mis-fpga” Yöntemi
“mis-fpga” yöntemiyle gerçekleme ilk olarak R. Murgai, R.K. Brayton, Y. Nishizaki, N. Shenoy ve A. Sangiovanni-Vincentelli tarafından gerçekleştirilmiştir. M-LUT yapısı için yötemin iki aşaması vardır. “Ayrıştırma” adı verilen ilk aşamada değişken sayısı m’den fazla olan fonksiyonlar (m-gerçeklenemez fonksiyonlar) m değişkenli alt fonksiyonlara (m-gerçeklenebilir) ayrılmaktadır. “Blok Sayısının Azaltılması (Block Count Minimization, BCM)” adı verilen ikinci aşamada ise uygun bazı alt fonksiyonlar aynı m-LUT’larla gerçeklenerek kullanılan m-LUT sayısı azaltılmaktadır.
2.1.3.3 ISP(In system/circuit programmable) ne demektir?
Her ikiside aygıtın devre üzerinde diğer komponentlerle birlikte programlanabileceği
özelliğini vurgulamaktadır. Hemen hemen tüm ISP aygıtları SRAM, EEPROM veya FLASH teknolojileri kullanılarak yapılandırılmıştır. SRAM kaynaklı tüm programlama işlemleri doğal olarak bir sistem kullanımı ile mümkündür. Şekil 7’deki programlanmadan sisteme monte edilme ve sistem içi programlama safhaları şematik olarak gösterilmiştir.
Şekil 7. Montaj ve sahada programlanmanın şematik gösterimi
FPGA kullanımındaki sistem gereksinimlerini, MMC-1200 FPGA’sının kullanılması gereken sistemde bulunması gereken taban özelliklerden bahsederek örnekleyebiliriz. MMC-1200 Motorola ailesine ait bir I/O peripheral FPGA kartıdır. Bu kartın kullanımı için Windows 95 veya Windows NT(V. 4.0) işletim sistemi ile çalışan, pentium veya eşdeğer işlemcisi, 32mb. ram’i, 50 mb. boş disk alanı, CD-ROM sürücüsü, RS232 seri portu ve renkli SVGA monitörü olan IBM veya uyumlu bir kişisel bilgisayara ihtiyaç vardır. FPGA kartlarının sistem montajlarında 5 volt giriş beslemesi, control ünitesinden bir data bağlantısı ile 8-64 Mhz arası bir zamanlayıcı bağlantısı yapılmalıdır. Şekil 8’de bir IPB(I/O peripheral board)’nin fiziksel yapısı görülmektedir. Bu kart üzerindeki led’lerin özel anlamları vardır. Örneğin DS4 ledi yandığında konfigürasyonun başarılı olduğunu, DS3 konfigürasyon eksikliğini veya hatasını, DS2 voltaj hatasını, DS1 ise voltaj başarısını gösterir. Led dışındaki bağlantı noktalarının ise detaylı açıklamaları Motorola’nın kullanıcı kitabınnda kolaylıkla bulunabilir. Şekil 9 ise XSOC bir FPGA’nın ram, osilatör, haberleşme ve görüntü portu ile bağlantıların nasıl olduğunu gösteren bir şemadır.
Şekil 8. FPGA IPB Fiziksel Yapısı
Şekil 9. Bağlantı şeması
· In-System Programlama Performansı
CPLD’ler iç yapılarındaki direk hücre erişimlerinin sağladığı bir özellik olan yüksek in-system performansları ile bilinirler. CPLD’lerin bekleme süreleri kümilatif değildir. CPLD’lerde her sinyalin bekleme süresi özeldir. Biri diğerini etkilemez. CPLD’lerde farklı noktalara gidecek olan sinyaller ihmal edilebilecek kadar küçük zaman farklarıyla hedeflerine varırlar. Tüm bunlar CPLD’leri in-system programlamada FPGA’lara karşı üstün kılan yönlerdir.
FPGA’larda da CPLD’lerin tam aksine sinyal bekleme süreleri kümilatiftir ve bir sinyaldeki gecikme süresi sonrakileride etkiler. FPGA’larda bus yapısı iki sinyalin aynı anda hedefe varmalarının garantilenememesinin diğer bir sebebidir. Çünkü ikinci sinyal hedefe varmak için yola çıktığında birinci sinyal, ikinci sinyalin kullanmak istediği bus’ı meşgul ediyor olabilir. FPGA’larda genellikle bir sinyal diğeri ile aynı anda varamaz. Bu gecikmenin nadiren CPLD’lerdeki ihmal edilebilen en küçük gecikmeden daha küçük olmasıda muhtemeldir. Şekil 10’da CPLD ve FPGA’ların sinyal erişim hızları grafiksel olarak karşılaştırılmıştır.
Şekil 10. CPLD ve FPGA’ların sinyal erişim hızlarının grafiksel olarak karşılaştırılması.
Buraya kadar anlattıklarımızda in-system performansları bakımından CPLD’lerin FPGA’lara karşı üstün olduklarını anlattık. Peki bu üstünlük neye göredir?
Burdaki karşılaştırma testlerinde tamamen aynı kapı sayısına sahip olabilecek CPLD ve FPGA’lar alınmıştır. CPLD üretimlerinde çok büyük sayıda kapı kullanılamamıştır. Dolayısıyla, CPLD’lerin yüksek hızına karşın, sınırlı kapasitesi, üretim hızı ve maaliyeti gibi kötü özelliklerinden ötürü büyük projelerde FPGA’lar tercih edilmektedir.
· Transmogrifier C
Transmogrifier C (tmcc) basit donanımsal tanımlamalar için bir compiler’dır. Transmogrifier C compiler’ı özel bir compiler’dır ve bununla her marka ve model FPGA’lar için program yazılamaz. Sadece Xilinx XC4000, Altera Flex 8000 ve Altera Flex 10000 FPGA’larını programlamak için kullanılabilir. Compiler SunOs 4.1.X, gcc kullanan Solaris 2.4 veya SUN’ın C compiler’ını kullanan Solaris 2.4 işletim sistemi altında çalışabilir. Aşağıdaki Transmogrifier C kod parçasını inceleyelim.
#pragma intbits 8
int lights, count;
lights = ~count;
Programın başındaki #pragma sembolü integer değişkenlerin 8 bit olduğunu compiler’a bildirir. Outputport rutini çip üstündeki 8 led’in pin numaralarını compiler’a bildirir. Daha sonra başlayan sonsuz döngüde ise count değişkeni her seferinde 1 artar. 0 çıkışı led’lerin sönmesine, 1 ise yanmasına yol açar. Bu dönüşüm içinde “~” ters alma işareti kullanılmıştır.
In-System programlamaya doğru artan ilgi karşısında programcılar ürünlerini yüksek kalitede, hızlı ve düşük fiyatla üretmek istemektedirler. FPGA’lardaki gelişmiş mimari, üretim tarzı ve maliyeti bu ürünü teknolojik pazar için cazip kılmaktadır. FPGA’lara piyasada avantaj sağlayan en büyük diğer özellik ise, sunduğu yüksek kapasitedir. Bu sebepten ötürü günümüzde FPGA kullanımı ile çok büyük projeler geliştirilme aşamasındadır.
← DC Motor Hız Kontrolü PID…
Duyular Hakkında Bilgi ( Algılayıcı… →