FPGA – Kısa Bir Bakış
Uzun zamandır aklımın bir köşesinde olan ve bir hayli merak ettiğim FPGA ile sonunda tanıştım. Uzun zamandır MCU kullanan biri olarak söyleyebilirim ki bu FPGA denen şey hem dijital elektroniği öğrenmek, hem gerçeklemek hemde gelişmiş uygulamalar yapmak için ilerde hayal bile edemeyeceğim derecede katkı sağlayacak. Üzerinde MCU tasarlamaktan tutunda sinyal ve görüntü işlemeye kadar bir çok alanda kullanılabilecek bu yapı gerçekten enteresan.
Bilgisayar ve Gömülü Sistemler ortamında yazılıma alışmış biri olarak FPGA yapısında donanımı bizim tasarlıyor olmamız çok hoşuma gitti çünkü donanımsal kısıtlamalar ve soru işaretleri artık ortadan kalktı fakat FPGA kitleri ülkemizde oldukça pahalı. Üzerinde bir çok modül bulunan kartlar hem çok karmaşık ve göz korkutucu gözükmekte hemde bir öğrencinin erişemeyeceği maddi seviyelerde. Biraz araştırmak yaptıktan sonra Altera firmasının bir FPGA modülünü kullanmaya karar verdim. Bunun için Programmer/Debugger olarak Altera USB Blaster kullanılabilir. Aliexpress de üzerinde sadece FPGA ve gerekli güç birimi olan ve pinleri header ile dışarı verilmiş olan basit bir kartı ve programlayıcısını aldım. Quartus II ortamında bir giriş/çıkış testi yaptım. Programın arayüzüne alışmak oldukça kolay fakat bu hemen MCU’da yaptığımız şeyleri yapabileceğimiz anlamına gelmiyor. Gerçekten iyi bir dijital dizayn bilgisine sahip olmamız gerekiyor. Kullandığım donanım aşağıda yer alıyor. Toplamda 20$ civarı bir ücret tuttu.
FPGA Board
Altera USB Blaster
Bu kart üzerinde bulunanlar
- FPGA : EP4CE6E22C8
- Flash : M25P16
- Power : 3.3V/2.5V/1.2V Regulator
- Crystal : 50 MHz (Pin 23)
- LED1 (Pin 98)
- LED2 (Pin 87)
- S1 (Button Pull-Up) (Pin 24)
- S2 (Button Pull-Up) (Pin 25)
- RST (Button) (Pin 25)
- Sockets : JTAG/AS/Power DC/Mini USB/Header
FPGA sinyallerini örneklemek için simülasyon yapmak mümkün fakat kart üstünde çalışmak tecrübe kazanmak açısından daha iyi olacak gibi duruyor. Bu yüzden çıkışları örnekleyebilmek adına elimizin altında bir tane Logic Analyzer bulunması gerekiyor. Donanım kısmı bu kadar hadi yazılıma geçelim.
Ben ilk gazı VHDL ile verdim. Tasarım olarak beğendim sanırım VHDL ile devam edeceğim. Basit olarak prosedür şöyle
- Proje oluştur
- VHDL Kodunu yaz
- Pin ayarlamalarını yap
- Programı yükle
Test için şu kodu hazırladım.
VHDL Code
library IEEE; use IEEE.STD_LOGIC_1164.all; entity FPGA_TEST1 is port ( LED1 : out STD_LOGIC; LED2 : out STD_LOGIC; BUTTON1 : in STD_LOGIC; BUTTON2 : in STD_LOGIC ); end FPGA_TEST1; architecture karakter of FPGA_TEST1 is begin LED1 <= BUTTON1; LED2 <= BUTTON2; end karakter;
Burada yaptığım şey sadece butonları 2 adet LED’e bağlamak oldu.
Tasarlanan donanımı şematik olarak görmek için ise RTL Viewer bölümüne bakabiliriz.
RTL Output
Bu ilk bakışta hayatında ilk defa FPGA kullanan biri olarak bakış açımı izah etmeye çalıştım. Bir çoğum için kırılma noktası olan “Hello World”, “LED Blink” gibi ilk anı bu şekilde özetleyebiliriz. İlerledikçe bir takım notlar paylaşmayı düşünüyorum fakat şuan için yapacak çok işim var.
Şimdilik bu kadar. (Ben bu aletle neler yaparım neler! Kafamda neler canlandı 🙂 )
Esen kalın.
Son yorumlar