Sisällysluettelo:
- Vaihe 1: Materiaalit
- Vaihe 2: Tulojen ja lähtöjen asettaminen
- Vaihe 3: Kellojen tekeminen
- Vaihe 4: Laske kymmeneen
- Vaihe 5: Numeroiden näyttäminen
- Vaihe 6: Sekuntikellon näyttäminen
- Vaihe 7: Yhdistä kaikki
- Vaihe 8: Rajoitukset
- Vaihe 9: Testaus
Video: Perus sekuntikello VHDL: n ja Basys3 Boardin avulla: 9 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
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
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
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
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
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
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
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
Varmista, että laite toimii pelaamalla kolmella painikkeella: pitämällä niitä painettuna kaikissa mahdollisissa järjestyksissä löytääksesi mahdolliset koodisi ongelmat.
Suositeltava:
Drivemall Boardin kehittäminen: 5 vaihetta
Drivemall Boardin kehittäminen: Tässä opetusohjelmassa näemme perusvaiheet mukautetun Arduino -levyn luomiseksi. Ohjelmistona käytetään KiCadia kortin suunnittelussa ja Arduino IDE: tä kortin laiteohjelmiston luomiseen ja lataamiseen
Arduino -sekuntikello I2C -nestekidenäytön avulla: 5 vaihetta
Arduino -sekuntikello I2C -nestekidenäytön avulla: Tässä projektissa opetan sinua käyttämään LCD -näyttöä ja Arduinoa vuorovaikutteisena sekuntikellona. Kun projektisi on päättynyt annetulla koodilla, sen pitäisi näyttää yllä olevasta kuvasta. Siirry seuraavaan vaiheeseen oppiaksesi mistä aloittaa
AT-komennot Bluetooth-moduulille (HC-05 W/ EN-nasta ja -painike) Arduino Boardin avulla!: 5 vaihetta
AT-komennot Bluetooth-moduulille (HC-05 W/ FI-nasta ja -painike) Arduino Boardin käyttäminen !: Jay Amiel AjocGensan PH Tämä ohje auttaa sinua pääsemään alkuun HC05-Bluetooth-moduulin käytön kanssa. Tämän ohjeen loppuun mennessä, olet oppinut AT -komentojen lähettämisestä moduulille sen määrittämiseksi/muokkaamiseksi (nimi, salasana, baud
VHDL yhden minuutin sekuntikello: 5 vaihetta
VHDL yhden minuutin sekuntikello: Tämä on opetusohjelma yhden minuutin sekuntikellon rakentamisesta VHDL- ja Basys 3 -levyillä. Tällainen laite on ihanteellinen peleihin, joissa jokaisella pelaajalla on enintään minuutti aikaa liikkua. Sekuntikello näyttää tarkasti sekunnit ja millisekunnit
VHDL -sekuntikello: 8 vaihetta (kuvilla)
VHDL-sekuntikello: Tämä on opetusohjelma sekuntikellon tekemisestä käyttämällä VHDL- ja FPGA-piirilevyjä, kuten Basys3 Atrix-7 -korttia. Sekuntikello voi laskea 00,00 sekunnista 99,99 sekuntiin. Se käyttää kahta painiketta, toinen käynnistys-/pysäytyspainikkeelle ja toinen