Sunteți pe pagina 1din 84

Introducere n programarea circuitelor

FPGA
ndrumtor de laborator

George Dan Mois,


Departamentul de Automatic
Universitatea Tehnic din Cluj-Napoca

Cluj-Napoca
2013

Cuprins
Cuprins

List de figuri

iv

1 Circuite reconfigurabile
1.1 Tema . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Obiective . . . . . . . . . . . . . . . . . . . . . .
1.3 Aspecte teoretice . . . . . . . . . . . . . . . . . .
1.3.1 Circuite reconfigurabile . . . . . . . . . .
1.3.2 FPGA Field-Programmable Gate Array
1.3.3 FPGA Virtex-II Pro . . . . . . . . . . . .
1.3.3.1 Blocul Logic Programabil . . . .
R
1.3.4 Configurarea circuitelor FPGA Xilinx
.
1.3.5 Fluxul de proiectare . . . . . . . . . . . .
TM
R
1.3.6 Xilinx
ISE
. . . . . . . . . . . . . . .
1.3.6.1 Lansarea aplicat, iei . . . . . . . .
1.3.6.2 Project Navigator . . . . . . . .
1.4 Implementarea unei port, i logice simple n FPGA
Pasul 1. Lansarea aplicat, iei . . . . . . . .
Pasul 2. Crearea unui nou proiect . . . .
Pasul 3. Adugarea unui nou fis, ier surs
Pasul 4. Crearea unui circuit S, I . . . . .
Pasul 5. Asignarea locat, iei pinilor . . . .
Pasul 6. Configurarea dispozitivului . . .
Pasul 7. Programarea . . . . . . . . . . .
1.5 Exercit, ii . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

R
2 Simulare folosind Xilinx
ISETM Simulator
2.1 Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Obiective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Aspecte teoretice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.1 Simulare funct, ional folosind simulatorul ISETM (ISETM Simulator)
2.3.2 Verificarea funct, ionalitt, ii folosind simularea comportamental . . .
Pasul 1. Crearea semnalelor de und pentru test [1] . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1
1
1
2
2
2
5
5
6
6
9
9
9
10
10
10
11
12
13
15
17
18

. .
. .
. .
[1]
. .
. .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

21
21
21
21
22
23
23

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

CUPRINS

2.4
2.5

Pasul 2. Simularea operrii circuitului [1] . . . . . . . . . . . . . . . . . . . . . . . . . . .


Magistrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exercit, ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3 Descrierea fluxului de date n VHDL


3.1 Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Obiective . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 Aspecte teoretice . . . . . . . . . . . . . . . . . . . . . .
3.3.1 VHDL . . . . . . . . . . . . . . . . . . . . . . . .
3.3.2 Niveluri de abstractizare . . . . . . . . . . . . . .
3.4 Structura unui program VHDL . . . . . . . . . . . . . .
3.4.1 BIBLIOTECI . . . . . . . . . . . . . . . . . . . .
3.4.2 ENTITATEA . . . . . . . . . . . . . . . . . . . .
3.4.3 ARHITECTURA . . . . . . . . . . . . . . . . . .
3.4.4 Elemente de baz ale limbajului . . . . . . . . .
3.5 Descrierea fluxului de date Dataflow Description . . .
3.5.1 Atribuirea condit, ional a semnalelor . . . . . . .
3.5.2 Atribuirea selectiv a semnalelor . . . . . . . . .
3.6 Implementarea unei port, i logice simple n FPGA . . . .
Pasul 3. Adugarea unui nou fis, ier surs VHDL
Pasul 4. Crearea unui circuit S, I . . . . . . . . .
3.7 Exercit, ii . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 Descrierea secvent, ial a circuitelor logice n VHDL
4.1 Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Obiective . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3 Aspecte teoretice . . . . . . . . . . . . . . . . . . . . . .
4.4 Descrierea secvent, ial Sequential Description . . . . .
4.4.1 Procese . . . . . . . . . . . . . . . . . . . . . . .
4.4.2 Instruct, iunea secvent, ial de atribuire de semnal .
4.4.3 Atribuirea de valori variabilelor . . . . . . . . . .
4.4.4 Instruct, iunea if-then-else . . . . . . . . . . .
4.4.5 Instruct, iunea case . . . . . . . . . . . . . . . . .
4.4.6 Alte instruct, iuni secvent, iale . . . . . . . . . . . .
4.5 Magistrale . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6 Exercit, ii . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 Descrierea structural a circuitelor logice n VHDL
5.1 Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Obiective . . . . . . . . . . . . . . . . . . . . . . . . .
5.3 Aspecte teoretice . . . . . . . . . . . . . . . . . . . . .
5.4 Descrierea structural Structural Description . . . .
5.4.1 Semnale interne . . . . . . . . . . . . . . . . . .
5.4.2 Componente . . . . . . . . . . . . . . . . . . .

ii

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

27
28
32

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

33
33
33
33
33
35
35
36
37
37
38
38
40
40
42
42
43
44

.
.
.
.
.
.
.
.
.
.
.
.

47
47
47
47
47
48
48
49
49
51
51
52
53

.
.
.
.
.
.

56
56
56
56
56
59
59

CUPRINS

5.5

5.4.3 Port Map


5.4.4 Open . .
5.4.5 Generate
Exercit, ii . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

6 Descrierea circuitelor secvent, iale n VHDL


6.1 Tema . . . . . . . . . . . . . . . . . . . . . . . . .
6.2 Obiective . . . . . . . . . . . . . . . . . . . . . .
6.3 Aspecte teoretice . . . . . . . . . . . . . . . . . .
6.4 Circuite sincronizate cu semnalul de ceas . . . . .
6.4.1 Detectarea fronturilor semnalului de ceas
6.4.2 Bistabilul D . . . . . . . . . . . . . . . . .
6.4.3 Semnalul RESET . . . . . . . . . . . . . . .
6.4.3.1. RESET asincron . . . . . . . . . .
6.4.3.2. RESET sincron . . . . . . . . . .
6.4.4 Semnalul ENABLE . . . . . . . . . . . . . .
6.4.5 Exemple . . . . . . . . . . . . . . . . . . .
6.5 Exercit, ii . . . . . . . . . . . . . . . . . . . . . . .
Referint, e

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

60
61
61
62

.
.
.
.
.
.
.
.
.
.
.
.

64
64
64
64
65
65
66
67
67
68
68
69
73
75

iii

List de figuri
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
1.10
1.11
1.12
1.13
1.14
1.15
1.16
1.17
1.18
1.19
1.20
1.21
1.22
1.23
1.24
1.25
1.26
1.27

Exemplu de aplicat, ie msurare de temperatur . . . . . .


Cipuri FPGA . . . . . . . . . . . . . . . . . . . . . . . . . .
Structura intern a unui FPGA . . . . . . . . . . . . . . . .
R
Celul SRAM Xilinx
. . . . . . . . . . . . . . . . . . . . .
Bloc Logic Configurabil Virtex-II Pro [2] . . . . . . . . . . .
Slice Virtex-II Pro [2] . . . . . . . . . . . . . . . . . . . . .
R
Fluxul de proiectare Xilinx
[3] . . . . . . . . . . . . . . .
TM
R

Icoana Xilinx ISE
. . . . . . . . . . . . . . . . . . . . .
TM
Fereastra ISE
Project Navigator . . . . . . . . . . . . . .
Crearea unui nou proiect . . . . . . . . . . . . . . . . . . . .
Propriett, ile dispozitivului folosit . . . . . . . . . . . . . . .
Marcajul de pe capsul . . . . . . . . . . . . . . . . . . . . .
Adugarea la proiect a unui fis, ier surs schematic . . . . . .
Crearea unui circuit S, I . . . . . . . . . . . . . . . . . . . . .
TM
Fereastra ISE
Project Navigator . . . . . . . . . . . . . .
Aplicat, ia pentru implementarea constrngerilor fizice . . . .
Legarea pinilor FPGA-ului la resursele plcii de dezvoltare .
Asignarea fis, ierului de configurare a) . . . . . . . . . . . . .
Asignarea fis, ierului de configurare b) . . . . . . . . . . . . .
Programarea dispozitivului . . . . . . . . . . . . . . . . . .
Bara de progres prezentnd programarea . . . . . . . . . . .
Mesaj programare . . . . . . . . . . . . . . . . . . . . . . .
Poart S, I cu 4 intrri . . . . . . . . . . . . . . . . . . . . .
Circuit pentru o poart SAU cu 6 intrri . . . . . . . . . . .
Semisumator pe un bit . . . . . . . . . . . . . . . . . . . . .
Sumator complet pe un bit . . . . . . . . . . . . . . . . . .
Sumator pe 2 bit, i . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1
2
3
4
6
7
8
9
9
10
10
11
11
12
12
13
14
15
16
17
17
17
18
18
19
19
20

2.1
2.2
2.3
2.4
2.5
2.6

Multiplexor 2 la 1 . . . . . . . . . .
Multiplexor 2 la 1 - Proiect ISETM
Fis, ierul care cont, ine schema . . . . .
Adugarea unei noi surse . . . . . .
Alocarea unei surse fis, ierului de test
Fereastra Initialize Timing . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

22
22
23
23
24
24

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
iv

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

LIST DE FIGURI
2.7
2.8
2.9
2.10
2.11
2.12
2.13
2.14
2.15
2.16
2.17
2.18

Semnalele de test . . . . . . . . . . . . . . . . . . . . .
Modificarea semnalelor de test . . . . . . . . . . . . .
Fis, ierul test.tbw . . . . . . . . . . . . . . . . . . . .
Lansarea execut, iei simulrii . . . . . . . . . . . . . . .
Vizualizarea rezultatelor . . . . . . . . . . . . . . . . .
Prima magistral de intrare . . . . . . . . . . . . . . .
Adugarea sumatoarelor pe 8 bit, i . . . . . . . . . . . .
Butonul Add Bus Tap . . . . . . . . . . . . . . . . . .
Magistrala care cont, ine cel mai putin semnificativ bit .
Magistrala care cont, ine cel mai semnificativ bit . . . .
Magistrala care cont, ine rezultatul - adugarea unui bit
Sumator pe 16 bit, i . . . . . . . . . . . . . . . . . . . .

. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
la magistral
. . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

25
26
26
27
27
29
29
30
30
30
31
31

3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
3.11
3.12
3.13
3.14

Niveluri de abstractizare [4] . . . . . . . . . . .


Structura unui program VHDL . . . . . . . . .
Entitatea poarta_SI . . . . . . . . . . . . . . .
Instruct, iuni executate concurent . . . . . . . .
Circuitul combinat, ional pentru entitatea ex1 .
Multiplexor 2 la 1 . . . . . . . . . . . . . . . .
Adugarea la proiect a unui fis, ier surs VHDL
Definirea modulului . . . . . . . . . . . . . . .
Fis, ierul VHDL . . . . . . . . . . . . . . . . . .
Semisumator pe un bit . . . . . . . . . . . . . .
Sumator complet pe un bit . . . . . . . . . . .
Multiplexor 4-la-1 . . . . . . . . . . . . . . . .
Demultiplexor 1-la-4 . . . . . . . . . . . . . . .
Decodificator . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

35
36
37
38
40
41
42
42
43
44
44
45
45
46

4.1
4.2
4.3
4.4
4.5
4.6

Instruct, iuni executate secvent, ial . . . . . . . . .


Declararea intrrii sel s, i a ies, irii o ca magistrale
Semisumator pe un bit . . . . . . . . . . . . . . .
Sumator complet pe un bit . . . . . . . . . . . .
Multiplexor 4-la-1 . . . . . . . . . . . . . . . . .
Demultiplexor 1-la-4 . . . . . . . . . . . . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

48
52
53
54
54
54

5.1
5.2
5.3
5.4
5.5
5.6
5.7

Descrierea ierarhic a unui multiplicator secvent, ial [5]


Fis, ierele surs pentru o poart logic S, I cu 3 intrri .
Poarta S, I cu 3 intrri . . . . . . . . . . . . . . . . . .
Poart S, I-NU . . . . . . . . . . . . . . . . . . . . . . .
Multiplexor 2 la 1 . . . . . . . . . . . . . . . . . . . .
Semisumator pe un bit . . . . . . . . . . . . . . . . . .
Sumator pe trei bit, i . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

57
57
58
62
63
63
63

6.1
6.2

Bistabil D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Numrtor pe 4 bit, i cu semnal LOAD s, i RESET . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

69
70

LIST DE FIGURI
6.3
6.4
6.5
6.6
6.7

Registru de deplasare la stnga cu semnal RESET asincron


Registru pe 8 bit, i . . . . . . . . . . . . . . . . . . . . . . .
Bistabil D . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bistabil T . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bistabil JK . . . . . . . . . . . . . . . . . . . . . . . . . .

vi

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

71
72
73
74
74

Laborator 1

Circuite reconfigurabile
1.1

Tema

Introducere n studiul s, i utilizarea circuitelor reconfigurabile.

1.2

Obiective

Familiarizarea cu not, iunile teoretice legate de circuitele reconfigurabile, n special FPGA, s, i cu instrumentele
folosite n dezvoltarea de aplicat, ii care utilizeaz astfel de dispozitive.

Figura 1.1: Exemplu de aplicat, ie msurare de temperatur

Laborator 1

1.3
1.3.1

Aspecte teoretice
Circuite reconfigurabile

au capacitatea de reprogramare a hardware-ului n timpul funct, ionrii (de exemplu, este posibil
schimbarea din mers a protocolului de comunicat, ie a unei interfet, e de ies, ire sau programarea logicii reconfigurabile, astfel nct ea s implementeze un bloc de procesare specific unui algoritm de procesare de
imagini);
folosite in general la obt, inerea celei mai bune performant, e cu utilizarea la maxim a hardware-ului;
ofer posibilitatea ca circuitele s fie ncrcate s, i descrcate dinamic din hardware n timpul funct, ionrii;
duc la o reducere a suprafet, ei folosite fat, de sistemele statice;
de regul, proiectate cu un amestec de logic fix s, i cipuri FPGA (Field-Programmable Gate Array);
exist un volum suficient de munc n aceasta direct, ie, pentru a presupune c sistemele reconfigurabile,
bazate pe tehnologie FPGA, vor domina proiectarea sistemelor nglobate n viitorul apropiat;
au capacitatea de a mbuntt, ii solut, iile din prezent.

1.3.2

FPGA Field-Programmable Gate Array

Figura 1.2: Cipuri FPGA

dispozitive logice programabile care furnizeaz o capacitate logic foarte ridicat, aprute n anii 80 [6];
diferent, ele care le deosebesc fat, de restul circuitelor programabile sunt mrimea s, i complexitatea sporite;
cipuri de siliciu;
au o schem intern ce se poate schimba;
permit ntrebuint, area hardware-ului la capacitatea lui maxim;
au o natur cu adevarat paralel;
capabile s asigure performant, e mbuntat, ite fat, de cele oferite de procesoare convent, ionale [7];
nu exist o distinct, ie clar fat, de dispozitivele logice programabile (PLD);

Laborator 1
mpreun cu PLD alctuiesc grupul de circuite ASIC (Application-Specific Integrated Circuit) programabile [8];
constau dintr-o matrice de celule logice de baz, care pot fi configurate dup fabricat, ie, folosind o
anumint tehnologie de programare;
cont, in celule logice conectate prin fire s, i blocuri de comutat, ie ntre ele s, i cu blocuri speciale de
intrri/ies, iri [9];
structura intern este regulat, format din celule logice programabile de baz, legate ntre ele prin interconexiuni programabile (figura 1.3) [8];

Figura 1.3: Structura intern a unui FPGA

Field-Programmable se refer la capacitatea acestor dispozitive de a fi programate pe teren, n sistem,


fr a fi deconectate, scoase din dispozitiv;
Gate Array se refer la structura intern de baz a dispozitivului care permite programarea acestuia la
orice moment n timp dup fabricat, ie [10];
componente importante:
multiplexoare;
blocuri de memorie RAM nglobat;
circuite de ceas (DCM);
altele;
celulele logice formate din 2 elemente principale:
circuite bistabile (flip-flop);
tabele de cutare (look-up table LUT) bloc de stocare a datelor, are capacitatea de un bit,
funct, ioneaz la fel ca s, i o poart logic (intrarea este constituit din liniile de adres ale elementului
de stocare, iar ies, irea este reprezentat de valoarea stocat la aceast adres);
ofer posibilitatea sincronizrii datelor de intrare s, i ies, ire cu semnalul de ceas;
configurarea const n:
3

Laborator 1
specificarea funct, iei logice pentru fiecare celul de baz;
configurarea conexiunilor reprezentate de blocurile de legtur;
pot fi mprt, ite n dou mari grupe:
1. programabile o singur dat bazate pe tehnologie antifuzibil1 ;
2. reconfigurabile de obicei sunt alctuite din celule SRAM (nu ment, in informat, ia stocat cnd
tensiunea de alimentare este oprit pierderea configurat, iei FPGA-ului odat cu ntreruperea alimentrii) [11];
productori principali:
R
R
R
1. Xilinx
s, i Altera
tehnologie SRAM Celula configurabil Xilinx
de tip SRAM este alctuit
din dou invertoare s, i se bazeaz pe un proces COMS standard (figura 1.4). Celula comand port, ile
altor tranzistoare, care, n funct, ie de starea lor, creeaz sau nu o conexiune (dezavantaj major
ntreruperea tensiunii de alimentare duce la pierderea configurat, iei) [8];

R
Figura 1.4: Celul SRAM Xilinx

R
R
R
R
2. Actel
, Quicklogic
, Cypress
s, i Xilinx
tehnologie antifuzibil;

n funct, ie de generat, ie, se permite reconfigurarea


1. static programare n faza compilrii s, i imposibilitatea reconfigurrii n timpul funct, ionrii;
2. dinamic posibilitatea reconfigurrii la orice moment de timp din cadrul duratei de funct, ionare a
aplicat, iei:
(a) total intreg dispozitivul este reconfigurat;
(b) part, ial doar o parte a unui circuit FPGA funct, ional este reconfigurat;
aplicat, ii:
pot fi folosite n sisteme de procesare de semnale digitale (DSP), unde pot furniza solut, ii mai complete
dect cele oferite de implementrile tradit, ionale DSP [12];
mai put, in rapide dect circuitele ASIC, dar ofer o sporire a vitezei de cteva ordine de mrime fat,
de solut, iile software rulate pe procesoare de uz general [13];
sisteme spat, iale s, i de aprare [12];
1 Antifuzibilul

este opusul fuzibilului s, i reprezint un circuit ntrerupt pn se fort, eaz trecerea unui curent de programare prin
interiorul su. Acesta este produs folosind tehnologie CMOS (Complementary metaloxidesemiconductor). Antifuzibilele sunt
plasate pe firele de conexiune din interiorul unui FPGA, iar prin programare se realizeaz legturi permanente, aceast tehnologie
corespunznd dispozitivelor programabile o singur dat (One Time Programmable OTP) [8]. Actel, principalul productor de
TM
circuite FPGA bazate pe tehnologie antifuzibil, foloses, te denumirea de PLICE
(programmable low-impedance circuit element)
pentru antifuzibil.

Laborator 1
sisteme pentru realizarea de prototipuri [14];
sisteme medicale [15];
recunoas, terea limbajului;
criptografie [16];

1.3.3

FPGA Virtex-II Pro

R
Arhitectura FPGA Virtex-II Pro [2], un dispozitiv produs de Xilinx
care a ajuns la maturitate, este
prezentat n cele ce urmeaz.
n component, a circuitului FPGA intr:

1. Core RocketIO / RocketIO X MGT convertoare serial-paralel s, i paralel-serial folosite pentru interconectarea magistralelor sau subsistemelor;
2. Blocuri procesor PowerPC 405 procesor care poate executa instruct, iuni cu o rat de o instruct, iune pe
ciclu de ceas;
3. Blocuri Input/Output (IOBs) intrri/ies, iri programabile;
4. Blocuri logice programabile (CLB) includ patru slice-uri (component, a lor este explicat in sect, iunea
urmtoare) s, i buffere cu 3 stri; fiecare CLB este conectat la o matrice de comutat, ie, pentru a avea acces
la resursele de rutare generale;
5. Blocuri de memorie SelectRAM+ memorie RAM dual-port, care poate fi configurat n diferite adncimi
s, i lt, imi;
6. Multiplicatoare pe 18x18 bit, i cte un bloc asociat fiecrui bloc de memorie RAM;
7. Controlere digitale de ceas (DCM) furnizeaz solut, ii complete pentru proiectarea schemelor de vitez
ridicat;
8. Resurse de rutare toate componentele enumerate mai sus au acces la o matrice global de rutare.

1.3.3.1

Blocul Logic Programabil

Fiecare bloc logic configurabil este format din patru slice-uri s, i dou buffere cu trei stri (figura 1.5).
Blocurile logice configurabile implementeaz logica n tabelele de adevr pstrate n SRAM, folosesc multiplexoare controlate prin SRAM, iar rutarea este bazat pe tranzistoare de trecere.
Fiecare slice (figura 1.6) cont, ine:
1. Dou generatoare de funct, ii (F s, i G), care pot fi configurate ca un tabel de cutare cu 4 intrri, ca s, i un
registru de deplasare pe 16 bit, i sau ca un bloc de memorie SelectRAM+ distribuit de 16 bit, i;
2. Dou elemente de stocare registri;
3. Port, i logice aritmetice;
4. Multiplexoare de dimensiune mare;
5. Lant, rapid carry look-ahead;
6. Lant, n cascad orizontal (poart SAU) [2].
Un dispozitiv FPGA Virtex-II Pro (XC2VP30) este alctuit din 13969 slice-uri, are o dimensiune a matricei
de 80x46, cont, ine 428 Kb de memorie RAM distribuit, 136 de blocuri multiplicatoare, 2448 Kb de blocuri de

Laborator 1

Figura 1.5: Bloc Logic Configurabil Virtex-II Pro [2]

memorie RAM, 8 controlere digitale de semnal de ceas (DCM), 2 procesoare RISC PowerPC s, i 8 transceivere
Multi-Gigabit [17].
Detalii suplimentare despre arhitecturile Virtex-II Pro s, i Spartan-3E, dispozitivele FPGA cu ajutorul crora
se vor efectua lucrrile de laborator, se gsesc la adresa http://www.xilinx.com/support/index.htm#nav=
sd-nav-link-156334&tab=tab-sd.

1.3.4

R
Configurarea circuitelor FPGA Xilinx

Configurarea dispozitivului se realizeaz prin ncrcarea bitstream-ului (secvent, a de bit, i de configurare) n


memoria intern de configurare SRAM 2D, folosind diferite moduri de transmitere a bit, ilor de configurare:
1. Slave-serial,
2. Master-serial,
3. Slave SelectMAP,
4. Master SelectMAP,
5. Boundary-Scan(IEEE 1532).

1.3.5

Fluxul de proiectare

Descrierea comportamental s, i structural a sistemelor s, i circuitelor implementate n FPGA se realizeaz


utiliznd limbaje de descriere hardware (Hardware Description Languages HDL) sau prin intermediul
6

Laborator 1

Figura 1.6: Slice Virtex-II Pro [2]

unui pachet de captur schematic (o unealt grafic ce permite proiectantului s specifice port, ile pe care
dores, te s le foloseasc s, i modul n care acestea sunt conectate)[18]. Dintre acestea, VHDL (VHSIC Hardware
Description Languages), care este un limbaj de descriere hardware folosit pentru proiectarea de circuite integrate,
inclusiv FPGA, este cel mai ntlnit. Pentru configurare se mai pot folosi Verilog sau instrumentele de sintez
specializate oferite de majoritatea productorilor [19]. Figura 1.7 prezint fluxul de proiectare corespunztor
R
[3].
dispozitivelor FPGA, produse de Xilinx
n etapele de realizare s, i de sintez a modelului, acesta se creeaz folosind un editor schematic sau un
limbaj de descriere hardware. Dup sintetizarea modelului se obt, ine un fis, ier EDIF sau NGC, fis, ier care
cont, ine lista de legturi (netlist), n funct, ie de modalitatea folosit la primul pas, generarea modelului: folosirea
R
unui limbaj de descriere hardware (VHDL, Verilog), respectiv folosirea interfet, ei Xilinx
Synthesis Technology
(XST). Acest fis, ier este echivalentul sub form de text al circuitului.
As, adar, editarea proiectului se realizeaz folosind fis, iere surs, acestea putnd fi create n formate diferite:
schematice
generate prin urmarea a patru pas, i de baz:
1. selectarea unui mediu de realizare a schemei s, i o librrie de dispozitive, realizarea circuitului prin
plasarea pe schem a port, ilor logice;
2. conectarea port, ilor ntre ele prin fire;
3. adugarea s, i stabilirea numelor bufferelor de intrare s, i de ies, ire acestea vor defini pinii de
intrare/ies, ire ale capsulei;
4. generarea listei de legturi (netlist) [18];
prin limbaje de descriere hardware (HDL) cum sunt VHDL, Verilog sau ABEL.
7

Laborator 1

R
Figura 1.7: Fluxul de proiectare Xilinx
[3]

Fiecare proiect va fi format dintr-un fis, ier surs principal (top module) s, i un numr de fis, iere surs secundare.
Oricare dintre acestea poate fi un fis, ier schematic sau un fis, ier HDL.
n etapa de implementare a modelului, fis, ierul creat la pasul anterior este transformat, primind un format de
fis, ier fizic. Dup aceasta, este creat un fis, ier bitstream (secvent, de bit, i), sau, dac se dores, te, sunt generate
fis, iere pentru programarea unei memorii PROM sau EPROM. n etapa de verificare a modelului se testeaz dac
circuitul realizat respect funct, ionalitatea s, i restrict, iile de vitez specificate. n funct, ie de rezultatele verificrii
modelului se revine la pas, ii anteriori pentru mbuntt, irea s, i optimizarea circuitului [19].
Pentru verificarea sintaxei s, i funct, ionalitt, ii, se foloses, te simularea funct, ional sau simularea RTL (Register
Transfer Logic). Simularea ntrzierilor este important pentru verificarea funct, ionrii circuitului, dup ce se
calculeaz ntrzierile n cazul cel mai defavorabil pentru act, iunile de plasament s, i rutare a logicii. Astfel, se
poate afla dac modelul realizat ntrunes, te constrngerile de timp stabilite init, ial.
TM
R
n acest laborator, modelul va fi generat s, i sintetizat folosind editorul schematic din cadrul Xilinx
ISE .

Laborator 1

1.3.6

R
Xilinx
ISE

TM

TM

R
Pachetul software Xilinx
ISE este un mediu de dezvoltare integrat care cont, ine un set de programe pentru
crearea (captura), simularea s, i implementarea proiectelor digitale pe dispozitive FPGA sau CPLD (Complex
Programmable Logic Device). Uneltele puse la dispozit, ia utilizatorului folosesc o interfat, grafic ce permite
execut, ia programelor folosind bare de instrumente, meniuri s, i icoane.

1.3.6.1

Lansarea aplicat, iei

- se realizeaz executnd dublu-click pe icoana

TM

R
Figura 1.8: Icoana Xilinx
ISE

sau din meniul Start:


Start All Programs Xilinx ISE Design Suite ISE Project Navigator.
1.3.6.2

Project Navigator

TM

Figura 1.9: Fereastra ISE

TM

Project Navigator

Detalii suplimentare despre utilizarea ISE


Project Navigator pot fi gsite la adresa
http://www.kxcad.net/electronic_Xilinx_guide/html/ise_project_navigator_overview.htm.
9

Laborator 1

1.4

Implementarea unei port, i logice simple n FPGA

Pasul 1.

Lansarea aplicat, iei


TM

R
Lansat, i mediul de dezvoltare Xilinx
ISE

Pasul 2.

Crearea unui nou proiect


File New Project...

Apare fereastra prezentat n figura 1.10. Cmpurile aceasteia se vor completa dup cum se poate vedea n
cele ce urmeaz.

Figura 1.10: Crearea unui nou proiect

Next
Se completeaz fereastra cont, innd propriett, ile dispozitivului folosit (figura 1.11). Ea corespunde unui
R
dispozitiv Xilinx
Virtex-II Pro. Pentru dispozitivul Spartan-3E datele vor fi diferite.

Figura 1.11: Propriett, ile dispozitivului folosit

10

Laborator 1
Citirea propriett, ilor circuitelor FPGA Xilinx

Figura 1.12: Marcajul de pe capsul

Citirea codului capsulei n cazul familiei de circuite FPGA Virtex se face astfel: pe primele dou pozit, ii avem
tipul capsulei; A sau G pe pozit, ia a 3-a indic faptul c s-a folosit tehnologie fr plumb; urmeaz numrul de
pini s, i o liter care indic gama de temperaturi; n continuare avem datele legate de revizuirea circuitului, codul
de locat, ie pentru fabricat, ia capsulei, codul de geometrie s, i codul datei.
Next
Pasul 3.

Adugarea unui nou fis, ier surs

Figura 1.13: Adugarea la proiect a unui fis, ier surs schematic

11

Laborator 1
Next Finish Yes Next Urmeaz adugarea unui fis, ier existent. Nu este necesar, nu
avem un astfel de fis, ier. Next Finish
Proiectul va fi creat, iar editorul schematic va fi lansat automat.
Pasul 4.

Crearea unui circuit S, I

Figura 1.14: Crearea unui circuit S, I

Se salveaz schema (figura 1.14) s, i apoi se revine n fereastra care cont, ine fis, ierele surs (se selecteaz
tabul Sources) s, i n fereastra care cont, ine procesele (se selecteaz tabul Processes figura 1.15).

TM

Figura 1.15: Fereastra ISE

12

Project Navigator

Laborator 1
Pasul 5.

Asignarea locat, iei pinilor

Se selecteaz fis, ierul care cont, ine schema circuitlui s, i se execut dublu-click pe opt, iunea User Constraints Floorplan Area / IO / Logic-Post- Synthesis.
Proiectul va fi sintetizat s, i se va cere permisiunea pentru adugarea unui fis, ier care implementeaz conTM
R
strngerile proiectului. Se selecteaz Yes s, i n acest sens va fi lansat aplicat, ia Xilinx
PACE
(figura
1.16).

Figura 1.16: Aplicat, ia pentru implementarea constrngerilor fizice

13

Laborator 1
Se vor alege dou comutatoare s, i un led de pe placa cu FPGA folosit pentru a fi legate la intrrile s, i ies, irile
port, ii implementate. Locat, ia acestora este indicat pe plcile folosite n laborator lng denumirea componentei,
ntre paranteze.

Atent, ie
La introducrea datelor n tabelul din figura 1.17 este necesar executarea click pe o alta celul dup introducerea fiecrei valori, chiar s, i dup ultima.

Figura 1.17: Legarea pinilor FPGA-ului la resursele plcii de dezvoltare

Se salveaz modificrile fcute s, i se nchide aceast aplicat, ie.


Se va trece la configurarea dispozitivului. Acesta trebuie s fie alimentat s, i conectat la calculator.

Atent, ie
Dup aparit, ia s, i corectarea unor erori, trebuie efectuat s, tergerea fis, ierelor generate de proiect prin selectarea
opt, iunii Project Cleanup Project Files.

14

Laborator 1
Pasul 6.

Configurarea dispozitivului

n fereastra care afis, eaz procesele, dublu-click pe Configure Target Device Manage Configuration Project (iMPACT). Proiectul va fi implementat, se va genera fis, ierul de configurare, iar in fereastra
nou aprut se vor lsa opt, iunile selectate implicit (Configure devices using Boundary-Scan (JTAG)) s, i se va
selecta Finish.
Pentru asignarea fis, ierului de configurare proaspt creat dispozitivului FPGA pe care l folosim, se selecteaz
fis, ierul poarta_si.bit s, i se selecteaz Open (figura 1.18).

Figura 1.18: Asignarea fis, ierului de configurare a)

15

Laborator 1
Neavnd fis, iere generate pentru scrierea memoriilor de pe plac, pentru acestea se va selecta opt, iunea Bypass (figura 1.19).

Figura 1.19: Asignarea fis, ierului de configurare b)

Dup aceasta act, iune se va selecta OK n fereastra care prezint fis, ierele care au fost alocate. n fereastra
Device Programming Properties nu se vor efectua modifcri s, i se va selecta OK.

16

Laborator 1
Pasul 7.

Programarea

Figura 1.20: Programarea dispozitivului

n fereastra Device Programming Properties, deschis din nou, nu se vor efectua modifcri s, i se va selecta
OK.
Urmeaz programarea:

Figura 1.21: Bara de progres prezentnd programarea

Dac aceasta act, iune este executat cu success, este afis, at mesajul din figura 1.22.

Figura 1.22: Mesaj programare

Se nchide aplicat, ia iMPACT fr a salva proiectul s, i se poate verifica funct, ionarea proiectului act, ionnd
comutatoarele de pe plac.

17

Laborator 1

1.5

Exercit, ii

1. Implementat, i port, ile logice elementare (S, I, SAU, NU, SAU-EXCLUSIV, S, I-NU, SAU-NU, SAU-NU EXCLUSIV) n FPGA, conectnd intrrile la comutatoarele de pe plcile de dezvoltare din laborator s, i ies, irile
acestora la LED-urile disponibile. Verificat, i funct, ionarea lor.
2. Creat, i un simbol schematic pentru o poart S, I cu 3 intrri (figura 1.23 A) s, i folositi-l ntr-un nou proiect
pentru crearea unei porti S, I cu 4 intrri (figura 1.23 B) prin descriere schematic.

Figura 1.23: Poart S, I cu 4 intrri

Observat, ie: Crearea unui simbol schematic se realizeaza selectnd Design Utilities Create Schematic Symbol n fereastra Processes. Acest simbol va putea fi folosit in cadrul unor noi fisiere .sch
adaugate la proiect. Numele simbolului este acelas, i cu al fis, ierului care cont, ine schema.
3. Creat, i circuitul din figura 1.24 (poart SAU cu 6 intrri) folosind editorul schematic. Se va folosi un
simbol schematic pentru o poart SAU cu 3 intrri.

Figura 1.24: Circuit pentru o poart SAU cu 6 intrri

18

Laborator 1
4. Creat, i un semisumator folosind editorul schematic. Conectat, i intrrile s, i ies, irile acestuia la comutatoarele
si LED-urile disponibile pe plcile din laborator. Verificat, i funct, ionarea sa.

Figura 1.25: Semisumator pe un bit

5. Creat, i un sumator complet pe un bit folosind editorul schematic. Conectat, i intrrile s, i ies, irile acestuia la
comutatoarele si LED-urile disponibile pe plcile din laborator. Verificat, i funct, ionarea sa.

Figura 1.26: Sumator complet pe un bit

Observat, ie: Pentru crearea sumatorului de la punctul 5 (figura 1.26), dar s, i pentru exercit, iul 6 se va
porni de la semisumatorul (figura 1.25) creat la punctul 4.
Selectnd Design Utilities Create Schematic Symbol n fereastra Processes pentru schema
semisumatorului se va crea un fis, ier .sym cu acelas, i nume. Dac se dores, te folosirea simbolului creat in
alt proiect, acesta va fi copiat mpreun cu fis, ierul .sch corespunztor din directorul proiectului curent
n cel al noului proiect. n acest caz, fis, ierul care contine schema semisumatorului trebuie adugat noului
TM
R
proiect s, i n mediul Xilinx
ISE
prin efectuarea click dreapta pe modulul principal (Top Module) s, i
selectarea opt, iunii Add Source...
Este posibil si realizarea tuturor schemelor in acelas, i proiect. Schema care se dires, te a fi sintetizat s, i
implementat trebuie s fie setat ca Top Module (n fereastra Sources click dreapta pe fis, ierul care
cont, ine descrierea sumatorului complet s, i selectarea opt, iunii Set as Top Module).
19

Laborator 1
6. Creat, i un sumator pe doi bit, i folosind editorul schematic 1.27.

Figura 1.27: Sumator pe 2 bit, i

20

Laborator 2
R
Simulare folosind Xilinx
ISETM

Simulator
2.1

Tema

Prezentarea not, iunilor corespunztoare realizrii simulrii funct, ionrii circuitelor.

2.2

Obiective

R
Familiarizarea cu modul de utilizare al Xilinx
ISETM Simulator (ISim) din mediul WebPackTM . n cadrul
acestui laborator se va realiza doar simularea funct, ional a circuitelor, simularea temporal efectundu-se n
mod asemntor, cu mici modificri.

2.3

Aspecte teoretice

Un simulator logic permite observarea strilor n care se afl ies, irile unui circuit logic pentru toate combinat, iile
intrrilor nainte ca acesta s fie implementat n hardware. Simularea poate fi considerat ca fiind cea mai bun
tehnic pentru verificarea operrii unui anumit circuit. n cazul proiectelor de dimensiuni mari, simularea este
mult mai putin costisitoare s, i predispus la erori dect realizarea unui prototip hardware. n cazul observrii
erorilor, circuitul poate fi corectat s, i resimulat de un numr nelimitat de ori [20].
R
Pentru realizarea simulrilor, pe lng ISim se pot folosi s, i alte utilitare, cum este ModelSim
[21].
Testarea unui model se realizeaz prin dou tipuri de simulare:
1. funct, ional;
2. temporal.
Simularea funct, ional este folosit pentru verificarea funct, ionrii corecte a logicii implementate ntr-un
circuit, n timp ce simularea temporal t, ine cont s, i de ntrzierile care apar n logica implementat n FPGA,
astfel nct se poate vedea timpul de propagare a semnalelor [21].

21

Laborator 2

2.3.1

Simulare funct, ional folosind simulatorul ISETM (ISETM Simulator) [1]

Se vor descrie pas, ii pentru realizarea unei simulri comportamentale a circuitului din urmtoarea figur, 2.1.
Pentru nceput, se va crea un proiect care realizeaz descrierea schematic a acestuia, figura 2.2.

Figura 2.1: Multiplexor 2 la 1

Figura 2.2: Multiplexor 2 la 1 - Proiect ISETM

Pe scurt, act, iunile care trebuie executate sunt cele enumerate n continuare. Dup aceasta, urmeaz descrierea
lor amnunt, it.
1. adugarea unei noi surse la proiect, avnd tipul Test Bench Waveform s, i fiind asociat fis, ierului care
cont, ine descrierea circuitului pe care l vom simula;
2. selectarea parametrilor semnalelor folosite ca intrri;
3. editarea semnalelor pentru definirea intrrilor;
4. selectarea opt, iunii Behavioral Simulation din meniul drop-down din partea de sus a ferestrei care cont, ine
sursele;
5. selectarea fis, ierului de tip WAVEFORM din fereastra care prezint sursele s, i apoi executarea dublu-click pe
opt, iunea Simulate Behavioral Model situat sub rubrica Xilinx ISE Simulator din fereastra Processes
[22].
22

Laborator 2

2.3.2
Pasul 1.

Verificarea funct, ionalitt, ii folosind simularea comportamental


Crearea semnalelor de und pentru test [1]

Se creeaz semnalele de intrare (input waveform), care reprezint stimulii de intrare pentru a verifica
funct, ionalitatea multiplexorului din figura 2.1. Aceste semnale reprezint n mod grafic un program de test.
Pentru simulare, se pot folosi s, i programe scrise ntr-un limbaj de descriere hardware (VHDL, Verilog, etc.)
pentru generarea semnalelor de intrare.
1. Selectarea fis, ierului mux21.sch din fereastra Sources;

Figura 2.3: Fis, ierul care cont, ine schema

2. Crearea unei noi surse test prin selectarea Project New Source. n fereastra New Source Wizard,
selectat, i Test Bench WaveForm ca tip al sursei, s, i introducet, i numele test n cmpul File Name.
Executat, i click pe Next;

Figura 2.4: Adugarea unei noi surse

23

Laborator 2
3. n fereastra Associate Source se cere asocierea stimulilor de test unui fis, ier surs (n cazul nostru avem
doar un fis, ier surs, mux21.sch). Se execut click pe Next;

Figura 2.5: Alocarea unei surse fis, ierului de test

4. Fereastra Summary indic faptul c sursa va fi adugat proiectului s, i prezint atributele acesteia.
Click Finish;
5. n cazul n care avem semnal de ceas, ntrzierile corespunztoare trebuie setate n fereastra de dialog
Initialize Timing, nainte de editarea formei semnalelor de intrare;

Figura 2.6: Fereastra Initialize Timing

24

Laborator 2
n cazul proiectului prezentat aici, nu exist un semnal de ceas. Astfel, la Clock Information se selecteaz
Combinatorial (or internal clock). Restul opt, iunilor ramn cele setate implicit: ntrzieri, lungimea
init, ial a simulrii s, i semnalele globale.
Alte setri, n cazul unui circuit sincronizat cu semnalul de ceas ar putea fi:
Frecvent, a semnalului de ceas de 25 MHz;
Intrrile valide cu 10 ns nainte de frontul ascendent al semnalului de ceas;
Ies, irile valide cu 10 ns dup frontul ascendent al semnalului de ceas.
n funct, ie de cele scrise mai sus, cmpurile ferestrei vor fi completate cu:
Clock High Time: 20 ns;
Clock Low Time: 20 ns;
Input Setup Time: 10 ns;
Output Valid Delay: 10 ns;
Offset: 0 ns;
Global Signals: GSR (FPGA); Atunci cnd GSR(FPGA) este selectat, 100 ns vor fi adugate automat
la valoarea Offset;
Initial Length of Test Bench: 1500 ns.
6. Se selecteaz Finish pentru a init, ializa valorile corespunztoare ntrzierilor. Dup aceasta, reprezentarea
semnalelor de intrare si modificarea valorilor lor este posibil (Figura2.7).

Figura 2.7: Semnalele de test

25

Laborator 2
7. Port, iunile colorate n albastru corespund valorilor setate pentru cmpul Assign Inputs din tabul Combinatorial Timing Information al ferestrei de dialog Initialize Timing. Cu mausul se modific valoarea
intrrilor, executnd click pe port, iunile albastre. Prin click pe aceste zone, valoarea curent a semnalului
este negat (Figura 2.8).

Figura 2.8: Modificarea semnalelor de test

8. Se salveaz acest fis, ier.


9. n fereastra Sources, se selecteaz Behavioral Simulation pentru a vedea dac fis, ierul de test test.tbw
este adugat proiectului.

Figura 2.9: Fis, ierul test.tbw

10. nchidet, i fis, ierul de test.

26

Laborator 2
Pasul 2.

Simularea operrii circuitului [1]

1. n fereastra Sources, se selecteaz Behavioral Simulation s, i fis, ierul de test test.tbw.


2. n tabul Processes, executat, i click pe butonul + pentru a expanda procesul Xilinx ISE Simulator s, i
executat, i dublu-click pe Simulate Behavioral Model. Simulatorul va fi lansat s, i simularea va fi rulat
pe durata specificat anterior.

Figura 2.10: Lansarea execut, iei simulrii

3. Pentru a vizualiza rezultatele, se selecteaz tabul Simulation din spat, iul de lucru. Se poate executa
Zoom pentru a observa mai clar tranzit, iile.

Figura 2.11: Vizualizarea rezultatelor

4. nchidet, i vizualizarea rezultatelor. Dac apare mesajul You have an active simulation open. Are
you sure you want to close it?, selectat, i Yes pentru a continua.

27

Laborator 2

2.4

Magistrale

Gama de numere ntregi care pot fi reprezentate prin intermediul numerelor binare depinde de numrul de
bit, i utilizat, i. n general, prin folosirea a n bit, i se pot reprezenta ntregi de la 0 la 2n 1.

Exemplu
(1254)10 = (10011100110)2
(12)10 = (1100)2
n cazul unui numr binar, bitul cel mai din dreapta este numit bitul cel mai put, in semnificativ leastsignificant bit (LSB). Bitul situat pe pozit, ia cea mai din stnga, corespunztor puterii celei mai ridicate a lui 2,
este numit bitul cel mai semnificativ most-significant bit (MSB). De obicei, n cadrul sistemelor digitale, este
mai convenabil gestionarea unui anumit numr de bit, i ca un grup. Un grup de 8 bit, i este numit octet byte.
Un grup de 4 bit, i, o jumtate de octet, este numit nibble [23].
Pentru o manipulare mai eficient, n cadrul mediului de dezvoltare folosit, un grup de semnale, fiecare dintre
ele reprezentnd un bit, pot forma o magistral (bus).
n continuare se va expune modul de utilizare a magistralelor printr-un exemplu.

28

Laborator 2

Exemplu
Crearea unui sumator pe 16 bit, i folosind dou sumatoare pe 8 bit, i.
Se plaseaz un semnal pe schem s, i se execut dublu-click pe acesta, pentru a-i schimba numele. Acest
semnal va reprezenta primul numr pe 16 bit, i care va fi adunat (figura 2.12). Astfel, i se va atribui numele
a(15:0), unde a(15) este cel mai semnificativ bit iar a(0) este cel mai put, in semnificativ. Cele dou puncte
reprezint bit, ii aflat, i ntre MSB s, i LSB. n cazul n care am fi avut un numr binar pe 4 bit, i, acesta ar fi fost
declarat astfel: a(3:0) MSB a(3) s, i LSB a(0). n acelas, i mod plasm si magistrala pentru al doilea operand,
b(15:0) s, i magistrala care va reprezenta rezultatul, c(16:0), aceasta avnd 17 bit, i.

Figura 2.12: Prima magistral de intrare

Se plaseaz dou sumatoare pe 8 bit, i pe schem (simbolul cu numele ADD8) figura 2.13.

Figura 2.13: Adugarea sumatoarelor pe 8 bit, i

29

Laborator 2
Pentru extragerea semnalelor din magistrale se vor plasa pe magistral Bus Taps folosind butonul Add Bus
Tap, situat pe bara de instrumente (figura 2.14).

Figura 2.14: Butonul Add Bus Tap

Se plaseaz un element Bus Tap pe magistrala a, pentru extragerea ultimilor si 8 bit, i, a(7:0) (figura 2.15).
Al doilea element Bus Tap va extrage primii 8 bit, i, a(15:8) (figura 2.16).

Figura 2.15: Magistrala care cont, ine cel mai putin semnificativ bit

Figura 2.16: Magistrala care cont, ine cel mai semnificativ bit

30

Laborator 2
Se va proceda la fel si pentru cel de-al doilea operand, b.
Rezultatul va fi constituit din magistrala format din bitul de acumulare generat ca s, i cel mai semnificativ
bit s, i ies, irile celor dou sumatoare pe 8 bit, i (figura 2.17).

Figura 2.17: Magistrala care cont, ine rezultatul - adugarea unui bit la magistral

Sumatorul va avea schema prezentat n figura 2.18.

Figura 2.18: Sumator pe 16 bit, i

31

Laborator 2

2.5

Exercit, ii

1. Realizat, i simularea funct, ional a circuitelor realizate n cadrul primelor dou exercit, ii din laboratorul
precedent.
2. Realizat, i sumatorul pe 16 bit, i din sect, iunea precedent s, i simulat, i funct, ionarea acestuia.
3. Realizat, i sumatorul de la exercit, iul 6 din laboratorul precedent folosind magistrale.
4. Realizat, i un sumator pe 8 bit, i folosind dou sumatoare pe 4 bit, i s, i simulat, i funct, ionarea acestuia.

32

Laborator 3

Descrierea fluxului de date n VHDL


3.1

Tema

Not, iuni introductive despre limbajul de descriere hardware VHDL. Descrierea fluxului de date n cadrul unui
circuit logic utiliznd limbajul VHDL.

3.2

Obiective
TM

R
Familiarizarea cu limbaul VHDL s, i realizarea unor circuite folosind Xilinx
ISE

3.3
3.3.1

TM

WebPack

Aspecte teoretice
VHDL

prescurtarea pentru VHSIC Hardware Description Language (VHSIC Very High Speed Integrated
Circuit);
ideea de baz este de a folosi un limbaj de nivel nalt pentru a descrie circuitul ntr-un fis, ier text n locul
folosirii unei descrieri grafice de nivel sczut a port, ilor [18];
nu este un limbaj de programare cum sunt C sau Java;
este un limbaj pentru descrierea hardware-ului din cadrul sistemelor digitale [24];
proiectantul descrie funct, ia sau comportamentul circuitului n cuvinte, nefiind constrns s stabileasc
tipul port, ilor necesare pentru crearea unei anumite aplicat, ii; din acest motiv, termenul comportamental
este utilizat n asociere cu acest limbaj [18];
descrie
1. structura,
2. comportamentul,
3. temporizarea
schemelor circuitelor digitale ASIC, FPGA sau convent, ionale;
33

3. Laborator
Tabelul 3.1: Scurt istorie a limbajului VHDL [25]
1981

1983-85
1986

1987

1993

1994
2000
2002
2007

2009

Se init, iaz dezvoltarea VHDL de ctre United States Department


of Defence pentru a se ocupa de problema crizei ciclului de viat,
al hardware-ului (costurile producerii de hardware nou au
atins un punct critic).
Dezvoltarea limbajului de baz de ctre
Intermetrics, IBM s, i TI.
Toate drepturile asupra definit, iilor limbajului sunt transferate
de ctre United States Department of Defence la IEEE pentru
ncurajarea acceptrii acestora de ctre industrie.
Publicarea standardului IEEE.
MIL-STD-454 Standard General Requirements for Electronic
Equipment cere ca circuitele ASIC furnizate ctre United States
Department of Defence s fie nsot, ite de descrieri VHDL
comprehensive.
Fiind un standard IEEE, trebuie s fie revizuit la fiecare 5 ani
(sau mai rapid) pentru asigurarea relevant, ei sale n industrie.
Prima revizuire a fost terminat n septembrie 1993 s, i nc este
cea mai rspndit varianta de VHDL ca suport.
Standardul revizuit. Poart numele de VHDL 1076-1993.
Standardul revizuit. Poart numele de VHDL 1076 2000 Edition s, i
este, de fapt, VHDL 1076-1993 cu tipuri de date protejate.
Standardul revizuit. Poart numele de VHDL 1076-2002 s, i reprezint
o revizuire minor a VHDL 1076 2000 Edition.
Se creeaz un amendament la standardul VHDL 1076-2002 VHDL
Procedural Language Application Interface standard
(VHDL 1076c-2007) posibilitatea ca programe scrise n alte
limbaje s comunice cu un simulator VHDL.
Standardul revizuit. Poart numele VHDL 1076-2008. Se face referire
la el prin numele VHDL-2008.

este un limbaj puternic tipizat (nu pot aprea erori cauzate de tipuri incorecte ale expresiilor n faza de
execuie), case insensitive;
alte limbaje de descriere hardware:
1. Verilog s, i el un standard IEEE (1364),
2. ABEL Advanced Boolean Equation Language proiectat pentru descrierea PLD-urilor, mai put, in
cunoscut s, i utilizat [4];
seamn cu limbajele de programare convent, ionale, ns exist o serie de diferent, e importante fat, de
acestea (paralelism, integrarea specificat, iilor temporale);
este paralel n mod inerent n cadrul programelor VHDL, comenzile care corespund port, ilor logice sunt
executate n paralel, de ndat ce apare o intrare nou;
programul imit comportamentul unui sistem fizic, de obicei digital;
permite:
1. adugarea de specificat, ii temporale (ntrzierile port, ilor),
34

3. Laborator
2. descrierea unui sistem ca o structur cont, innd diferite subsisteme interconectate [4];
este un standard IEEE s, i ANSI, astfel c toate modele descrise prin intermediul su sunt portabile;
suport trei stiluri de descriere de baz diferite:
1. structural,
2. a fluxului de date,
3. comportamental prin instruct, iuni secvent, iale;
nu necesit cunoas, terea altor limbaje pentru simulare deoarece fis, ierele testbench pot fi scrise n VHDL;
suport ierarhizarea, permit, nd astfel descrierea unui sistem digital ca un set de componente interconectate,
care la rndul lor pot fi modelate ca seturi de subcomponente interconectate [26];
85% din circuitele implementate n FPGA sunt realizate n VHDL [27].

3.3.2

Niveluri de abstractizare

(a) Comportamental

(b) Structural

(c) Implementare

Figura 3.1: Niveluri de abstractizare [4]


Descrierea unui sistem poate fi de mai multe feluri:
1. comportamental ceea ce realizeaz sistemul (figura 3.1a);
2. structural componentele sistemului (figura 3.1b);
3. propriett, i funct, ionale modul n care se interact, ioneaz cu sistemul;
4. propriett, i fizice ct de rapid este sistemul.
VHDL nu poate descrie un sistem la nivelul fizic/geometric, dar majoritatea uneltelor de dezvoltare genereaz
scheme ale cipurilor din cod VHDL structural sau comportamental [28].

3.4

Structura unui program VHDL

Cele trei prt, i fundamentale ale unui program VHDL sunt (figura 3.2):

35

3. Laborator
1. declarat, iile de BIBLIOTECI lista bibliotecilor folosite;
2. ENTITATEA o abstractizarea a hardware-ului propriu-zis al unui dispozitiv [26];
3. ARHITECTURA codul VHDL propriu-zis, care descrie modul n care se comport circuitul (entitatea)
[29];

Figura 3.2: Structura unui program VHDL

Comentariile sunt marcate prin folosirea (dou linii de dialog), iar caracterul ; indic finalul unei
declarat, ii sau al unei instruct, iuni.

3.4.1

BIBLIOTECI

O bibliotec reprezint o colect, ie de secvent, e de cod folosite frecvent. De obicei, bibliotecile sunt formate
din pachete. Acestea, la rndul lor, cont, in funct, ii, proceduri, componente, constante s, i tipuri.
Declararea unei bilioteci se face n dou linii de cod:
prima linie cont, ine numele bibliotecii,
a doua linie incepe prin cuvntul cheie use s, i indic pachetul folosit.

Exemplu
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
36

3. Laborator
use IEEE.STD_LOGIC_UNSIGNED.ALL;
n cazul nostru, bibliotecile necesare sunt adugate implicit de ctre mediul de dezvoltare.

3.4.2

ENTITATEA

Aceasta este lista specificat, iilor pentru tot, i pinii (Port) de intrare s, i de ies, ire.
Sintaxa:
entity nume_entitate is
Port (nume_port : mod_semnal TIP_SEMNAL;
...
nume_port : mod_semnal TIP_SEMNAL);
end nume_entitate;
nume_entitate este numele dat entitt, ii (orice nume ales in afar de cuvintele rezervate in VHDL).
mod_semnal poate lua valorile:
IN
OUT
INOUT
BUFFER

intrare,
ies, ire,
pin bidirect, ional,
se foloses, te atunci
cnd semnalul este unul intern.

TIP_SEMNAL poate lua valorile: BIT, STD_LOGIC, INTEGER, etc.

Exemplu

Figura 3.3: Entitatea poarta_SI

Poarta S, I (figura 3.3).


entity poarta_SI is
Port (a : in STD_LOGIC;
b : in STD_LOGIC;
c : out STD_LOGIC);
end poarta_SI;

37

3. Laborator

3.4.3

ARHITECTURA

Aceasta este o descriere a modului n care entitatea trebuie s se comporte.


Sintaxa:
architecture nume_arhitectura of nume_entitate is
[declarat, ii]
begin
[cod]
end nume_arhitectura;
nume_arhitectura este numele dat arhitecturii (orice nume ales in afar de cuvintele rezervate in VHDL).
Poate fi acelas, i nume cu cel al entitt, ii.
Partea de [declarat, ii] este opt, ional. Aici se pot declara semnalele, constantele, etc.
[codul] ncepe imediat dup cuvntul rezervat begin.
n cazul exemplului precedent, poarta S, I, arhitectura poate avea forma:
architecture arhitectura_mea of poarta_SI is
begin
c <= a and b; rezultatul operat, iei S, I ntre semnalele a s, i b
este atribuit pinului de ies, ire c
end arhitectura_mea;

3.4.4

Elemente de baz ale limbajului

Acestea se gsesc n diferite surse: crt, i, tutoriale online, etc. O descriere a acestora este dat n [30].

3.5

Descrierea fluxului de date Dataflow Description

n cadrul acestui stil de modelare, fluxul de date din interiorul entitt, ii este exprimat n principal prin
folosirea de instruct, iuni concurente (figura 3.4) de atribuire de semnale [26]. As, adar, ordinea n care ele sunt
scrise nu este important.

Figura 3.4: Instruct, iuni executate concurent

Este o descriere comportamental prin folosirea de instruct, iuni concurente. Acest stil de modelare nu permite
specificarea n mod explicit a structurii, ea putnd fi ns dedus.

38

3. Laborator
Instruct, iunea de atribuire a semnalelor este forma de baz a modelrii comportamentale prin descrierea
fluxului de date:
a <= b; a primes, te valoarea lui b.
Astfel, valoarea curent a semnalului b este atribuit semnalului a. Instruct, iunile vor fi executate ntr-o
ordine arbitrar, atunci cnd una dintre variabilele de intrare s, i schimb valoarea.
n cadrul instruct, iunilor pot fi introduse s, i valori nenule pentru ntrzieri:
c <= a and b after 5 ns; c primes, te valoarea rezultatului operat, iei
logice S, I ntre a s, i b dup 5 nanosecunde.
De exemplu, expresia after poate fi folosit pentru generarea unui semnal de ceas, dup cum urmeaz:
clk <= not clk after 5 ns; clk primes, te valoarea negat a clk
5 nanosecunde.

Atent, ie
ntrzierile din codul VHDL nu sunt sintetizabile s, i nu pot fi implementate n FPGA. n FPGA acestea se
realizeaz cel mai us, or prelund si prelucrnd un semnal de ceas intern. De obicei, aceste declarat, ii sunt folosite
n editarea programelor VHDL testbench pentru efectuarea simulrilor.

Exemplu
Avem entitatea:
entity ex1 is
Port (a : IN STD_LOGIC;
b : IN STD_LOGIC;
c : OUT STD_LOGIC;
d : OUT STD_LOGIC);
end ex1;
unde c ia valoarea rezultatului execut, iei operat, iei S, I ntre a s, i b, iar d ia valoarea execut, iei operat, iei S, I-NU ntre
a s, i b [31].
Codul:
c <= a and b;
d <= not c;

39

3. Laborator
nu va trece de faza compilrii deoarece n VHDL nu se poate accesa o variabil de ies, ire, cele dou instruct, iuni
executndu-se concurent. Aceste dou instruct, iuni nu sunt executate una dup cealalt, astfel nct valoarea
primei expresii s poat fi folosit n cadrul execut, iei celei de-a doua.
As, adar, codul corect poate avea forma:
c <= a and b;
d <= a nand b;
s, i descrie circuitul care are forma prezentat n figura urmtoare (3.5):

Figura 3.5: Circuitul combinat, ional pentru entitatea ex1

3.5.1

Atribuirea condit, ional a semnalelor

Aceast declarat, ie selecteaz una dintr-un numr de valori pentru un semnal de ies, ire n funct, ie de ndeplinirea
unor condit, ii, la orice schimbare a valorilor care le alctuiesc.
Sintaxa:
semnal <= valoare1 when condit, ie else
valoare2 when condit, ie else
...;

Exemplu
z <= in0 when sel=0 else
in1;
Circuitul corespunztor acestui cod este un multiplexor (figura 3.12).

3.5.2

Atribuirea selectiv a semnalelor

Aceasta selecteaz una dintre alternativele disponibile pentru atribuirea unui semnal pe baza ndeplinirii unei
condit, ii (starea unui semna). n cazul acestei declarat, ii, toate condit, iile disponibile trebuie furnizate. Pentru
exprimarea tuturor opt, iunilor rmase se foloses, te cuvntul cheie others.
40

3. Laborator

Figura 3.6: Multiplexor 2 la 1

Sintaxa:
with semnal_cond select
semnal <= valoare1 when valoare1,
valoare2 when valoare2,
...
valoare3 when others;

Exemplu
Pentru multiplexorul din figura 3.12, avem secvent, a de cod:
with sel select
z <= in0 when 0,
in1 when others;

41

3. Laborator

3.6

Implementarea unei port, i logice simple n FPGA

Pas, ii 1(Lansarea aplicat, iei) s, i 2(Crearea unui nou proiect) ca s, i n laboratorul precedent.
Pasul 3.

Adugarea unui nou fis, ier surs VHDL

Figura 3.7: Adugarea la proiect a unui fis, ier surs VHDL

Next Finish Yes Next Urmeaz adugarea unui fis, ier existent Nu este necesar, nu
avem un astfel de fis, ier Next Finish
Va fi deschis fereastra pentru definirea modulului VHDL proaspt creat (figura 3.8).

Figura 3.8: Definirea modulului

42

3. Laborator
Se vor alege a s, i b ca intrri s, i c ca ies, ire. Dup executarea operat, iunii click pe butonul Next urmeaz
aparit, ia unei ferestre care cont, ine informat, iile legate de s, ablonul modulului VHDL care va fi creat. La apsarea
butonului Finish se cere permisiunea pentru generarea fis, ierului corespunztor acestui modul.
Yes Next Next (nu se dores, te adugarea unui fis, ier existent) Fereastr care prezint
specificat, iile proiectului nou creat Finish.
Proiectul va fi creat, iar editorul VHDL va fi automat lansat. Codul existent const din scheletul modulului
definit la acest pas.

Figura 3.9: Fis, ierul VHDL

Pasul 4.

Crearea unui circuit S, I

Urmeaz codul VHDL pentru modulul corespunztor unei port, i logice S, I.


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
Uncomment the following library declaration if instantiating
any Xilinx primitives in this code.
library UNISIM;
use UNISIM.VComponents.all;
entity poarta_SI is
Port (a : in STD_LOGIC;
b : in STD_LOGIC;
c : out STD_LOGIC);
43

3. Laborator
end poarta_SI;
architecture Behavioral of poarta_S, I is
begin
c <= a and b; rezultatul operat, iei S, I ntre semnalele a s, i b
este atribuit pinului de ies, ire c
end Behavioral;
Se salveaz s, i apoi se revine n fereastra care cont, ine fis, ierele surs (se selecteaz tabul Sources) s, i n
fereastra care cont, ine procesele (se selecteaz tabul Processes).
Pas, ii 5(Asignarea locat, iei pinilor), 6(Configurarea dispozitivului) s, i 7(Programarea) sau simulare
ca s, i n laboratoarele precedente.

3.7

Exercit, ii

1. Implementat, i port, ile logice elementare (S, I, SAU, NU, SAU-EXCLUSIV, S, I-NU, SAU-NU, SAU-NU EXCLUSIV) folosind cod VHDL. Simulat, i funct, ionarea circuitului.
2. Creat, i un semisumator folosind descrierea fluxului de date s, i realizat, i simularea sa funct, ional.

Figura 3.10: Semisumator pe un bit

3. Creat, i un sumator complet pe un bit folosind descrierea fluxului de date. Verificat, i funct, ionarea sa prin
simulare funct, ional.

Figura 3.11: Sumator complet pe un bit

44

3. Laborator
4. Creat, i un multiplexor 4-la-1 folosind descrierea fluxului de date. Verificat, i funct, ionarea sa folosind simularea funct, ional.

Figura 3.12: Multiplexor 4-la-1

5. Creat, i un demultiplexor 1-la-4 folosind descrierea fluxului de date. Simulat, i funct, ionarea sa.

Figura 3.13: Demultiplexor 1-la-4

6. Creat, i un decodificator 2-la-4 folosind limbajul de descriere hardware VHDL, descrierea fluxului de date.
Realizat, i o simulare a funct, ionrii sale.
Un decodificator este un circuit combinat, ional care are n intrri s, i 2n ies, iri (figura 3.14), funct, ionarea sa
fiind descris de tabelul 3.2.

45

3. Laborator

Figura 3.14: Decodificator

a
0
0
1
1

b
0
1
0
1

Q0
1
0
0
0

Q1
0
1
0
0

Q2
0
0
1
0

Q3
0
0
0
1

Tabelul 3.2: Tabelul de adevr pentru un decodificator 2-la-4

46

Laborator 4

Descrierea secvent, ial a circuitelor


logice n VHDL
4.1

Tema

Not, iuni introductive despre limbajul de descriere hardware VHDL. Descrierea secvent, ial a funct, ionrii unui
circuit logic utiliznd limbajul VHDL.

4.2

Obiective
TM

R
Familiarizarea cu limbajul VHDL s, i realizarea unor circuite folosind Xilinx
ISE

4.3

TM

WebPack

Aspecte teoretice

n laboratorul precedent s-au prezentat instruct, iuni simple de atribuire, care implic folosirea de expresii
aritmetice logice s, i instruct, iuni de atribuire selectiv s, i condit, ional. Folosirea acestor instruct, iuni n orice
ordine nu schimb semnificat, ia codului scris [23]. VHDL pune la dispozit, ia proiectantului un set separat de
instruct, iuni, numite instruct, iuni secvent, iale. Pentru folosirea acestui set de instruct, iuni, este obligatoriu ca
acestea s apar n interiorul unei instruct, iuni process. Cele mai importante sunt instruct, iunile if-then-else
s, i case. Fat, de exemplele prezentate n laboratorul precedent, doar nivelul arhitectural va fi diferit, codul care
exemplific modul de funct, ionare al circuitelor.
n cele ce urmeaz vor fi prezentate instruct, iunile folosite n cadrul descrierii secvent, iale.

4.4

Descrierea secvent, ial Sequential Description

Ca s, i modul de descriere prezentat n laboratorul anterior, s, i acesta este unul comportamental. Diferent, a
const n faptul c n acest caz instruct, iunile sunt executate secvent, ial (figura 4.1).
Instruct, iunile secvent, iale folosesc multe expresii care apart, in programrii standard, cum sunt atribuirea de
valori variabilelor, declarat, ii if-then-else, bucle. Toate acestea pot fi folosite doar n interiorul unei instruct, iuni
process.

47

4. Laborator

Figura 4.1: Instruct, iuni executate secvent, ial

n cazul n care avem atribuiri multiple de semnale, doar ultima dintre acestea are un efect vizibil.

4.4.1

Procese

Procesele pot aprea n descrierea arhitecturii n acelas, i fel ca declarat, iile de atribuire a semnalelor, iar
instruct, iunile din cadrul acestora sunt executate secvent, ial. Instruct, iunile sunt folosite pentru a calcula valorile
pentru semnalele de ies, ire folosind semnalele de intrare. Lista de senzitivitate cont, ine toate semnalele de
intrare care determina reevaluarea procesului.
n interiorul unui proces pot aprea s, i instruct, iuni de atribuire a semnalelor care au aceeas, i form cu cele
concurente, ns n acest caz, ele sunt executate secvent, ial.
Sintaxa:
nume_proces: process (lista de senzitivitate)
declarat, ii de variabile;
begin
instruct, iuni secvent, iale;
end process nume_proces;

Pentru reprezentarea unei valori logice constante (valoarea unui singur bit) se folosesc caracterele (x <=
1;), iar pentru reprezentarea unei constante s, ir de bit, i se folosesc caracterele " (x <= "01";).

4.4.2

Instruct, iunea secvent, ial de atribuire de semnal

Aceasta este aceeas, i instruct, iune ca s, i cea concurent, singura diferent, dintre cele dou fiind faptul c ea
este executat secvent, ial, la momentul la care execut, ia programului ajunge la ea.
semnal <= expresie; semnal primes, te valoarea expresiei.
48

4. Laborator

4.4.3

Atribuirea de valori variabilelor

Atribuie variabilelor valori sau rezultatele evalurii unei expresii. Aceast act, iune se atribuie instantaneu, la
execut, ia instruct, iunii. Variabilele pot fi declarate doar n interiorul unui proces.
nume_var := expresie; nume_var semnal primes, te valoarea expresiei.
Declararea variabilelor se realizeaza in interiorul procesului, inainte de cuvantul cheie begin.
Sintaxa:
variable nume_variabila : tip := valoare_initiala;
Initializarea este optionala.

Exemplu
process (in0,in1,sel)
variable cnt : integer := -1;
begin
...
end process;

4.4.4

Instruct, iunea if-then-else

Sintaxa simplificat este:


if condit, ie then
instruct, iuni secvent, iale 1;
else
instruct, iuni secvent, iale 2;
end if;
if condit, ie 1 then
instruct, iuni secvent, iale 1;
elsif condit, ie 2 then
...
else
instruct, iuni secvent, iale n;
end if;

49

4. Laborator

Exemplu
Multiplexor 2 la 1 implementat folosind instruct, iunea if-then-else:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity mux2la1 is
Port (in0 : in STD_LOGIC;
in1 : in STD_LOGIC;
sel : in STD_LOGIC;
f : out STD_LOGIC);
end mux2la1;
architecture Secvential of mux2la1 is
begin
process (in0,in1,sel)
begin
if sel=0 then
f<=in0;
else
f<=in1;
end if;
end process;
end Secvential;
O alternativ, care evident, iaz modul secvent, ial de execut, ie a instruct, iunilor este prezentat mai jos [23].
process (in0,in1,sel)
begin
f<=in0;
if sel=1 then
f<=in1;
end if;
end process;

50

4. Laborator

4.4.5

Instruct, iunea case

Este similar cu atribuirea selectiv de semnal, implicnd folosirea unui semnal de select, ie s, i a declarat, iilor
when folosite pentru evaluarea semnalului de select, ie.
Sintaxa simplificat este:
case expresie is
when opt, iuni => instruct, iuni secvent, iale;
when opt, iuni => instruct, iuni secvent, iale;
...
when others instruct, iuni secvent, iale;
end case;
Instruct, iunea case trebuie s includ o declarat, ie when pentru toate valorile posibile pe care le poate lua
semnalul de select, ie. Astfel, cuvntul cheie others trebuie s existe n cadrul unei declarat, ii when pentru
specificarea tuturor valorilor semnalului de select, ie rmase.

Exemplu
Multiplexor 2 la 1 implementat folosind instruct, iunea case:
process (in0,in1,sel)
begin
case sel is
when 0 => f<=in0;
when others => f<=in1;
end case;
end process;

4.4.6

Alte instruct, iuni secvent, iale

Alte instruct, iuni secvent, iale sunt:


null nu se execut nici o act, iune;
bucla for;
bucla while;
wait o alternativ pentru folosirea unei liste de senzitivitate pentru suspendarea unui proces;
loop;
exit se poate folosi doar n cadrul unei bucle; cauzeaz saltul la bucla exterioar;
next se poate folosi doar n cadrul unei bucle; cauzeaz saltul la sfrs, itul iterat, iei curente s, i continu cu
nceputul iterat, iei urmtoare;
function;
procedure.
51

4. Laborator
Informat, ii despre modul lor de utilizare se pot gsi consultnd diferite surse: crt, i (ex. [23]), tutoriale online,
etc.

4.5

Magistrale
TM

R
La crearea entitt, ilor folosind Xilinx
ISE

TM

WebPack

se pot declara s, i magistrale ca intrri sau ies, iri.

Exemplu
Demultiplexor 1 la 4 implementat folosind magistrale.
TM
TM
R
Se va crea un proiect Xilinx
ISE WebPack . La declararea intrrilor s, i ies, irilor entitt, ii, pentru select, ie
s, i ies, ire se vor folosi magistrale (figura 4.2).

Figura 4.2: Declararea intrrii sel s, i a ies, irii o ca magistrale

Codul corespunztor, folosind instruct, iunea secvent, ial case:


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
52

4. Laborator
entity demux1la4 is
Port (i : in STD_LOGIC;
o : out STD_LOGIC_VECTOR (3 downto 0);
sel : in STD_LOGIC_VECTOR (1 downto 0));
end demux1la4;
architecture Secvential of demux1la4 is
begin
process (i,sel)
begin
case sel is
when "00" => o<="000"&i;
when "01" => o<="00"&i&0;
when "10" => o<=0&i&"00";
when others => o<=i&"000";
end case;
end process;
end Secvential;
Referirea la un singur semnal din component, a unei magistrale se realizeaz folosind paranteze rotunde:
nume_ magistral(numr_semnal) pentru un singur semnal sau nume_ magistral(numr_start_semnal to
sau downto numr_stop_semnal) pentru mai multe semnale.

4.6

Exercit, ii

1. Implementat, i port, ile logice elementare (S, I, SAU, NU, SAU-EXCLUSIV, S, I-NU, SAU-NU, SAU-NU EXCLUSIV) folosind cod VHDL, descrierea secvent, ial. Realizat, i simularea funct, ional a circuitelor.
2. Creat, i un semisumator (figura 4.3) folosind descrierea secvent, ial s, i simulat, i funct, ionarea sa.

Figura 4.3: Semisumator pe un bit

53

4. Laborator
3. Creat, i un sumator complet pe un bit (figura 4.4) folosind descrierea secvent, ial s, i variabile pentru semnalele
indicate n figur. Verificat, i funct, ionarea sa prin simulare funct, ional.

Figura 4.4: Sumator complet pe un bit

4. Creat, i un multiplexor 4-la-1 folosind descrierea secvent, ial. Verificat, i funct, ionarea sa.

Figura 4.5: Multiplexor 4-la-1

5. Creat, i un demultiplexor 1-la-4 (figura 4.6) folosind descrierea secvent, ial. Verificat, i funct, ionarea sa.

Figura 4.6: Demultiplexor 1-la-4

6. Creat, i un decodificator 2-la-4 folosind limbajul de descriere hardware VHDL, descrierea secvent, ial. Verificat, i
funct, ionarea sa prin simulare funct, ional.
Un decodificator este un circuit combinat, ional care are n intrri s, i 2n ies, iri, funct, ionarea sa fiind prezentat
n tabelul 4.1.

54

4. Laborator
a
0
0
1
1

b
0
1
0
1

Q0
1
0
0
0

Q1
0
1
0
0

Q2
0
0
1
0

Q3
0
0
0
1

Tabelul 4.1: Tabelul de adevr pentru un decodificator 2-la-4

55

Laborator 5

Descrierea structural a circuitelor


logice n VHDL
5.1

Tema

Not, iuni introductive despre limbajul de descriere hardware VHDL. Descrierea structural a circuitelor logice
utiliznd limbajul VHDL.

5.2

Obiective

R
Familiarizarea cu descrierea structural folosind limbajul VHDL s, i realizarea unor circuite folosind Xilinx
TM
TM
ISE
WebPack .

5.3

Aspecte teoretice

5.4

Descrierea structural Structural Description

n cadrul acestui stil de modelare, o entitate este descris ca fiind un set de componente interconectate [26].
n general, un sistem digital este proiectat ca o colect, ie ierarhic de module. Fiecare dintre aceste module
sunt reprezentate de o entitate separat.
Odat cu cres, terea dimensiunilor sistemelor digitale, cres, te s, i complexitatea acestora, iar unul din scopurile
utilizrii VHDL este acela de a facilita dezvoltarea s, i modelarea unor astfel de sisteme. Una dintre metodele
utilizate pentru gestionarea complexitt, ii ridicate este descrierea sistemului ntr-o strucutur ierarhic (figura
5.1), n care sistemul este mprt, it n componente de dimensiuni din ce n ce mai mici [5].
Cele mai importante avantaje ale acestui stil de proiectare sunt:
gestionarea complexitt, ii,
posibilitatea refolosirii modelelor.
Descrierea funct, ionalitt, ii unui modul se face n acest caz prin realizarea descrierii modului n care acesta
este compus din submodule. Fiecare dintre aceste module este o instant, a unei entitt, i, iar porturile (ies, irile s, i
56

5. Laborator

Figura 5.1: Descrierea ierarhic a unui multiplicator secvent, ial [5]

intrrile) sunt conectate unele cu altele prin semnale [32].


Blocurile puse la dispozit, ia proiectantului de ctre limbajul VHDL structural, cum sunt componentele
s, i configurat, iile, faciliteaz reutilizarea elementelor care intr n component, a unui proiect s, i folosirea unei
abordri top-down n proiectare [33].

Atent, ie
Fiecare dintre componentele proiectului trebuie s fie declarat mpreun cu entitatea s, i arhitectura care i
sunt asociate.
Cel mai simplu mod de declarare a componentelor este prin folosirea fis, ierelor adit, ionale adugate la proiect
(figura 5.2).

Figura 5.2: Fis, ierele surs pentru o poart logic S, I cu 3 intrri

57

5. Laborator

Exemplu
Descrierea structural a unei port, i logice S, I cu 3 intrri format din dou port, i cu 2 intrri.

Figura 5.3: Poarta S, I cu 3 intrri

Descrierea structural a unei port, i S, I cu 3 intrri (Top Module fis, ierul and3inputs.vhd):
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity and3inputs is
Port (a : in STD_LOGIC;
b : in STD_LOGIC;
c : in STD_LOGIC;
d : out STD_LOGIC);
end and3inputs;
architecture Structural of and3inputs is
component and2gate is
Port (X,Y : in STD_LOGIC; Z : out STD_LOGIC);
end component;
signal intern : STD_LOGIC;
begin
a1 :
a2 :

and2gate Port Map (a, b, intern);


and2gate Port Map (intern, c, d);

end Structural;

58

5. Laborator
Codul pentru o poart logic S, I cu 2 intrri (fis, ier adugat proiectului fis, ierul and2gate.vhd):
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity and2gate is
Port (X : in STD_LOGIC;
Y : in STD_LOGIC;
Z : out STD_LOGIC);
end and2gate;
architecture Behavioral of and2gate is
begin
Z <= X and Y;
end Behavioral;

5.4.1

Semnale interne

Dup cum se vede n exemplul anterior, pentru conectarea port, ilor s-a folosit un semnal intern, denumit
intern. Dac acelai semnal este conectat la ieirea unei pori si la intrarea alteia, atunci se realizeaz o
conexiune ntre cele dou.
Sintaxa:
signal nume_semnal : tip :=val_initiala;
Iniializarea este opional.
Exemplu:
signal intern : STD_LOGIC :=0;

5.4.2

Componente

n modulul superior (Top Module) toate componentele utilizate vor fi declarate folosind construct, ia
component.
Aceasta declar numele s, i interfat, a componentei care va fi folosit n descrierea circuitului. Pentru fiecare
component trebuie s existe o entitate s, i o arhitectur corespunztoare.
Sintaxa:
component nume_component is
Port (nume_port : mod_semnal TIP_SEMNAL;
...
nume_port : mod_semnal TIP_SEMNAL);
end component;
59

5. Laborator
sau
component nume_component is
Generic (identificator : tip := constant;
Port (nume_port : mod_semnal TIP_SEMNAL;
...
nume_port : mod_semnal TIP_SEMNAL);
end component;
Cuvntul rezervat is este opt, ional.

Exemplu
Declarat, ia componentei corespunztoare unei port, i logice S, I cu 2 intrri.
component and2gate is
Port (X,Y : in STD_LOGIC;
Z : out STD_LOGIC);
end component;

5.4.3

Port Map

Componentele declarate trebuie s fie apoi instant, iate cu componentele propriu-zise folosind construct, ia port
map. Tot aici se specific modul n care se realizeaz conexiunile la instant, .
Sintaxa:
etichet :

nume_component Port Map (list de asocieri);

sau
etichet : nume_component Generic Map (constant)
Port Map (list de asocieri);
Lista de asocieri poate fi specificat folosind metoda pozit, ional sau prin asignare de semnale.

Exemplu
Asociere pozit, ional pentru o poart logic S, I cu 2 intrri:
a1 :

and2gate Port Map (a, b, intern);

Asociere realizat prin asignare de semnale pentru o poart logic S, I cu 2 intrri:


a1 :

and2gate Port Map (X => a, Y => b, z => intern);


60

5. Laborator

5.4.4

Open

Cuvntul cheie open se foloses, te n lista de asociere din cadrul declarat, iei Port Map pentru specificarea unui
anumit port care nu este conectat sau folosit. Nu este permis folosirea acestui cuvnt cheie n cazul unui port
de intrare.

5.4.5

Generate

Construct, ia generate furnizeaz o metod simpl pentru duplicarea componentelor identice. Aceasta furnizeaz posibilitatea de a instant, ia serii de componente.
Sintaxa simplificat a acestei instruct, iuni este:
etichet : for identificator in start to sau downto stop generate
declarat, ii Port Map;
end generate etichet;

Exemplu
Sumator pe 8 bit, i, descriere structural folosind construct, ia generate:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity sumator8b is
Port ( a : in STD_LOGIC_VECTOR (7 downto 0);
b : in STD_LOGIC_VECTOR (7 downto 0);
cin : in STD_LOGIC;
sum : out STD_LOGIC_VECTOR (7 downto 0);
cout : out STD_LOGIC);
end sumator8b;
architecture Structural of sumator8b is
component scomplet is
Port (ci, x, y : in STD_LOGIC;
z, co : out STD_LOGIC);
end component;
signal cintern : STD_LOGIC_VECTOR (8 downto 0);
begin
cintern(0) <= Cin;

61

5. Laborator
sumator : for k in 7 downto 0 generate
sumatorcomplet : scomplet Port Map (cintern(k), a(k), b(k),
sum(k), cintern(k+1));
end generate sumator;
cout <= cintern(8);
end Structural;
Sumatorul complet folosit ca s, i component n acest proiect este descris ntr-un fis, ier separat.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity scomplet is
Port ( ci : in STD_LOGIC;
x : in STD_LOGIC;
y : in STD_LOGIC;
z : out STD_LOGIC;
co : out STD_LOGIC);
end scomplet;
architecture Behavioral of scomplet is
begin
z <= (x xor y) xor ci;
co <= (x and y) or ((x xor y) and ci);
end Behavioral;

5.5

Exercit, ii

1. Creat, i circuitul din figura 5.4 (poart S, I-NU) folosind descrierea structural.

Figura 5.4: Poart S, I-NU

62

5. Laborator
2. Implementat, i circuitul din figura 5.5 folosind descrierea structural. Verificat, i funct, ionarea prin crearea
unei forme de unde (Test Bench Waveform) pentru intrri s, i prin efectuarea unei simulri.

Figura 5.5: Multiplexor 2 la 1

3. Creat, i un semisumator (figura 5.6) folosind descrierea structural.

Figura 5.6: Semisumator pe un bit

4. Implementat, i un sumator pe 3 bit, i, figura 5.7, folosind descrierea structural. Verificat, i funct, ionarea prin
crearea unei forme de unde (Test Bench Waveform) pentru intrri si prin efectuarea unei simulri.

Figura 5.7: Sumator pe trei bit, i

5. Implementat, i un sumator pe 4 bit, i folosind descrierea structural s, i construct, ia generate. Verificat, i


funct, ionarea sa prin crearea unei forme de unde (Test Bench Waveform) pentru intrri si prin efectuarea
unei simulri.

63

Laborator 6

Descrierea circuitelor secvent, iale n


VHDL
6.1

Tema

Not, iuni introductive despre limbajul de descriere hardware VHDL. Descrierea circuitelor logice controlate de
sau sincronizate cu semnalul de ceas utiliznd limbajul VHDL.

6.2

Obiective

Familiarizarea cu descrierea structural folosind limbajul VHDL s, i realizarea unor circuite secvent, iale folosind
TM
TM
R
Xilinx
ISE
WebPack .

6.3

Aspecte teoretice

Clasa circuitelor secvent, iale este constituit din circuite logice ale cror valori ale ies, irilor depind nu numai
de valorile intrrilor, ci s, i de comportamentul lor anterior.
Pn n acest punct, am prezentat s, i implementat doar circuite combinat, ionale ale cror ies, iri depind doar
de starea intrrilor.
Clasa circuitelor secvent, iale include elemente de stocare a valorilor semnalelor logice. Cont, inutul acestor
elemente reprezint starea circuitului, iar atunci cnd valorile semnalelor de intrare sunt schimbate, ele fie
prsesc circuitul sub aceeas, i form sau sub o nou stare. Odat cu trecerea timpului, circuitul trece printr-o
secvent, de stri ca rezultat al schimbrilor valorilor de pe intrri [23].
Astfel, circuitele secvent, iale sunt circuite cu memorie, aceasta fiind reprezentat, de fapt, de starea lor
intern. Ies, irea acestor circuite este o funct, ie al crei rezultat depinde de intrare s, i de starea lor intern. Ele
sunt proiectate folosind metodologia de proiectare sincron. n cadrul acestei metodologii, toate elementele de
stocare sunt controlate de (sau sunt sincronizate cu) un semnal de ceas global, iar datele sunt preluate s, i stocate
pe frontul ascendent sau descendent al semnalului de ceas. Aceast metodologie reprezint cel mai important
principiu al dezvoltrii sistemelor digitale de dimensiuni mari s, i cu complexitate ridicat [5].
n cele ce urmeaz vor fi prezentate circuitele secvent, iale de baz.

64

6. Laborator

6.4

Circuite sincronizate cu semnalul de ceas

n cadrul circuitelor sincrone semnalele sunt preluate s, i stocate n momentul n care semnalul de ceas s, i
schimb valoarea din 0 logic n 1 logic (frontul ascendent) sau atunci cnd semnalul de ceas s, i schimb
valoarea din 1 logic n 0 logic (frontul descendent).
Tabelul 6.1 prezint pe scurt modalitatea prin care se obt, in valorile specifice asociate semnalelor.
Tabelul 6.1: Atributele semnalelor
Atribut
sdelayed(t)
squiet(t)
sstable(t)

stransaction
sevent
sactive
slast_event
slast_active
slast_value

Rezultat
un semnal care are aceeasi valoare cu semnalul s, ntrziat
cu o durat de timp egal cu t
un semnal boolean care are valoarea 1 dac n timpul perioadei
t nu s-a nregistrat nici o tranzact, ie (semnalul s nu a fost activ)
un semnal boolean care are valoarea 1 dac n timpul perioadei
t nu s-a nregistrat nici un eveniment
(semnalul s nu s, i-a schimbat valoarea)
un semnal boolean care s, i schimb valoarea n cazul ntregistrrii
unei tranzit, ii (semnalul s este activ)
1 dac s-a nregistrat un eveniment pentru semnalul s
1 dac s-a nregistrat o tranzit, ie pentru semnalul s
se returneaz durata de timp trecut de la nregistrarea ultimului
eveniment pentru semnalul s
se returneaz durata de timp trecut de la nregistrarea ultimei
tranzit, ii pentru semnalul s
se returneaz valoarea semnalului s dinaintea ultimului eveniment
pentru semnalul s

Atent, ie
O activitate este o schimbare a valorii semnalului, tinndu-se cont c ceva a provocat aceast schimbare.
Astfel, o schimbare a unui semnal din valoarea 1 n valoarea 1 este o activitate.
Un eveniment este o activitate n cadrul creia valoarea semnalului se schimb din 1 n 0 sau invers.

6.4.1

Detectarea fronturilor semnalului de ceas

clockevent and clock=1; frontul ascendent


clockevent and clock=0; frontul descendent
clockevent s-a produs un eveniment, adic semnalul de ceas s-a modificat din 0 n 1 sau din 1
n 0.
and clock=0 acum semnalul are valoarea 0, nseamn c ne aflm pe frontul descendent, deoarece
semnalul a avut nainte valoarea 1, iar acum are valoarea 0.

65

6. Laborator

6.4.2

Bistabilul D

Bistabilul D este cel mai simplu element de stocare care poate fi ntlnit n component, a unui circuit secvent, ial
(D-type flip-flop D FF).
Valoare semnalului d este preluat pe frontul ascendent al semnalului de ceas (clk) s, i este nmagazinat n
bistabil. Bistabilul D mai poate cont, ine s, i un semnal de RESET asincron care seteaz valoarea nmagazinat n
bistabil la 0.
Tabelul de adevr al unui bistabil D este prezentat n continuare.
Tabelul 6.2: Mod de funct, ionare al bistabilului D
clk
0
1

Urmtoarea stare a semnalului q


q nu se ntmpl nimic atunci cnd
semnalul de ceas rmne neschimbat
q nu se ntmpl nimic atunci cnd
semnalul de ceas rmne neschimbat
d ies, irea ia voaloarea de pe intrare
atunci cnd avem o tranzit, ie a semnalului
de ceas din 0 n 1

Codul VHDL corespunztor bistabilului a crei funct, ionare este descris de tabelul anterior este:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity bistD is
Port (d : in STD_LOGIC;
clk : in STD_LOGIC;
q : out STD_LOGIC;
end bistD;
architecture Secvential of bistD is
begin
process (d,clk)
begin
if clkevent and clk=1 then
q<=d;
end if;
end process;
end Secvential;
Un bistabil D nmagazineaz informat, ia corespunztoare unui singur bit. Un registru se formeaz conectnd
n paralel o serie de bistabile D astfel nct mai mult, i bit, i pot fi nmagazinat, i.

66

6. Laborator

6.4.3

Semnalul RESET

Unele circuite sincrone utilizeaz un semnal de RESET pentru reinit, ializarea semnalelor circuitului. Acest
semnal de RESET poate fi sincron sau asincron (sincronizat sau nu cu semnalul de ceas).
6.4.3.1.

RESET asincron

n tabelul de adevar urmtor (tabelul 6.3) se poate observa funct, ionarea unui bistabil D cu semnal RESET
asincron (indiferent de ceea ce se ntmpl cu semnalul clk).
Tabelul 6.3: Mod de funct, ionare al bistabilului D cu semnal RESET asincron
reset
1
0
0
0

clk
0
1

Urmtoarea stare a semnalului q


0
q
q
d

Urmeaz codul VHDL pentru un circuit care furnizeaz pe ies, ire valoarea intrrii pe frontul ascendent al
semnalului de ceas. Acesta foloses, te s, i semnal RESET nesincronizat cu semnalul de ceas (starea semnalului RESET
va fi verificat indiferent de starea semnalulul clk). n acest caz starea semnalului RESET va afecta imediat
starea semnalului de ies, ire net, inndu-se cont de semnalul de ceas.
process (d, clk, reset)
begin
if (reset=0) then
if (clkevent and clk=1) then
q<=d;
end if;
else
q<=0;
end if;
end process;

Exemplu
Urmeaz codul corespunztor unei variante alternative de implementare:
process (d, clk, reset)
begin
if (reset=1) then
q<=0;
elsif (clkevent and clk=1) then
q<=d;
end if;
end process;
67

6. Laborator
6.4.3.2.

RESET sincron

n cazul bistabilului D care utilizeaz semnal RESET sincron, se act, ioneaz doar pe frontul ascendent al
semnalului de ceas. Codul corespunztor acestui circuit este prezentat n continuare:
process (clk, reset)
begin
if (clkevent and clk=1) then
if (reset=0) then
q<=d;
else
q<=0;
end if;
end if;
end process;

6.4.4

Semnalul ENABLE

Bistabilul D mai poate include un semnal ENABLE, en, care permite sau nu acestuia s preia datele de pe
intrare. Tabelul urmtor (tabelul 6.4) prezint simbolul s, i modul su de funct, ionare. S, i acest semnal poate fi
sincron sau asincron. Tabelul s, i codul care vor fi prezentate corespund unui semnal ENABLE sincron.
Tabelul 6.4: Mod de funct, ionare al bistabilului D cu semnale RESET asincron s, i ENABLE sincron
reset
1
0
0
0
0

clk
0
1

enable
0
1

process (d, clk, reset)


begin
if (reset=1) then
q<=0;
elsif (clkevent and clk=1) then
if (en=1) then
q<=d;
end if;
end if;
end process;

68

Urmtoarea stare a semnalului q


0
q
q
q
d

6. Laborator

6.4.5

Exemple

n cele ce urmeaz vor fi prezentate exemple de circuite secvent, iale simple.

Exemplu
Bistabil D activ pe frontul negativ al semnalului de ceas.

Figura 6.1: Bistabil D

process (ceas)
begin
if (ceasevent and ceas=0) then
q <=d;
nq <= not d;
end if;
end process;
Circuitele bistabile pot fi prevzute cu intrri SET (seteaz ies, irea n starea 1) s, i RESET (seteaz ies, irea n
starea 0) asincrone, lucru util n cazurile n care bistabilul este folosit n alctuirea de numrtoare sau de
regis, tri.

69

6. Laborator

Exemplu
Numrtor pe 4 bit, i.

Figura 6.2: Numrtor pe 4 bit, i cu semnal LOAD s, i RESET


Vom folosi un semnal intern (variabil) pe care l vom declara n cadrul arhitecturii:
architecture Behavioral of num4b is
signal temp : STD_LOGIC_VECTOR (3 downto 0);
begin
Acest semnal este necesar deoarece pentru calcularea noii stri a ies, irii este necesar cunoas, terea strii sale
actuale. Deoarece un semnal de ies, ire nu poate fi citit, in interiorul procesului se modific starea unui semnal
intern. n paralel cu procesul (n exteriorul su) ies, irea ia valoarea semnalului intern.
Urmeaz codul corespunztor arhitecturii:
process (ceas, reset, load)
begin
if (reset = 1) then
temp <= "0000";
elsif (ceasevent and ceas=1) then
if (load = 1) then
temp <= data;
else
temp <= temp+1;
end if;
end if;
end process;
dataout<=temp;
end Behavioral;

70

6. Laborator

Exemplu
Registru de deplasare la stnga cu semnal RESET asincron s, i CLOCK ENABLE.

Figura 6.3: Registru de deplasare la stnga cu semnal RESET asincron

architecture Behavioral of sreg is


signal semnal_iesire : STD_LOGIC_VECTOR (7 downto 0);
begin
process (ceas, reset, enable)
begin
if (reset=1) then
semnal_iesire<="00000000";
elsif (ceasevent and ceas=1) then
if (enable=1) then
semnal_iesire (7 downto 1) <= semnal_iesire(6 downto 0);
semnal_iesire (0) <= bitin;
end if;
end if;
end process;
iesire<=semnal_iesire;
end Behavioral;

71

6. Laborator

Exemplu
Se prezint codul VHDL corespunztor unui registru pe 8 bit, i folosind descrierea secvent, ial, iar apoi folosind
descrierea structural s, i expresia generate.

Figura 6.4: Registru pe 8 bit, i

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity reg8 is
Port (d : in STD_LOGIC_VECTOR (7 downto 0);
clk : in STD_LOGIC;
q : out STD_LOGIC_VECTOR (7 downto 0));
end reg8;
architecture Secvential of reg8 is
begin
process (d,clk)
begin
if clkevent and clk=1 then
q<=d;
end if;
end process;
end Secvential;

72

6. Laborator
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity reg8 is
Port (D : in STD_LOGIC_VECTOR (7 downto 0);
CLK : in STD_LOGIC;
Q : out STD_LOGIC_VECTOR (7 downto 0));
end reg8;
architecture Structural of reg8 is
component bistD bistabilul definit n sect, iunea 6.4.2.
Port (d,clk : in STD_LOGIC;
q : out STD_LOGIC);
end component;
begin
registru : for k in 7 downto 0 generate
bistabil : bistD Port Map (D(k), CLK, Q(k));
end generate registru;
end Structural;

6.5

Exercit, ii

1. Implementat, i un registru pe 8 bit, i cu semnal RESET asincron.


2. Implementat, i un bistabil D cu semnale de SET s, i RESET asincrone.

Figura 6.5: Bistabil D

73

6. Laborator
3. Implementat, i un bistabil T (figura 6.6). Ies, irea acestul bistabil comut pe fiecare front ascendent al
semnalului de ceas, atta timp ct intrarea T este 1.

Figura 6.6: Bistabil T

Tabelul 6.5: Mod de funct, ionare al bistabilului T


T
0
0
1
1

Q
0
1
0
1

ceas

Urmtoarea stare a semnalului Q


0
1
1
0

4. Implementat, i un bistabil JK (figura 6.7).

Figura 6.7: Bistabil JK

Tabelul 6.6: Mod de funct, ionare al bistabilului JK


J
0
0
1
1

K
0
1
0
1

ceas

Urmtoarea stare a semnalului Q


Q
0
1
Q

5. Implementat, i un numrtor pe 3 bit, i cu semnale de SET s, i RESET s, i cu o intrare care specific direct, ia de
numrare (cresctor sau descresctor).
6. Implementat, i un registru de deplasare la dreapta pe 4 bit, i.

74

Referint, e
[1] Xilinx, ISE 10.1 Quick Start Tutorial. Xilinx. i, ii, 22, 23, 27
[2] Xilinx, Virtex-II Pro and Virtex-II Pro X Platform FPGAs: Complete Data Sheet. Xilinx, 5.0 ed., 2011.
iv, 5, 6, 7
[3] Xilinx, Development System Reference Guide. Xilinx, 10.1 ed., 2008. iv, 7, 8
[4] J. V. der Spiegel, VHDL Tutorial. University of Pennsylvania, Department of Electrical and Systems
Engineering, 2001, updated: 2006. http://www.seas.upenn.edu/~ese171/vhdl/vhdl_primer.html. v,
34, 35
[5] P. P. Chu, RTL Hardware Design Using VHDL: Coding for Efficiency, Portability, and Scalability. WileyIEEE Press, 2006. v, 56, 57, 64
[6] M. Keating and P. Bricaud, Reuse Methodology Manual for System-On-A-Chip Designs. Dordrecht: Kluwer
Academic Publishers, third ed., 2002. 2
[7] National Instruments, FPGA technology. http://www.ni.com/fpga_technology/, 2011. 2
[8] M. J. S. Smith, Application-Specific Integrated Circuits. Addison-Wesley Professional, 1997. 3, 4
[9] S. Mitra, P. P. Shirvani, and E. J. McCluskey, Fault location in FPGA-based reconfigurable systems, in
IEEE Intl. High Level Design Validation and Test Workshop Proceedings, 1998. 3
[10] D. Pellerin and S. Thibault, Practical FPGA Programming in C. Prentice Hall PTR, 2005. 3
[11] J. Lyke, Reconfigurable systems: A generalization of reconfigurable computational strategies for space
systems, in 2002 IEEE Aerospace Conference Proceedings, vol. 4, pp. 41935 41950, 2002. 4
[12] R. Tessier and W. Burleson, Reconfigurable computing for digital signal processing a survey, Journal
of VLSI Signal Processing, vol. 28, no. 1 of 2, p. 7 27, 2001. 4
[13] R. Reis and J. A. Jess, Design Of System On A Chip: Devices and Components. Dordrecht: Kluwer
Academic Publishers, 2004. 4
[14] K. Banovic, M. A. S. Khalid, and E. Abdel-Raheem, FPGA-based rapid prototyping of digital signal
processing systems, in 48th Midwest Symposium on Circuits and Systems, pp. 647 650, 2005. 5
[15] A. Corporation, Medical imaging implementation using FPGAs. http://www.altera.com/literature/
wp/wp-medical.pdf, 2010. White Paper. 5

75

REFERINT
, E
[16] V. K. Prasanna and A. Dandalis, FPGA-based cryptography for internet security, in Online Symposium
for Electronics Engineers (OSEE), 2007. 5
[17] Xilinx, Xilinx University Program Virtex-II Pro Development System - Hardware Reference Manual. Xilinx,
1.0 ed., 2005. 6
[18] K. Parnell and N. Metha, Programmable Logic Design Quick Start Hand Book. Xilinx, 2 ed., January 2002.
7, 33
[19] Xilinx, Synthesis and Simulation Design Guide. Xilinx, 10.1 ed., 2008. 7, 8
[20] Department of Electrical and Computer Engineering, University of Idaho, Xilinx ISE/WebPack: Introduction to Schematic Capture and Simulation, 2003. http://www.mrc.uidaho.edu/mrc/people/jff/
digital/webpack.pdf. 21
[21] Department of Computer and Information Science, University of Pennsylvania, Xilinx ModelSim Simulation
Tutorial, 2006. http://www.cis.upenn.edu/~cse372/simulation/. 21
[22] Simulation Research Laboratory, Tufts University, Using the Xilinx ISE Simulator. http://www.ece.
tufts.edu/~karen/ES4/lab1_08/usingxisesim.html. 22
[23] S. Brown and Z. Vranesic, Fundamentals of Digital Logic with VHDL Design. McGraw-Hill, third ed., 2009.
28, 47, 50, 52, 64
[24] J. R. Cooperstock, VHDL Tutorial. Department of Electrical and Computer Engineering, 3480 University Street, Montreal, QC H3A 2A7. http://www.cim.mcgill.ca/~jer/courses/comparch/ref/
vhdl-tutorial.pdf. 33
[25] Doulos, A Brief History of VHDL. Doulos, 2008. http://www.doulos.com/knowhow/vhdl_designers_
guide/a_brief_history_of_vhdl/. 34
[26] J. Bhasker, A VHDL Primer. P T R Prentice Hall, -. American Telephone and Telegraph Company. 35,
36, 38, 56
[27] R. Traylor, Essential VHDL for ASICs, 2001. 35
[28] R. Klenke, Basic VHDL module. http://www.people.vcu.edu/~rhklenke/tutorials/vhdl/modules/
m10_23/sld011.htm. 35
[29] V. A. Pedroni, Circuit Design with VHDL. MIT Press, 2004. 36
[30] E. O. Hwang, Digital Logic and Microprocessor Design with VHDL. Team ELECTRONiX 2004, 2004. 38
[31] B. Muthuswamy, VHDL review: Entity, architecture, concurrent statements. http://myweb.msoe.edu/
~muthuswamy/ee3921/vhdlreview1.pdf. 39
[32] P. J. Ashenden, The VHDL Cookbook. first ed., 1990. 57
[33] Altium, VHDL language reference, tech. rep., Altium, 2005. 57

76

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