Universitatea Tehnică din Cluj-Napoca



Universitatea Tehnică din Cluj-Napoca

Facultatea de Automatică şi Calculatoare

Catedra de Automatică

Str. G. Bariţiu 26-28, 400027 Cluj-Napoca, ROMÂNIA

Tel.: +40-264-594469

Fax/Tel.: +40-264-594469

CONTRACT TIP PN-II-IDEI, nr. 93/1.10.2007

Faza II, unică pe anul 2008

Valoare fază: 383.294 lei

Sinteza lucrării

Dezvoltarea unor capacităţi de auto-întreţinere pentru societăţi digitale

Faza 2008 – Analiza funcţională şi experimentarea unor module cu BIST şi autoîntreţinere.

Activităţi:

1. Analiza funcţională pentru dezvoltarea modulelor FPGA cu autoîntreţinere.

2. Analiza funcţională a mecanismelor multiagent pentru structuri cu autoîntreţinere.

3. Dezvoltare interfaţă de reconfigurare dispozitive (wrapper).

4. Experimentare funcţii de autotestare (BIST – Built In Self Test).

5. Implementare module cu autoîntreţinere bazate pe reconfigurare.

Limbajul VHDL

1. Ce este VHDL?

VHDL este un limbaj pentru descrierea sistemelor electronice digitale. El a fost dezvoltat în cadrul programului Circuite Integrate de Foarte Mare Viteză (Very High Speed Integrated Circuits – VHSIC) al Guvernului Statelor Unite, iniţiat în 1980. Pe parcursul acestui program a devenit clar că era nevoie de un limbaj standard pentru a descrie structura şi funcţionarea circuitelor integrate (integrated circuits, ICs). Astfel a fost conceput Limbajul de descriere de hardware pentru circuite integrate de foarte mare viteză (VHSIC Hardware Description Language – VHDL) care apoi a fost adoptat ca standard de către IEEE (Institute of Electrical and Electronic Engineers) din SUA.

VHDL este proiectat să satisfacă anumite cerinţe ale procesului de proiectare. În primul rând, permite descrierea structurii unui modul, adică felul în care el este descompus în sub-module şi cum sunt interconectate aceste sub-module. În al doilea rând, permite specificarea funcţionării modulelor folosind o manieră apropiată de cea din limbajele de programare familiare. În al treilea rând, ca rezultat, permite ca un modul să fie simulat înainte de a fi fabricat, aşadar proiectanţii pot să compare rapid alternativele şi să testeze corectitudinea fără întârzierea şi cheltuielile inerente unui prototip hardware.

1 Descrierea structurii

Un sistem electronic digital poate fi descris ca un modul cu intrări şi/sau ieşiri. Valorile electrice ale ieşirilor sunt funcţii ale valorilor de intrare. Figura 1-1(a) reprezintă un exemplu de sistem digital privit astfel. Modulul F are 2 intrări, A şi B, şi o ieşire Y. Folosind terminologia VHDL, numim modulul F entitatea proiectată, iar intrările şi ieşirile sunt numite porturi.

Un mod de descriere a funcţionării unui modul este prin a descrie cum este el compus din sub-module. Fiecare sub-modul este o instanţă a unei entităţi, şi porturile instanţelor sunt conectate folosind semnale. Figura 1-1(b) arată modul în care entitatea F poate fi compusă din instanţe ale entităţilor G, H şi I. Acest tip de descriere se numeşte descriere structurală. Observaţi că fiecare entitate G, H şi I poate avea la rândul ei o descriere structurală.

2 Descrierea comportamentului

În multe cazuri nu este adecvată descrierea structurală a unui modul. Unul dintre aceste cazuri ar fi când un modul se află la baza ierarhiei unor altor descrieri structurale. În asemenea cazuri, este necesară o descriere a funcţiei realizate de modul, fără referinţe la structura sa internă. O astfel de descriere se numeşte funcţională sau comportamentală.

Pentru a ilustra acest lucru, să presupunem că funcţia realizată de entitatea F din Figura 1-1(a) este un sau-exclusiv. Atunci o descriere funcţională a lui F poate fi funcţia booleană

Y = ¬A . B + A . ¬B

Comportamentele mai complexe nu pot fi descrise doar ca funcţii de intrări. În sistemele cu reacţie, ieşirile sunt de asemenea funcţie de timp. VHDL rezolvă această problemă permiţând descrierea comportamentului sub forma unui program executabil. Capitolele 2 şi 4 descriu facilităţile limbajului de programare.

3 Modelul de eveniment discret în timp

Odată ce structura şi comportamentul unui modul au fost specificate, este posibilă simularea modulului prin execuţia descrierii sale comportamentale. Aceasta se face simulând trecerea timpului în paşi discreţi. La un anumit moment, intrarea unui modul poate fi stimulată schimbând valoarea unui port de intrare. Modulul reacţionează executând codul descrierii sale comportamentale şi programând noi valori, spre a fi asignate semnalelor conectate la porturile de ieşire, la un moment de timp ulterior. Această operaţie se numeşte programarea unei tranzacţii pe acel semnal. Dacă noua valoare a semnalului este diferită de cea veche, apare un eveniment, şi pot fi activate alte module ce au porturile de intrare conectate la acest semnal.

Simularea începe cu o fază de iniţializare şi apoi continuă prin repetarea unui ciclu de simulare cu două faze. În faza de iniţializare toate semnalele primesc valori iniţiale, timpul simulat este setat la zero şi programele comportamentale ale fiecărui modul sunt executate. Aceasta duce de obicei la programarea unor tranzacţii pe semnalele de ieşire pentru un moment ulterior.

În prima fază a ciclului de simulare, timpul simulat este avansat la primul moment în care a fost programat o tranzacţie. Toate tranzacţiile programate pentru acel moment se execută şi aceasta poate duce la apariţia unor evenimente pe anumite semnale.

În faza a doua, tuturor modulelor care reacţionează la evenimentele apărute în prima fază li se execută programul comportamental. Aceste programe vor genera de obicei alte tranzacţii pe semnalele lor de ieşire. Când toate programele comportamentale îşi vor termina execuţia, ciclul de simulare se repetă. Dacă nu mai sunt tranzacţii programate simularea este completă.

Scopul simulării este de a aduna informaţii despre schimbările în timp ale stării sistemului. Acesta se poate face rulând simularea sub controlul unui program de monitorizare a simulării. Monitorul permite vizualizarea semnalelor şi a altor informaţii despre stare, şi stocarea lor într-un fişier pentru o eventuală analiză ulterioară. El permite de asemenea urmărirea interactivă pas cu pas a procesului de simulare, asemănător cu un program interactiv de depanare.

3.5 De ce VHDL?

VHDL – Avantaje:

1. Descrieri logice – usor de scris

2. Limbaj – usor de înteles atat de catre om, cat si de catre masina

3. Permite ierarhizarea usoara a proiectelor – astfel, e usor de aplicat în munca de echipă

1. Permite refolosirea proiectelor – Design Reuse

2. Este independent de platforma

3. Permite diferite nivele de abstractizare

Abstractizare: ascunderea detaliilor unui proiect – detaliile nesemnificative la un anumit nivel.

3.5.1 VHDL – Descriere Generala

1. Istoric: Standardizat prima data de catre IEEE în 1987 – IEEE std 1076-1987, apoi în 1993 – IEEE std 1076-1993. In 1999 – standardizarea extensiei VHDL – AMS (Analog and Mixed Signal), IEEE std 1076-1999

2. Alte limbaje de descriere folosite: ABEL (limbaj mai vechi), VERILOG (foarte utilizat în industrie)

3. Scopul limbajului este de a descrie sisteme digitale

4. Nu este un limbaj de programare. Instructiunile pot fi:

1. Concurente (executate simultan)

2. Secventiale (executate în interiorul unui proces)

5. Sunt descrise sisteme digitale actuale complexe (de ex. microprocesoare) cu ajutorul limbajelor HDL

6. Dispozitivul tinta pentru care a fost creat, este ASIC si nu in special FPGA/CPLD

3.6 Exemplu de descriere functionala:

OI3, I1=>XLXN_6, O=>O);

1. Corespunde cu o descriere de tip Netlist

2. Fiecare element al circuitului este instantiata ca si componenta si conectata la semnalele corespunzatoare (aici: poarta AND2 cu intrarile I0, I1, iesirea O)

3. Toate portile logice fac parte din biblioteca componentei (tehnologiei), unde sunt stocate informatii aditionale cum ar fi arie, timpi de propagare etc

3.6.1 SINTAXA GENERALA VHDL

Case Insensitive, atat la cuvinte cheie cat si la identificatori, ex. then si tHeN reprezinta acelasi cuvant cheie

Comentariu: ‘—’ pana la sfarsitul liniei

Instructiunile se termina cu ‘;’ (instructiunuile se pot intinde pe mai multe linii)

4. Exceptie: inceputurile de instructiune: dupa: begin, then, else, process, respectiv ultimul port dintr-o declaratie de componenta – nu se termina cu ;

Delimitare de insiruire (lista): ‘,’

Atribuire de semnale: ‘in sau out->inout sau in->in; out->out nu este permis.

Architecture

10. Reprezinta functia descrisa a entitatii (structura interna behavioral, RTL etc)

11. O Entitate poate avea mai multe arhitecturi posibile

Configuration

12. Selecteaza perechile de entitate/arhitectura

Folosit in general la simulare

Process

13. Constructie care permite executia secventiala a instructiunilor din interior

13. In afara proceselor instructiunile se executa concurent

14. Procesul insusi este o constructie concurenta (se executa concomitent cu alte procese si instructiuni concurente)

Controlat de evenimente (ex. schimbari de semnale), poate sa chiar nu se execute, daca nu se schimba semnalele.

Package

14. Pentru proiectare modulara. Contine constante predefinite, solutii standard, tipuri de date etc

15. Similar cu bibliotecile OrCad sau cu bibliotecile #include… din C

Library

15. Colectie de obiecte VHDL compilate (cod obiect), folosibil de catre simulator sau sintetizator

3.6.3 Exemple de Entitati

Exemplul cel mai popular: adunare pe un bit: Fuladder, bazat pe doua Halfadder + o poarta SAU:

entity Halfadder is

port(A, B, : in bit;

Sum, Carry : out bit);

end Halfadder;

--VHDL '93 permite: end entity Halfadder;

Entity FULLADDER is

port(A, B : in std_logic_vector(3 downto 0);

Sum: out std_logic_vector(3 downto 0);

Carry : out bit);

end FULLADDER;

16. PORT: inchis intre ‘();’

17. Fiecare element din port: identificator ‘:’ directie tip ‘;’

16. ‘;’ este pentru a se separa elementii, deci ultimul element nu trebuie urmat de ‘;’

18. Porturile de acelasi tip pot fi insiruite prin ‘,’

3.6.4 Tipuri de porturi

IN

1. Valorile semnalelor pot fi doar citite (Read-Only)

Out

2. Valorile semnalelor pot fi doar scrise, nu si citite din interiorul arhitecturii (Write-Only)

3. Permit drivere multiple (pot fi actualizate din mai multe locuri, cu conditia evitarii conflictelor)

4. Pentru a se putea citi din interior:

1. Se poate folosi agregatul semnal’DRIVING_VALUE - nu e suportat de XST

2. Se poate defini un semnal intern (recomandat); se actualizeaza semnal extern, apoi out ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download