Download - Indrumator CAN RS
-
7/21/2019 Indrumator CAN RS
1/84
Introducere n programarea circuitelor
FPGAndrumtor de laborator
George Dan Mois,
Departamentul de Automatic
Universitatea Tehnic din Cluj-Napoca
Cluj-Napoca
2013
-
7/21/2019 Indrumator CAN RS
2/84
-
7/21/2019 Indrumator CAN RS
3/84
Cuprins
Cuprins i
List de figuri iv
1 Circuite reconfigurabile 1
1.1 Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Obiective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Aspecte teoretice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3.1 Circuite reconfigurabile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3.2 FPGA Field-Programmable Gate Array . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3.3 FPGA Virtex-II Pro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.3.1 Blocul Logic Programabil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.4 Configurarea circuitelor FPGA Xilinx R . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.5 Fluxul de proiectare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.3.6 XilinxR ISE
TM
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3.6.1 Lansarea aplicat, iei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3.6.2 Project Navigator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 Implementarea unei port, i logice simple n FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Pasul 1. Lansarea aplicat, iei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Pasul 2. Crearea unui nou proiect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Pasul 3. Adugarea unui nou fis, ier surs . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Pasul 4. Crearea unui circuit S, I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Pasul 5. Asignarea locat, iei pinilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Pasul 6. Configurarea dispozitivului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Pasul 7. Programarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.5 Exercit, ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2 Simulare folosind XilinxR ISETM Simulator 21
2.1 Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2 Obiective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3 Aspecte teoretice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3.1 Simulare funct, ional folosind simulatorul ISETM (ISETM Simulator) [1] . . . . . . . . . . 22
2.3.2 Verificarea funct, ionalitt, ii folosind simularea comportamental . . . . . . . . . . . . . . . 23
Pasul 1. Crearea semnalelor de und pentru test[1] . . . . . . . . . . . . . . . . . . . . . 23
i
-
7/21/2019 Indrumator CAN RS
4/84
CUPRINS
Pasul 2. Simularea operrii circuitului [1] . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.4 Magistrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.5 Exercit, ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3 Descrierea fluxului de date n VHDL 33
3.1 Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2 Obiective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3 Aspecte teoretice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3.1 VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3.2 Niveluri de abstractizare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.4 Structura unui program VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.4.1 BIBLIOTECI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.4.2 ENTITATEA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.4.3 ARHITECTURA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.4.4 Elemente de baz ale limbajului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.5 Descrierea fluxului de date Dataflow Description . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.5.1 Atribuirea condit, ional a semnalelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.5.2 Atribuirea selectiv a semnalelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.6 Implementarea unei port, i logice simple n FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Pasul 3. Adugarea unui nou fis, ier surs VHDL . . . . . . . . . . . . . . . . . . . . . . . 42
Pasul 4. Crearea unui circuit S, I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.7 Exercit, ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4 Descrierea secvent, ial a circuitelor logice n VHDL 474.1 Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.2 Obiective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.3 Aspecte teoretice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.4 Descrierea secvent, ial Sequential Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.4.1 Procese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.4.2 Instruct, iunea secvent, ial de atribuire de semnal . . . . . . . . . . . . . . . . . . . . . . . . 48
4.4.3 Atribuirea de valori variabilelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.4.4 Instruct, iunea if-then-else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.4.5 Instruct, iunea case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.4.6 Alte instruct, iuni secvent, iale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.5 Magistrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.6 Exercit, ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5 Descrierea structural a circuitelor logice n VHDL 56
5.1 Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.2 Obiective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.3 Aspecte teoretice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.4 Descrierea structural Structural Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.4.1 Semnale interne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.4.2 Componente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
ii
-
7/21/2019 Indrumator CAN RS
5/84
CUPRINS
5.4.3 Port Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.4.4 Open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.4.5 Generate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.5 Exercit, ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6 Descrierea circuitelor secvent, iale n VHDL 64
6.1 Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.2 Obiective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.3 Aspecte teoretice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.4 Circuite sincronizate cu semnalul de ceas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.4.1 Detectarea fronturilor semnalului de ceas . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.4.2 Bistabilul D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.4.3 SemnalulRESET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.4.3.1. RESET asincron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676.4.3.2. RESETsincron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6.4.4 SemnalulENABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6.4.5 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.5 Exercit, ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Referint,e 75
iii
-
7/21/2019 Indrumator CAN RS
6/84
List de figuri
1.1 Exemplu de aplicat, ie msurare de temperatur . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Cipuri FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Structura intern a unui FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Celul SRAM XilinxR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5 Bloc Logic Configurabil Virtex-II Pro [2] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6 Slice Virtex-II Pro[2] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.7 Fluxul de proiectare XilinxR [3] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.8 Icoana XilinxR ISETM
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.9 Fereastra ISETM
Project Navigator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.10 Crearea unui nou proiect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.11 Propriett, ile dispozitivului folosit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.12 Marcajul de pe capsul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.13 Adugarea la proiect a unui fis, ier surs schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.14 Crearea unui circuit S, I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.15 Fereastra ISETM
Project Navigator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.16 Aplicat, ia pentru implementarea constrngerilor fizice . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.17 Legarea pinilor FPGA-ului la resursele plcii de dezvoltare . . . . . . . . . . . . . . . . . . . . . . 14
1.18 Asignarea fis, ierului de configurare a) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.19 Asignarea fis, ierului de configurare b) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.20 Programarea dispozitivului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.21 Bara de progres prezentnd programarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.22 Mesaj programare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.23 Poart S, I cu 4 intrri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181.24 Circuit pentru o poart SAU cu 6 intrri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.25 Semisumator pe un bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.26 Sumator complet pe un bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.27 Sumator pe 2 bit, i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.1 Multiplexor 2 la 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2 Multiplexor 2 la 1 - Proiect ISETM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3 Fis, ierul care cont, ine schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.4 Adugarea unei noi surse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.5 Alocarea unei surse fis, ierului de test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.6 Fereastra Initialize Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
iv
-
7/21/2019 Indrumator CAN RS
7/84
LIST DE FIGURI
2.7 Semnalele de test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.8 Modificarea semnalelor de test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.9 Fis, ierultest.tbw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.10 Lansarea execut, iei simulrii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.11 Vizualizarea rezultatelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.12 Prima magistral de intrare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.13 Adugarea sumatoarelor pe 8 bit, i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.14 Butonul Add Bus Tap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.15 Magistrala care cont, inecel mai putin semnificativ bit . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.16 Magistrala care cont, inecel mai semnificativ bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.17 Magistrala care cont, ine rezultatul - adugarea unui bit la magistral . . . . . . . . . . . . . . . . 31
2.18 Sumator pe 16 bit, i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.1 Niveluri de abstractizare [4] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.2 Structura unui program VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.3 Entitateapoarta_SI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.4 Instruct, iuni executate concurent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.5 Circuitul combinat, ional pentru entitatea ex1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.6 Multiplexor 2 la 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.7 Adugarea la proiect a unui fis, ier surs VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.8 Definirea modulului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.9 Fis, ierul VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.10 Semisumator pe un bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.11 Sumator complet pe un bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.12 Multiplexor 4-la-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.13 Demultiplexor 1-la-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.14 Decodificator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.1 Instruct, iuni executate secvent, ial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.2 Declararea intrriisels, i a ies, irii o ca magistrale . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.3 Semisumator pe un bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.4 Sumator complet pe un bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.5 Multiplexor 4-la-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.6 Demultiplexor 1-la-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.1 Descrierea ierarhic a unui multiplicator secvent, ial[5] . . . . . . . . . . . . . . . . . . . . . . . . 57
5.2 Fis, ierele surs pentru o poart logic S, I cu 3 intrri . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.3 Poarta S, I cu 3 intrri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.4 Poart S, I-NU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.5 Multiplexor 2 la 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.6 Semisumator pe un bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.7 Sumator pe trei bit, i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.1 Bistabil D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.2 Numrtor pe 4 bit, i cu semnal LOADs, i RESET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
v
-
7/21/2019 Indrumator CAN RS
8/84
LIST DE FIGURI
6.3 Registru de deplasare la stnga cu semnalRESETasincron . . . . . . . . . . . . . . . . . . . . . . 71
6.4 Registru pe 8 bit, i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.5 BistabilD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.6 BistabilT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.7 BistabilJK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
vi
-
7/21/2019 Indrumator CAN RS
9/84
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
1
-
7/21/2019 Indrumator CAN RS
10/84
Laborator 1
1.3 Aspecte teoretice
1.3.1 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 re-
configurabile, 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 cuutilizarea la maxim a hardware-ului;
ofer posibilitatea ca circuitele s fiencrcate s, i descrcate dinamic din hardware n timpul funct, ionrii;
duc la oreducere a suprafet,eifolosite fat, de sistemele statice;
de regul, proiectate cu un amestec delogic fix s, icipuri 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 ambuntt, 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;
cipuride siliciu;
au o schem intern ce se poateschimba;
permit ntrebuint,areahardware-ului la capacitatea lui maxim;
au o natur cu adevaratparalel;
capabile s asigureperformant,e mbuntat, itefat, de cele oferite de procesoare convent, ionale [7];
nu exist o distinct, ie clar fat, de dispozitivele logice programabile (PLD);
2
-
7/21/2019 Indrumator CAN RS
11/84
Laborator 1
mpreun cu PLD alctuiesc grupul de circuite ASIC (Application-Specific Integrated Circuit) progra-
mabile[8];
constau dintr-o matrice de celule logice de baz, care pot fi configurate dup fabricat, ie, folosind oanumint 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 inter-
conexiuni programabile (figura1.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 posibilitateasincronizriidatelor de intrare s, i ies, ire cusemnalul de ceas;
configurarea const n:
3
-
7/21/2019 Indrumator CAN RS
12/84
Laborator 1
specificarea funct, iei logice pentru fiecare celul de baz;
configurarea conexiunilor reprezentate de blocurile de legtur;
pot fi mprt, ite ndou 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 ali-
mentrii) [11];
productori principali:
1. Xilinx R s, i Altera R tehnologie SRAM Celula configurabil Xilinx R 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];
Figura 1.4: Celul SRAM Xilinx R
2. ActelR, Quicklogic R, Cypress R s, i Xilinx R tehnologie antifuzibil;
n funct, ie de generat, ie, se permitereconfigurarea
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];
1Antifuzibilul este opusul fuzibilului s, i reprezint un circuit ntrerupt pn se fort,eaz trecerea unui curent de programare prininteriorul su. Acesta este produs folosind tehnologie CMOS (Complementary metaloxidesemiconductor). Antifuzibilele suntplasate pe firele de conexiune din interiorul unui FPGA, iar prin programare se realizeaz legturi permanente, aceast tehnologiecorespunznd dispozitivelor programabile o singur dat (One Time Programmable OTP) [8]. Actel, principalul productor de
circuite FPGA bazate pe tehnologie antifuzibil, foloses,te denumirea de PLICETM
(programmable low-impedance circuit element)
pentru antifuzibil.
4
-
7/21/2019 Indrumator CAN RS
13/84
Laborator 1
sisteme pentru realizarea de prototipuri[14];
sisteme medicale[15];
recunoas,terea limbajului; criptografie [16];
1.3.3 FPGA Virtex-II Pro
Arhitectura FPGA Virtex-II Pro [2], un dispozitiv produs de XilinxR 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 interconec-
tarea 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 vitezridicat;
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 (figura1.5).
Blocurile logice configurabile implementeaz logica n tabelele de adevr pstrate n SRAM, folosesc multi-
plexoare controlate prin SRAM, iar rutarea este bazat pe tranzistoare de trecere.
Fiecare slice (figura1.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
5
-
7/21/2019 Indrumator CAN RS
14/84
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 Configurarea circuitelor FPGA XilinxR
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
http://www.xilinx.com/support/index.htm#nav=sd-nav-link-156334&tab=tab-sdhttp://www.xilinx.com/support/index.htm#nav=sd-nav-link-156334&tab=tab-sdhttp://www.xilinx.com/support/index.htm#nav=sd-nav-link-156334&tab=tab-sdhttp://www.xilinx.com/support/index.htm#nav=sd-nav-link-156334&tab=tab-sd -
7/21/2019 Indrumator CAN RS
15/84
Laborator 1
Figura 1.6: Slice Virtex-II Pro[2]
unuipachet 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]. Figura1.7 prezint fluxul de proiectare corespunztor
dispozitivelor FPGA, produse de Xilinx R [3].
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
unui limbaj de descriere hardware (VHDL, Verilog), respectiv folosirea interfet,ei Xilinx R 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
-
7/21/2019 Indrumator CAN RS
16/84
Laborator 1
Figura 1.7: Fluxul de proiectare XilinxR [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, ierbitstream (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, sepoate afla dac modelul realizat ntrunes,te constrngerile de timp stabilite init, ial.
n acest laborator, modelul va fi generat s, i sintetizat folosind editorul schematic din cadrul Xilinx R ISETM
.
8
-
7/21/2019 Indrumator CAN RS
17/84
Laborator 1
1.3.6 XilinxR ISETM
Pachetul software Xilinx R ISETM
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 (ComplexProgrammable 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
Figura 1.8: Icoana Xilinx R ISETM
sau din meniulStart:
Start All Programs Xilinx ISE Design Suite ISE Project Navigator.
1.3.6.2 Project Navigator
Figura 1.9: Fereastra ISETM
Project Navigator
Detalii suplimentare despre utilizarea ISETM
Project Navigator pot fi gsite la adresa
http://www.kxcad.net/electronic_Xilinx_guide/html/ise_project_navigator_overview.htm.
9
http://www.kxcad.net/electronic_Xilinx_guide/html/ise_project_navigator_overview.htmhttp://www.kxcad.net/electronic_Xilinx_guide/html/ise_project_navigator_overview.htmhttp://www.kxcad.net/electronic_Xilinx_guide/html/ise_project_navigator_overview.htm -
7/21/2019 Indrumator CAN RS
18/84
Laborator 1
1.4 Implementarea unei port, i logice simple n FPGA
Pasul 1. Lansarea aplicat, iei
Lansat, i mediul de dezvoltare Xilinx R ISETM
.
Pasul 2. Crearea unui nou proiect
File New Project...
Apare fereastra prezentat n figura1.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
dispozitiv XilinxR Virtex-II Pro. Pentru dispozitivul Spartan-3E datele vor fi diferite.
Figura 1.11: Propriett, ile dispozitivului folosit
10
-
7/21/2019 Indrumator CAN RS
19/84
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
-
7/21/2019 Indrumator CAN RS
20/84
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 figura1.15).
Figura 1.15: Fereastra ISETM
Project Navigator
12
-
7/21/2019 Indrumator CAN RS
21/84
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 Con-
straints Floorplan Area / IO / Logic-Post- Synthesis.Proiectul va fi sintetizat s, i se va cere permisiunea pentru adugarea unui fis, ier care implementeaz con-
strngerile proiectului. Se selecteaz Yes s, i n acest sens va fi lansat aplicat, ia XilinxR PACETM
(figura
1.16).
Figura 1.16: Aplicat, ia pentru implementarea constrngerilor fizice
13
-
7/21/2019 Indrumator CAN RS
22/84
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.17este necesar executarea click pe o alta celul dup intro-
ducerea 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, iuniiProject Cleanup Project Files.
14
-
7/21/2019 Indrumator CAN RS
23/84
Laborator 1
Pasul 6. Configurarea dispozitivului
n fereastra care afis,eaz procesele, dublu-click pe Configure Target Device Manage Configu-
ration Project (iMPACT). Proiectul va fi implementat, se va genera fis, ierul de configurare, iar in fereastranou 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 (figura1.18).
Figura 1.18: Asignarea fis, ierului de configurare a)
15
-
7/21/2019 Indrumator CAN RS
24/84
Laborator 1
Neavnd fis, iere generate pentru scrierea memoriilor de pe plac, pentru acestea se va selecta opt, iunea By-
pass (figura1.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
-
7/21/2019 Indrumator CAN RS
25/84
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 figura1.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
-
7/21/2019 Indrumator CAN RS
26/84
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 EX-
CLUSIV) n FPGA, conectnd intrrile la comutatoarele de pe plcile de dezvoltare din laborator s, i ies, irileacestora la LED-urile disponibile. Verificat, i funct, ionarea lor.
2. Creat, i un simbol schematicpentru o poart S, I cu 3 intrri (figura1.23A) s, i folositi-l ntr-un nou proiect
pentru crearea unei porti S, I cu 4 intrri (figura1.23B) prindescriere schematic.
Figura 1.23: Poart S, I cu 4 intrri
Observat, ie: Crearea unui simbol schematic se realizeaza selectnd Design Utilities Create Sche-
matic 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 figura1.24(poart SAU cu 6 intrri) folosind editorul schematic. Se va folosi unsimbol schematicpentru o poart SAU cu 3 intrri.
Figura 1.24: Circuit pentru o poart SAU cu 6 intrri
18
-
7/21/2019 Indrumator CAN RS
27/84
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 (figura1.25) creat la punctul 4.
Selectnd Design Utilities Create Schematic Symbol n fereastra Processes pentru schema
semisumatorului se va crea un fis, ier .symcu 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
proiect s, i n mediul Xilinx R ISETM
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
-
7/21/2019 Indrumator CAN RS
28/84
Laborator 1
6. Creat, i un sumator pe doi bit, i folosind editorul schematic1.27.
Figura 1.27: Sumator pe 2 bit, i
20
-
7/21/2019 Indrumator CAN RS
29/84
Laborator 2
Simulare folosind Xilinx R ISETM
Simulator
2.1 Tema
Prezentarea not, iunilor corespunztoare realizrii simulrii funct, ionrii circuitelor.
2.2 Obiective
Familiarizarea cu modul de utilizare al Xilinx R ISETM Simulator (ISim) din mediul WebPackTM. n cadrul
acestui laborator se va realiza doar simularea funct, ional a circuitelor, simularea temporal efectundu-se nmod 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].
Pentru realizarea simulrilor, pe lng ISim se pot folosi s, i alte utilitare, cum este ModelSim R [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 cesimularea temporalt, 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
-
7/21/2019 Indrumator CAN RS
30/84
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
-
7/21/2019 Indrumator CAN RS
31/84
Laborator 2
2.3.2 Verificarea funct, ionalitt, ii folosind simularea comportamental
Pasul 1. Crearea semnalelor de und pentru test [1]
Se creeaz semnalele de intrare (input waveform), care reprezint stimulii de intrare pentru a verificafunct, ionalitatea multiplexorului din figura2.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.schdin fereastraSources;
Figura 2.3: Fis, ierul care cont, ine schema
2. Crearea unei noi surse test prin selectareaProject New Source. n fereastraNew Source Wizard,
selectat, i Test Bench WaveForm ca tip al sursei, s, i introducet, i numele test n cmpul File Name.Executat, i click peNext;
Figura 2.4: Adugarea unei noi surse
23
-
7/21/2019 Indrumator CAN RS
32/84
Laborator 2
3. n fereastraAssociate Sourcese cere asocierea stimulilor de test unui fis, ier surs (n cazul nostru avem
doar un fis, ier surs, mux21.sch). Se execut click peNext;
Figura 2.5: Alocarea unei surse fis, ierului de test
4. FereastraSummary indic faptul c sursa va fi adugat proiectului s, i prezint atributele acesteia.
ClickFinish;
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: FereastraInitialize Timing
24
-
7/21/2019 Indrumator CAN RS
33/84
Laborator 2
n cazul proiectului prezentat aici, nu exist un semnal de ceas. Astfel, laClock Informationse 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 selecteazFinishpentru 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
-
7/21/2019 Indrumator CAN RS
34/84
Laborator 2
7. Port, iunile colorate n albastru corespund valorilor setate pentru cmpul Assign Inputsdin tabulCombi-
natorial Timing Informational ferestrei de dialogInitialize Timing. Cu mausul se modific valoarea
intrrilor, executnd click pe port, iunile albastre. Prin click pe aceste zone, valoarea curent a semnalului
este negat (Figura2.8).
Figura 2.8: Modificarea semnalelor de test
8. Se salveaz acest fis, ier.
9. n fereastraSources, se selecteazBehavioral Simulationpentru a vedea dac fis, ierul de testtest.tbw
este adugat proiectului.
Figura 2.9: Fis, ierul test.tbw
10. nchidet, i fis, ierul de test.
26
-
7/21/2019 Indrumator CAN RS
35/84
Laborator 2
Pasul 2. Simularea operrii circuitului[1]
1. n fereastraSources, se selecteazBehavioral Simulations, i fis, ierul de test test.tbw.
2. n tabul Processes, executat, i click pe butonul + pentru a expanda procesulXilinx ISE Simulator s, iexecutat, i dublu-click peSimulate 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
Zoompentru a observa mai clar tranzit, iile.
Figura 2.11: Vizualizarea rezultatelor
4. nchidet, i vizualizarea rezultatelor. Dac apare mesajulYou have an active simulation open. Are
you sure you want to close it?, selectat, iYespentru a continua.
27
-
7/21/2019 Indrumator CAN RS
36/84
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 nbit, 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 least-
significant 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
-
7/21/2019 Indrumator CAN RS
37/84
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
-
7/21/2019 Indrumator CAN RS
38/84
Laborator 2
Pentru extragerea semnalelor din magistrale se vor plasa pe magistral Bus Tapsfolosind butonul Add Bus
Tap, situat pe bara de instrumente (figura2.14).
Figura 2.14: Butonul Add Bus Tap
Se plaseaz un element Bus Tappe magistrala a, pentru extragerea ultimilor si 8 bit, i,a(7:0)(figura2.15).
Al doilea element Bus Tapva extrage primii 8 bit, i, a(15:8)(figura2.16).
Figura 2.15: Magistrala care cont, inecel mai putin semnificativ bit
Figura 2.16: Magistrala care cont, ine cel mai semnificativ bit
30
-
7/21/2019 Indrumator CAN RS
39/84
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
bits, i ies, irile celor dou sumatoare pe 8 bit, i (figura2.17).
Figura 2.17: Magistrala care cont, ine rezultatul - adugarea unui bit la magistral
Sumatorul va avea schema prezentat n figura2.18.
Figura 2.18: Sumator pe 16 bit, i
31
-
7/21/2019 Indrumator CAN RS
40/84
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
-
7/21/2019 Indrumator CAN RS
41/84
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
Familiarizarea cu limbaul VHDL s, i realizarea unor circuite folosind Xilinx R ISETM
WebPackTM
.
3.3 Aspecte teoretice3.3.1 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 sauJava;
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
-
7/21/2019 Indrumator CAN RS
42/84
3. Laborator
Tabelul 3.1: Scurt istorie a limbajului VHDL [25]
1981 Se init, iaz dezvoltarea VHDL de ctre United States Departmentof Defence pentru a se ocupa de problema crizei ciclului de viat,al hardware-ului (costurile producerii de hardware nou auatins un punct critic).
1983-85 Dezvoltarea limbajului de baz de ctreIntermetrics, IBM s, i TI.
1986 Toate drepturile asupra definit, iilor limbajului sunt transferatede ctre United States Department of Defence la IEEE pentru
ncurajarea acceptrii acestora de ctre industrie.1987 Publicarea standardului IEEE.
MIL-STD-454 Standard General Requirements for ElectronicEquipment cere ca circuitele ASIC furnizate ctre United StatesDepartment of Defence s fie nsot, ite de descrieri VHDLcomprehensive.
1993 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 estecea mai rspndit varianta de VHDL ca suport.
1994 Standardul revizuit. Poart numele de VHDL 1076-1993.2000 Standardul revizuit. Poart numele de VHDL 1076 2000 Edition s, i
este, de fapt, VHDL 1076-1993 cu tipuri de date protejate.2002 Standardul revizuit. Poart numele de VHDL 1076-2002 s, i reprezint
o revizuire minor a VHDL 1076 2000 Edition.2007 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.2009 Standardul revizuit. Poart numele VHDL 1076-2008. Se face referirela 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);
esteparaleln mod inerent n cadrul programelor VHDL, comenzile care corespund port, ilor logice suntexecutate 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
-
7/21/2019 Indrumator CAN RS
43/84
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 testbenchpot 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 (figura3.1a);
2. structural componentele sistemului (figura3.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 (figura3.2):
35
-
7/21/2019 Indrumator CAN RS
44/84
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 uses, i indic pachetul folosit.
Exemplu
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
36
-
7/21/2019 Indrumator CAN RS
45/84
3. Laborator
useIEEE.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:
entitynume_entitateis
Port (nume_port : mod_semnalTIP_SEMNAL;
...
nume_port : mod_semnalTIP_SEMNAL);
endnume_entitate;
nume_entitateeste numele dat entitt, ii (orice nume ales in afar de cuvintele rezervate in VHDL).
mod_semnalpoate lua valorile:
IN intrare,OUT ies, ire,INOUT pin bidirect, ional,BUFFER se foloses,te atunci
cnd semnalul este unul intern.
TIP_SEMNALpoate lua valorile: BIT, STD_LOGIC, INTEGER, etc.
Exemplu
Figura 3.3: Entitatea poarta_SI
Poarta S, I (figura3.3).
entitypoarta_SIis
Port(a : inSTD_LOGIC;
b : inSTD_LOGIC;
c : outSTD_LOGIC);
endpoarta_SI;
37
-
7/21/2019 Indrumator CAN RS
46/84
3. Laborator
3.4.3 ARHITECTURA
Aceasta este o descriere a modului n care entitatea trebuie s se comporte.
Sintaxa:
architecturenume_arhitecturaof nume_entitateis
[declarat,
ii]
begin
[cod]
endnume_arhitectura;
nume_arhitecturaeste 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:
architecturearhitectura_meaof poarta_SIis
begin
c < = a and b; rezultatul operat,
iei S,
I ntre semnalele a s,
i b
este atribuit pinului de ies,
ire c
endarhitectura_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 (figura3.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
-
7/21/2019 Indrumator CAN RS
47/84
3. Laborator
Instruct, iunea de atribuire a semnalelor esteforma de baz a modelrii comportamentale prin descrierea
fluxului de date:
a
-
7/21/2019 Indrumator CAN RS
48/84
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 < = aand b;
d < = anandb;
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
-
7/21/2019 Indrumator CAN RS
49/84
3. Laborator
Figura 3.6: Multiplexor 2 la 1
Sintaxa:
withsemnal_condselect
semnal
-
7/21/2019 Indrumator CAN RS
50/84
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
-
7/21/2019 Indrumator CAN RS
51/84
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
butonuluiFinishse 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.
-
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;
Uncomment the following library declaration if instantiating
any Xilinx primitives in this code.
library UNISIM;
use UNISIM.VComponents.all;
entitypoarta_SIis
Port(a : inSTD_LOGIC;
b : inSTD_LOGIC;
c : outSTD_LOGIC);
43
-
7/21/2019 Indrumator CAN RS
52/84
3. Laborator
endpoarta_SI;
architectureBehavioralof poarta_S,
Iis
begin
c < = a and b; rezultatul operat,
iei S,
I ntre semnalele a s,
i b
este atribuit pinului de ies,
ire c
endBehavioral;
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 EX-
CLUSIV) 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
-
7/21/2019 Indrumator CAN RS
53/84
3. Laborator
4. Creat, i un multiplexor 4-la-1 folosind descrierea fluxului de date. Verificat, i funct, ionarea sa folosind simu-
larea 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 (figura3.14), funct, ionarea safiind descris de tabelul3.2.
45
-
7/21/2019 Indrumator CAN RS
54/84
3. Laborator
Figura 3.14: Decodificator
a b Q0 Q1 Q2 Q30 0 1 0 0 00 1 0 1 0 01 0 0 0 1 01 1 0 0 0 1
Tabelul 3.2: Tabelul de adevr pentru un decodificator 2-la-4
46
-
7/21/2019 Indrumator CAN RS
55/84
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
Familiarizarea cu limbajul VHDL s, i realizarea unor circuite folosind Xilinx R ISETM WebPackTM.
4.3 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, iuniprocess. Cele mai importante sunt instruct, iunile if-then-else
s, icase. 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 (figura4.1).
Instruct, iunile secvent, iale folosesc multe expresii care apart, in programrii standard, cum sunt atribuirea de
valori variabilelor, declarat, iiif-then-else, bucle. Toate acestea pot fi folosite doar n interiorul unei instruct, iuni
process.
47
-
7/21/2019 Indrumator CAN RS
56/84
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
intrarecare 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 processnume_proces;
Pentru reprezentarea unei valori logice constante (valoarea unui singur bit) se folosesc caracterele (x
-
7/21/2019 Indrumator CAN RS
57/84
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:
variablenume_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:
ifcondit,
iethen
instruct,
iuni secvent,
iale 1;
else
instruct,
iuni secvent,
iale 2;
end if;
ifcondit,
ie 1then
instruct,
iuni secvent,
iale 1;
elsifcondit,
ie 2then
...
else
instruct,
iuni secvent,
iale n;
end if;
49
-
7/21/2019 Indrumator CAN RS
58/84
4. Laborator
Exemplu
Multiplexor 2 la 1 implementat folosind instruct, iunea if-then-else:
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entitymux2la1is
Port (in0 : inSTD_LOGIC;in1 : inSTD_LOGIC;
sel : inSTD_LOGIC;
f : outSTD_LOGIC);
endmux2la1;
architectureSecventialof mux2la1is
begin
process(in0,in1,sel)
begin
ifsel=0then
f
-
7/21/2019 Indrumator CAN RS
59/84
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
whenfolosite pentru evaluarea semnalului de select, ie.Sintaxa simplificat este:
caseexpresieis
whenopt,
iuni => instruct,
iuni secvent,
iale;
whenopt,
iuni => instruct,
iuni secvent,
iale;
...
when othersinstruct,
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 pentruspecificarea tuturor valorilor semnalului de select, ie rmase.
Exemplu
Multiplexor 2 la 1 implementat folosind instruct, iunea case:
process(in0,in1,sel)
begin
casesel is
when 0 => f f
-
7/21/2019 Indrumator CAN RS
60/84
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
La crearea entitt, ilor folosind XilinxR ISETM
WebPackTM
se pot declara s, i magistrale ca intrri sau ies, iri.
Exemplu
Demultiplexor 1 la 4 implementat folosind magistrale.
Se va crea un proiect Xilinx R ISETM WebPackTM. La declararea intrrilor s, i ies, irilor entitt, ii, pentru select, ies, i ies, ire se vor folosi magistrale (figura4.2).
Figura 4.2: Declararea intrrii sels, i a ies, irii oca magistrale
Codul corespunztor, folosind instruct, iunea secvent, ial case:
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
52
-
7/21/2019 Indrumator CAN RS
61/84
4. Laborator
entitydemux1la4is
Port(i : inSTD_LOGIC;
o : outSTD_LOGIC_VECTOR(3downto0);
sel : inSTD_LOGIC_VECTOR(1 downto0));
enddemux1la4;
architectureSecventialof demux1la4is
begin
process(i,sel)
begin
casesel is
when"00" => o o o o
-
7/21/2019 Indrumator CAN RS
62/84
4. Laborator
3. Creat, i un sumator complet pe un bit (figura4.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 (figura4.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 arenintrri s, i2n ies, iri, funct, ionarea sa fiind prezentat
n tabelul4.1.
54
-
7/21/2019 Indrumator CAN RS
63/84
4. Laborator
a b Q0 Q1 Q2 Q30 0 1 0 0 00 1 0 1 0 0
1 0 0 0 1 01 1 0 0 0 1
Tabelul 4.1: Tabelul de adevr pentru un decodificator 2-la-4
55
-
7/21/2019 Indrumator CAN RS
64/84
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
Familiarizarea cu descrierea structural folosind limbajul VHDL s, i realizarea unor circuite folosind Xilinx R
ISETM
WebPackTM
.
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
-
7/21/2019 Indrumator CAN RS
65/84
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
(figura5.2).
Figura 5.2: Fis, ierele surs pentru o poart logic S, I cu 3 intrri
57
-
7/21/2019 Indrumator CAN RS
66/84
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, ieruland3inputs.vhd):
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;
entityand3inputsis
Port(a : inSTD_LOGIC;
b : inSTD_LOGIC;
c : inSTD_LOGIC;
d : outSTD_LOGIC);
endand3inputs;
architectureStructuralof and3inputsis
componentand2gateis
Port (X,Y :in STD_LOGIC; Z :out STD_LOGIC);
end component;
signal intern : STD_LOGIC;
begin
a1 : and2gate Port Map (a, b, intern);
a2 : and2gate Port Map (intern, c, d);
endStructural;
58
-
7/21/2019 Indrumator CAN RS
67/84
5. Laborator
Codul pentru o poart logic S, I cu 2 intrri (fis, ier adugat proiectului fis, ierul and2gate.vhd):
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entityand2gateis
Port(X :in STD_LOGIC;
Y :inSTD_LOGIC;
Z :outSTD_LOGIC);
endand2gate;
architectureBehavioralof and2gateis
begin
Z < = Xand Y;
endBehavioral;
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
componenttrebuie s existe o entitate s, i o arhitectur corespunztoare.
Sintaxa:
componentnume_componentis
Port (nume_port : mod_semnalTIP_SEMNAL;
...
nume_port : mod_semnalTIP_SEMNAL);
end component;
59
-
7/21/2019 Indrumator CAN RS
68/84
5. Laborator
sau
componentnume_componentis
Generic(identificator : tip := constant;Port (nume_port : mod_semnalTIP_SEMNAL;
...
nume_port : mod_semnalTIP_SEMNAL);
end component;
Cuvntul rezervat iseste opt, ional.
Exemplu
Declarat, ia componentei corespunztoare unei port, i logice S, I cu 2 intrri.
componentand2gateis
Port (X,Y :in STD_LOGIC;
Z :outSTD_LOGIC);
end component;
5.4.3 Port Map