Cuprins:

Cronometru de bază folosind placa VHDL și Basys3: 9 pași
Cronometru de bază folosind placa VHDL și Basys3: 9 pași

Video: Cronometru de bază folosind placa VHDL și Basys3: 9 pași

Video: Cronometru de bază folosind placa VHDL și Basys3: 9 pași
Video: ȘI-A DISTRUS BLUGII CU UNGHIILE LUNGI || Trucuri de înfrumusețare extremă, marca 123 GO! TRENDS 2024, Iulie
Anonim
Image
Image

Bine ați venit la instrucțiunile despre cum să construiți un cronometru folosind placa de bază VHDL și Basys 3. Suntem încântați să vă împărtășim proiectul nostru! Acesta a fost un proiect final pentru cursul CPE 133 (Design digital) la Cal Poly, SLO în toamna anului 2016. Proiectul pe care l-am construit este un cronometru simplu care pornește, resetează și pauzează timpul. Este nevoie de trei butoane de apăsare pe placa Basys3 ca intrări, iar ora este afișată pe afișajul cu patru cifre din șapte segmente al plăcii. Timpul scurs este afișat într-un format de secunde: centisecunde. Folosește ceasul de sistem al plăcii ca intrare pentru a ține evidența timpului scurs și transmite timpul către cele patru cifre ale afișajului cu șapte segmente.

Pasul 1: Materiale

Setarea intrărilor și ieșirilor
Setarea intrărilor și ieșirilor

Materialele de care veți avea nevoie pentru acest proiect:

  • 1 computer cu Vivado Design Suite WebPack instalat de la Xilinx (preferă versiunea 2016.2)
  • 1 placă Digilent Basys3 Xilinx Artix-7 FPGA
  • 1 cablu port USB

Pasul 2: Setarea intrărilor și ieșirilor

Figura de mai sus prezintă o diagramă bloc de nivel superior a modulului cronometru principal. Cronometrul acceptă intrările „CLK” (ceas), „S1” (butonul de pornire), „S2” (butonul de pauză) și „RST” (resetare) și are o ieșire pe 4 biți „Anode”, un 7-biți ieșire „segment” și o ieșire pe un singur bit „DP” (punct zecimal). Când intrarea „S1” este mare, cronometrul începe să numere timpul. Când „S2” este scăzut, cronometrul întrerupe timpul. Când „RST” este ridicat, cronometrul se oprește și resetează ora. Există patru submodule în circuit: divizorul de ceas, contorul de cifre, driverul de afișare cu șapte segmente și codificatorul de afișare cu șapte segmente. Modulul principal al cronometrului leagă toate submodulele împreună cu intrările și ieșirile.

Pasul 3: Realizarea ceasurilor

Realizarea ceasurilor
Realizarea ceasurilor

Modulul de divizare a ceasului preia un ceas de sistem și folosește o intrare de divizor pentru a crea un ceas cu orice viteză nu mai mare decât cea a ceasului de sistem. Cronometrul folosește două module de ceas diferite, unul care creează un ceas de 500 Hz și altul care creează un ceas de 100 Hz. Schema pentru divizorul de ceas este prezentată în figura de mai sus. Divizorul de ceas include o intrare pe un singur bit „CLK” și o intrare pe 32 de biți „Divizor” și ieșirea pe un singur bit „CLKOUT”. „CLK” este ceasul sistemului și „CLKOUT” este ceasul rezultat. Modulul include, de asemenea, o poartă NOT, care comută semnalul „CLKTOG” atunci când numărul atinge valoarea divizorului.

Pasul 4: Numărare până la zece

Numărând până la zece
Numărând până la zece

Contorul de cifre contorizează fiecare cifră de la 0 la 10 și creează un alt ceas pentru următoarea cifră care să funcționeze pe care oscilează atunci când numărul ajunge la 10. Modulul acceptă 3 intrări pe un singur bit „S”, „RST” și „CLK "și are ca rezultat o ieșire pe un singur bit" N "și o ieșire pe 4 biți" D ". Intrarea „S” este activarea în intrare. Ceasul se activează când „S” este ridicat și se oprește când „S” este scăzut. „RST” este intrarea de resetare, deci ceasul se resetează când „RST” este mare. „CLK” este intrarea ceasului pentru contorul de cifre. „N” este ieșirea ceasului care devine ceasul de intrare pentru următoarea cifră. Ieșirea "D" prezintă valoarea binară a cifrei la care se află contorul.

Pasul 5: Afișarea numerelor

Afișarea numerelor
Afișarea numerelor

Codificatorul afișajului cu șapte segmente va codifica numărul binar primit de la modulul driverului de afișaj cu șapte segmente și îl va transforma într-un flux de biți care va fi interpretat ca valori „1” sau „0” pentru fiecare segment al afișajului. Numărul binar este primit de modul ca „cifră” de intrare pe 4 biți și rezultă „segmente” de ieșire pe 7 biți. Modulul constă dintr-un singur bloc de proces de carcasă care atribuie un flux specific de 7 biți pentru fiecare valoare de intrare posibilă de la 0 la 9. Fiecare bit din fluxurile de șapte biți reprezintă unul dintre cele șapte segmente ale cifrelor de pe afișaj. Ordinea segmentelor din flux este „abcdefg” cu „0” reprezentând segmentele care se aprind pentru numărul dat.

Pasul 6: Cum se afișează cronometrul

Cum se afișează cronometrul
Cum se afișează cronometrul

În modulul driverului de afișare cu șapte segmente, există patru intrări pe 4 biți „D0”, „D1”, „D2” și „D3”, fiecare reprezentând cele patru cifre care trebuie afișate. Intrarea „CLK” este intrarea de ceas a sistemului. Ieșirea cu un singur bit „DP” reprezintă punctul zecimal pe afișajul cu șapte segmente. Ieșirea pe 4 biți „Anode” determină care cifră de pe afișajul cu șapte segmente este afișată și „temp” de ieșire pe 4 biți depinde de starea intrării de control pe 2 biți „SEL”. Modulul folosește 4 multiplexoare pentru intrarea de control „SEL” și cele trei ieșiri; „Anode”, „temp” și „DP”.

Pasul 7: Aduceți totul împreună

Pentru a crea butoanele de pornire și pauză se utilizează un bloc de proces „dacă” care rulează din ceasul de 500Hz. Apoi legați toate submodulele împreună în modulul principal al cronometrului declarând componentele fiecărui submodul individual și folosind diferite semnale. Submodulele de cifre iau ieșirea ceasului submodulului de cifre anterior, primul primind ceasul de 100Hz. Ieșirile "D" ale submodulelor cifre devin apoi intrările "D" ale modulului driverului de afișare cu șapte segmente. Și, în sfârșit, ieșirea „temp” a modulului driverului de afișare cu șapte segmente devine intrarea „temp” a modulului codificator cu șapte segmente.

Pasul 8: Constrângeri

Constrângeri
Constrângeri

Utilizați 3 butoane (W19, T17 și U18) pentru intrările „RST”, „S1” și „S2”. W19 este butonul de resetare, T17 este butonul de pornire (S1), iar U18 este butonul de pauză (S2). O constrângere pentru intrarea de intrare a ceasului este, de asemenea, necesară folosind portul W5. De asemenea, nu uitați să adăugați această linie la constrângerea ceasului:

create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports {CLK}]

De asemenea, conectați anodele și segmentele la tablă, astfel încât cronometrul să fie afișat pe afișajul cu șapte segmente, așa cum se vede în fișierul de constrângeri.

Pasul 9: Testarea

Testarea
Testarea

Asigurați-vă că dispozitivul dvs. funcționează jucându-vă cu cele trei butoane: apăsându-le și ținându-le în orice ordine posibilă pentru a găsi eventuale probleme cu codul dvs.

Recomandat: