Sisällysluettelo:

Perus sekuntikello VHDL: n ja Basys3 Boardin avulla: 9 vaihetta
Perus sekuntikello VHDL: n ja Basys3 Boardin avulla: 9 vaihetta

Video: Perus sekuntikello VHDL: n ja Basys3 Boardin avulla: 9 vaihetta

Video: Perus sekuntikello VHDL: n ja Basys3 Boardin avulla: 9 vaihetta
Video: Deportes cronómetro profesional digital portátil LCD, Un cronómetro más solo que barato 2024, Heinäkuu
Anonim
Image
Image

Tervetuloa opastamaan sekuntikellon rakentamista perus VHDL- ja Basys 3 -levyillä. Olemme innoissamme voidessamme jakaa projektimme kanssasi! Tämä oli viimeinen projekti CPE 133 (Digital Design) -kurssille Cal Poly, SLO: ssa syksyllä 2016. Rakentamamme projekti on yksinkertainen sekuntikello, joka käynnistää, nollaa ja keskeyttää ajan. Se käyttää kolmea Basys3-kortin painikkeita tuloina, ja aika näkyy kortin nelinumeroisessa seitsemän segmentin näytössä. Kulunut aika näytetään sekunnissa: sentisekuntia. Se käyttää piirilevyn järjestelmäkelloa tulona seuratakseen kulunutta aikaa ja näyttää ajan seitsemän segmentin näytön neljälle numerolle.

Vaihe 1: Materiaalit

Tulojen ja lähtöjen asettaminen
Tulojen ja lähtöjen asettaminen

Materiaalit, joita tarvitset tähän projektiin:

  • 1 tietokone, jossa Vivado Design Suite WebPack on asennettu Xilinxistä (mieluummin versio 2016.2)
  • 1 Digilent Basys3 Xilinx Artix-7 FPGA -levy
  • 1 USB -porttikaapeli

Vaihe 2: Tulojen ja lähtöjen asettaminen

Yllä oleva kuva esittää sekuntikellomoduulin ylätason lohkokaaviota. Sekuntikello ottaa tulot "CLK" (kello), "S1" (käynnistyspainike), "S2" (tauko-painike) ja "RST" (nollaus), ja siinä on 4-bittinen lähtö "Anodit", 7-bittinen lähtö "segmentti" ja yhden bitin lähtö "DP" (desimaalipiste). Kun tulo "S1" on korkea, sekuntikello alkaa laskea aikaa. Kun "S2" on alhainen, sekuntikello pysäyttää ajan. Kun "RST" on korkea, sekuntikello pysähtyy ja nollaa ajan. Piirissä on neljä alimoduulia: kellonjakaja, numerolaskuri, seitsemän segmentin näytönohjain ja seitsemän segmentin näyttökooderi. Sekuntikellon päämoduuli yhdistää kaikki alimoduulit yhteen tuloihin ja lähtöihin.

Vaihe 3: Kellojen tekeminen

Kellojen valmistus
Kellojen valmistus

Kellonjakajamoduuli ottaa järjestelmän kellon ja luo jakajatulon avulla kellon, jonka nopeus ei ole suurempi kuin järjestelmän kellon. Sekuntikello käyttää kahta eri kellomoduulia, joista toinen luo 500 Hz: n kellon ja toinen 100 Hz: n kellon. Kellonjakajan kaavio on esitetty yllä olevassa kuvassa. Kellojakaja ottaa vastaan yhden bitin tulon "CLK" ja 32-bittisen tulon "Divisor" ja yksibittisen lähdön "CLKOUT". "CLK" on järjestelmän kello ja "CLKOUT" on tuloksena oleva kello. Moduuli sisältää myös NOT -portin, joka vaihtaa signaalin "CLKTOG", kun luku saavuttaa jakajan arvon.

Vaihe 4: Laske kymmeneen

Laskeminen kymmeneen
Laskeminen kymmeneen

Numerolaskuri laskee jokaisen numeron 0: sta 10: een ja luo uuden kellon seuraavalle numerolle, joka toimii siitä, kun se värähtelee, kun luku saavuttaa 10. Moduuli ottaa 3 yksibittistä tuloa "S", "RST" ja "CLK" "ja tuloksena on yksibittinen lähtö" N "ja 4-bittinen lähtö" D ". Tulo "S" on tulon käyttöönotto. Kello käynnistyy, kun "S" on korkea ja sammuu, kun "S" on alhainen. "RST" on nollaustulo, joten kello nollautuu, kun "RST" on korkea. "CLK" on numerolaskurin kellotulo. "N" on kellon lähtö, josta tulee seuraavan numeron tulokello. Lähtö "D" esittää laskurin olevan binääriarvon.

Vaihe 5: Numeroiden näyttäminen

Näytetään numerot
Näytetään numerot

Seitsemän segmentin näyttökooderi koodaa seitsemän segmentin näytönohjainmoduulilta vastaanotetun binääriluvun ja muuttaa sen bittivirraksi, joka tulkitaan 1- tai 0-arvoksi näytön jokaiselle segmentille. Moduuli vastaanottaa binääriluvun 4-bittisenä sisääntulon "numerona" ja johtaa 7-bittisen ulostulon "segmentteihin". Moduuli koostuu yhdestä tapausprosessilohkosta, joka määrittää tietyn 7-bittisen virran kullekin mahdolliselle tuloarvolle 0-9. Jokainen seitsemän bittisen virran bitti edustaa yhtä näytön seitsemästä segmentistä. Striimin segmenttien järjestys on "abcdefg" ja "0" edustaa segmenttejä, jotka syttyvät tietylle numerolle.

Vaihe 6: Sekuntikellon näyttäminen

Sekuntikellon näyttäminen
Sekuntikellon näyttäminen

Seitsemän segmentin näytönohjainmoduulissa on neljä 4-bittistä tuloa "D0", "D1", "D2" ja "D3", joista kukin edustaa neljää näytettävää numeroa. Tulo "CLK" on järjestelmän kellotulo. Yksibittinen lähtö "DP" edustaa desimaalipistettä seitsemän segmentin näytössä. 4-bittinen lähtö "Anodes" määrittää, mikä numero seitsemän segmentin näytössä näkyy, ja 4-bittinen lähtö "temp" riippuu 2-bittisen ohjaustulon "SEL" tilasta. Moduuli käyttää 4 multiplekseria ohjaustuloa "SEL" ja kolmea lähtöä varten; "Anodit", "lämpö" ja "DP".

Vaihe 7: Yhdistä kaikki

Käynnistys- ja taukopainikkeiden luomiseen käytetään 500 Hz: n kellon "käynnissä" -prosessilohkoa. Yhdistä sitten kaikki alimoduulit yhteen sekuntikellon päämoduulissa ilmoittamalla kunkin yksittäisen alimoduulin komponentit ja käyttämällä erilaisia signaaleja. Numeron alimoduulit ottavat edellisen numeron alimoduulin kellolähdön ja ensimmäinen ottaa 100 Hz: n kellon. Numeroiden alimoduulien "D" -lähtöistä tulee tällöin seitsemän segmentin näytönohjainmoduulin "D" -tulot. Ja lopuksi seitsemän segmentin näytönohjainmoduulin "temp" -lähdöstä tulee seitsemän segmentin anturimoduulin "temp" -tulo.

Vaihe 8: Rajoitukset

Rajoitukset
Rajoitukset

Käytä 3 painiketta (W19, T17 ja U18) tuloille "RST", "S1" ja "S2". W19 on nollauspainike, T17 on käynnistyspainike (S1) ja U18 on taukopainike (S2). Rajoitusta kellon tulotulolle tarvitaan myös portin W5 avulla. Muista myös lisätä tämä rivi kellorajoitukseen:

create_clock -add -name sys_clk_pin -jakso 10.00 -aaltomuoto {0 5} [get_ports {CLK}]

Yhdistä myös anodit ja segmentit taululle, jotta sekuntikello näkyy seitsemän segmentin näytössä, kuten rajoitustiedostossa näkyy.

Vaihe 9: Testaus

Testaus
Testaus

Varmista, että laite toimii pelaamalla kolmella painikkeella: pitämällä niitä painettuna kaikissa mahdollisissa järjestyksissä löytääksesi mahdolliset koodisi ongelmat.

Suositeltava: