OTOMAT YAPIMI

Proje Üzerinden Verilog Anlatımı


Proje Adı : 4 ürünlük bir full-line otomatik satış makinesi tasarlayarak, Verilog HDL ile FPGA kartlar üzerinde projenin gerçeklenmesi

Proje Gereksinimleri :
         1.  Quartus Prime
         2.  FPGA Kartı (DE2_115 Versiyonu)

Giriş
 Merhaba arkadaşlar bu yazımda sizlere Verilog Hardware Programlama üzerinden yapmış dönem içinde yapmış olduğumuz ve adını yukarıda vermiş olduğum projeyi anlatacağım.Gerekli kodları Github profilimden paylaşacağım.

Öncelikle yukarıdaki gereksinimlerin sizde var olduğunu ve FPGA kartınızın bilgisayara tanıtılmış olduğunu varsayarak devam edeceğim.Şayet kurulum vs. Gibi işlemleri yapmadıysanız bir önceki Altera yazıma göz atmanızı tavsiye ederim.

Programımızı kod okunurluğu açısından Main ve Moduller olmak üzere iki aşamalı olarak tasarladık.Program içerisinde bunu daha rahat bir şekilde göreceğiz.
Not : Githubdan projeyi indirip incelediğinizde projeyi Quartus ile açmak için :

 File - Open – Projenin bulundugu dizin – Proje dosyasının içerisine girip – pencerenin sağ altından All Files seçeneğini seçip – Proje klasöründen Proje2.qpf’yi seçmeniz gerekmektedir


Program ilk önce bu şekilde açılacak ve burada sol panelde dedimiz gibi Main ve Moduller kısmımızı göremiyoruz.Bunu görebilmek için ‘Hierarchy’ açılır menüsünden Files sekmesinden Main(Projemizin ana kısmı biz Project2 diye açtık siz isterseniz Main diyebilirsiniz farketmez ismin ne oldugu ancak modu Main derseniz bunu Main.v olarak kaydetmek zorundasınız aksi takdirde hata verecektir.)


Bunun yaptıktan sonra projenin ana yapısından biraz bahsedeyim.Bu programın işleyişi tam olarak aslında şu şekilde ilerlemektedir.

1.      5 bitlik ürün fiyatı Registeralarda(reg) tutulur program ilk çalışmaya başladığında.Bizim ürünlerimiz 4 adettir. (1 tl ,3 tl ,5 tl ve 10 tl şeklinde)
2.      Bu tanımlamadan sonra Led yakma işlemi yapmamız gerekiyor.Bununda FPGA üzerindeki LEDR[0], LEDR[1], LEDR[2], LEDR[3] üzerinden SW[17] ve SW[16] adlı pinler üzerinden sağlıyoruz.
3.      Sonra bu fiyatları 4x1’lik Mux’lara aktararak.Ürün fiyatımızı bit bit elde ediyoruz.
4.      Elde edilen fiyat ve kullanıcının girdiği para girişini 5 bitlik karşılaştırıcıya gönderiyoruz.
5.      5 bitlik karşılaştırıcıdan gelen 0 bilgisi küçük 1 bilgisi büyük olduğunu ifade ettiği için bizde burada Enable uç sayesinde bu kontrolü yaptırdık.
6.      Sonrasında gerekli şart sağlandıysa (para girişi > ürün fiyatı) para üstü hesaplıyoruz full adder’ları kullanarak.
7.      Bunun ardından ise 7 segmentlere çıktı veriyoruz. (Ürün fiyatı  - Para Girişi = Para Üstü)(Negatif çıkması bizim için önemsiz zaten 7 segmentte – yazdırma işlemini yapmadığımız için sürekli para girişi > ürün fiyatından pozitif olarak yazdırıyor her ne kadar yukarıda negatif çıksada sonucumuz.)
8.      Buradan sonrası ise kullanıcıya gerekli şart sağlandıysa KEY[0] ile ürün vermesini sağlayıp yeşil led’i yakarak alışverişin başarılı bir şekilde gerçekleştiğini kullanıcıya bildiriyoruz.Yeşil led yanmadıysa zaten kullanıcının para girişini artırması beklenir aksi takdirde ürün vermez.
9.      En son işlem olarakta kullanıcının ‘başarılı’ bir alışveriş sonrasında ikinci veya daha fazla ürün satın alabilmesini sağlamak için KEY[1] butona basarak programı RESET’lemesini sağlayarak en başa dönderiyoruz bütün işlemleri.

İlerleyen zamanlarda devam edeceğim takipte kalın...



Yorumlar

Bu blogdaki popüler yayınlar

Data Annotation Nedir?

2 bitlik 2 sayıyı çarpma

ALTERA-FPGA