Indholdsfortegnelse:

Grundlæggende stopur ved hjælp af VHDL og Basys3 Board: 9 trin
Grundlæggende stopur ved hjælp af VHDL og Basys3 Board: 9 trin

Video: Grundlæggende stopur ved hjælp af VHDL og Basys3 Board: 9 trin

Video: Grundlæggende stopur ved hjælp af VHDL og Basys3 Board: 9 trin
Video: Stopur 2024, November
Anonim
Image
Image

Velkommen til instruktionsbogen om, hvordan man bygger et stopur ved hjælp af grundlæggende VHDL og Basys 3 -kort. Vi glæder os til at dele vores projekt med dig! Dette var et afsluttende projekt for kursus CPE 133 (Digital Design) på Cal Poly, SLO i efteråret 2016. Projektet, vi byggede, er et simpelt stopur, der starter, nulstiller og sætter tiden på pause. Det tager tre trykknapper på Basys3-kortet som input, og tiden vises på tavlens firecifrede syv-segment display. Den forløbne tid vises i formatet sekunder: centisekunder. Det bruger tavlens systemur som input til at holde styr på den forløbne tid og sender tiden ud til de fire cifre i syvsegmentets display.

Trin 1: Materialer

Indstilling af input og output
Indstilling af input og output

De materialer, du skal bruge til dette projekt:

  • 1 computer med Vivado Design Suite WebPack installeret fra Xilinx (foretrækker version 2016.2)
  • 1 Digilent Basys3 Xilinx Artix-7 FPGA board
  • 1 USB -portkabel

Trin 2: Indstilling af input og output

Ovenstående figur viser et blokdiagram på øverste niveau af stopurmodulet. Stopuret indtaster input "CLK" (ur), "S1" (startknap), "S2" (pause-knap) og "RST" (reset) og har en 4-bit output "Anodes", en 7-bit output "segment" og et single-bit output "DP" (decimalpunkt). Når input "S1" er høj, begynder stopuret at tælle tid. Når "S2" er lav, stopper uret tiden. Når "RST" er høj, stopper stopuret og nulstiller tiden. Der er fire delmoduler inden for kredsløbet: urdeleren, ciffer-tælleren, syv-segment display driveren og syv-segment display encoder. Stopurets hovedmodul forbinder alle delmodulerne sammen og til input og output.

Trin 3: Fremstilling af ure

At lave ure
At lave ure

Urdelermodulet optager et systemur og bruger en divisorindgang til at oprette et ur med enhver hastighed, der ikke er større end systemurets. Stopuret bruger to forskellige urmoduler, et som skaber et 500 Hz ur og et andet som skaber et 100 Hz ur. Skematikken for urdeleren er vist i figuren ovenfor. Urdeleren optager en single-bit input "CLK", og en 32-bit input "Divisor" og single-bit output "CLKOUT". "CLK" er systemuret og "CLKOUT" er det resulterende ur. Modulet indeholder også en NOT -port, som skifter signal "CLKTOG", når tællingen når værdien af divisoren.

Trin 4: Tæller til ti

Tæller til ti
Tæller til ti

Cifretælleren tæller hvert ciffer fra 0 til 10 og opretter et andet ur til det næste ciffer, der skal fungere ud af det, oscillerer, når tællingen når 10. Modulet optager 3 single-bit input "S", "RST" og "CLK "og resulterer i et single-bit output" N "og et 4-bit output" D ". Input "S" er aktiveringen i input. Uret tændes, når "S" er højt og slukket, når "S" er lavt. "RST" er nulstillingsindgangen, så uret nulstilles, når "RST" er højt. "CLK" er urindgangen til ciffertælleren. "N" er urudgangen, der bliver inputuret for det næste ciffer. Output "D" viser den binære værdi af det ciffer, tælleren er på.

Trin 5: Visning af tal

Viser tal
Viser tal

Syv-segment displaykoderen vil kode det binære tal, der modtages fra syv-segment display-drivermodulet og gøre det til en strøm af bits, der vil blive fortolket som '1' eller '0' værdier for hvert segment af displayet. Det binære tal modtages af modulet som 4-bit input "ciffer" og resulterer i 7-bit output "segmenter". Modulet består af en enkelt sagsprocessblok, der tildeler en specifik 7-bit-strøm til hver mulig inputværdi fra 0 til 9. Hver bit i syv-bitstrømmene repræsenterer et af de syv segmenter af cifrene på displayet. Rækkefølgen af segmenterne i strømmen er "abcdefg" med '0'er, der repræsenterer de segmenter, der lyser for det givne tal.

Trin 6: Sådan vises stopuret

Sådan vises stopuret
Sådan vises stopuret

I syv-segment display driver-modulet er der fire 4-bit input "D0", "D1", "D2" og "D3", der hver repræsenterer de fire cifre, der skal vises. Input "CLK" er systemets urindgang. Enkeltbit-output "DP" repræsenterer decimaltegnet på syv-segmentets display. 4-bit udgangen "Anoder" bestemmer, hvilket ciffer på syv-segment displayet, og 4-bit output "temp" afhænger af tilstanden af 2-bit kontrol input "SEL". Modulet anvender 4 multiplexere til styreenheden "SEL" og de tre udgange; "Anoder", "temp" og "DP".

Trin 7: Saml det hele

En 'hvis' procesblok, der kører af 500Hz -uret, bruges til at oprette start- og pause -knapperne. Link derefter alle submodulerne sammen i stopurets hovedmodul ved at deklarere komponenterne i hver enkelt submodul og bruge forskellige signaler. Cifferundermodulerne optager urudgangen fra den foregående cifret submodul, hvor den første tager 100Hz -uret. "D" -udgange fra cifferundermodulerne bliver derefter til "D" -indgange i det syv segment display -drivermodul. Og endelig bliver "temp" -output fra syv segment display driver modul til "temp" input for det syv segment encoder modul.

Trin 8: Begrænsninger

Begrænsninger
Begrænsninger

Brug 3 trykknapper (W19, T17 og U18) til input "RST", "S1" og "S2". W19 er nulstillingsknappen, T17 er startknappen (S1), og U18 er pauseknappen (S2). En begrænsning for urindgangsindgangen er også påkrævet ved brug af port W5. Husk også at tilføje denne linje til urbegrænsningen:

create_clock -add -name sys_clk_pin -periode 10.00 -bølgeform {0 5} [get_ports {CLK}]

Link også anoderne og segmenterne til tavlen, så stopuret vises på syvsegments displayet som det ses i begrænsningsfilen.

Trin 9: Test

Test
Test

Sørg for, at din enhed fungerer ved at spille med de tre knapper: trykke på og holde dem i enhver mulig rækkefølge for at finde mulige problemer med din kode.

Anbefalede: