İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Bu, VHDL ve bir Basys 3 kartı kullanarak bir dakikalık kronometrenin nasıl oluşturulacağına dair bir eğitimdir. Böyle bir cihaz, her oyuncunun hamlesini yapmak için en fazla bir dakikası olduğu oyunlar için idealdir. Kronometre, 0 saniye ve 0 milisaniyeden başlayarak 60 saniyeye ve 0 milisaniyeye kadar yedi segmentli ekranda saniyeleri ve milisaniyeleri doğru bir şekilde görüntüler. İki düğme de kullanılır: zamanlayıcıyı başlatmak, durdurmak ve devam ettirmek için kullanılan merkezi düğme ve zamanlayıcıyı yeniden başlatmak için kullanılan sağ düğme. Cihaz, bir akıllı telefonun dahili kronometresi ile yan yana kıyaslandığında saatin doğruluğu dikkat çekiyor.
Adım 1: Donanım/Yazılım Edinme
1. Digilent'ten Basys 3 Artix-7 FPGA Trainer Board with Micro-USB - USB Kablosu
2. Xilinx'ten Vivado 2016.2 Tasarım Paketi
Adım 2: Blok Şeması
Bu devre davranışsal olarak oluşturulmuştur ve yerleşik Xilinx bileşenlerini kullanır, ancak yukarıdaki genel yapısal diyagramda gösterildiği gibi yapısal olarak da tanımlanabilir. Şemadan, devrenin iki frekans bölücü tarafından sürüldüğü görülebilir. Frekans bölücülerden biri 1 santimetrede çalışır ve yedi segmentli ekranda görüntülenen sayılar olarak kullanılan katot sayacını çalıştırır. İkinci frekans bölücü 240 Hz'de çalışır ve anotlar arasında dönen anot sayacını sürmek için kullanılır, böylece tüm sayılar yedi segmentli ekranda doğru şekilde görüntülenir. Kodlayıcı, katot sayacından katot mantığını ve anot sayacından anot mantığını alır ve bunu çıkışın yedi segmentli ekranı çalıştıran katodu ve anoda kodlar. Bu kodlayıcının işlevi, anot çıkışı her değiştiğinde katot çıkışının değişmesi içindir. Anotların 4 ayrı basamak boyunca dönmesi gerektiğinden katot çıkışı sayaçtan bağımsız olarak çalıştırılamaz.
Adım 3: Proje Modülü
İlk olarak, CEN için bir işlem bloğu yapılır, böylece bir Düğmeye Basma algılandığında, ETKİNLEŞTİR geçiş yapar. Bu, katot sayacının durdurma/başlatma işlevi görür.
Sonraki işlem bloğunda, santisaniye ve 240Hz saat sinyalleri, dahili 100 mHz saat yükselen kenara her ulaştığında ilgili sayaçları 1 artacak şekilde ayarlanır. Santisaniye sayacı 500000'e ulaştığında, 0'a sıfırlanır. Bu arada 240Hz sayaç, sayım 41667'ye ulaştığında sıfırlanır.
Kodun katot bölümü için, ETKİNLEŞTİR '0' ise, katot sayımı duraklayacaktır. Bu süre içerisinde reset butonuna basılırsa tüm sayımlar "0000" olarak sıfırlanır. Bu arada, ETKİNLEŞTİR '1' ise, katot sayımı, durma sinyalinin '1' olmasını tetiklediği 60.00'a ulaşana kadar katot sayımı devam edecektir. Durdurma sinyali, CEN işlem bloğuna geri döner ve durdurma sinyali '1' iken ETKİNLEŞTİR'in '0' olmasına neden olur ve sıfırlama düğmesine basılana kadar değişmeyecektir.
Son olarak, yedi segmentli ekran, 4 anotun 8 katodunun her birine doğru şekilde bağlanmasıyla, 0-9 arasındaki ilgili rakamları aynı anda görüntülemek için kurulur.
4. Adım: Kısıtlamalar
Bu kısıtlama dosyası, VHDL'den belirtilen giriş ve çıkışları Basys kartının gerekli fiziksel bölümlerine bağlar. Bu proje için bileşenler, yedi segmentli ekran, dahili 100 mHz saat, orta düğme ve sağ düğme için dört anot ve bunların sekiz katotunun her birini içerir.
Adım 5: Test Et
Kodu tamamladıktan sonra artık FPGA'yı USB kablosu ile programlayabilirsiniz. Yedi segmentli ekran 0.00 göstermelidir. Zamanlayıcıyı 60.00'a ulaşana ve durana kadar başlatmak için ortadaki düğmeye basarak düğmelerin çalışıp çalışmadığını test edin; Arada herhangi bir zamanda, duraklatmak için ortadaki düğmeye tekrar basabilirsiniz. Duraklatıldığında, zamanlayıcıyı tekrar 0,00'a sıfırlamak için sağ düğmeye basabilirsiniz. Her şey doğru çalışıyorsa, tebrikler bir dakikalık bir zamanlayıcı oluşturdunuz!