Informatica
P.C.D.D. - lumini dinamicePROIECT P.C.D.D. Lumini dinamice 1 Cuprins: 1. Prezentarea temei de proiect............... 2. Descriera solutiei alese pentru tema primita........ 2.1.Schema de principiu a circuitului (specificarea intrarilor si iesirilor) 2.2.Schema functionala a circuitului (diagrama de stari) 2.3. Modul de rezolvare 3. Descriera modului de testare a circuitului realizat..... 4. Concluzii 1.Prezentarea temei de proiect Se cere sa se proiecteze in mediul Activ - HDL circuitul digital "automat de lumini" astfel incat acesta sa execute urmatoarele functii: a) In functie de combinatia comutatoarelor C0 si C1 acesta trebuie sa aprinda LED-urile conectate la iesirile L intr-un anume mod astfel: 1) Daca C0 si C1 sunt deschise, toate LED-urile trebuie sa lumineze. 2) Daca C0 inchis si C1 deschis, trebuie ca toate LED-urile simultan sa palpaie de doua ori pe secunda astfel cu un factor de umplere de 50%; adica cu alte cuvinte timpul cat ledul sta aprins trebuie sa fie egal cu timpul cat ledul sta stins. 3) Daca C0 deschis si C1 inchis, trebuie ca primele patru LED-uri (cele conectate la L4L7) sa palpaie ca in cazul 2), iar ultimele patru LED-uri trebuie sa palpaie de doua ori mai rar decat primele patru LED-uri 4) Daca C0 si C1 sunt inchise trebuie ca ledurile sa se aprinda de la stanga la dreapta la interval de o secunda astfel ca la orice moment de timp doar un led va fi aprins, restul vor fi stinse. Cand se ajunge la capat, ciclul se reia automat. b) Daca contactul C2 este in starea deschis, circuitul trebuie sa fie in starea "oprit" adica toate ledurile sa fie stinse; iar daca contactul C2 este inchis, circuitul trebuie sa fie in starea "pornit" adica LED-urile trebuie sa se aprinda in functie de starea comutatoarelor C0 respectiv C1. Pentru a putea implementa temporizarile cerute, automatul de lumini este prevazut cu o intrare clk pentru semnalul de tact. Pe acesta intrare se furnizeaza un semnal de tact cu o frecventa de 50Mhz.
Schema de principiu
2. Descriera solutiei alese pentru tema primita 2.1 Schema de principiu a circuitului(specificarea intrarilor si iesirilor) -c0,c1,c2,clk:intrari; -l0...l7:iesiri(cele 7 led-uri); entity lumini is port (clk: in bit; c0,c1,c2: in bit; l: out bit_vector(7 downto 0)); end entity; " 2.2.Schema functionala a circuitului (diagrama de stari)
Automatul poate sa fie in 5 stari. 2.3. Modul de rezolvare S0-cat timp contactul c2 este deschis circuitul va fi in starea inactive iar led-urile vor fi stinse; S1-odata ce contactul c2 s-a activat automatul intra in starea s1 unde toate led-urile vor lumina ; S2-starea s2 se obtine odata ce s-a inchis contactul c0, iar contactul c1 ramane tot deschis , in aceasta stare becurile vor lumina de 2 ori pe secunda, cu un factor de umplere de 50% adica se vor aprinde la 0,25 sec,la 0,5 sec se sting, 0,75 se aprind si la 1 sec se sting,tinand cont ca tactul de clock are 20 ns am calculat numarul de tacturi : Tacturi 12500000 pentru 0,25 sec; Tacturi 25000000 pentru 0,5 sec; Tacturi 37500000 pentru 0,75 sec; Tacturi 50000000 pentru 1 sec. In program nu am folosit numarul real de tacturi pentru o simulare mai rapida. S3-se ajunge in aceasta stare cand se inchide contactul c1 iar contactul c0 se va deschide,in aceasta stare led-urile l4,l5,l5,l7 se vor comporta ca in starea s2 iar celelalte 4 led-uri se vor aprinde de 2 ori mai rar adica o data pe secunda, se vor aprinde la 0,5 sec si se vor stinge la 1 sec. S4-starea s4 va fi activa cand toate contactele vor fi inchise , in aceasta stare led-urile se vor aprinde pe rand unul cate unul de la l7 pana la l0, la o secunda distanta, odata ajuns la l0 ciclul se va repeta pana cand vor fii indeplinite conditiile starii in care ne aflam . 3.Descriera modului de testare a circuitului realizat Pentru testare am realizat un Test bench pe care l-am setat sa parcurga timp de 25μs cele 4 stari ale automatului cu fiecare etapa a ei. entity testlumini is end entity; architecture test of testlumini is component lumini is port(c0,c1,c2,clk:in bit; l:out bit_vector(7 downto 0)); end component; signal sc0,sc1,sc2,sclk:bit; signal sl:bit_vector(7 downto 0); begin L: lumini port map(sc0,sc1,sc2,sclk,sl); sclk<=not sclk after 2 ns; sc0<= '1' after 1000 ns,'0' after 3000 ns,'1' after 6000 ns; sc1<= '1' after 3000 ns; sc2<= '1' after 100 ns; end test; Diagramele de timp a semnalelor de test
4. Concluzii Pentru noi acest proiect a fost o adevarata provocare, am intampinat unele dificultati la folosirea unui contor, care dupa ce l-am inteles a fost foarte usor sa ducem proiectul in forma finala.
|