indrumator can rs

Upload: geta-ivan

Post on 05-Feb-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

  • 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