Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Tämä on opetusohjelma yhden minuutin sekuntikellon rakentamisesta VHDL: n ja Basys 3 -levyn avulla. Tällainen laite on ihanteellinen peleihin, joissa jokaisella pelaajalla on enintään minuutti aikaa liikkua. Sekuntikello näyttää tarkasti sekunteja ja millisekunteja seitsemän segmentin näytöllä, alkaen 0 sekunnista ja 0 millisekunnista aina 60 sekuntiin ja 0 millisekuntiin. Käytetään myös kahta painiketta: keskipainiketta, jota käytetään ajastimen käynnistämiseen, pysäyttämiseen ja jatkamiseen, ja oikeaa painiketta, jolla ajastin käynnistetään uudelleen. Kun laitetta verrataan rinnakkain älypuhelimen sisäänrakennetun sekuntikellon kanssa, kellon tarkkuus on havaittavissa.
Vaihe 1: Hanki laitteisto/ohjelmisto
1. Basys 3 Artix-7 FPGA -koulutuskortti Digilentiltä Micro-USB-USB-kaapelilla
2. Vivado 2016.2 Design Suite Xilinxiltä
Vaihe 2: Lohkokaavio
Tämä piiri on rakennettu käyttäytymiseen ja käyttää sisäänrakennettuja Xilinx-komponentteja, mutta sitä voidaan myös kuvata rakenteellisesti, kuten yllä oleva yleinen rakennekaavio osoittaa. Kaaviosta voidaan nähdä, että piiriä käyttävät kaksi taajuusjakajaa. Yksi taajuudenjakajista toimii 1 sentisekunnin nopeudella ja käyttää katodilaskuria, jota käytetään seitsemän segmentin näytössä näkyvinä numeroina. Toinen taajuusjakaja toimii taajuudella 240 Hz, ja sitä käytetään anodien laskurin käyttämiseen, joka pyörii anodien läpi niin, että kaikki numerot näkyvät oikein seitsemän segmentin näytössä. Kooderi ottaa katodilogiikan katodilaskurista ja anodilogiikan anodilukijasta ja koodaa sen lähdön katodiin ja anodiin, jotka käyttävät seitsemän segmentin näyttöä. Tämän anturin tehtävä on, että katodilähtö muuttuu joka kerta, kun anodilähtö muuttuu. Katodilähtöä ei voida käyttää laskurista riippumatta, koska anodien on pyöritettävä neljän erillisen numeron läpi.
Vaihe 3: Projektimoduuli
Ensinnäkin CEN -prosessilohko tehdään niin, että kun painikkeen painallus havaitaan, KÄYTÖSSÄ vaihtaa. Tämä toimii katodilaskurin pysäytyksenä/käynnistyksenä.
Seuraavassa prosessilohkossa sentisekunnin ja 240 Hz: n kellosignaalit asetetaan siten, että niiden vastaavat laskimet kasvavat 1: llä aina, kun sisäinen 100 MHz: n kello saavuttaa nousevan reunan. Kun sentisekunnin laskuri saavuttaa 500000, se nollautuu takaisin arvoon 0. Samaan aikaan 240 Hz: n laskuri nollautuu, kun luku saavuttaa 41667.
Jos KÄYTÖSSÄ on '0', katodin laskenta keskeytyy koodin katodiosassa. Jos nollauspainiketta painetaan tänä aikana, kaikki lukemat nollataan "0000". Samaan aikaan, jos KÄYTÖSSÄ on '1', katodin laskenta jatkuu, kunnes katodiluku saavuttaa 60,00, jolloin se laukaisee pysäytyssignaalin '1'. Pysäytyssignaali reitittää takaisin CEN -prosessilohkoon ja saa ENABLE -arvon olemaan 0, kun pysäytyssignaali on 1 eikä muutu, ennen kuin nollauspainiketta painetaan.
Lopuksi seitsemän segmentin näyttö asetetaan siten, että 4 anodia on liitetty oikein jokaiseen 8 katodiinsa näyttääkseen vastaavat numeronsa 0-9 samanaikaisesti.
Vaihe 4: Rajoitukset
Tämä rajoitustiedosto yhdistää määritetyt tulot ja lähdöt VHDL: stä Basys -kortin tarvittaviin fyysisiin osiin. Tässä projektissa komponentit sisältävät neljä anodia ja kukin niiden kahdeksasta katodista seitsemän segmentin näyttöä varten, sisäisen 100 MHz: n kellon, keskipainikkeen ja oikean painikkeen.
Vaihe 5: Testaa
Kun olet suorittanut koodin, voit nyt ohjelmoida FPGA: n USB -kaapelin kautta. Seitsemän segmentin näytön pitäisi näyttää 0,00. Testaa, toimivatko painikkeet painamalla keskinäppäintä käynnistääksesi ajastimen, kunnes se saavuttaa 60.00 ja pysähtyy; Voit aina keskeyttää sen painamalla keskipainiketta milloin tahansa siltä väliltä. Kun se on keskeytetty, voit palauttaa ajastimen takaisin arvoon 0,00 painamalla oikeaa painiketta. Jos kaikki toimii oikein, onnittelut, että olet juuri rakentanut minuutin ajastimen!