Sunteți pe pagina 1din 14

UNIVERSITATEA TEHNICĂ A MOLDOVEI

FACULTATEA CALCULATOARE INFORMATICĂ ȘI


MICROELECTRONICĂ

Lucrare Practică

La disciplina: SISTEME CU DISPOZITIVE RECONFIGURABILE

Tema:

“Proiectarea unui dispozitiv pentru controlarea semafoarelor”

A efectuat: st. gr. CRI-191M Mamolea Igor

A verivicat: dr.univ.conf. Sudacevschi Viorica

Chișinău 2020
Scopul Lucrării
Proiectarea unui dispozitiv pentru dirijarea semafoarelor la intersecție, implementat pe un
dispozitiv FPGA, în mediul de proiectare Quartus.

Sarcina Lucrării
De elaborat unitatea de comandă pentru două semafoare rutiere, instalate la intersecţia, ce
dirijează traficul rutier în direcţia Nord-Sud şi Vest-Est. Ambele semafoare comutează sincron,
având patru stări (conform tabelului). De realizat modelarea şi simularea unităţii de comandă în
mediul de proiectare Quartus II, Altera.
1. Elaborarea proiectului schematic
2. Elaborarea proiectului utilizând un limbaj de programare hardware (VHDL, AHDL,
Verilog)

Semaforul 1
Semaforul 2

Semaforul 2
Semaforul 1

Figura 1. Semafoarele instalate la intersecție

Tabel 1. Stările de comutare a semafoarelor


Starea Direcția Nord-Sud Direcția Vest-Est Durata
1 Verde Roșu 35
2 Galben Roșu și Galben 5
3 Roșu Verde 30
4 Roșu și Galben Galben 5

2
1. Elaborarea proiectului schematic

Tabelul 1.1 Raportul de compilare a schemei grafice

3
Figura 1.1. Diagrama bloc a proiectului
Figura 1.2. Diagrama RTL

2
Figura 1.3. Diagrama Tehnologică

3
Figura 1.4 Diagrama de simulare

4
2. Elaborarea proiectului utilizând un limbaj de programare hardware

Pentru efectuarea acestei părți a fost ales limbajul HDL Verilog

Tabel 2.1. Raportul de compilare

Listingul 2.1 programul Verilog


module semafor(input wire clock,
output wire nord_sud_verde,
output wire nord_sud_galben,
output wire nord_sud_rosu,
output wire vest_est_verde,
output wire vest_est_galben,
output wire vest_est_rosu,
output wire [7:0] out);

reg [7:0] cout = 0;

assign out = cout;


assign nord_sud_verde = cout < 35;
assign nord_sud_galben = (cout >= 35 & cout < 40) | (cout >= 70);
assign nord_sud_rosu = cout >= 40;

assign vest_est_verde = cout >= 40 & cout < 70;


assign vest_est_galben = (cout >= 35 & cout < 40) | (cout >= 70);
assign vest_est_rosu = cout < 40;

always @ (posedge clock)


begin : counter
if (cout == 75) begin
cout <= 0;
end
else begin
cout <= cout + 1;
end
end
endmodule

2
Figura 2.1. Diagrama RTL
Figura 2.2 Diagrama tehnologică

2
Figura 2.3. Diagama tehnologică după filtrare

3
Figura 2.4. Diagrama de simulare

4
Concluzie
În această lucrare am elaborat același dispozitiv utilizând două metode, utilizând schema bloc și
utilizand un limbaj de programare HDL. Deși același rezultat poate fi obținut atât prin utilizarea
schemei bloc cât și prin utilizarea unui limbaj HDL, metoda din urmă permite exprimarea
aceleași arhitecturi într-un mod mai compact, ceea ce reprezintă un avantaj în cazul
dispozitivelor mai mari.
Deși diagramele RTL și tehnologică a dispozitivelor diferă, diagrama de simulare este identică.

S-ar putea să vă placă și