Your SlideShare is downloading. ×
  • Like
Simularea unei intersectii semaforizate folosind vhdl
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Simularea unei intersectii semaforizate folosind vhdl

  • 1,117 views
Published

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,117
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
21
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Lab Semafor (Traffic Light Controller) 30Numele : _________________________ Grupa : ____________ Data : _______________ Obiective: Dupa terminarea acestui exercitiu de laborator se dobandesc cunostintele necesare pentru aproiecta, simula, si implementa un semafor de trafic folosind VHDL. Referinte:Dueck Robert K., „Digital Design with CPLD Applications and VHDL”.Capitolul 10: Designul masinii algoritmice de stare10.3 Masini algoritmice de stare cu semnale de control10.6 Semaforul de trafic Materiale necesare:FPGA Spartan 3Xilinx ISEModeltech ModelSim Note experimentale: Proiectarea masinii algoritmice de stare consta intr-un circuit secvential sincron a caruistare progreseaza in functie de proiectul mostenit al masinii si posibil in conformitate cu stareaunui semnal de control. O masina algoritmica de stare, comuna, este semaforul de trafic.O diagrama de stare si odescriere a operarii acestei masini este data in sectiunea 10.6 a manualului „Digital Design withCPLD Applications and VHDL”.
  • 2. Procedeul experimental: Un semafor de trafic simplu poate fi implementat cu ajutorul unei masini algoritmice destare care are o diagrama de stare asemanatoare celei din figura 30.1. Circuitul detine control asupra drumului Nord-Sud si al celui Est-Vest. Luminile de la NSsunt controlate cu ajutorul iesirilor nsr, nsy si nsg(NS rosu, NS galben, NS verde). Drumul EV estecontrolat cu ajutorul iesirilor evr, evy si evg, intr-un mod similar. Ciclul este controlat cu ajutorul unei intrari denumite TIMER(cronometru) care controleazalungimea a doua cicluri de verde (s0 reprezinta EV verde; s2 reprezinta NS verde). Candcronometrul TIMER=1, o translatie de la s0 la s1 sau de la s2 la s3 este posibila. Aceasta translatieeste acompaniata de o schimare a culorii semaforului de la verde la galben, pe drumul activ. Figura 30.1 Schema de stare pentru un semafor de trafic Semaforul de pe celalat drum ramane rosu. O translatie neconditionata urmeaza, schimbandlumina semaforului din galben in rosu pe un drum iar pe celalat lumina rosie devine verde. Iesirile din diagrama de stare a figurei 30.1 sunt indicate ca fiind 0-logic-activ, care estepotrivit pentru placile Spartan 3.
  • 3. Ciclul poate fi setat sa aiba orice durata prin schimbarea semnalului dat de intrarea TIMER-ului. Lumina galbena a semaforului va fi aprinsa, indiferent de setari timp de un puls de ceas.Pentru fiecare observatie vom folosi un ciclu de 10 implusuri de ceas pentru fiecare drum: • 4 impulsuri verde • 1 impuls galben • 5 impulsuri rosu Acesta poate fi realizat utilizand un numarator modulo-5, asa cum e aratat in figura 30.2. Divizorul de ceas aduce frecventa oscilatorului intern in domeniul vizibil al observariipentru placa noastra CPLD. Un numarator pe 25 de biti este folosit pentru placa Altera UP-2, careare un oscilator intern cu o frecventa de 25.175 Mhz. Un numarator pe 22 biti este protrivit pentruplacile RSR PLDT-2 sau DeVry eSOC, care fiecare in parte au cate un oscilator intern cu ofrecventa de 4 Mhz. Calculati frecventa ceasului masinii algoritmice de stare pentru prorpia placeCPLD.f = ______________Desenati diagrama de timp a numaratorului mod-5 in spatiul oferit :CLKQ0Q1Q2Cum seteaza numaratorul durata luminii verzi pentru 4 impulsuri de ceas ?______________________________________________________________________________________________________________________________________________________ Figura 30.2 Diagrama logica pentru un semafor de trafic
  • 4. Crearea unui semafor de trafic in VHDL: 1. Se creaza un fisier VHDL pentru a implementa diagrama de stare a unui semafor de trafic din figura 30.1, in combinatie cu numaratorul modulo-5, dar fara divizorul de ceas. Modulele individuale si ierarhia de tip top-level se realizeaza in VHDL. 2. Creati o simulare in care sa aratati combinatia dintre controller-ul de iesire si ciclul de ceas. Aratati graficile iesirii profesorului. 3. Adaugati un divizor de ceas fisierului VHDL pentru semaforul de trafic, asa cum este aratat in diagrama logica din figura 30.2. Setati latimea divizorului de ceas la 22, respectiv 25. Legati pinii designului astfel incat luminile EV sa corespunda LED-urilor de la 9 pana la 11. Legati un pin la ceasul masinii algoritmice de stare, pentru a putea fi observat direct, si face-ti-l sa corespunda led-ului 16. Dezactivati toate celelalte leduri. Asigurati-va ca iesirile controllerului sunt la nivelul activ corect pentru LED-urile de pe placa CPLD in cauza. 4. Descarcati fisierul in placa CPLD si demonstrati functionarea instructorului. Introducere in VHDL: VHDL (abrevierea VHSIC HDL) este acronimul folosit pentru Very High Speed IntegratedCircuit Hardware Description Language. Este vorba despre un limbaj de descriere a hardware-lui (Hardware Description Language -HDL), destinat descrierii comportamentului si/sau arhitecturii unui "modul" electronic logic, cualte cuvinte al unei functiuni logice combinatorii si/sau secventiale. Alaturi de Verilog, este cel mai utilizat limbaj de proiectare a sistemelor electronice digitale. Euna din uneltele principale pentru proiectarea circuitelor integrate moderne, aplicat cu succes incampul microprocesoarelor (DSP, acceleratoare grafice), in telecomunicatii (TV, celulare),automobile (navigatie, sisteme de control al stabilitatii) si altele. La fel ca in orice limbaj evoluat de programare, proiectarea ierarhizata a aplicatiilor in VHDLprin utilizarea modulelor permite descrierea proiectului pe mai multe nivele, imbunatatestelizibilitatea si permite reutilizarea unor module. Un proiect ierarhizat este alcatuit din mai multe module. O aplicatie poate fi descrisa la nivelulcel mai de sus (top) printr-o sursa VHDL. In aceasta sursa se definesc interfete corespunzatoare cualte module situate pe nivele inferioare, module care descriu parti componente ale aplicatiei. Nuexista o limita a numarului de nivele ierarhice pe care un proiect poate sa-l contina. Principalulavantaj al proiectarii ierarhizate a unei aplicatii este acela ca incurajeaza modularizarea. Alt avantajeste ca permite organizarea proiectului pe nivele corespunzatoare de abstractizare si detaliu precumsi reutilizarea unor module.
  • 5. Creearea fisierului sursa VHDL a semaforului :Mai intai se lanseaza in executie aplicatia Xilinx ISE : Se executa dublu-click pe iconita Xilinx ISE de pe DesktopDupa ce aplicatia a pornit, cream un nou proiect astfel : Din meniul FILE, alegem New Project
  • 6. In fereastra nou aparuta pe ecran, se completeaza campurile in functie de datele proiectului: - numele proiectului; - locatia unde va fi salvat proiectul; - tipul proiectuluiapoi se da Next. Atentie! In numele proiectului nu vor fi lasate spatii libere; cuvintele vor fi unite prin liniisau underline-uri. In caz contrar, programul va ridica o eroare. Se ajunge la fereastra setarilor proiectului in functie de dispozitivul pentru care va fi creat. Se va alege: - produs tinta: Spartan 3; - simulator: Modelsim-XE VHDL; - limbaj de programare: VHDL, apoi se apasa butonul Next.
  • 7. Sunteti interogati daca doriti crearea unei surse noi pentru proiect. Intrucat fisierul sursa vafi adaugat ulterior in proiect, veti alege optiunea Next.
  • 8. In continuare sunteti interogati daca doriti adaugarea unei surse deja existente, insa si deaceasta data dam click pe Next.Apare fereastra ce prezinta sumarul proiectului. Apasam Finish.
  • 9. In partea din stanga sus a ecranului din cadrul aplicatiei, in tab-ul Sources , selectam laSources for : Implementation, dupa care click dreapta si alegem New Source.In fereastra aparuta completam cu numele sursei care va defini numaratorul (counter),alegem locatia dorita su setam tipul pe VHDL Module
  • 10. In continuare se solicita introducerea porturilor de intrare/iesire folosite. Intrucat acesteavor fi definite ulterior manual, apasam Next.Fisierul sursa al numaratorului este astfel generat in mod automat. Acesta cuprinde nistecomentarii marcate cu - - la inceputul de linie, afisate cu verde si cateva secvente de cod:
  • 11. In continuare vom prelucra codul sursa al numaratorului astfel :Intre liniile de cod generate in mod automat anteriorse introduc urmatoarele :care reprezinta porturile de intrare/iesire ale numaratorului.Intre liniile de codse introduce liniaIntre liniilese introduc :
  • 12. Daca ati urmarit pasii prezentati, fisierul sursa VHDL ar trebui sa arate dupa cum urmeaza :Procedand analog crearii fisierului sursa pentru numarator, vom crea un nou fisier sursa ceva ajuta la impementarea masinii de stare:
  • 13. In mod analog, se completeaza liniile de cod generate automat, dupa cum urmeaza :Intre liniilese introduc :Intre liniile de cod :se introduc :
  • 14. Intre liniile de cod :se introduc :
  • 15. Fisierul sursa VHDL al masinii de stare ar trebui sa arate astfel :
  • 16. Se executa verificarea codului astfel : in tab-ul Processes se selecteaza Synthesize – XSTsi apoi dublu click pe Check Syntax
  • 17. Daca nu exista greseli de sintaxa, ar trebui sa se afiseze mesajul „Process Check Syntaxcompleted successfully”. In caz contrar verificati codul sursa.Urmatoare etapa consta in testarea proiectului cu ajutorul unui „Test Bench”. Pentruaceasta, selectam din tab-ul Sources, la Sources for : Behavioral Simulation.
  • 18. Inseram un nou fisier sursa, insa de aceasta data de tip „Test Bench Waveform” :Selectam fisierul sursa care dorim sa-l testam si dam click pe Next, respectiv Finish.
  • 19. Setam apoi valorile pentru ceas, respectiv lungimea initiala a testului astfel :
  • 20. In fereastra aparuta de definesc parametrii de intrare pentru test. In cazul nostru parametrulclock este definit in mod implicit ca semnal de ceas si nu ne ramane decat sa initializamreset la primul semnal de ceas, printr-un click pe markerul albastru :Salvam intregul proiect din meniul File Save All sau dam click pe iconita:Din tab-ul Sources, la Sources for : Behavioral Simulation, selectam testul creat mai sus :
  • 21. In tab-ul Processes, la meniul Xilinx ISE Simulator, dam dublu-click pe SimulateBehavioral Model :Daca s-a lucrat corect, rezlutatul simularii ar trebui sa fie dupa cum urmeaza :