Sunteți pe pagina 1din 97

Introducere n programarea circuitelor FPGA

ndrumator de laborator

George Dan Mois ,


Departamentul de Automatic Universitatea Tehnic din Cluj-Napoca

Cluj-Napoca 2012

Prefat ,

Prezenta lucrare este destinat desfs , urrii primei part , i a lucrrilor de laborator la disciplina Circuite analogice s , i numerice, prevzut n programa de nvt mnt a anului II a Facultt , , ii de Automatic s ,i Calculatoare, sect , ia Automatic din cadrul Universitt , ii Tehnice din Cluj-Napoca. ndrumtorul cont , ine 6 lucrri destinate descrierii modului de programare al dispozitivelor FPGA.

Cuprins
Cuprins List de guri 1 Circuite recongurabile 1.1 1.2 1.3 Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Obiective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aspecte teoretice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 Circuite recongurabile . . . . . . . . . . . . . . . . . . . . . . FPGA Field-Programmable Gate Array . . . . . . . . . . . . FPGA Virtex-II Pro . . . . . . . . . . . . . . . . . . . . . . . . 1.3.3.1 Blocul Logic Programabil . . . . . . . . . . . . . . . .
R

i v 1 1 1 2 2 2 5 7 8 8 10 10 11 11 11 11 13 14 15 17 19 20

Congurarea circuitelor FPGA Xilinx Xilinx


R

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

Fluxul de proiectare . . . . . . . . . . . . . . . . . . . . . . . . ISE


TM

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

1.3.6.1 1.3.6.2 1.4

Lansarea aplicat , iei . . . . . . . . . . . . . . . . . . . . Project Navigator . . . . . . . . . . . . . . . . . . . .

Implementarea unei port , i logice simple n FPGA . . . . . . . . . . . . Pasul 1. Lansarea aplicat , iei . . . . . . . . . . . . . . . . . . . . Pasul 2. Crearea unui nou proiect . . . . . . . . . . . . . . . . Pasul 3. Adugarea unui nou s . . . . . . . . . . . . , ier surs Pasul 4. Crearea unui circuit S . . . . . . . . . . . . . . . . . ,I Pasul 5. Asignarea locat . . . . . . . . . . . . . . . . , iei pinilor Pasul 6. Congurarea dispozitivului . . . . . . . . . . . . . . . Pasul 7. Programarea . . . . . . . . . . . . . . . . . . . . . . .

1.5

Exercit , ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i

CUPRINS 2 Simulare folosind Xilinx R ISETM Simulator 2.1 2.2 2.3 Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Obiective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aspecte teoretice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 2.3.2
TM Simulare funct (ISETM Simu, ional folosind simulatorul ISE lator) [1] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23 23 23 23 24 25 25 29 30 34 35 35 35 35 35 38 38 39 40 41 41 41 44 44 45 46 47 48 51 51 51 51 52 52 53

Vericarea funct , ionalitt , ii folosind simularea comportamental Pasul 1. Crearea semnalelor de und pentru test [1] . . . . . . Pasul 2. Simularea operrii circuitului [1] . . . . . . . . . . . .

2.4 2.5

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

3 Descrierea uxului de date n VHDL 3.1 3.2 3.3 Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Obiective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aspecte teoretice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 3.3.2 3.4 3.4.1 3.4.2 3.4.3 3.4.4 3.5 3.5.1 3.5.2 3.6 VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Niveluri de abstractizare . . . . . . . . . . . . . . . . . . . . . . LIBRRII . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Structura unui program VHDL . . . . . . . . . . . . . . . . . . . . . . ENTITATEA . . . . . . . . . . . . . . . . . . . . . . . . . . . . ARHITECTURA . . . . . . . . . . . . . . . . . . . . . . . . . . Elemente de baz ale limbajului . . . . . . . . . . . . . . . . .

Descrierea uxului de date Dataow Description . . . . . . . . . . . Atribuirea condit , ional a semnalelor . . . . . . . . . . . . . . . Atribuirea selectiv a semnalelor . . . . . . . . . . . . . . . . . Pasul 3. Adugarea unui nou s . . . . . . . . , ier surs VHDL Pasul 4. Crearea unui circuit S . . . . . . . . . . . . . . . . . ,I

Implementarea unei port , i logice simple n FPGA . . . . . . . . . . . .

3.7

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

4 Descrierea secvent , ial a circuitelor logice n VHDL 4.1 4.2 4.3 4.4 Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Obiective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aspecte teoretice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Descrierea secvent . . . . . . . . . . . . . , ial Sequential Description 4.4.1 4.4.2 Procese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruct , iunea secvent , ial de atribuire de semnal . . . . . . . . . ii

CUPRINS 4.4.3 Atribuirea de valori variabilelor 4.4.4 Instruct . , iunea if-then-else 4.4.5 Instruct , iunea case . . . . . . . 4.4.6 Alte instruct , iuni secvent , iale . . Magistrale . . . . . . . . . . . . . . . . Exercit , ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 54 55 56 57 58 61 61 61 61 61 65 66 66 66 68 71 71 71 71 72 73 73 74 74 76 76 81 83

4.5 4.6

5 Descrierea structural a circuitelor logice n VHDL 5.1 Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Obiective . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Aspecte teoretice . . . . . . . . . . . . . . . . . . . . . 5.4 Descrierea structural Structural Description . . . . 5.4.1 Componente . . . . . . . . . . . . . . . . . . . 5.4.2 Port Map . . . . . . . . . . . . . . . . . . . . . 5.4.3 Open . . . . . . . . . . . . . . . . . . . . . . . 5.4.4 Generate . . . . . . . . . . . . . . . . . . . . . 5.5 Exercit , ii . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Descrierea circuitelor secvent , iale n VHDL 6.1 Tema . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Obiective . . . . . . . . . . . . . . . . . . . . . . 6.3 Aspecte teoretice . . . . . . . . . . . . . . . . . . 6.4 Circuite sincronizate cu semnalul de ceas . . . . . 6.4.1 Detectarea fronturilor semnalului de ceas 6.4.2 Bistabilul D . . . . . . . . . . . . . . . . . 6.4.3 Semnalul RESET . . . . . . . . . . . . . . . 6.4.3.1. RESET asincron . . . . . . . . . . 6.4.3.2. RESET sincron . . . . . . . . . . 6.4.4 Semnalul ENABLE . . . . . . . . . . . . . . 6.5 Exercit , ii . . . . . . . . . . . . . . . . . . . . . . . Referint ,e

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

iii

CUPRINS

iv

List de guri
1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 Exemplu de aplicat , ie termostat . . . . . . . . . . . . . . . . . . . . . Cipuri FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Structura intern a unui FPGA . . . . . . . . . . . . . . . . . . . . . . Celul SRAM Xilinx R . . . . . . . . . . . . . . . . . . . . . . . . . . . Bloc Logic Congurabil Virtex-II Pro . . . . . . . . . . . . . . . . . . Slice Virtex-II Pro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fluxul de proiectare Xilinx Icoana Xilinx R ISE Fereastra ISE
TM TM R

1 2 3 5 6 7 9 10 11 12 12 13 13 14 15 16 17 18 19 19 19 20 20 21 21 21 24

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

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

Project Navigator . . . . . . . . . . . . . . . . . . . .

1.10 Crearea unui nou proiect . . . . . . . . . . . . . . . . . . . . . . . . . . 1.11 Propriett , ile dispozitivului folosit . . . . . . . . . . . . . . . . . . . . . 1.12 Marcajul de pe capsul . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.13 Adugarea la proiect a unui s , ier surs schematic . . . . . . . . . . . . 1.14 Crearea unui circuit S ,I . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.15 Aplicat , ia pentru implementarea constrngerilor zice . . . . . . . . . . 1.16 Legarea pinilor FPGA-ului la resursele plcii de dezvoltare . . . . . . . 1.17 Asignarea s , ierului de congurare a) . . . . . . . . . . . . . . . . . . . 1.18 Asignarea s , ierului de congurare b) . . . . . . . . . . . . . . . . . . . 1.19 Programarea dispozitivului . . . . . . . . . . . . . . . . . . . . . . . . 1.20 Bara de progres prezentnd programarea . . . . . . . . . . . . . . . . . 1.21 Mesaj programare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.22 Poart S , I cu 4 intrri . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.23 Circuit pentru o poart SAU cu 6 intrri . . . . . . . . . . . . . . . . . 1.24 Semisumator pe un bit . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.25 Sumator complet pe un bit . . . . . . . . . . . . . . . . . . . . . . . . 1.26 Sumator pe 2 bit ,i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 Multiplexor 2 la 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v

LIST DE FIGURI 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 Multiplexor 2 la 1 - Proiect ISETM . . . . . . . . . . . . . . . . . . . 24 25 26 26 27 28 28 29 29 30 31 32 32 32 33 33 34 38 39 40 42 44 45 46 46 47 48 49 49 50 52 57 59 59 59

Fis , ierul care cont , ine schema . . . . . . . . . . . . . . . . . . . . . . . . Adugarea unei noi surse . . . . . . . . . . . . . . . . . . . . . . . . . Alocarea unei surse s . . . . . . . . . . . . . . . . . . . , ierului de test Fereastra Initialize Timing . . . . . . . . . . . . . . . . . . . . . . . Semnalele de test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modicarea semnalelor de test . . . . . . . . . . . . . . . . . . . . . . Fis , ierul test.tbw . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.10 Lansarea execut , iei simulrii . . . . . . . . . . . . . . . . . . . . . . . . 2.11 Vizualizarea rezultatelor . . . . . . . . . . . . . . . . . . . . . . . . . . 2.12 Prima magistral de intrare . . . . . . . . . . . . . . . . . . . . . . . . 2.13 Adugarea sumatoarelor pe 8 bit ,i . . . . . . . . . . . . . . . . . . . . . 2.14 Butonul Add Bus Tap . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.15 Magistrala care cont , ine cel mai putin semnicativ bit . . . . . . . . . . 2.16 Magistrala care cont , ine cel mai semnicativ bit . . . . . . . . . . . . . 2.17 Magistrala care cont , ine rezultatul - adugarea unui bit la magistral . 2.18 Sumator pe 16 bit ,i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 Niveluri de abstractizare [2] . . . . . . . . . . . . . . . . . . . . . . . . Structura unui program VHDL . . . . . . . . . . . . . . . . . . . . . . Entitatea poarta_SI . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruct . . . . . . . . . . . . . . . . . . . . . , iuni executate concurent Circuitul combinat . . . . . . . . . . . . . . , ional pentru entitatea ex1 Multiplexor 2 la 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adugarea la proiect a unui s . . . . . . . . . . . . . , ier surs VHDL Denirea modulului . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , ierul VHDL

3.10 Semisumator pe un bit . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.11 Sumator complet pe un bit . . . . . . . . . . . . . . . . . . . . . . . . 3.12 Demultiplexor 4-la-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.13 Decodicator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 4.2 4.3 4.4 4.5 Instruct . . . . . . . . . . . . . . . . . . . . . , iuni executate secvent , ial Declararea intrrii sel s , i a ies , irii o ca magistrale . . . . . . . . . . . . Semisumator pe un bit . . . . . . . . . . . . . . . . . . . . . . . . . . . Sumator complet pe un bit . . . . . . . . . . . . . . . . . . . . . . . . Demultiplexor 4-la-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi

LIST DE FIGURI 5.1 5.2 5.3 5.4 5.5 5.6 5.7 6.1 6.2 6.3 6.4 6.5 6.6 6.7 Descrierea ierarhic a unui multiplicator secvent , ial [3] Fis . , ierele surs pentru o poart logic S , I cu 3 intrri Poarta S . . . . . . . . . . . . . . . . . . , I cu 3 intrri Multiplexor 2 la 1 . . . . . . . . . . . . . . . . . . . . Subiectul 11 . . . . . . . . . . . . . . . . . . . . . . . . Semisumator pe un bit . . . . . . . . . . . . . . . . . . Sumator pe trei bit . . . . . . . . . . . . . . . . . . . ,i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 63 63 68 69 69 69 77 78 79 80 81 82 82

Bistabil D . . . . . . . . . . . . . . . . . . . . . . . . . . . Numrtor pe 4 bit , i cu semnal LOAD s , i RESET . . . . . . . Registru de deplasare la stnga cu semnal RESET asincron Registru pe 8 bit ,i . . . . . . . . . . . . . . . . . . . . . . . Bistabil D . . . . . . . . . . . . . . . . . . . . . . . . . . . Bistabil T . . . . . . . . . . . . . . . . . . . . . . . . . . . Bistabil JK . . . . . . . . . . . . . . . . . . . . . . . . . .

vii

LIST DE FIGURI

viii

Laborator 1

Circuite recongurabile
1.1 Tema

Introducere n studiul s , i utilizarea circuitelor recongurabile.

1.2

Obiective

Familiarizarea cu not , iunile teoretice legate de circuitele recongurabile, 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 termostat

1. CIRCUITE RECONFIGURABILE

1.3
1.3.1

Aspecte teoretice
Circuite recongurabile

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 recongurabile, astfel nct ea s implementeze un bloc de procesare specic unui algoritm de procesare de imagini); folosite in general la obt , inerea celei mai bune performant , e cu utilizarea la maxim a hardware-ului; ofer posibilitatea ca circuitele s e ncrcate s , i descrcate dinamic din hardware n timpul funct , ionrii; duc la o reducere a suprafet , de sistemele statice; , ei folosite fat de regul, proiectate cu un amestec de logic x s , i cipuri FPGA (FieldProgrammable Gate Array); exist un volum sucient de munc n aceasta direct , ie, pentru a presupune c sistemele recongurabile, bazate pe tehnologie FPGA, vor domina proiectarea sistemelor nglobate n viitorul apropiat; au capacitatea de a mbuntt , ii solut , iile din prezent.

1.3.2

FPGA Field-Programmable Gate Array

Figura 1.2: Cipuri FPGA

dispozitive logice programabile care furnizeaz o capacitate logic foarte ridicat, aprute n anii 80 [4]; 2

Laborator 1 diferent , ele care le deosebesc fat , de restul circuitelor programabile sunt mrimea s , i complexitatea sporite; cipuri de siliciu; au o schem intern ce se poate schimba; permit ntrebuint , area hardware-ului la capacitatea lui maxim ; au o natur cu adevarat paralel; capabile s asigure performant , de cele oferite de proce, e mbuntat , ite fat soare convent , ionale [5]; nu exista o distinct , ie clar fat , de dispozitivele logice programabile (PLD); mpreun cu PLD alctuiesc grupul de circuite ASIC (Application-Specic Integrated Circuit) programabile [6]; constau dintr-o matrice de celule logice de baz, care pot congurate dup fabricat , ie, folosind o anumint tehnologie de programare; cont , in celule logice conectate prin re s ,i , i blocuri de comutat , ie ntre ele s cu blocuri speciale de intrri/ies , iri [7]; structura intern este regulat, format din celule logice programabile de baz, legate ntre ele prin interconexiuni programabile (gura 1.3) [6];

Figura 1.3: Structura intern a unui FPGA

Field-Programmable se refer la capacitatea acestor dispozitive de a programate pe teren; Gate Array se refer la structura intern de baz a dispozitivului care permite programarea acestuia la orice moment n timp dup fabricat , ie [8]; 3

1. CIRCUITE RECONFIGURABILE componente importante: multiplexoare; blocuri de memorie RAM nglobat; circuite de ceas (DCM); altele; celulele logice formate din 2 elemente principale: circuite bistabile (ip-op); tabele de cutare (look-up table LUT) bloc de stocare a datelor, are capacitatea de un bit, funct , ioneaz la fel ca s , i o poart logic (intrarea este constituit din liniile de adres ale elementului de stocare, iar ies , irea este reprezentat de valoarea stocat la aceast adres); ofer posibilitatea sincronizrii datelor de intrare s , i ies , ire cu semnalul de ceas; congurarea const n: specicarea funct , iei logice pentru ecare celul de baz; congurarea conexiunilor reprezentate de blocurile de legtur; pot mprt , ite n dou mari grupe: 1. programabile o singur dat bazate pe tehnologie antifuzibil1 ; 2. recongurabile de obicei sunt alctuite din celule SRAM (nu ment , in informat , ia stocat cnd tensiunea de alimentare este oprit pierderea congurat , iei FPGA-ului odat cu ntreruperea alimentrii) [9]; productori principali:
R 1. Xilinx R s tehnologie SRAM Celula congurabil Xilinx R de , i Altera tip SRAM este alctuit din dou invertoare s , i se bazeaz pe un proces COMS standard (gura 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 congurat , iei) [6];

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

Laborator 1

Figura 1.4: Celul SRAM Xilinx R


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

n funct , ie de generat , ie, se permite recongurarea 1. static programare n faza compilrii s , i imposibilitatea recongurrii n timpul funct , ionrii; 2. dinamic posibilitatea recongurrii la orice moment de timp din cadrul duratei de funct , ionare a aplicat , iei: (a) total intreg dispozitivul este recongurat; (b) part , ional este recon, ial doar o parte a unui circuit FPGA funct gurat; aplicat , ii: pot folosite n sisteme de procesare de semnale digitale (DSP), unde pot furniza solut , ii mai complete dect cele oferite de implementrile tradit , ionale DSP [10]; 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 [11]; sisteme spat , iale s , i de aprare [10]; sisteme pentru realizarea de prototipuri [12]; sisteme medicale [13]; recunoas , terea limbajului; criptograe [14];

1.3.3

FPGA Virtex-II Pro

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

1. CIRCUITE RECONFIGURABILE n component , a circuitului FPGA intr: 1. Core RocketIO / RocketIO X MGT convertoare serial-paralel s , i paralel-serial folosite pentru interconectarea magistralelor sau subsistemelor; 2. Blocuri procesor PowerPC 405 procesor care poate executa instruct , iuni cu o rat de o instruct , iune pe ciclu de ceas; 3. Blocuri Input/Output (IOBs) intrri-ies , iri programabile; 4. Blocuri logice programabile (CLB) includ patru slice-uri (component , a lor este explicat in sect , iunea urmtoare) s , i buere 3-state; ecare 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 congurat n diferite adncimi s , i lt , imi; 6. Multiplicatoare pe 18x18 bit , i cte un bloc asociat ecrui bloc de memorie RAM; 7. Controlere digitale de ceas (DCM) furnizeaz solut , ii complete pentru proiectarea schemelor de vitez ridicat; 8. Resurse de rutare toate componentele enumerate mai sus au acces la o matrice global de rutare.

Figura 1.5: Bloc Logic Congurabil Virtex-II Pro

Laborator 1 1.3.3.1 Blocul Logic Programabil

Fiecare bloc logic congurabil este format din patru slice-uri s , i dou buere cu trei stri (gura 1.5). Blocurile logice congurabile implementeaz logica n tabelele de adevr pstrate n SRAM, folosesc multiplexoare controlate prin SRAM, iar rutarea este bazat pe tranzistoare de trecere. Fiecare slice (gura 1.6) cont , ine:

Figura 1.6: Slice Virtex-II Pro

1. Dou generatoare de funct , ii (F s , i G), care pot congurate 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) [15]. 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 memorie RAM, 8 controlere digitale de semnal de ceas (DCM), 2 procesoare RISC PowerPC s , i 8 transceivere Multi-Gigabit [16]. 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. 7

1. CIRCUITE RECONFIGURABILE

1.3.4

Congurarea circuitelor FPGA Xilinx R

Congurarea dispozitivului se realizeaz prin ncrcarea bitstream-ului (secvent ,a de bit i de congurare) n memoria intern de congurare SRAM 2D, folosind diferite , moduri de transmitere a bit , ilor de congurare: 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 unui pachet de captur schematic (o unealt grac ce permite proiectantului s specice port , ile pe care dores , te s le foloseasc s i modul n care acestea sunt conectate)[17]. 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 congurare se mai pot folosi Verilog sau instrumentele de sintez specializate oferite de majoritatea productorilor [18]. Figura 1.7 prezint uxul de proiectare corespunztor dispozitivelor FPGA, produse de Xilinx R [19]. 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 s , ier EDIF sau NGC, s , ier care cont , ine lista de legturi (netlist), n funct , ie de modalitatea folosit la primul pas, generarea modelului: folosirea unui limbaj de R descriere hardware (VHDL, Verilog), respectiv folosirea interfet Synthesis , ei Xilinx Technology (XST). Acest s , ier este echivalentul sub form de text al circuitului. As , adar, editarea proiectului se realizeaz folosind s , iere surs, acestea putnd 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 re; 8

Laborator 1

Figura 1.7: Fluxul de proiectare Xilinx R

3. adugarea s , i stabilirea numelor buerelor de intrare s , i de ies , ire acestea vor deni pinii de intrare/ies , ire ale capsulei; 4. generarea listei de legturi (netlist) [17]; prin limbaje de descriere hardware (HDL) cum sunt VHDL, Verilog sau ABEL. Fiecare proiect va format dintr-un s , ier surs principal (top module) s , i un numr de s , iere surs secundare. Oricare dintre acestea poate un s , ier schematic sau un s ier HDL. , n etapa de implementare a modelului, s , ierul creat la pasul anterior este transformat, primind un format de s , ier zic. Dup aceasta, este creat un s , ier bitstream (secvent , de bit , i), sau, dac se dores , te, sunt generate s , iere pentru programarea unei memorii PROM sau EPROM. n etapa de vericare a modelului se testeaz dac circuitul realizat respect funct , ionalitatea s , i restrict , iile de vitez specicate. n funct , ie de rezultatele vericrii modelului se revine la pas , ii anteriori pentru mbuntt , irea s ,i optimizarea circuitului [18]. Pentru vericarea sintaxei s , i funct , ionalitt , ii, se foloses , te simularea funct , ional sau simularea RTL (Register Transfer Logic). Simularea ntrzierilor este important pentru vericarea funct , ionrii circuitului, dup ce se calculeaz ntrzierile n cazul cel mai defavorabil pentru act , iunile de plasament s , i rutare a logicii. Astfel, se poate aa dac modelul realizat ntrunes te constrngerile de timp stabilite init , , ial. n acest laborator, modelul va generat s , i sintetizat folosind editorul schematic 9

1. CIRCUITE RECONFIGURABILE din cadrul Xilinx R ISE


TM

10.1.

1.3.6

Xilinx R ISE

TM

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

TM

- se realizeaz executnd dublu-click pe icoana

Figura 1.8: Icoana Xilinx R ISE

TM

sau din meniul Start: Start All Programs Xilinx ISE Design Suite 10.1 ISE Project Navigator.

10

Laborator 1 1.3.6.2 Project Navigator

Figura 1.9: Fereastra ISE

TM

Project Navigator

Detalii suplimentare despre utilizarea ISE Project Navigator pot gsite la adresa http://www.kxcad.net/electronic_Xilinx_guide/html/ise_project_navigator_ overview.htm.

TM

1.4

Implementarea unei port , i logice simple n FPGA


Lansarea aplicat , iei
TM

Pasul 1.

R Lansat ISE , i mediul de dezvoltare Xilinx

Pasul 2.

Crearea unui nou proiect File New Project...

Apare fereastra prezentat n gura 1.10. Aceasta se va completa dup cum se poate vedea n cele ce urmeaz.

11

1. CIRCUITE RECONFIGURABILE

Figura 1.10: Crearea unui nou proiect

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

Figura 1.11: Propriett , ile dispozitivului folosit

Citirea propriett , ilor circuitelor FPGA Xilinx 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 12

Laborator 1

Figura 1.12: Marcajul de pe capsul

de locat , ie pentru fabricat , ia capsulei, codul de geometrie s , i codul datei. Next

Pasul 3.

Adugarea unui nou s , ier surs

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

Next Finish Yes Next Urmeaz adugarea unui s , ier existent. Nu este necesar, nu avem un astfel de s , ier. Next Finish Proiectul va creat, iar editorul schematic va lansat automat. 13

1. CIRCUITE RECONFIGURABILE

Figura 1.14: Crearea unui circuit S ,I

Pasul 4.

Crearea unui circuit S , I

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

14

Laborator 1 Pasul 5. Asignarea locat , iei pinilor

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

Figura 1.15: Aplicat , ia pentru implementarea constrngerilor zice

15

1. CIRCUITE RECONFIGURABILE Se vor alege dou comutatoare s , i un led de pe placa cu FPGA folosit pentru a legate la intrrile s , i ies , irile port , ii implementate. Locat , ia acestora se gses , te n manualele de utilizare ale celor dou plci: 1. Virtex-II Pro http://cas.ee.ic.ac.uk/people/lah100/XUPV2P_User_Guide. pdf 2. Spartan-3E http://www.xilinx.com/support/documentation/boards_and_ kits/ug230.pdf

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

Se salveaz modicrile fcute s , i se nchide aceast aplicat , ie. Se va trece la congurarea dispozitivului. Acesta trebuie s e alimentat s , i conectat la calculator.

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

Laborator 1 Pasul 6. Congurarea dispozitivului

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

Figura 1.17: Asignarea s , ierului de congurare a)

17

1. CIRCUITE RECONFIGURABILE Neavnd s , iere generate pentru scrierea memoriilor de pe plac, pentru acestea se va selecta opt , iunea Bypass (gura 1.18).

Figura 1.18: Asignarea s , ierului de congurare b)

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

Atent , ie
La folosirea plcii Spartan-3E, n mediul Xilinx R ISE WebPack 10.1 apare o problem, care a fost rezolvat in edit , iile urmtoare. Prin folosirea opt , iunii Bypass pentru memoria ash XCF04S s , i pentru dispozitivul CPLD XC2C64A congurarea FPGA-ului es ueaz. , O rezolvare este prezentat aici: s , ierele celor dou dispozitive sunt asignate manual: pentru XCF04S C:/Xilinx/10.1/ISE/xcf/data/xcf04s.bsd pentru XC2C64A C:/Xilinx/10.1/ISE/xbr/data/xc2c64a.bsd
TM TM

18

Laborator 1 Pasul 7. Programarea

Figura 1.19: 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.20: Bara de progres prezentnd programarea

Dac aceasta act , iune este executat cu success, este as , at mesajul din gura 1.21.

Figura 1.21: Mesaj programare

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

19

1. CIRCUITE RECONFIGURABILE

1.5

Exercit , ii

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

Figura 1.22: Poart S , I cu 4 intrri

3. Creat , i circuitul din gura 1.23 (poart SAU cu 6 intrri) folosind editorul schematic. Se va folosi un simbol schematic pentru o poart SAU cu 3 intrri.

Figura 1.23: Circuit pentru o poart SAU cu 6 intrri

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. Vericat ,i funct , ionarea sa.

20

Laborator 1

Figura 1.24: Semisumator pe un bit

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

Figura 1.25: Sumator complet pe un bit

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

Figura 1.26: Sumator pe 2 bit ,i

Observat , ie: Pentru crearea sumatorului de la punctul 3 (gura 3.11) se va porni de la semisumatorul (gura 5.6) creat la punctul 2. Selectnd Design Utilities Create Schematic Symbol n fereastra Processes pentru schema semisumatorului se va crea un s , ier .sym cu acelas , i nume. 21

1. CIRCUITE RECONFIGURABILE Acesta va copiat mpreun cu s , ierul .sch corespunztor din directorul proiectului semisumatorului n cel al noului proiect care implementeaz un sumator complet. TM R n acest caz, ele trebuie adugate noului proiect s ISE prin , i n mediul Xilinx efectuarea click dreapta pe modulul principal (Top Module) s i selectarea opt iunii , , Add Source... O alt metod pentru realizarea acestui sumator este folosirea mai multor s , iere .sch n cadrul aceluias , i proiect. Pentru ca sumatorul complet s poat utiliza simbolul semisumatorului generat prin selectarea opt , iunii Design Utilities Create Schematic Symbol, trebuie ca s ierul care l descrie s e setat ca , Top Module (n fereastra Sources click dreapta pe s , ierul care cont , ine descrierea sumatorului complet s , i selectarea opt , iunii Set as Top Module).

22

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 n mod asemntor, cu mici modicri.

2.3

Aspecte teoretice

Un simulator logic permite observarea strilor n care se a ies , irile unui circuit logic pentru toate combinat , iile intrrilor nainte ca acesta s e implementat n hardware. Simularea poate considerat ca ind cea mai bun tehnic pentru vericarea 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 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: 23

2. SIMULAREA CIRCUITELOR 1. funct , ional; 2. temporal. Simularea funct , ionrii corecte a lo, ional este folosit pentru vericarea funct gicii implementate ntr-un circuit, n timp ce simularea temporal t , ine cont s , i de ntrzierile care apar n logica implementat n FPGA, astfel nct se poate vedea timpul de propagare a semnalelor [21].

2.3.1

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

Se vor descrie pas , ii pentru realizarea unei simulri comportamentale a circuitului din urmtoarea gur 2.1. Pentru nceput, se va crea un proiect care realizeaz descrierea schematic a acestuia, gura 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: 24

Laborator 2 1. adugarea unei noi surse la proiect, avnd tipul Test Bench Waveform s , i ind asociat s , ierului care cont , ine descrierea circuitului pe care l vom simula; 2. selectarea parametrilor semnalelor folosite ca intrri; 3. editarea semnalelor pentru denirea intrrilor; 4. selectarea opt , iunii Behavioral Simulation din meniul drop-down din partea de sus a ferestrei care cont , ine sursele; 5. selectarea s , 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].

2.3.2
Pasul 1.

Vericarea funct , ionalitt , ii folosind simularea comportamental


Crearea semnalelor de und pentru test [1]

Se creeaz semnalele de intrare (input waveform), care reprezint stimulii de intrare pentru a verica funct , ionalitatea multiplexorului din gura 2.1. Aceste semnale reprezint n mod grac 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 s , ierului mux21.sch din fereastra Sources;

Figura 2.3: Fis , ierul care cont , ine schema

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

2. SIMULAREA CIRCUITELOR

Figura 2.4: Adugarea unei noi surse

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

Figura 2.5: Alocarea unei surse s , ierului de test

4. Fereastra Summary indic faptul c sursa va adugat proiectului s , i prezint atributele acesteia. Click Finish; 26

Laborator 2 5. n cazul n care avem semnal de ceas, ntrzierile corespunztoare trebuie setate n fereastra de dialog Initialize Timing, nainte de editarea formei semnalelor de intrare;

Figura 2.6: Fereastra Initialize Timing

n cazul proiectului prezentat aici, nu exist un semnal de ceas. Astfel, la Clock Information se selecteaz Combinatorial (or internal clock). Restul opt , iunilor ramn cele setate implicit: ntrzieri, lungimea init , ial a simulrii s i semnalele globale. , Alte setri, n cazul unui circuit sincronizat cu semnalul de ceas ar putea : 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 completate cu: 27

2. SIMULAREA CIRCUITELOR Clock High Time: 20 ns; Clock Low Time: 20 ns; Input Setup Time: 10 ns; Output Valid Delay: 10 ns; Oset: 0 ns; Global Signals: GSR (FPGA); Atunci cnd GSR(FPGA) este selectat, 100 ns vor adugate automat la valoarea Oset; Initial Length of Test Bench: 1500 ns. 6. Se selecteaz Finish pentru a init , ializa valorile corespunztoare ntrzierilor. Dup aceasta, reprezentarea semnalelor de intrare si modicarea valorilor lor este posibil (Figura2.7).

Figura 2.7: Semnalele de test

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

Figura 2.8: Modicarea semnalelor de test

28

Laborator 2 8. Se salveaz acest s , ier. 9. n fereastra Sources, se selecteaz Behavioral Simulation pentru a vedea dac s , ierul de test test.tbw este adugat proiectului.

Figura 2.9: Fis , ierul test.tbw

10. nchidet , i s , ierul de test. Pasul 2. Simularea operrii circuitului [1]

1. n fereastra Sources, se selecteaz Behavioral Simulation s , i s , ierul de test test.tbw. 2. n tabul Processes, executat , i click pe + pentru a expanda procesul Xilinx ISE Simulator s , i executat , i dublu-click pe Simulate Behavioral Model. Simulatorul va lansat s , i simularea va rulat pe durata specicat anterior.

Figura 2.10: Lansarea execut , iei simulrii

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

2. SIMULAREA CIRCUITELOR

Figura 2.11: Vizualizarea rezultatelor

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

2.4

Magistrale

Gama de numere ntregi care pot reprezentate prin intermediul numerelor binare depinde de numrul de bit , i utilizat , i. n general, prin folosirea a n bit , i se pot reprezenta n ntregi de la 0 la 2 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 semnicativ least-signicant bit (LSB). Bitul situat pe pozit , ia cea mai din stnga, corespunztor puterii celei mai ridicate a lui 2, este numit bitul cel mai semnicativ most-signicant 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]. 30

Laborator 2 Pentru o manipulare mai ecient, n cadrul mediului de dezvoltare folosit, un grup de semnale, ecare dintre ele reprezentnd un bit, pot forma o magistral (bus ). n continuare se va expune modul de utilizare a magistralelor printr-un exemplu.

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 ai schimba numele. Acest semnal va reprezenta primul numr pe 16 bit , i care va adunat (gura 2.12). Astfel, i se va atribui numele a(15:0), unde a(15) este cel mai semnicativ bit iar a(0) este cel mai put , in semnicativ. Cele dou puncte reprezint bit , ii aat , i ntre MSB s , i LSB. n cazul n care am avut un numr binar pe 4 bit , i, acesta ar 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, b(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) gura 2.13.

31

2. SIMULAREA CIRCUITELOR

Figura 2.13: Adugarea sumatoarelor pe 8 bit ,i

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

Figura 2.14: Butonul Add Bus Tap

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

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

32

Laborator 2

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

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

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

33

2. SIMULAREA CIRCUITELOR Sumatorul va avea schema prezentat n gura 2.18.

Figura 2.18: Sumator pe 16 bit ,i

2.5

Exercit , ii

1. Realizat , i simularea funct , ional a circuitelor realizate n 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 4 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.

34

Laborator 3

Descrierea uxului de date n VHDL


3.1 Tema

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

3.2

Obiective
TM

R Familiarizarea cu limbaul VHDL s ISE , i realizarea unor circuite folosind Xilinx TM WebPack 10.1.

3.3
3.3.1

Aspecte teoretice
VHDL

prescurtarea pentru VHSIC Hardware Description Language (VHSIC Very High Speed Integrated Circuit); ideea de baz este de a folosi un limbaj de nivel nalt pentru a descrie circuitul ntr-un s , ier text n locul folosirii unei descrieri grace de nivel sczut a port , ilor [17]; nu este un limbaj de programare cum sunt C sau Java ; este un limbaj pentru descrierea hardware-ului din cadrul sistemelor digitale [24]; 35

3. VHDL I proiectantul descrie funct , ia sau comportamentul circuitului n cuvinte, neind 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 [17]; Tabelul 3.1: Scurt istorie a limbajului VHDL [25] 1981 Se init , iaz dezvoltarea VHDL de ctre United States Department of Defence pentru a se ocupa de problema crizei ciclului de viat , al hardware-ului (costurile producerii de hardware nou au atins un punct critic). Dezvoltarea limbajului de baz de ctre Intermetrics, IBM s , i TI. Toate drepturile asupra denit iilor limbajului sunt transferate , de catre United States Department of Defence la IEEE pentru ncurajarea acceptrii acestora de ctre industrie. Publicarea standardului IEEE. MIL-STD-454 Standard General Requirements for Electronic Equipment cere ca circuitele ASIC furnizate ctre United States Department of Defence s e nsot , ite de descrieri VHDL comprehensive. Fiind un standard IEEE, trebuie s e revizuit la ecare 5 ani (sau mai rapid) pentru asigurarea relevant , ei sale n industrie. Prima revizuire a fost terminat n septembrie 1993 s , i nc este cea mai rspndit varianta de VHDL ca suport. Standardul revizuit. Poart numele de VHDL 1076-1993. Standardul revizuit. Poart numele de VHDL 1076 2000 Edition s ,i este, de fapt, VHDL 1076-1993 cu tipuri de date protejate. Standardul revizuit. Poart numele de VHDL 1076-2002 s , i reprezint o revizuire minor a VHDL 1076 2000 Edition. Se creeaz un amendament la standardul VHDL 1076-2002 VHDL Procedural Language Application Interface standard (VHDL 1076c-2007) posibilitatea ca programe scrise n alte limbaje s comunice cu un simulator VHDL. Standardul revizuit. Poart numele VHDL 1076-2008. Se face referire la el prin numele VHDL-2008.

1983-85 1986

1987

1993

1994 2000 2002 2007

2009

descrie 1. structura, 2. comportamentul, 3. temporizarea schemelor circuitelor digitale ASIC, 36

3. Laborator FPGA, convent , ionale; este un limbaj puternic tipizat (n faza de execuie, nu pot aprea erori cauzate de tipuri incorecte ale expresiilor), 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 [2]; seaman cu limbajele de programare convent , ionale, ns exist o serie de diferent ,e importante fat , de acestea (paralelism, integrarea specicat , iilor temporale); este paralel n mod inerent n cadrul programelor VHDL, comenzile care corespund port , ilor logice sunt executate n paralel, de ndat ce apare o intrare nou; programul imit comportamentul unui sistem zic, de obicei digital; permite adugarea de: 1. specicat , ii temporale (ntrzierile port , ilor) , 2. descrierea unui sistem ca o structur cont , innd diferite subsisteme interconectate [2]; 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 uxului de date, 3. comportamental prin instruct , iuni secvent , iale; nu necesit cunoas , terea altor limbaje pentru simulare deoarece s , ierele testbench pot scrise n VHDL; suporta ierarhizarea, permitnd astfel descrierea unui sistem digital ca un set de componente interconectate, care la rndul lor pot modelate ca seturi de subcomponente interconectate [26]; 85% din circuitele implementate n FPGA sunt realizate n VHDL [27].

37

3. VHDL I

3.3.2

Niveluri de abstractizare

(a) Comportamental

(b) Structural

(c) Implementare

Figura 3.1: Niveluri de abstractizare [2] Descrierea unui sistem poate de mai multe feluri: 1. comportamental ceea ce realizeaz sistemul (gura 3.1a); 2. structural componentele sistemului (gura 3.1b); 3. propriett , i funct , ionale modul n care se interact , ioneaz cu sistemul; 4. propriett , i zice ct de rapid este sistemul. VHDL nu poate descrie un sistem la nivelul zic/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 (gura 3.2): 1. declarat , iile de LIBRRII lista librriilor 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]; Comentariile sunt marcate prin folosirea (dou linii de dialog), iar caracterul ; indic nalul unei declarat , ii sau al unei instruct , iuni. 38

3. Laborator

Figura 3.2: Structura unui program VHDL

3.4.1

LIBRRII

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

Exemplu
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; 39

3. VHDL I n cazul nostru, librriile necesare sunt adugate implicit de ctre mediul de dezvoltare.

3.4.2

ENTITATEA

Aceasta este lista specicat , iilor pentru tot , i pinii (Port) de intrare s , i de ies , ire. Sintaxa: entity nume_entitate is Port (nume_port : mod_semnal TIP_SEMNAL; ... nume_port : mod_semnal TIP_SEMNAL); end nume_entitate; nume_entitate este numele dat entitt , ii (orice nume ales in afar de cuvintele rezervate in VHDL). mod_semnal poate lua valorile: IN OUT INOUT BUFFER intrare, ies , ire, pin bidirect , ional, se foloses , te atunci cand semnalul este unul intern.

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

Exemplu

Figura 3.3: Entitatea poarta_SI

Poarta S , I (gura 3.3). entity poarta_SI is 40

3. Laborator Port (a : in STD_LOGIC; b : in STD_LOGIC; c : out STD_LOGIC); end poarta_SI;

3.4.3

ARHITECTURA

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

3.4.4

Elemente de baz ale limbajului

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

3.5

Descrierea uxului de date Dataow Description

n cadrul acestui stil de modelare, uxul de date din interiorul entitt , ii este exprimat n principal prin folosirea de instruct , iuni concurente (gura 3.4) de atribuire de 41

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

42

3. Laborator

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

Exemplu
Avem entitatea: entity ex1 is Port (a : IN STD_LOGIC; b : IN STD_LOGIC; c : OUT STD_LOGIC; d : OUT STD_LOGIC); end ex1; unde c ia valoarea rezultatului execut , iei operat , iei S , I ntre a s , i b, iar d ia valoarea execut , iei operat , iei S , I-NU ntre a s , i b [31]. Codul: c <= a and b; d <= not c; 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 folosit n cadrul execut , iei celei de-a doua. As , adar, codul corect poate avea forma: c <= a and b; d <= a nand b; s , i descrie circuitul care are forma prezentat n gura urmtoare (3.5): 43

3. VHDL I

Figura 3.5: Circuitul combinat , ional pentru entitatea ex1

3.5.1

Atribuirea condit , ional a semnalelor

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

Exemplu
z <= in0 when sel=0 else in1 when sel=1; Circuitul corespunztor pentru acest cod este un multiplexor (gura 3.6).

3.5.2

Atribuirea selectiv a semnalelor

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

44

3. Laborator

Figura 3.6: Multiplexor 2 la 1

Sintaxa: with expresie select semnal <= valoare1 when condit , ie1, valoare2 when condit , ie2, ... valoare3 when others;

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

3.6

Implementarea unei port , i logice simple n FPGA

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

45

3. VHDL I Pasul 3. Adugarea unui nou s , ier surs VHDL

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

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

Figura 3.8: Denirea modulului

Se vor alege a s Dup executarea operat , i b ca intrri s , i c ca ies , ire. , iunii click pe butonul Next urmeaz aparit , ia unei ferestre care cont , ine informat , iile legate de 46

3. Laborator s La apsarea butonului Finish se cere , ablonul modulului VHDL care va creat. permisiunea pentru generarea s , ierului corespunztor acestui modul. Yes Next Next (nu se dores , te adugarea unui s , ier existent) Fereastr care prezint specicat iile proiectului nou creat Finish . , Proiectul va creat, iar editorul VHDL va automat lansat. Acesta const din scheletul modulului denit la acest pas.

Figura 3.9: Fis , ierul VHDL

Pasul 4.

Crearea unui circuit S , I

Urmeaz codul VHDL pentru modulul corespunztor unei port , i logice S , I. library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; Uncomment the following library declaration if instantiating any Xilinx primitives in this code. library UNISIM; use UNISIM.VComponents.all; entity poarta_SI is Port (a : in STD_LOGIC; b : in STD_LOGIC; 47

3. VHDL I c : out STD_LOGIC); end poarta_SI; architecture Behavioral of poarta_S , I is begin c <= a and b; rezultatul operat , iei S , I ntre semnalele a s ,i b este atribuit pinului de ies , ire c end Behavioral; Se salveaz s , i apoi se revine n fereastra care cont , ine s , 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(Congurarea dispozitivului) s , i 7(Programarea) ca s , i n laboratorul precedent.

3.7

Exercit , ii

1. Implementat , i port , ile logice elementare (S , I, SAU, NU, SAU-EXCLUSIV, SINU, SAU-NU, SAU-NU EXCLUSIV) folosind cod VHDL. Scriet , i programul n FPGA, conectnd intrrile la comutatoarele de pe plcile de dezvoltare din laborator s , i ies , irile port , ilor la LED-urile disponibile pe acestea. Vericat , i funct , ionarea lor.

Figura 3.10: Semisumator pe un bit

2. Creat , i un semisumator folosind descrierea uxului de date. Conectat , i intrrile s ,i ies irile acestuia la comutatoarele si LED-urile disponibile pe plcile din laborator. , Vericat , i funct , ionarea sa. 3. Creat , i un sumator complet pe un bit folosind descrierea uxului de date. Conectat ,i intrrile s i ies irile acestuia la comutatoarele si LED-urile disponibile pe plcile , , din laborator. Vericat , i funct , ionarea sa. 48

3. Laborator

Figura 3.11: Sumator complet pe un bit

4. Creat , i un multiplexor 4-la-1 folosind descrierea uxului de date. Conectat , i intrrile s , i ies , irile acestuia la comutatoarele si LED-urile disponibile pe plcile din laborator. Vericat , i funct , ionarea sa. 5. Creat , i un demultiplexor 1-la-4 folosind descrierea uxului de date. Conectat ,i intrrile s , i ies , irile acestuia la comutatoarele si LED-urile disponibile pe plcile din laborator. Vericat , i funct , ionarea sa.

Figura 3.12: Demultiplexor 4-la-1

6. Creat , i un decodicator 2-la-4 folosind limbajul de descriere hardware VHDL, descrierea uxului de date. Conectat , i intrrile s , i ies , irile acestuia la comutatoarele si LED-urile disponibile pe plcile din laborator. Vericat , i funct , ionarea sa.
n Un decodicator este un circuit combinat ies , ional care are n intrri s ,i 2 , iri (gura 3.13), funct , ionarea sa ind descris de tabelul 3.2.

49

3. VHDL I

Figura 3.13: Decodicator

a 0 0 1 1

b 0 1 0 1

Q0 1 0 0 0

Q1 0 1 0 0

Q2 0 0 1 0

Q3 0 0 0 1

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

50

Laborator 4

Descrierea secvent , ial a circuitelor logice n VHDL


4.1 Tema

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

4.2

Obiective
TM

R Familiarizarea cu limbaul VHDL s ISE , i realizarea unor circuite folosind Xilinx TM WebPack 10.1.

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 semnicat , ia codului scris [23]. VHDL pune la dispozit ia proiectantului un set separat de instruct , , iuni, numite instruct , iuni secvent , iale. Pentru folosirea acestui set de instruct , iuni, este obligatoriu ca acestea s apar n interiorul unei instruct , iuni process. Cele mai importante sunt instruct , iunile if-then-else s , i case. Fat , de exemplele prezentate n laboratorul precedent, doar nivelul arhitectural va diferit, codul care exemplic modul de funct , ionare al circuitelor. 51

4. VHDL II n cele ce urmeaz vor 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 (gura 4.1).

Figura 4.1: Instruct , iuni executate secvent , ial

Instruct , iunile secvent , iale folosesc multe expresii care apart , in programrii standard, cum sunt atribuirea de valori variabilelor, declarat , ii if-then-else, bucle. Toate acestea pot folosite doar n interiorul unei instruct , iuni process. n cazul n care avem atribuiri multiple de semnale, doar ultima dintre acestea are un efect vizibil.

4.4.1

Procese

Procesele pot aprea n descrierea arhitecturii n acelas , i fel ca declarat , iile de atribuire a semnalelor, iar instruct , iunile din cadrul acestora sunt executate secvent , ial. Instruct , iunile sunt folosite pentru a calcula valorile pentru semnalele de ies , ire folosind semnalele de intrare. Lista de senzitivitate cont , ine toate semnalele de intrare care sunt folosite n interiorul 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.

52

4. Laborator Sintaxa: nume_proces process (lista de senzitivitate) declarat , ii de variabile; begin instruct , iuni secvent , iale; end process nume_proces;

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

4.4.2

Instruct , iunea secvent , ial de atribuire de semnal

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

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 declarate doar n , , interiorul unui proces. semnal := expresie; semnal primes , te valoarea expresiei.

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

4. VHDL II begin ... end process;

4.4.4

Instruct , iunea if-then-else

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

Exemplu
Multiplexor 2 la 1 implementat folosind instruct , iunea if-then-else: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity mux2la1 is Port (in0 : in STD_LOGIC; in1 : in STD_LOGIC; sel : in STD_LOGIC; f : out STD_LOGIC); end mux2la1; 54

4. Laborator architecture Secvential of mux2la1 is begin process (in0,in1,sel) begin if sel=0 then f<=in0; else f<=in1; end if; end process; end Secvential; O alternativ, care evident , iaz modul secvent , ial de execut , ie a instruct , iunilor este prezentat mai jos [23]. process (in0,in1,sel) begin f<=in0; if sel=1 then f<=in1; end if; end process;

4.4.5

Instruct , iunea case

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

4. VHDL II existe n cadrul unei declarat , ii when pentru specicarea tuturor valorilor semnalului de select , ie rmase.

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

4.4.6

Alte instruct , iuni secvent , iale

Alte instruct , iuni secvent , iale sunt: null nu se execut nici o act , iune; for; while; wait o alternativ pentru folosirea unei liste de senzitivitate pentru suspendarea unui proces; loop; exit se poate folosi doar n cadrul unei bucle; cauzeaz saltul la bucla exterioar; next se poate folosi doar n cadrul unei bucle; cauzeaz saltul la sfrs , itul iterat , iei curente s , i continu cu nceputul iterat , iei urmtoare; function; procedure. Informat , ii despre modul lor de utilizare se pot gasi consultnd diferite surse: cart , i, tutoriale online, etc. 56

4. Laborator

4.5

Magistrale
TM

R La crearea entitt ISE , ilor folosind Xilinx trale ca intrri sau ies iri. ,

WebPack

TM

se pot declara s , i magis-

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

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

Codul corespunztor, folosind instruct , iunea secvent , ial case: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity demux1la4 is 57

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

4.6

Exercit , ii

1. Implementat , i port , ile logice elementare (S , I, SAU, NU, SAU-EXCLUSIV, SINU, SAU-NU, SAU-NU EXCLUSIV) folosind cod VHDL, descrierea secvent , ial. Scriet , i programul n FPGA, conectnd intrrile la comutatoarele de pe placile de dezvoltare din laborator s , i ies , irile port , ilor la LED-urile disponibile pe acestea. Vericat , i funct , ionarea lor. 2. Creat Conectat , i un semisumator (gura 4.3) folosind descrierea secvent , ial. ,i intrrile s i ies irile acestuia la comutatoarele si LED-urile disponibile pe plcile , , din laborator. Vericat , i funct , ionarea sa.

58

4. Laborator

Figura 4.3: Semisumator pe un bit

3. Creat , i un sumator complet pe un bit (gura 4.4) folosind descrierea secvent , ial. Conectat , i intrrile s , i ies , irile acestuia la comutatoarele si LED-urile disponibile pe plcile din laborator. Vericat , i funct , ionarea sa.

Figura 4.4: Sumator complet pe un bit

4. Creat , i un multiplexor 4-la-1 folosind descrierea secvent , ial. Conectat , i intrrile s ,i ies , irile acestuia la comutatoarele si LED-urile disponibile pe plcile din laborator. Vericat , i funct , ionarea sa.

Figura 4.5: Demultiplexor 4-la-1

59

4. VHDL II 5. Creat , i un demultiplexor 1-la-4 (gura 4.5) folosind descrierea secvent , ial. Conectat ,i intrrile s , i ies , irile acestuia la comutatoarele si LED-urile disponibile pe plcile din laborator. Vericat , i funct , ionarea sa. 6. Creat , i un decodicator 2-la-4 folosind limbajul de descriere hardware VHDL, descrierea secvent , ial. Conectat , i intrrile s , i ies , irile acestuia la comutatoarele si LED-urile disponibile pe plcile din laborator. Vericat , i funct , ionarea sa.
n Un decodicator este un circuit combinat ies , ional care are n intrri s ,i 2 , iri, funct , ionarea sa ind prezentat n tabelul 4.1.

a 0 0 1 1

b 0 1 0 1

Q0 1 0 0 0

Q1 0 1 0 0

Q2 0 0 1 0

Q3 0 0 0 1

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

60

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 limbaul VHDL s , i realizarea unor TM TM R circuite folosind Xilinx ISE WebPack 10.1.

5.3 5.4

Aspecte teoretice Descrierea structural Structural Description

n cadrul acestui stil de modelare, o entitate este descris ca ind 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 61

5. VHDL III complexitt , ii ridicate este descrierea sistemului ntr-o strucutur ierarhic (gura 5.1), n care sistemul este mprt , it n componente de dimensiuni din ce n ce mai mici [3]. Cele mai importante avantaje ale acestui stil de proiectare sunt: gestionarea complexitt , ii, posibilitatea refolosirii modelelor.

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

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 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 congurat , 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 e declarat mpreun cu entitatea s , i arhitectura care i sunt asociate. 62

5. Laborator Cel mai simplu mod de declarare a componentelor este prin folosirea s , ierelor adit , ionale adugate la proiect (gura 5.2).

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

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 s , ierul and3inputs.vhd): library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity and3inputs is 63

5. VHDL III Port (a : in STD_LOGIC; b : in STD_LOGIC; c : in STD_LOGIC; d : out STD_LOGIC); end and3inputs; architecture Structural of and3inputs is component and2gate is Port (X,Y : in STD_LOGIC; Z : out STD_LOGIC); end component; signal intern : STD_LOGIC; begin a1 : a2 : and2gate Port Map (a, b, intern); and2gate Port Map (intern, c, d);

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

64

5. Laborator

5.4.1

Componente

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

Port (nume_port : mod_semnal TIP_SEMNAL; ... nume_port : mod_semnal TIP_SEMNAL); end component; Cuvntul rezervat is este opt , ional.

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

5. VHDL III

5.4.2

Port Map

Componentele declarate trebuie s e apoi instant , iate cu componentele propriuzise folosind construct ia port map . Astfel se specic modul n care se realizeaz , conexiunile la instant , . Sintaxa: etichet : sau etichet : de asocieri); nume_component Generic Map (constant) Port Map (list nume_component Port Map (list de asocieri);

Lista de asocieri poate specicat folosind metoda pozit , ional sau prin asignare de semnale.

Exemplu
Asociere pozit , ional pentru o poart logic S , I cu 2 intrri: a1 : and2gate Port Map (a, b, intern);

Asociere realizat prin asignare de semnale pentru o poart logic S , I cu 2 intrri: a1 : and2gate Port Map (X => a, Y => b, z => intern);

5.4.3

Open

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

5.4.4

Generate

Construct , ia generate furnizeaz o metod simpl pentru duplicarea componentelor identice. Aceasta furnizeaz posibilitatea de a instant , ia serii de componente.

66

5. Laborator Sintaxa simplicat a acestei instruct , iuni este: etichet : for identificator in start to sau downto stop generate declarat , ii Port Map; end generate etichet;

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

5. VHDL III end generate sumator; cout <= cintern(8); end Structural; Sumatorul complet folosit ca s , i component n acest proiect este descris ntr-un s ier separat. , library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity scomplet is Port ( ci : in STD_LOGIC; x : in STD_LOGIC; y : in STD_LOGIC; z : out STD_LOGIC; co : out STD_LOGIC); end scomplet; architecture Behavioral of scomplet is begin z <= (x xor y) xor ci; co <= (x and y) or ((x xor y) and ci); end Behavioral;

5.5

Exercit , ii

Figura 5.4: Multiplexor 2 la 1

68

5. Laborator 1. Implementat , i circuitul din gura 5.4 folosind descrierea structural. Vericat ,i funct , ionarea prin crearea unei forme de unde (Test Bench Waveform) pentru intrri s , i prin efectuarea unei simulri. 2. Creat , i circuitul din gura 5.5 (poart S , I-NU) folosind descrierea structural.

Figura 5.5: Subiectul 11

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

Figura 5.6: Semisumator pe un bit

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

Figura 5.7: Sumator pe trei bit ,i

69

5. VHDL III 5. Implementat , i un sumator pe 4 bit , i folosind descrierea structural s , i construct , ia generate. Vericat , i funct , ionarea prin crearea unei forme de unde (Test Bench Waveform) pentru intrri si prin efectuarea unei simulri.

70

Laborator 6

Descrierea circuitelor secvent , iale n VHDL


6.1 Tema

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

6.2

Obiective

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

6.3

Aspecte teoretice

Clasa circuitelor secvent , iale este constituit din circuite logice ale cror valori ale ies , irilor depind nu numai de valorile intrrilor, ci s , i de comportamentul lor anterior. Pn n acest punct, am prezentat s , i implementat doar circuite combinat , ionale ale cror ies , iri depind doar de starea intrrilor. Clasa circuitelor secvent , iale include elemente de stocare a valorilor semnalelor logice. Cont , inutul acestor elemente reprezint starea circuitului, iar atunci cnd valorile semnalelor de intrare sunt schimbate, ele e prsesc circuitul sub aceeas , i form sau sub o nou stare. Odat cu trecerea timpului, circuitul trece printr-o secvent , de stri ca rezultat al schimbrilor valorilor de pe intrare [23]. 71

6. VHDL IV Astfel, circuitele secvent , iale sunt circuite cu memorie, aceasta ind reprezentat, de fapt, de starea lor intern. Ies , irea acestor circuite este o funct , ie al crei rezultat depinde de intrare s Ele sunt proiectate folosind metodologia de , i de stare intern. proiectare sincron. n cadrul acestei metodologii, toate elementele de stocare sunt controlate de (sincronizate cu) un semnal de ceas global, iar datele sunt preluate s Aceast , i stocate pe frontul ascendent sau descendent al semnalului de ceas. metodologie reprezint cel mai important principiu al dezvoltrii sistemelor digitale de dimensiuni mari s , i cu complexitate ridicat [3]. n cele ce urmeaz vor prezentate circuitele secvent , iale de baz.

6.4

Circuite sincronizate cu semnalul de ceas

n cadrul circuitelor sincrone semnalele sunt preluate s , i stocate n momentul n care semnalul de ceas s i schimb valoarea din 0 logic n 1 logic (frontul ascendent) , sau atunci cnd semnalul de ceas s , i schimb valoarea din 1 logic n 0 logic (frontul descendent). Tabelul 6.1 prezint pe scurt modalitatea prin care se obt , in valorile specice asociate semnalelor. Tabelul 6.1: Atributele semnalelor Atribut sdelayed(t) squiet(t) sstable(t) Rezultat un semnal care are aceeasi valoare cu semnalul s, ntrziat cu o durat de timp egal cu t un semnal boolean care are valoarea 1 dac n timpul perioadei t nu s-a nregistrat nici o tranzact , ie (semnalul s nu a fost activ) un semnal boolean care are valoarea 1 dac n timpul perioadei t nu s-a nregistrat nici un eveniment (semnalul s nu s , i-a schimbat valoarea) un semnal boolean care s , i schimb valoarea n cazul ntregistrrii unei tranzit ii (semnalul s este activ) , 1 dac s-a nregistrat un eveniment pentru semnalul s 1 dac s-a nregistrat o tranzit , ie pentru semnalul s se returneaz durata de timp trecut de la nregistrarea ultimului eveniment pentru semnalul s se returneaz durata de timp trecut de la nregistrarea ultimei tranzit , ii pentru semnalul s se returneaz valoarea semnalului s dinaintea ultimului eveniment pentru semnalul s

stransaction sevent sactive slast_event slast_active slast_value

72

6. Laborator

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

6.4.1

Detectarea fronturilor semnalului de ceas

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

6.4.2

Bistabilul D

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

73

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

6.4.3

Semnalul RESET

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

n tabelul de adevar urmtor (tabelul 6.3) se poate observa funct , ionarea unui bistabil D cu semnal RESET asincron (indiferent de ceea ce se ntmpl cu semnalul clk). 74

6. Laborator Tabelul 6.3: Mod de funct , ionare al bistabilului D cu semnal RESET asincron reset 1 0 0 0 clk 0 1 Urmtoarea stare a semnalului q 0 q q d

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

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

75

6. VHDL IV 6.4.3.2. RESET sincron

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

6.4.4

Semnalul ENABLE

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

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

6. Laborator end if; end if; end process; n cele ce urmeaz vor prezentate exemple de de circuite secvent , iale simple.

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

Figura 6.1: Bistabil D

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

77

6. VHDL IV

Exemplu
Numrtor pe 4 bit , i.

Figura 6.2: Numrtor pe 4 bit , i cu semnal LOAD s , i RESET Vom folosi un semnal intern (variabil) pe care l vom declara n cadrul arhitecturii: architecture Behavioral of num4b is signal temp : STD_LOGIC_VECTOR (3 downto 0); begin Urmeaz codul corespunztor arhitecturii: process (ceas, reset, load) begin if (reset = 1) then temp <= "0000"; elsif (ceasevent and ceas=1) then if (load = 1) then temp <= data; else temp <= temp+1; end if; end if; end process; dataout<=temp; end Behavioral; 78

6. Laborator

Exemplu

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

Registru de deplasare la stnga cu semnal RESET asincron s , i CLOCK ENABLE. architecture Behavioral of sreg is signal semnal_iesire : STD_LOGIC_VECTOR (7 downto 0); begin process (ceas, reset, enable) begin if (reset=1) then semnal_iesire<="00000000"; elsif (ceasevent and ceas=1) then if (enable=1) then semnal_iesire (7 downto 1) <= semnal_iesire(6 downto 0); semnal_iesire (0) <= bitin; end if; end if; end process; iesire<=semnal_iesire; end Behavioral;

79

6. VHDL IV

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

Figura 6.4: Registru pe 8 bit ,i

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

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

6.5

Exercit , ii

1. Implementat , i un registru pe 8 bit , i cu semnal RESET asincron. 2. Implementat , i un bistabil D cu semnale de SET s , i RESET asincrone.

Figura 6.5: Bistabil D

3. Implementat , i un bistabil T (gura 6.6). 81

6. VHDL IV

Figura 6.6: Bistabil T

Tabelul 6.5: Mod de funct , ionare al bistabilului T T 0 0 1 1 Q 0 1 0 1 ceas Urmtoarea stare a semnalului Q 0 1 1 0

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

Figura 6.7: Bistabil JK

Tabelul 6.6: Mod de funct , ionare al bistabilului JK J 0 0 1 1 K 0 1 0 1 ceas Urmtoarea stare a semnalului Q Q 0 1 Q

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

82

Referint ,e
[1] Xilinx, ISE 10.1 Quick Start Tutorial. Xilinx. ii, 24, 25, 29 [2] J. V. der Spiegel, VHDL Tutorial. University of Pennsylvania, Department of Electrical and Systems Engineering, 2001, updated: 2006. http://www.seas. upenn.edu/~ese171/vhdl/vhdl_primer.html. vi, 37, 38 [3] P. P. Chu, RTL Hardware Design Using VHDL: Coding for Eciency, Portability, and Scalability. Wiley-IEEE Press, 2006. vii, 62, 72 [4] M. Keating and P. Bricaud, Reuse Methodology Manual for System-On-A-Chip Designs. Dordrecht: Kluwer Academic Publishers, third ed., 2002. 2 [5] National Instruments, technology/, 2011. 3 Fpga technology. http://www.ni.com/fpga_

[6] M. J. S. Smith, Application-Specic Integrated Circuits. Addison-Wesley Professional, 1997. 3, 4 [7] S. Mitra, P. P. Shirvani, and E. J. McCluskey, Fault location in fpga-based recongurable systems, in IEEE Intl. High Level Design Validation and Test Workshop Proceedings, 1998. 3 [8] D. Pellerin and S. Thibault, Practical FPGA Programming in C. Prentice Hall PTR, 2005. 3 [9] J. Lyke, Recongurable systems: A generalization of recongurable computational strategies for space systems, in 2002 IEEE Aerospace Conference Proceedings, vol. 4, pp. 41935 41950, 2002. 4 [10] R. Tessier and W. Burleson, Recongurable computing for digital signal processing - a survey, Journal of VLSI Signal Processing, vol. 28, no. 1 of 2, p. 7 27, 2001. 5 83

REFERINT , E [11] R. Reis and J. A. Jess, Design Of System On A Chip: Devices and Components. Dordrecht: Kluwer Academic Publishers, 2004. 5 [12] K. Banovic, M. A. S. Khalid, and E. Abdel-Raheem, Fpga-based rapid prototyping of digital signal processing systems, in 48th Midwest Symposium on Circuits and Systems, pp. 647 650, 2005. 5 [13] A. Corporation, Medical imaging implementation using fpgas. http://www. altera.com/literature/wp/wp-medical.pdf, 2010. White Paper. 5 [14] V. K. Prasanna and A. Dandalis, Fpga-based cryptography for internet security, in Online Symposium for Electronics Engineers (OSEE), 2007. 5 [15] Xilinx, Virtex-II Pro and Virtex-II Pro X Platform FPGAs: Functional DEscription. Xilinx, 5.0 ed., 2011. 5, 7 [16] Xilinx, Xilinx University Program Virtex-II Pro Development System - Hardware Reference Manual. Xilinx, 1.0 ed., 2005. 7 [17] K. Parnell and N. Metha, Programmable Logic Design Quick Start Hand Book. Xilinx, 2 ed., January 2002. 8, 9, 35, 36 [18] Xilinx, Synthesis and Simulation Design Guide. Xilinx, 10.1 ed., 2008. 8, 9 [19] Xilinx, Development System Reference Guide. Xilinx, 10.1 ed., 2008. 8 [20] Department of Electrical and Computer Engineering, University of Idaho, Xilinx ISE/WebPack: Introduction to Schematic Capture and Simulation, 2003. http: //www.mrc.uidaho.edu/mrc/people/jff/digital/webpack.pdf. 23 [21] Department of Computer and Information Science, University of Pennsylvania, Xilinx ModelSim Simulation Tutorial, 2006. http://www.cis.upenn.edu/ ~cse372/simulation/. 23, 24 [22] Simulation Research Laboratory, Tufts University, Using the Xilinx ISE Simulator. http://www.ece.tufts.edu/~karen/ES4/lab1_08/usingxisesim.html. 25 [23] S. Brown and Z. Vranesic, Fundamentals of Digital Logic with VHDL Design. McGraw-Hill, third ed., 2009. 30, 51, 55, 71 [24] J. R. Cooperstock, VHDL Tutorial. Department of Electrical and Computer Engineering, 3480 University Street, Montreal, QC H3A 2A7. http://www.cim. mcgill.ca/~jer/courses/comparch/ref/vhdl-tutorial.pdf. 35 84

REFERINT , E [25] Doulos, A Brief History of VHDL. Doulos, 2008. http://www.doulos.com/ knowhow/vhdl_designers_guide/a_brief_history_of_vhdl/. 36 [26] J. Bhasker, A VHDL Primer. P T R Prentice Hall, -. American Telephone and Telegraph Company. 37, 38, 42, 61 [27] R. Traylor, Essential vhdl for asics, 2001. 37 [28] R. Klenke, Basic vhdl module. http://www.people.vcu.edu/~rhklenke/ tutorials/vhdl/modules/m10_23/sld011.htm. 38 [29] C. D. with VHDL, Circuit Design with VHDL. MIT Press, 2004. 38 [30] E. O. Hwang, Digital Logic and Microprocessor Design with VHDL. Team ELECTRONiX 2004, 2004. 41 [31] B. Muthuswamy, Vhdl review: Entity, architecture, concurrent statements. http://myweb.msoe.edu/~muthuswamy/ee3921/vhdlreview1.pdf. 43 [32] P. J. Ashenden, The VHDL Cookbook. rst ed., 1990. 62 [33] Altium, Vhdl language reference, tech. rep., Altium, 2005. 62

85

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