Turinys:

VHDL vienos minutės chronometras: 5 žingsniai
VHDL vienos minutės chronometras: 5 žingsniai

Video: VHDL vienos minutės chronometras: 5 žingsniai

Video: VHDL vienos minutės chronometras: 5 žingsniai
Video: «Развлечение с музыкой и программированием», Коннор Харрис и Стивен Крюсон 2024, Lapkritis
Anonim
Image
Image

Tai pamoka, kaip sukurti vienos minutės chronometrą naudojant VHDL ir „Basys 3“plokštę. Toks prietaisas idealiai tinka žaidimams, kuriuose kiekvienas žaidėjas turi daugiausiai vienos minutės savo judesiui atlikti. Chronometras tiksliai rodo sekundes ir milisekundes septynių segmentų ekrane, pradedant nuo 0 sekundžių ir 0 milisekundžių, iki 60 sekundžių ir 0 milisekundžių. Taip pat naudojami du mygtukai: centrinis mygtukas, naudojamas įjungti, sustabdyti ir tęsti laikmatį, ir dešinysis mygtukas, naudojamas iš naujo paleisti laikmatį. Kai prietaisas lyginamas greta su integruotu išmaniojo telefono chronometru, pastebimas laikrodžio tikslumas.

1 žingsnis: įsigykite aparatinę/programinę įrangą

Blokinė diagrama
Blokinė diagrama

1. „Basys 3“„Artix-7“FPGA treniruoklių lenta iš „Digilent“su „Micro-USB to USB“kabeliu

2. „Vivado 2016.2.2 Design Suite“iš „Xilinx“

2 žingsnis: blokinė diagrama

Ši grandinė yra sukonstruota elgsenai ir naudoja įmontuotus „Xilinx“komponentus, tačiau ją taip pat galima apibūdinti struktūriškai, kaip parodyta aukščiau esančioje bendroje struktūrinėje schemoje. Iš diagramos matyti, kad grandinę varo du dažnio dalikliai. Vienas iš dažnio skirstytuvų veikia 1 centisekundę ir valdo katodo skaitiklį, kuris naudojamas kaip septynių segmentų ekrane rodomi skaičiai. Antrasis dažnių skirstytuvas veikia 240 Hz dažniu ir yra naudojamas anodų skaitikliui, kuris sukasi per anodus, valdyti, kad septynių segmentų ekrane visi skaičiai būtų rodomi teisingai. Kodavimo įrenginys paima katodo logiką iš katodo skaitiklio ir anodo logiką iš anodo skaitiklio ir koduoja ją į išvesties katodą ir anodą, rodantį septynių segmentų ekraną. Šio kodavimo funkcija yra ta, kad katodo išvestis keičiasi kiekvieną kartą, kai keičiasi anodo išvestis. Katodo išvesties negalima paleisti nepriklausomai nuo skaitiklio, nes anodai turi suktis per 4 atskirus skaitmenis.

3 žingsnis: projekto modulis

Pirma, CEN procesų blokas sudaromas taip, kad aptikus mygtuko paspaudimą, įjungtų ĮJUNGTI. Tai yra katodo skaitiklio sustabdymas/paleidimas.

Kitame proceso bloke centisekundės ir 240 Hz laikrodžio signalai nustatomi taip, kad jų atitinkami skaitikliai padidėtų 1 kiekvieną kartą, kai vidinis 100 MHz laikrodis pasiekia kylantį kraštą. Kai centisekundės skaitiklis pasiekia 500000, jis atstatomas į 0. Tuo tarpu 240 Hz skaitiklis atsistato, kai skaičius pasiekia 41667.

Jei kodo skyriuje „ĮJUNGTI“yra „0“, katodo skaičiavimas bus pristabdytas. Jei per šį laiką paspaudžiamas atstatymo mygtukas, visi skaičiai atstatomi į „0000“. Tuo tarpu, jei ĮJUNGTI yra „1“, katodų skaičiavimas bus tęsiamas tol, kol katodų skaičius pasieks 60.00, ir tai suaktyvins stabdymo signalą „1“. Sustojimo signalas nukreipiamas atgal į CEN proceso bloką ir įjungia „0“, kol sustabdymo signalas yra „1“ir nepasikeis, kol nebus paspaustas atstatymo mygtukas.

Galiausiai septynių segmentų ekranas nustatomas taip, kad 4 anodai būtų tinkamai prijungti prie kiekvieno iš jų 8 katodų, kad vienu metu būtų rodomi atitinkami skaitmenys 0–9.

4 žingsnis: Apribojimai

Apribojimai
Apribojimai

Šis apribojimų failas sujungia nurodytas įvestis ir išvestis iš VHDL į būtinas fizines „Basys“plokštės dalis. Šiam projektui komponentai apima keturis anodus ir kiekvieną iš jų aštuonių katodų, skirtų septynių segmentų ekranui, vidinį 100 mHz laikrodį, centrinį mygtuką ir dešinįjį mygtuką.

5 žingsnis: išbandykite

Baigę kodą, dabar galite užprogramuoti FPGA per USB kabelį. Septynių segmentų ekrane turėtų būti rodoma 0,00. Patikrinkite, ar mygtukai veikia, paspausdami centrinį mygtuką, kad paleistumėte laikmatį, kol jis pasieks 60.00 ir sustos; bet kuriuo metu galite dar kartą paspausti centrinį mygtuką, kad jį pristabdytumėte. Kai jis bus pristabdytas, galite paspausti dešinįjį mygtuką, kad laikmatis būtų grąžintas į 0,00. Jei viskas veikia teisingai, sveikiname, kad ką tik sukūrėte vienos minutės laikmatį!

Rekomenduojamas: