FPGA ile İlgili Terimler

Bu bölümde kısaca FPGA ile ilgili terimlerin anlamlarını vermeye çalıştım. FPGA ile ilgili teknik terimler hep İngilizce oldukları için Türkçe'sini yazamadıklarım oldu. Türkçelerini bulamadıklarım için kusura bakmayın.

Aslında bu terimlerin anlamları üzerinde daha fazla durulabilir fakat dediğim gibi çok İngilizce terim kullanmak gerektiği için ayrıntıların açıklamaları anlamsızlaştıracağını düşündüm. Ayrıntısını merak ettiğiniz terimin anlamını aşağıdaki yorum kısmından sorabilirsiniz.

Field Programmable Gate Array (Alan Programlanabilir Kapı Dizini)

İçerisinde birçok programlanabilir devre elemanına ve programlanabilir yollara sahip olan entegredir (chip,yonga). Programlanma özelliği sayesinde aynı FPGA ile farklı devreler (işlemci, ekran kartı, sayaç …) üretibilir.

İlgili Link: FPGA

Register Transfer Level

Dijital devreleri tanımlamak için kullanılan yüksek seviye donanım tanımlama dillerine verilen isimdir

Very High Speed Integrated Circuit Hardware Description Language

Bir RTL dilidir.

İlgili Link: vhdl

Bir RTL dilidir

Bir RTL dilidir.

Verilog'a yeni özellikler eklenerek oluşturulmuştur. Daha çok simulasyon için kullanılmasına rağmen, sentezlenebilir kodlar da yazılabilir.

C++ dilinin altkümesi kütüphanelerden oluşur. Simulasyon amaçlı kullanılan bir dildir. Aynı anda gerçekleşen olaylar simule edilebilir. İlgili Link: |SystemC|

RTL diliyle tanımlanmış devrenin And, Or, Flip-Flop gibi mantıksal devre elemanlarından ve bağlantılarından oluşan devrenin oluşturulmasıdır.

Tanımlanan RTL devresinin benzetim(simulasyon) yapılarak doğrulanmasına denir.

RTL kodunun sentezlenmeden simulator ile simulasyonunun yapılmasına denir.

Post-Synthesis Simulation

Sentezlenen RTL kodundan oluşan devrenin simulasyonuna denir.

Post-Translate Simulation

RTL sentezlendikten sonra çıkan devrenin FPGA kaynaklarını kullanacak hale getirildiği aşamaya Port-Translate denilebilir. Bu aşamada kaynakların gecikmelerini de hesaba katarak yapılan simulasyona denir.

FPGA'e yüklenecek hale getirilmiş tasarım dosyası

Look-up table

Taramalı tablo, adreslenebilir bir RAM/ROM'dur. Her bir adrese bir değer yazılarak oluşturulan bu yapıya toplam adres kadar değer kaydedilebilir. FPGA'ler içerisinde combinatorial (kombinasyonal-katışımsal) olan AND/OR/XOR (ve/veya/yada) gibi yapıların oluşturulmasını sağlar

Digital Signal Processing Block (Sayısal İşaret İşleme Bloğu) / Multiply-Accumulate Block (Çarpma-Biriktirme Bloğu)

FPGA'lerin içerisinde çarpma ve toplama işlemlerini yapmak için kullanılan kısımlardır. Aslında bu işlemler VE/VEYA kapıları birleştirilerek de yapılabilir (eski FPGA'lerde böyledir) fakat bu durumda devrenin frekansı yüksek olamaz. Onun için çarpma ve toplama işlemlerinde bu işlemlere özel blokların kullanılması daha uygundur . Mesela Virtex-6'da çarpma işlemi bu blok ile 450 MHz gibi hızlarda yapılabilirken bu blok kullanılmadan yapılan aynı çarpma işleminin yapılabileceği en yüksek hız 50 Mhz'lere düşecektir. Sentez araçları eğer uygun kodlama yapılmışsa otomatik olarak DSP block'ları kullanır. Fakat FPGA'lerde bu blokların sayısı sınırlıdır ve sayıları arttıkça FPGA'in fiyatı da artar. İçlerindeki çarpma-biriktirme (multiply-accumulate) yapısı sayısal işaret işleme (digital signal processing = DSP) tekniklerine uygun olduğu için adına DSP blok denir.

sezgin, 2013/03/13 12:51

Merhaba Aydın bey,

Açıklamalarınız için çok teşekkürler. Fakat tam olarak çözemediğim bir nokta var. LUT tam olarak nedir? Ne işlem yapar? Ne zaman, nerede ve niçin kullanırız? Bu konu hakkında açıklama yaparsanız sevinirim.

İyi çalışmalar.

Aydin Coskuner, 2013/03/22 15:19, 2013/03/22 15:20

Merhaba Sezgin Bey,

LUT, Look up Table'ın kısaltmasıdır ve bir çeşit adreslenebilir ROM (Read only Memory) yapısını ifade eder. Bu yapıların içinde gerçekten bir tablo gibi (ROM) değerler/sonuçlar tutulabildiği gibi bu yapılar FPGA üzerinde herhangi bir combinational devre yapmak için de kullanılabilir.

Daha detaylı şöyle örnek vereyim. VHDL/Verilog ile yazılan kod sentezlendiğinde (örneğin Xilinx XST ile) devrenin bir kısmında ortaya ROM çıkmış olsun. Yani her bir adreste farklı bir verinin olduğunu düşünelim. Map operasyonu sırasında bu ROM'un boyutu küçük ise için LUT yapılarına dönüştürülerek FPGA üzerinde bulunan Slice'lara uygun hale getirilir ve ROM fonksiyonu gerçekleştirilir (tabi çıkan ROM büyükse hazır olan BlockRAM yapısı kullanılacaktır).

İkinci durum da combinational bir fonksiyonun gerçekleştirilmesi için LUT yapısının kullanılmasıdır. Örneğin D = A and B and C fonksiyonunu düşünelim. Bu fonksiyonda A,B,C'nin tüm kombinasyonları hazırlanarak karnaugh map'i çıkarıldığında sonuç olan D sutununda sadece 8. index için 1 sonucu çıkacaktır. Bu tabloyu düşünürsek LUT adresini A,B,C bitlerinin birleşiminden oluşturup, LUT içindeki değeri de karnaugh map'e göre D değeri ile doldurursanız fonksiyonu elde edebileceğiniz bir yapı oluşturmuş olursunuz. Bu yapıyı ROM gibi kullanarak A,B,C ile adreslediğinizde data çıktısı olan bit D'yi verecektir. Şuradaki truth table tablosuna bakarsanız daha iyi anlaşılabilir: http://en.wikipedia.org/wiki/Karnaugh_map

Tabii çoğu zaman yukarıda anlattıklarımı detaylı logic seviyesinde düşünmenize gerek olmaz. Çünkü sentezleyici ve mapper size bu yapıları oluşturur. Özellikle combinational bir devre yaparken nasıl yazdığınız artık sentezleyiciler geliştiğinden kritik olmaz. Her halükarda size o fonksiyonu sağlayacak devreler üretilecektir. Fakat RAM/ROM gibi bir yapıya ihtiyacınız varsa bunu doğru kodlayarak doğru yapılara oturmasını sağlamakta yarar var.

İyi çalışmalar.

Yorumunuzu girin:
0 +6 = 
 
  • projelerim/elektronik/fpga/terimler.txt
  • Son değiştirilme: 2019/05/08 21:25
  • (Dışarıdan düzenle)