Digilent BASYS2 FPGA Kurulum ve Giriş



Merhaba Arkadaşlar,

   Günümüzde FPGA'ler yaygın olarak kullanılmaktadır. FPGA, programlanabilir mantık blokları ve bu bloklar arasındaki ara bağlantılardan oluşan ve geniş uygulama alanına sahip sayısal tümleşik devrelere verilen isimdir. FPGA'lerin en önemli avantajı paralel işlemleri aynı anda gerçekleyebilir. Bu özelliği sayesinde savunma sanayii'nde, tıbbi cihazlar gibi alanlarda sıklıkla kullanılırlar. FPGA'ler şematik tabanlı yada yazılım tabanlı olarak programlanabilir. Yazılım olarak en sık kullanılanlar Verilog ve VHDL'dir.

   Bu yazımda sizlere Basit bir FPGA uygulaması hakkında birkaç bilgimi paylaşacağım. İlk olarak kullandığım geliştirme kiti Digilent firmasının BASYS 2 kiti. Kit içeriğinde Xilinx firmasının Spartan 3S100E ailesine ait FPGA mevcut. Bu kit üzerinde ilk olarak gerçeklediğim ve denemiş olduğum bir uygulamayı sizlerle paylaşacağım. Gün geçtikçe uygulama düzeyleri daha da artacaktır. Diğer uygulamalar hakkında yine bloglarıma devam edeceğim.



   Öncelikli olarak uygulamamızı gerçeklemek için bir programa ihtiyacımız var. Bu program Xilinx firmasının ISE Design programı. Kısaca kurulum hakkında bilgi de vermem gerekirse;

1) http://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/design-tools.html  bu linke tıklayarak Xilinx firmasının sitesine giriyoruz. Burada ISE Design Suite - 14.7 Full Product Installation sekmesine geliyoruz. Görüldüğü gibi hem windows hem de Linux işletim sistemleri için sürüm mevcut. 6.18 GB'lık windows dosyasını indiriyoruz. Burada karşımıza hesap oluşturma linki çıkacaktır. Hesap kaydı yapmak gerekiyor. Öğrenci iseniz okul mail adresiniz ile kolayca hesap oluşturabilirsiniz. Hesap oluşturma işleminden sonra indirme başlayacaktır.

2) Dosya sıkıştırılmış şekilde inecektir. Dosyayı bir klasöre çıkartıyoruz. xsetup.exe dosyasına tıklayarak kuruluma başlıyoruz.

3) Welcome arayüzü karşımıza çıkacaktır. Next'e basarak ilerliyoruz. Ardından lisans için bir sayfa çıkacaktır kutucukları onaylarak next diyoruz. Daha sonra Select Products to Install arayüzünde ISE WebPACK seçeneğine tıklayarak next diyoruz.

4) Sonraki aşamada Select Installation Options arayüzü bizi karşılayacaktır. Burada herhangi bir değişiklik yapmamıza gerek yok next diyoruz.

5) Sonraki adım ise programı nereye kaydedeceğimiz. Burada Browse seçeneğine tıklayarak istediğiniz yeri seçebilirsiniz. Sonra next'e tıklıyoruz.

6) Kurulum başlaması için Install seçeneğine tıklıyoruz ve kurulum başlıyor. Bu işlem 20-30 dk sürebilir.

7) Kurulum bittikten sonra karşımıza lisans sayfası çıkacaktır. Xilinx ISE'nin WebPACK versiyonu ücretsiz olmasına rağmen yinede lisans belirtilmelidir. Yükleme bittikten sonra açılan pencerede Get Free ISE WebPACK Licence seçeneğini seçiyoruz. Next' tıklıyoruz.

8) Önümüze çıkan pencerede Connect Now seçeneğine tıklıyoruz. Ardından tarayıcı açılıyor. Bu açılan xilinx sayfasında daha önce oluşturulmuş hesabınızla giriş yapıyorsunuz. Ardından size nerede kullanacaksınız gibi bilgiler çıkıyor. Oradaki seçenekleri kendinize göre seçiyorsunuz. Bir öğrenci projesi şeklinde hareket ederek seçerseniz herhangi bir sıkıntı olmaz.

9) Açılan sayfada ISE Design Suite: WebPACK licence kısmını seçip Generate Node-Locked Licence seçeneğine tıklayınız.

10) Ardından açılan sayfada Congratulations yazısını gördüğünüzde işlem tamam demektir. Mailinize lisans dosyası gönderiyorlar. Xilinx.inc lisans dosyasını yükleyerek artık işlemlere son vermiş oluyorsunuz.

   Karmaşık duruyor olabilir. Ancak kurulum sırasında akışa göre zorlanmazsınız diye düşünüyorum.

   Artık işlemleri yapacağımız programı yükledik. Ama işlemimiz hala tamam değil. Şematik çizim gibi işlemleri yapabiliriz ama gerçekleyemeyiz. Bu yüzden BASYS 2 kiti için Digilent firmasından yükleme yazılımını indirmemiz gerekiyor.

   Yükleme işlemi için indirmemiz gereken program Adept Installation. Digilent firmasının web sayfasında bu yazılım mevcut ve ücretsizdir. Kısaca bununda aşamalarına bakarsak;

1) https://reference.digilentinc.com/digilent_adept_2#software_downloads bu linke tıklayarak web sayfasına giriyoruz.

2) Adept 2 for Windows seçeneğine gelinir. İlk sırada bulunan Adept 2.16.1 System, 32/64bit,windows seçeneğine tıklanarak yaklaşık 21 MB'lık bir dosya indirilir. Bu dosyanın kurulumu çok basit. Direkt setuptan kurulumu yapabilirsiniz.

3) Yazılımı test için BASYS 2 kiti USB kablosu ile PC'ye bağlanır. Adept programına girilir. Arayüze girdiğimizde eğer kit algılanmışsa FPGA ve PROM iki adet sekme görünür. Bağlı değilse zaten bir şey görülmez.

4) Ardından test için programda yukardaki sekmelerden Test sekmesine gelinir. Start Test kısmına tıklanır. Bu aşamda FPGA kitinde Power pininin ordaki kırmızı led yanıp söner. Aynı zamanda 7 segment displaylerde ise 0-15 arası sayıcı çalışır. FPGA kiti üzerindeki switch leri on off yaparak Adept arayüzündeki değişimi görebilirsiniz.

   Zorlu bir kurulum serüveninden sonra artık program ile ilgili daha detaylara girebiliriz.

   Masaüstünde bulunan ISE Design Suite 14.7 programına tıklıyoruz.

   Tip of the Day penceresi önümüze çıkıyor. OK diyerek geçiyoruz.

Hemen yeni bir proje oluşturmaya başlayalım.

Sırasıyla yukarıdan File-->New Project seçeneklerine tıklıyoruz. Create New Project penceresinde Name kısmına proje ismimizi veriyoruz. Ben ilk örneklerim olduğu için deneme ismini veriyorum. Location kısmına dosyanın konumunu giriyoruz. Description kısmına ise herhangi bir tanımlama yapabilirsiniz. Top level-source type kısmında schematic'i seçerek next diyoruz. Ardından aşağıdaki gibi bir sayfa açılıyor. Ayarlamaları resimdeki gibi yapıyoruz.

   Farklı bir kit ise burdaki gerekli yerleri değiştirmeniz gerekecektir.



   Bu adımıda tamamladıktan sonra Next diyoruz. Sonraki sayfada ise Finish diyerek bitiriyoruz. 

Aşağıdaki gibi boş bir sayfa açılıyor. 


   Ekran boş olduğu için çalışma dosyası eklememiz gerekiyor. Burada yukarda resimde görünen deneme3 yazısının hemen altında bulunan xc3s100e-Scp132 sekmesine gelip sağ tıklıyoruz. Tıkladıntan sonra New Source diyoruz. Açılan pencerede soldan schematic'i seçiyoruz yanda ise File Name'e isim veriyoruz. Sonra Next diyoruz en son ise Finish diyoruz. 


   Yukardaki gibi bir sayfa karşımıza çıkar. Yanda şematik çizim için bir alan vardır. Solda ise kütüphane, dizayn gibi sekmeler yer alır. Symbols sekmesinin hemen yanında bulunan oklar ile bu seçenekler değiştirilebilir. Bu oklarla Design sekmesine geliyoruz. 


   Yukardaki gibi bir ekran karşımıza çıkacaktır. Sağdaki kısımı yukardan büyüteç ile yaklatırabilirsiniz. Şimdi birkaç lojik kapı ile basit bir uygulama gerçekleştireceğiz. Şematik kısmının hemen yanında kullanım için yazı sekmesi, ara bağlantı sekmesi gibi işlevler mevcut. Şimdi öncelikle Files ve Libraries sekmesinin yanındaki oktan Symbols sekmesine geliyoruz. 


   Symbols sekmesine gelince yukardaki ekran görünür. Burada aramak istediğimiz elemanı Symbol Name Filter kısmına yazarak arayabiliriz. Buradan and2 yazarak şematik alanımıza bir adet ve kapısı alıyoruz. Sonra or2 yazarakta şematik alanımıza 2 adet veya kapısı alıyoruz. Aşağıdaki şekilde görüldüğü gibi düzene koyuyoruz. Yada istediğiniz şekilde bir araya getirebilirsiniz.


   Bu işlemi yaptıktan sonra şimdi bağlantı kısmına geliyoruz. 

   Yukarda Add Wire sekmesine tıklayarak şekildeki gibi bağlantı yapıyoruz.

   Şimdi sırada bu boş bıraktığımız uçlara giriş-çıkış ekleme var. Add Wire sekmesinin hemen birkaç satır altında Add I/O Marker seçeneği var. Buraya tıklıyoruz. 




   Add I/O Marker seçeneğine tıkladıktan sonra boş pinlerin üzerine geliyoruz ve tıklıyoruz. Yukardaki gibi giriş ve çıkışımızı belirliyoruz. İlk başta isimler XLXN_? şeklinde karşımıza çıkacaktır. İsmi değiştirmek için;
XLXN_? üstüne 2 kez tıkla. Ekrana gelen kategoride solda Nets kısmını seç. Name kısmına gel ve istediğini yaz. Ben girişlerimi SW0 , SW1 ve SW2 olarak, Çıkışımı ise LED0 olarak değiştiriyorum.
*? olan yerlerde sırayla rakamlar yazacaktır.

   Şimdi burda ne yapmış olacağız. Giriş değerlerine göre lojik kapılar çıkış üretecek. Ne gerek var bu kadar işleme normal entegre kullansak daha kolay diyebilirsiniz. Fakat bu en temel giriş seviyesinde. Bu işlemlerin 50-60 sayfa şematik halde olanları mevcut. O zaman işler oldukça karışıyor. Burda Ben XLXN_5 ismini SW0, XLXN_6 ismini SW1, XLXN_7 ismini SW2 ve XLXN_8 ismini LED0 olarak değiştirdim. 

   Yukarda çizilen devreyi Proteus yada benzeri simülasyon programlarına kurarak çıkış değerlerine bakabilirsiniz. Yada Xilinx ISE programındaki Simülasyon kısmını kullanabilirsiniz.

   Bu devreye göre doğruluk tablomuz aşağıdaki gibi olacaktır. 

   Yukarıda görüldüğü gibi switch değerlerine göre çıkış ledimiz 2 kez lojik 0, 6 kez ise lojik 1 değeri üretmektedir. Farklı tipte devreler kurarak farklı lojik değerleri elde edebilirsiniz.

   

   Bir sonraki işlemimiz için deneme3 (deneme3.sch)  sekmesine gelerek sağ tıklıyoruz ve New Source diyoruz. Sonra soldaki bloklardan Implementation Constraints File seçeneğini seçiyoruz ve File Name kısmına deneme3 yazıyoruz. Next ve Finish diyoruz. Ardından deneme3 şeçeneğinin altına yine aynı isimde .ucf uzantılı bir dosya ekleniyor. 

   .ucf uzantılı dosyaya tıklıyoruz ve ekrana kod yazılımı yapmak için bir defter açılıyor. Bu deftere kullandığımız giriş çıkışları eklemek için bazı değerleri girmemiz gerekiyor. 



   NET kısmına bizim kullandığımız isimler LOC kısmına ise FPGA'deki bu pinlerin yerlerini belirliyoruz. Bu tabloya Basys 2'nin dökümanlarından ulaşabilirsiniz. Bende aşağıda sizlerle paylaşıyorum.


   Burada Switch'ler SW0,1... ismi ile Led'ler ise LD0,1... ismi ile gösterilmektedir. Tablodaki gri pinler kullanıcı tarafından değiştirilemez. Mavi kısımlar USB portu için kullanılır. Yeşil kısımlar I/O pinleridir. 

   LOC kısmına ben kullandığım switclerin pin değerlerini yazdım. Sizde farklı bir uygulamada bunları bu tabloya bakarak yazabilirsiniz. Sonra bu değerleri yazınca yukarıda kaydet diyoruz. 

   Sonra tekrar design kısmına geliyoruz. No processes Running  sekmesinde Generate Programming File seçeneğine geliyoruz. Sağ tıklıyoruz ve Process Properties'e tıklıyoruz. Açılan pencerede solda Startup Options seçeneğine tıklıyoruz. Burada FPGA Start-Up Clock seneğini JTAG Clock olarak değiştiriyoruz. Ardından OK diyoruz. Artık son aşamalara doğru geldik. Design kısmına gelip Burada Synthesize - XST sekmesine gelip çift tıklıyoruz. Bu kısım işleme alınıyor. 


   İşlem bittikten sonra Synthesize-XST kısmında yeşil tick işareti beliriyor. Bu işaret bu kısım için bir hata olmadığını gösteriyor. Aynı işlemi Implement Design seçeneğine çift tıklayarak yapıyoruz. 

   Bu kısımda da yeşil tick i gördükten sonra hemen alttaki seçenek içinde aynı işlami yapıyoruz. 3 seçenek içinde OK aldıktan sonra artık işlem tamam demektir. 

   Programı yüklemek için şimdi Adept programını açıyoruz. 


   Kit PC'ye bağlı ise yukardaki gibi program girişi ekranda belirir. FPGA seçeneğinde Browse kısmına tıklarız. Ardından proje dosyamızın olduğu yere gideriz. Orada deneme3 isminde bir .bit uzantılı dosya bulunur. Bu .bit uzantılı dosyayı seçeriz ve deriz. 


   Yukarıdaki gibi yapılır. Ardından son işlem olarak Program kısmına tıklanır ve FPGA'e yüklenir. 

   Sonra yapmamız gereken işlem FPGA üzerine gelerek doğruluk tablosuna göre SW0,SW1 ve SW2 butonlarının değerlerini lojik 0 ve lojik 1 yaparak LED0 çıkışını gözlemlemek. Ben denedim ve doğruluk tablosun uygun değerleri elde ettim. Aşağıda SW0 = lojik 1, SW1 = lojik 1 ve SW2 = lojik 1 seviyesinde çıkış değerinin görselini sizlerle paylaşıyorum.



   Yukarıda girişlerin 1 olduğu durumda LED1'in lojik 1 değerinde olduğu görülmektedir. 

   Bu uzun yazıma burada son veriyorum. İlerleyen zamanlarda başka uygulamalarda görüşmek dileğiyle.

   Herhangi bir soru için mail aracılığıyla iletişime geçebilirsiniz.


Yorumlar

  1. Emeğine sağlık kardeşim, inşaallah dahasını bekliyoruz ;)

    YanıtlaSil
    Yanıtlar
    1. Teşekkürler abi, Allah'ın izniyle inşallah :)

      Sil
  2. söylediklerini yaptık kurulumu yaparken bir soyayı açmadı "unable to open archive" hatası verdi "dosya izinlerini kontrol edin" diyor sorun nedir yardımcı olabilirmisiniz

    YanıtlaSil
  3. Çok faydalı bir yazı eline koluna sağlık kardeşim

    YanıtlaSil
  4. Valla hocam hem bu Türkçe kaynak kıtlığında çok güzel bir kaynak, hem mükemmel bir anlatım, hem temel düzeyde. Daha ne istenebilir bilemiyorum. Allah razı olsun. Allah tuttuğunu altın etsin. İnşallah başka projelerde eklenir.

    YanıtlaSil

Yorum Gönder

Bu blogdaki popüler yayınlar

Basit Bir EKG Nasıl Yapılır?

Digilent BASYS2 7 Segment Kullanımı

Yapay Zeka ile Kalp Krizi Teşhisi Part 1 - Matlab