Mündəricat:

VHDL Bir dəqiqəlik saniyəölçən: 5 addım
VHDL Bir dəqiqəlik saniyəölçən: 5 addım

Video: VHDL Bir dəqiqəlik saniyəölçən: 5 addım

Video: VHDL Bir dəqiqəlik saniyəölçən: 5 addım
Video: Silikon Vadisinde Verilog mu VHDL mi Daha Geçerli? (3/5) 2024, Noyabr
Anonim
Image
Image

Bu, VHDL və Basys 3 lövhəsindən istifadə edərək bir dəqiqəlik saniyəölçənin necə qurulacağına dair bir dərsdir. Belə bir cihaz, hər bir oyunçunun hərəkət etmək üçün maksimum bir dəqiqəyə sahib olduğu oyunlar üçün idealdır. Saniyəölçən yeddi seqmentli ekranda saniyələri və milisaniyələri dəqiq göstərir, 0 saniyə və 0 millisaniyədən başlayaraq 60 saniyə və 0 milisaniyəyə qədər. İki düymə də istifadə olunur: taymeri işə salmaq, dayandırmaq və davam etdirmək üçün istifadə olunan mərkəzi düymə və taymeri yenidən başlatmaq üçün istifadə olunan sağ düymə. Cihaz ağıllı telefonun quraşdırılmış saniyəölçəniylə yan-yana müqayisə edildikdə, saatın dəqiqliyi nəzərə çarpır.

Addım 1: Hardware/Software əldə edin

Blok diaqram
Blok diaqram

1. Micro-USB ilə Digilent-dən USB Kabelə qədər Basys 3 Artix-7 FPGA Təlimat Kartı

2. Xilinx -dən Vivado 2016.2 Design Suite

Addım 2: Blok Şeması

Bu sxem davranışa görə qurulmuşdur və quraşdırılmış Xilinx komponentlərindən istifadə edir, lakin yuxarıdakı ümumi struktur diaqramında göstərildiyi kimi struktur olaraq da təsvir edilə bilər. Diaqramdan, dövrə iki tezlik bölücü tərəfindən idarə olunduğunu görmək olar. Tezlik bölücülərdən biri 1 saniyədə işləyir və yeddi seqmentli ekranda göstərilən nömrələr kimi istifadə olunan katod sayğacını idarə edir. İkinci tezlik bölücü 240Hz-də işləyir və bütün ədədlərin yeddi seqmentli ekranda düzgün göstərilməsi üçün anodlardan fırlanan anod sayğacını idarə etmək üçün istifadə olunur. Kodlayıcı, katod məntiqini katod sayğacından və anod sayğacından anod məntiqini götürür və onu yeddi seqmentli ekranı işlədən çıxışın katotu və anoduna kodlaşdırır. Bu kodlayıcının funksiyası, anod çıxışı hər dəfə dəyişəndə katod çıxışının dəyişməsidir. Katod çıxışı sayğacdan müstəqil olaraq işləyə bilməz, çünki anodlar 4 ayrı rəqəmdən fırlanmalıdır.

Addım 3: Layihə Modulu

Birincisi, CEN üçün bir proses bloku edilir ki, bir Button Press algılandığında ENABLE keçər. Bu, katod sayğacının dayanması/başlaması kimi xidmət edir.

Növbəti proses blokunda, saniyəlik və 240Hz saat siqnalları, hər 100mHz daxili saat yüksələn bir həddə çatdıqda müvafiq sayğacların 1 artırılması üçün qurulur. Saniyəlik sayğac 500000 -ə çatdıqda, sıfıra sıfırlanır. Eyni zamanda, say 41667 -ə çatanda 240Hz sayğac sıfırlanır.

Kodun katod bölməsi üçün, ENABLE '0' olarsa, katod sayımı dayandırılacaq. Bu müddət ərzində sıfırlama düyməsinə basıldığı təqdirdə, bütün saymalar "0000" ə sıfırlanır. Eyni zamanda, ENABLE '1' olarsa, katot sayımı, katot sayımının 60.00 -a çatana qədər davam edəcək və burada stop siqnalının '1' olmasını tetikler. Dayanma siqnalı CEN proses blokuna qayıdır və dayandırma siqnalı '1' olarkən ENABLE -in '0' olmasına səbəb olur və sıfırlama düyməsinə basılana qədər dəyişməyəcək.

Nəhayət, yeddi seqmentli ekran, eyni anda 0-9-dan müvafiq rəqəmləri göstərmək üçün 8 katodunun hər biri ilə 4 anodun düzgün bağlanması ilə qurulur.

Addım 4: Məhdudiyyətlər

Məhdudiyyətlər
Məhdudiyyətlər

Bu məhdudiyyətlər faylı, VHDL -dən göstərilən giriş və çıxışları Basys lövhəsinin zəruri, fiziki hissələrinə birləşdirir. Bu layihə üçün komponentlərə yeddi seqmentli ekran üçün dörd anod və hər birinin səkkiz katodu, daxili 100 mHz saat, orta düymə və sağ düymə daxildir.

Addım 5: Test edin

Kodu tamamladıqdan sonra FPGA -nı USB kabel vasitəsilə proqramlaşdıra bilərsiniz. Yeddi seqmentli ekran 0.00 göstərməlidir. Taymeri 60.00 -a çatana qədər dayandırmaq üçün mərkəzi düyməni basaraq düymələrin işlədiyini yoxlayın; arada istədiyiniz zaman fasilə vermək üçün yenidən mərkəzi düyməni basa bilərsiniz. Dayandırıldıqdan sonra taymeri yenidən 0.00 -a qaytarmaq üçün sağ düyməni basa bilərsiniz. Hər şey düzgün işləyirsə, təbrik edirəm, bir dəqiqəlik taymer qurmusunuz!

Tövsiyə: