top of page

VHDL İLE FPGA PROGRAMLAMA

Tuğbanur Akgün

Güncelleme tarihi: 5 Nis 2023

Merhaba arkadaşlar bu kurs serisinde VHDL dili ile FPGA programlamayı öğreneceğiz. Kodlarımızı Vivado programında yazacağız. Basys 3 kartında kodumuzun doğruluğunu test edeceğiz.


İlk olarak genel bilgileri öğrenelim.


FPGA NEDİR?


FPGA (Field Programmable Gate Arrays), " Alanda Programlanabilir Kapı Dizileri " anlamına gelen yarı iletken teknolojisine sahip cihazlardır.


FPGA çipleri üretim aşamasından sonra kullanıcı/tasarımcı tarafından yapılan tasarıma göre yapısının değiştirilebileceği tümdevrelerdir.


FPGA çipleri birbirinden bağımsız bir şekilde üretilmiş 1 K/M transistör olarak düşünülebilir


Temel olarak kullanıcının bir ya da daha fazla mantıksal işlemlerini gerçekleştirmek için de programlayabileceği donanım devresidir.


Tasarımcının istediği devreye göre bu transistörler FPGA teknolojisi ile birbirine bağlanarak istenilen tasarım gerçekleştirilir


FPGA YAPISI


Kullanıcının tasarladığı lojik devreye göre, lojik bloklar ve aralarındaki

bağlantılar programlanmaktadır.


Konfigüre edilebilir lojik bloklar: Configurable Logic Blocks (CLB)


CLB, kullanıcının oluşturmak istediği lojik devre için fonksiyonel elemanlar sağlamaktadır.


Giriş Çıkış Blokları: Input/Output Blocks (IOB)


IOB çipin iç sinyal hatları ile çipin pinleri arasında bir arabirim sağlar.


Arabağlantılar( Interconnections) ,CLB ve IOB giriş çıkışları arasındaki yönlendirmeyi tayin edmektedir.




Programlanabilir mantık kapıları, genel olarak bellek ve ya diğer öğelerden de meydana gelmiştir.FPGA nın en önemli olan ve de ayırt edici özelliği pararel işlemler yapabilme kabiliyeti olmaktadır.


Paralel işlem yapmak nedir?


FPGA programlarken akılımızdan çıkarmamamız gereken belkide en önemli nokta budur. Paralelden kast edilen tüm satırların aynı anda çalıştığıdır. Bu da FPGA programlama dili olan VHDL i bir çok yazılım dilinden c, c++, python gibi dillerden ayırmaktadır. Çünkü bu diller sıralı bir şekilde çalışır ama VHDL de codlar eş zamanlı olarak çalışır.



HDL NEDİR?


VHL (Hardware Description Language), " Donanım Tanımlama Dili " bir donanım parçasını modellemek için kullanılan yazılım dilidir. VHDL ile Verilog en yaygın kullanılan iki türüdür.


Donanım tasarlama dillerinin iki temel amacı vardır.


1) Dijital devreleri ve sistemleri modellemek için kullanılabilirler. Başka bir deyişle herhangi bir dijital devreyi tanımlayan gerekli olan her şeyi sağlarlar.


2) Bir çeşit devre modeli, devrenin sonraki simülasyonuna ve testine izin verirler.


VHDL NEDİR?


VHDL (Very High-Speed Integration Circuit) , "Çok Yüksek Hızlı Entegrasyon Devresi" HDL'nin (Donanım Tanımlama Dili) kısaltmasıdır. Karmaşık dijital devrelerin davranışını tanımlamak ve simüle etmek için kullanılan bir IEEE (Elektrik ve Elektronik Mühendisleri Enstitüsü) standart donanım tanımlama dilidir.


VHDL, muazzam miktarda veriyi işleyebilen işlevlerin tasarımına ve uygulanmasına izin verebilen çok heyecan verici bir dildir. Nispeten düşük maliyetli ve düşük güçlü bir donanım kullanarak.


Dahası, gerçekten etkileyici olan şey, basit VHDL modülleri aracılığıyla şunları yapabilirsiniz:


  • İletişim kurmak gibi temel ns düzeyindeki mantık olaylarına doğrudan erişime sahiptir.

  • Karmaşıklık grafikleri görselleştirmek için bir USB bağlantı noktası veya bir VGA monitör kullanarak yapabilirisiniz.

UYARI :

Yüksek seviyeli bir dil olan VHDL kodu yazma girişimleri style genellikle kimsenin anlamadığı bir kodla sonuçlanır. Ve bu çok normaldir. Eğer yazdığınız kod diğer sıralı dillere benziyorsa python gibi, o kötü yazılmış bir koddur. Ve VHDL çok geveze bir dildir :)


FPGA yı diğer sayısal işaret işleme birimlerinden (CPU DSP gibi) popüler yapmasının nedeni ;

  • Yüsek işlem gücü

  • Düşük güç tüketimi

  • Düşük gecikme

  • Yüksek paralellik özellikleridir.


FPGA nın Avantajları ;

  • Hızlı ilk Üretim

  • Yüksek Hız

  • Esneklik

  • Paralel İşlemler

  • Düşük Maliyet


FPGA bir çok farklı firma tarafından üretilir ;

  • Xilinx

  • Altera

  • Actel

  • Anadigm

  • Atmel

  • Leopard Logic

  • Quick Logic

Ama Xilinx firmasının üretmiş olduğu kartlar daha popülerdir. Ve FPGA üretim pazarının büyük bir oranını kapsar. Biz de bu yüzden Xilinx firmasının bir kartı olan Basys 3 kartını kullanacağız.


Xilinx Ailesi




Basys 3 Kartının Özellikleri



  • 5200 dilimde 33280 mantık hücresi(her dilim 4 tane 6 ınput LUT lar ve flip flop)

  • 1.800 Kbit hızlı blok RAM

  • Çip üzerinde analogdan dijitale dönüştürücü (XADC)

  • 450 MHz'i aşan dahili saat hızları

  • 90 DSP dilimi

Basys3 ayrıca aşağıdakiler de dahil olmak üzere gelişmiş bir bağlantı noktası ve çevre birimi koleksiyonu sunar:

  • 16 tane switch

  • 16 tane LED

  • 5 tane pushbutton

  • 4-digit 7-segment display

  • 3 tane Pmod connectors

  • XADC signalleri için Pmod

  • 12-bit VGA output

  • USB-UART Bridge

  • Serial Flash

  • FPGA programlama ve iletişim için Digilent USB-JTAG bağlantı noktası

  • Mouse, klavyeler için USB HID Host ve bellek çubukları


Kartın Datasheet özellikelrinden daha fazla bilgi öğrenebilirsiniz.


VIVADO PROGRAMI


Vivado programı lisanslı bir programdır. Direk Xilinx sitesinden indirmek istediğiniz sürümü indirebilrsiniz.


Programı indirdikten sonra klasik program setup adımlarını izliyoruz. Programın setup ını yaparken aşağıdaki gibi bir sayfa gelecektir.




Programın kurulumu bittikten sonra create new project dedikten sonra gerekli adımları izleyin. Kart özellikleri için seçmeniz gerekenler ;


Catogory => General Purpuse

Family => Artix 7

Package =>Cpg236

Speed => -1




Bu işlemleri yaptıktan sonra Design source menusunden dosyanızın üstüne çift tık yapın ve dosyanızı açın. Artık VHDL kodlmaya hazırız :)


FPGA TASARIM YÖNTEMLERİ ŞEMATİK


Şematik tasarım, tasarımcının devreyi grafiksel olarak modelleyebilmesine imkan sağlamaktadır.

Basit ve temel devre tasarımlarında tercih edilmektedir



Resimden de gördüğünüz gibi biz kod yazıyoruz ama ilk adıma baktığımızda lojik kapıların olduğunu görüyoz. Yani biz kod yazacağız ama yaptığımız her işlem lojic kapılar tarafından yönetiliyor. O zaman başlamadan lojik kapıları bir hatırlayalım.



LOJİK KAPILAR

Çıkış denklemi yazılırken çıkışın 1 olduğu değerler yazılır. Ve 1 ler kendisidir. 0 lar ise değilidir. A' demek A nın değili demektir.


VE KAPISI


A B C

0 0 0

0 1 0

1 0 0

1 1 1


C = A.B



VEYA KAPISI


A B C

0 0 0

0 1 1

1 0 1

1 1 1


C = A'B + AB' + AB

C = A + B



DEĞİL KAPISI


A C

0 1

1 0


C = A'



VE DEĞİL KAPISI



A B C

0 0 1

0 1 1

1 0 1

1 1 0


C = A'B' + A'B + AB'

C = (AB)'



VEYA DEĞİL KAPISI


A B C

0 0 1

0 1 0

1 0 0

1 1 0


C = A'B'

C = (A + B)'



ÖZEL VE KAPISI


A B C

0 0 0

0 1 1

1 0 1

1 1 0


C = A'B + AB'



Özel VEYA KAPISI


A B C

0 0 1

0 1 0

1 0 0

1 1 1


C = A'B' + AB


İlk giriş için bu kadar yeterli olduğunu düşünüyorum bir dahaki seriden itibaren kod yazmaya başlayabiliriz.




 
 
 

Comentários


SUBSCRIBE VIA EMAIL

  • Facebook
  • LinkedIn
  • Twitter
  • Instagram

Thanks for submitting!

© 2035 by Salt & Pepper. Powered and secured by Wix

bottom of page