Programlanabilir Mantık -5- CPLD (Karmaşık Programlanabilir Mantık Aygıtı)

Karmaşık programlanabilir mantık aygıtları (CPLD) hücre tabanlı programlanabilir mantık aygıtları olarak günümüzde kullanılan iki teknolojiden biridir. Bir diğeri en sık duyduğumuz FPGA aygıtları olsa da CPLD aygıtların kullanım alanı hiç azımsanamaz. Yalnız günümüzde FPGA’ların ucuzlaması ve çeşitinin artması ile beraber CPLD aygıtlar pek gündeme gelmemektedir. Kendilerine has avantajları olan ve FPGA’lardan daha ucuz olan bu aygıtlar günümüzde dahi düşük ölçekli projelerde FPGA yerine rahatlıkla kullanılabilir. Daha önce zikrettiğimiz aygıtlar CPLD teknolojisinin yanında SPLD olarak zikredilmektedir. Simple programmable logic device, yani basit programlanabilir mantık aygıtları ve complex programmamle logic device yani karmaşık programlanabilir mantık aygıtları arasında büyük bir uçurum vardır. Onlarca kat daha fazla kapasitenin yanında aygıtların sunduğu diğer imkanlarla ve tasarım araçları ile CPLD çok daha üstün bir konuma gelmiştir. Günümüzde CPLD ya da FPGA kullanımı arasında çok da fark yoktur. Verilog veya VHDL ile ikisine de rahatça program yazılabilir. Bu yüzden üreticiler de eski ürettikleri mantık aygıtlarını üretmeyi bırakmış ve CPLD ya da FPGA üretir olmuştur.

Resim: Altera MAX II CPLD

CPLD aygıtları en basit haliyle onlarca SPLD aygıtının tek bir çip içerisine toplanması ve iç bağlantı ağı ile birbirine bağlanmasından meydana gelir. Bu iç bağlantının yapılması ve basit mantık aygıtlarının “basit” hücreler halinde bırakmasının sebebi ise, bu mantık aygıtlarının karmaşıklaşması için AND ve OR örgülerinin artması gereklidir. Bu örgünün sayısı artınca giriş ve çıkış sayıları inanılmaz artacak ve işin içinden çıkılmaz hale gelecektir. O yüzden bu basit aygıtları basit halde bırakmak ve bunların sayılarını artırarak işlem kapasitesini artırmak en doğru yoldur. Bu noktada bu basit aygıtlar “macrocell” yani makrohücre halinde CPLD aygıtının içerisinde toplanır ve arasında programlanabilir iç bağlantı ağı örülür. Bu mimarinin FPGA mimarisinin oluşmasına öncülük ettiğini söyleyebiliriz. İki mimari de temelde birbirine benzemektedir. CPLD aygıtları 50’den fazla SPLD (Örneğin PAL) entegresinden daha fazla işlem kapasitesine sahip olabilir. Yalnız CPLD aygıtları asla FPGA’lar kadar fazla işlem kapasitesine de sahip olamaz. Zaten fazla işlem kapasitesine sahip olan bir aygıt FPGA diye adlandırılmaktadır. CPLD aygıtları işlem kapasitesi yönünden FPGA’lara göre zayıf olsa da biz projelerimizde her zaman en son teknoloji ve en ileri aygıtı kullanmayız. Uygun aygıt dururken gereksiz yere pahalı bir aygıtı kullanmak da profesyonel bir yaklaşım değildir.

CPLD mimarisini en basit haliyle yukarıdaki şemada görüyoruz. Burada üç ana birimden söz etmek mümkündür. En önemlisi PLD benzeri mantık aygıtları burada fonksiyon bloku (FB) ya da mantık bloku (LB) olarak adlandırılmıştır. Bu mantık aygıtları önceden dediğimiz gibi mantık işlerini yürüten PAL, PLD aygıtlarına benzer yapıdaki bloklardır. Interconnect Maxrix adı verilen yapı ise iç bağlantı ağıdır. Bu iç bağlantı ağı bütün bu mantık blokları arasındaki bağlantıyı kurmasının yanında giriş ve çıkış işlemlerini de gerçekleştirir. I/O birimi ise bu mantık yapısının dış dünya ile irtibatını kuran yapıdır. Bu mantık blokları aynı PLD aygıtlarında olduğu gibi AND ve OR dizisi ve çıkışta flip-flop ve kontrol ünitelerinden meydana gelir.

Biz HDL ile program yazacağımız için bu kadar ayrıntı ile uğraşmamıza gerek yoktur. Bizim yazdığımız program donanımdan bağımsız olarak yazılmakta ve program vasıtasıyla donanıma aktarılmaktadır. Her CPLD aygıtı birbirinin aynısı mimariye sahip değildir. Her mimaride farklılıkları görmemiz mümkündür. Daha ayrıntılı olarak yazının sonunda MAX II entegresini teknik veri kitapçığından inceleyeceğiz.

CPLD aygıtlarının uygulama alanına geldiğimizde oldukça geniş bir kullanım alanının olduğunu görürüz. Bu geniş kullanım alanı FPGA’lara oldukça benzerdir. Yüksek hız ve zamanlama gerektiren uygulamalarda CPLD kullanılmaktadır. Ben pek rastlamasam da içini gördüğüm bir sinyal üretecinde MAX II entegresiyle karşılaşmıştım. Sinyal üreteci sinüs, üçgen, kare dalgayı istediğimiz frekansta verebiliyordu. CPLD aygıtları bilgisayar sistemlerinde de kullanılmıştır. LAN denetleyicisi, UART sürücü, grafik denetleyicisi gibi alanlarda CPLD kullanılmıştır. SPLD yani PLA, PAL, GAL gibi aygıtların kullanıldığı yerlerde çok daha hızlı bir seçenek olarak CPLD aygıtları kullanılabilir. CPLD aygıtları devre üzerindeyken aynı mikrodenetleyicilerde olduğu gibi programlanabilir. Böylelikle kolayca programlama imkanına sahip oluruz.

CPLD’ler hakkında yeteri kadar bilgiyi size verdiğimize göre şimdi örnek bir CPLD olarak Altera’nın MAX II ailesini inceleyelim. Altera’nın MAX II ailesine mensup birkaç model bulunmaktadır. Bu modellerin teknik özellikleri içerdikleri mantık bloklarının sayısına göre değişiklik gösterir. CPLD aygıtlarda bakmamız gereken en önemli nokta mantık bloklarının sayısı olmalıdır. Bu bize kapasiteyi verir. Şimdi aşağıdaki tablodan bu ailedeki entegrelerin özelliklerine kısaca bakalım.

https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/pt/max-v-n-ii-cpld-features.pdf

Burada makrohücre sayısının 192 ile 1700 arasında değiştiğini görmekteyiz. Bu hücre sayısına göre entegrelerin fiyatı artmaktadır. Ayrıca ayak-ayak arası gecikmenin miktarı da zamana bağlı uygulamalar için önem taşımaktadır. Pek çok CPLD aygıtları program hafızasını içinde barındırmaktadır ve bu mikrodenetleyicilerde olduğu gibi Flash hafızadır. Yani FPGA gibi ayrı bir RAM bellek bağlamaya ve uğraşmaya gerek yoktur. Mikrodenetleyiciye program atar gibi bunları programlayabiliriz. Ayrıca CPLD’ler mikrodenetleyiciler gibi kolaylıkla devre üzerinde programlanabilmektedir. Amatörler için 8-bit PIC veya AVR mikrodenetleyiciler nasıl kolaylık sağlıyorsa programlanabilir mantıkda da CPLD entegreler amatörlere kolaylık sağlamaktadır. O yüzden programlanabilir mantığa meraklı amatörlerin CPLD ile işe başlaması gereklidir.  Şimdi bu tablodan sonra Datasheet’e kısaca göz atalım. Tamamını size anlatmak mümkün olmasa da mimariye yönelik kısımları anlatacağım. Aşağıdan siz de datasheeti indirip okuyabilirsiniz.

https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/max2/max2_mii5v1.pdf

Mimarinin açıklandığı kısma baktığımızda MAX II aygıtının satır ve sütunlardan oluşmak üzere iki boyutlu bir yapıda olduğunu ve mantıksal dizi bloklarının bu iki boyutlu bağlantı ile birbirine bağlandığını okuyoruz. Bu mantıksal dizilerin her biri 10 adet mantık elementi içeriyor. LE adı verilen mantık elementi programlanabilir en küçük mantık yapısı olarak karşımıza çıkmakta. Bu mantık elementleri 10luk diziler haline geldiği zaman mantık blokları karşımıza çıkıyor. Bu mantık blokları da iki boyutlu iç bağlantı bağı ile birbirine bağlanmakta. MAX II aygıtının giriş ve çıkış ayakları ise bu mantık bloku satırları ve sutunlarının ucunda yer almaktadır. Kenarda yer alan giriş ve çıkış, ortada mantık blokları ve iç bağlantı ağından oluşmaktadır.

Resimde gördüğümüz mantık yapısını yukarıda anlattık. Bu mantık yapısının yanında mikrodenetleyicilerde olduğu gibi açılışta reset, program hafızası gibi özellikler bulunmaktadır. Datasheetin devamında mantık bloklarının ve mantık dizilerinin iç yapısından da bahsedilse de konunun yeterince uzamaması adına bunu incelemeyi okuyucuya bırakıyoruz.

CPLD’ler hakkında Türkçe internette olmadığı gibi İngilizce internette de bu kadar uzun bir kaynak yoktu. Bu kadar geniş bir kaynağı siz okuyucularımızın istifadesine sunuyoruz. Biz sonraki yazımızda görüşmek üzere.

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.