VHDL Curs 1

23
PACE PACE Facultatea de Inginerie Mecanica si Electrica Facultatea de Inginerie Mecanica si Electrica Universitatea Petrol-Gaze din Ploiesti Universitatea Petrol-Gaze din Ploiesti Departamentul Automatica, Calculatoare si Departamentul Automatica, Calculatoare si Electronica Electronica Adrian Moise Adrian Moise amoise amoise@upg-ploiesti.ro

description

VHDL

Transcript of VHDL Curs 1

Page 1: VHDL Curs 1

PACEPACE

Facultatea de Inginerie Mecanica si ElectricaFacultatea de Inginerie Mecanica si Electrica

Universitatea Petrol-Gaze din PloiestiUniversitatea Petrol-Gaze din Ploiesti

Departamentul Automatica, Calculatoare si ElectronicaDepartamentul Automatica, Calculatoare si Electronica

Adrian Moise Adrian Moise [email protected]

Page 2: VHDL Curs 1

2

Cum se obtine nota finala

• Prezenta la curs

• Activitatea la laborator (o nota finala)

• Tema de casa/Proiect

• Examenul final

Page 3: VHDL Curs 1

3

Capitolul 1

• Introducere• Ierarhia abstractizarii• Reprezentari textuale si pictoriale• Tipuri de descrieri comportamentale• Procesul de proiectare• Descompunerea structurala a proiectului

Page 4: VHDL Curs 1

4

IntroducereIntroducereVHDL – Limbaj pentru descrierea sistemelor electronice digitale

Program USA, Departamentul de Aparare, 1980:

Very High Speed Integrated Circuits (VHSIC)

Limbaj standard pentru descrierea structurii si functionarii circuitelor integrate

A fost elaborat un Hardware Description Language (Limbaj de descriere hardware) HDL. Acesta a fost adoptat ca standard de Institute of Electrical and Electronic Engineers (IEEE)

Caracteristici

1. Permite descrierea structurii unui proiect, cum se descompune in blocuri componente, si cum sunt interconenctate acestea

2. Permite specificarea functionarii unui circuit cu ajutorul unor constructii software

3. Permite simularea functionarii, pentru a verifica proiectul si a compara comportarea diferitelor implementari

Page 5: VHDL Curs 1

5

Verilog, Abel

VHDL este un limbaj standard, independent de vanzator/masina, este portabil si reutilizabil. Aplicatii in domeniul PLD: CPLD (Complex Programmable Logic Devices) si

FPGA (Field Programmable Logic Arrays)si ASIC (Application Specific Integrated Circuits)Dupa ce a fost scris codul VHDL, implementarea se poate face fie intr-un dispozitiv programabil (Altera, Xilinx, Atmel, etc.), fie se poate trimite la o companie care fabrica circuite ASIC. Multe chip-uri comerciale complexe (microcontrollere) sunt obtinute in acest mod.

Spre deosebire de alte limbaje, in care programele sunt secventiale, in VHDL instructiunile sunt concurente (paralel). In VHDL, numai instructiunile din interiorul unui proces, al unei functii sau al unei proceduri se executa secvential.

Introducere (cont.)

Page 6: VHDL Curs 1

6

Ierarhia abstractizarii

• Abstractizarea poate fi exprimată în următoarele domenii:

• Domeniul structural. Acesta este un domeniu în care o componentă este descrisă prin interconexiunile dintre mai multe componente primitive.

• Domeniul comportamental. Acesta este domeniul în care o componentă este descrisă prin definirea (explicarea) dependenţei intrare-ieşire.

Page 7: VHDL Curs 1

7

Ierarhia abstractzarii (Cont.)

Descrierea comportamentală şi respectiv aceea structurală pentru un circuit logic folosit pentru a detecta (contoriza) două sau mai multe valori consecutive 1 sau două sau mai multe valori consecutive 0 aplicate la intrarea X. Descrierea structurală se prezintă sub forma unei interconexiuni dintre primitive (porţi logice şi circuite bistabile). Descrierea comportamentală este prezentată textual într-un limbaj de descriere hardware (Hardware Description Language – HDL).

entity TWO_CONSECUTIVE is port (CLK, R, X: in BIT; Z: out BIT);end entity TWO_CONSECUTIVE

architecture DATAFLOW of TWO_CONSECUTIVE is signal Y1, Y0: BIT;begin STATE: block ((CLK='1' and not CLK'STABLE) or R='0'); begin Y1 <= guarded '0' when R='0' else X; Y0 <= guarded '0' when R='0' else '1'; end block STATE; Z <= Y0 and ((not Y1 and not X) or (Y1 and X));end architecture DATAFLOW;

Page 8: VHDL Curs 1

8

Ierarhia abstractzarii (Cont.)

Z

Y1

Y0

D Q

R

D Q

R

X

CLK

R

I

entity TWO_CONSECUTIVE is port (CLK, R, X: in BIT; Z: out BIT);end entity TWO_CONSECUTIVE

architecture DATAFLOW of TWO_CONSECUTIVE is signal Y1, Y0: BIT;begin STATE: block ((CLK='1' and not CLK'STABLE) or R='0'); begin Y1 <= guarded '0' when R='0' else X; Y0 <= guarded '0' when R='0' else '1'; end block STATE; Z <= Y0 and ((not Y1 and not X) or (Y1 and X));end architecture DATAFLOW;

Page 9: VHDL Curs 1

9

Ierarhia abstractzarii (Cont.)

Tabelul 1.1 Niveluri ierarhice de abstractizare

Nivel de detaliu Reprezentare în domeniul comportamental Primitive în domeniul structural

Sistem Specificaţii de performanţă (Limbaj natural) Computer, disc, unitate, radar

Chip Algoritm Microprocesor, RAM, ROM, UART, port paralel

Registru Flux de date Registru, ALU, numărător, MUX, ROM

Poartă Ecuaţii booleene AND, OR, XOR, FFCircuit Ecuaţii diferenţiale Tranzistor, R, L, CLayout/Siliciu Ecuaţii care descriu procese Forme geometrice

fizice în semiconductoare

Vom folosi o ierarhie de proiectare cu şase niveluri: siliciu, circuit, poartă, registru, chip şi sistem. Tabelul 1.1 ilustrează această ierarhie [2, 3].

Un anumit proiect poate fi reprezentat la oricare din aceste niveluri. Pe măsură ce ne deplasăm către partea inferioară a ierarhiei, ne situăm mai aproape de implementarea fizică iar reprezentarea proiectului este mai puţin abstractă.

Page 10: VHDL Curs 1

10

Ierarhia abstractzarii (Cont.)

Exemple ale primitivelor structurale la fiecare nivel de abstractizare.

REGREG

INC

MUX

SEL

CLK A

CLK B

Nivelul registru

Nivelul circuit

V+

PS

G

GS

DD

VoutVin

Microprocesor

RAM

Portparalel

USART

Controller

I/O

88

8

Nivelul chip

ComputerA/B

IMU

RADAR

C/D

Nivelul sistem

Page 11: VHDL Curs 1

11

Ierarhia abstractzarii (Cont.)

R

S

CQ

QN

Nivelul poartă

SCR

Q

Q

Page 12: VHDL Curs 1

12

Reprezentari textuale si pictorialeAm vazut o reprezentare pictoriala sub forma unei scheme cu elemente logice

pentru circuitul detector de doua valori consecutive 1 sau 0 (vom numi acest

circuit TWO_CON). Alte reprezentari pictoriale: o schema bloc, un graf de

tranzitie a starilor, o diagrama de timp, un tabel de tranzitie a starilor, tabele de

adevar (diagrame K)

XCLK Z

R

TWO_CON

Schema bloc

S0

S1 S2

R

0/0 1/0

1/0

0/0

0/1 1/1

Graful de tranziţie a stărilor

Page 13: VHDL Curs 1

13

Reprezentari textuale si pictoriale (cont.)

CLK

X

Z

Diagrame de timp

X0 1

S0 S1/0 S2/0

S1 S1/1 S2/0

S2 S1/0 S2/1

Cody1y0

S0 00S1 01S2 11

Tabelul de stări Codificarea stărilor

Page 14: VHDL Curs 1

14

Reprezentari textuale si pictoriale (cont.)

Cody1y0 X

0 100 0 101 0 111 0 110 - -

Cody1y0 X

0 100 1 101 1 111 1 110 - -

Cody1y0 X

0 100 0 001 1 011 0 110 - -

Y1 Y2

Y3

Page 15: VHDL Curs 1

15

Tipuri de descrieri comportamentale

• Descrierile comportamentale în HDL sunt împărţite în două tipuri:• Algoritmic: O descriere comportamentală în care procedura ce

defineşte răspunsul I/O nu implică nici o implementare fizică particulară [11].

• Deci, o descriere comportamentală este o procedură sau un program scrise pentru a modela comportarea unui sistem, pentru a verifica faptul că el îndeplineşte corect funcţia dorită, fără a lua în considerare modul în care sistemul este construit.

• Flux de date. O descriere comportamentală în care interdependenţele datelor din descriere urmăresc indeaproape o implementare reală [11].

• Descrierile de tip flux de date arată cum se transferă datele între registre. Figura 1.1 prezintă o descriere de tip flux de date pentru circuitul care detectează două sau mai multe valori consecutive 1 (sau două sau mai multe valori consecutive 0). În Figura 1.5 am prezentat o descriere algoritmică pentru acelaşi circuit.

Page 16: VHDL Curs 1

16

Tipuri de descrieri comportamentale (cont.)

architecture ALGORITHMIC of TWO_CONSECUTIVE is type STATE is (S0,S1,S2); signal Q: STATE := S0;begin process(R, X, CLK, Q) begin if (R'EVENT and R = '0') then --reset event Q <= S0; elsif (CLK'EVENT and CLK = '1') then --clock event if X = '0' then Q <= S1; else Q <= S2; end if; end if; if Q'EVENT or X'EVENT then --output function if (Q=S1 and X='0') or (Q=S2 and X='1') then Z <= '1'; else Z <= '0'; end if; end if; end process;end architecture ALGORITHMIC;

Fig. 1.5 Descrierea algoritmică pentru circuitul din Figura 1.1.

Page 17: VHDL Curs 1

17

Procesul de proiectare

• Pentru a putea decrie un proces structurat de proiectare trebuie să începem prin a defini noţiunile care urmează.

• Proiect. O serie de transformări de la o reprezentare a unui sistem la alta până când se obţine o reprezentare care poate fi realizată (fabricată).

• O activitate de proiectare implică sinteza: combinarea entităţilor abstracte sub forma unei entităţi unice sau unificate. Aşadar, sinteza înseamnă "a pune mai multe lucruri laolaltă". În contextul discuţiei noastre, avem nevoie de o definiţie mai specializată:

• Sinteza: Procesul de transformare a unei reprezentări din ierarhia abstractă de proiectare într-o altă reprezentare.

Page 18: VHDL Curs 1

18

Procesul de proiectare (cont.)

• Ciclul de proiectare constă dintr-o serie de transformări (paşi de sinteză). Acestea sunt:

• Transformarea din reprezentarea în limbajul natural într-o reprezentare algoritmică (sinteza limbajului natural).

• Trecerea de la o reprezentare algoritmică la o reprezentare de tip flux de date (sinteza algoritmică) sau la o reprezentare la nivel de poartă (sinteza comportamentală). În al doilea caz se face trecerea de la domeniul comportamental la cel structural.

• Trecerea de la reprezentarea de tip flux de date la o reprezentare structurală bazată pe porţi logice (sinteza logică). De asemenea, în acest proces se face trecerea de la domeniul comportamental la cel structural, fără a trece prin nivelul registru.

• Trecerea de la reprezentarea la nivel de porţi logice la reprezentarea layout-ului (sinteza layout). Nivelul circuit este evitat.

• Ciclul complet de proiectare se numeşte uneori sinteza proiectului.

Page 19: VHDL Curs 1

19

Procesul de proiectare (cont.)

Limbajnatural

Algoritmic

Flux de date

Logic

Circuit

Forme geometrice

Domeniul comportamental Domeniul

structural

Sistem

Chip

Registru

Poartă

Circuit

Layout

Fig. 1.6 Un traseu tipic de proiectare.

Page 20: VHDL Curs 1

20

Descompunerea structurala a proiectului

• Forma structurală a ierarhiei de proiectare implică folosirea unui proces de descompunere a proiectului. Aceasta are loc deoarece la orice nivel modelul sistemului este alcătuit prin inter-conectarea primitivelor care au fost definite pentru acel nivel. În domeniul structural, primitivele sunt definite prin interconexiuni de primitive de la nivelul imediat inferior. Adică, după cum se arată în Figura 1.7, un proiect poate fi reprezentat ca un arbore, cu diferite niveluri care corespund nivelurilor din ierarhia de abstractizare.

Page 21: VHDL Curs 1

21

Descompunerea structurala a proiectului (cont.)

Descompunere structurală

Modelare comportamentală

(a) Arbore de proiectare întreg

Modelare comportamentală

(b) Arbore de proiectare parţial

Page 22: VHDL Curs 1

22

Descompunerea structurala a proiectului (cont.)

• Două concepte sunt legate de arborele proiectului: proiectarea top-down şi proiectarea bottom-up [22, 23]. În acest sens, cuvântul top se referă la rădăcina arborelui, iar bottom se referă la frunzele arborelui. În proiectarea top-down, proiectantul începe prin a cunoaşte numai funcţia rădăcinii. Apoi, partiţionează (împarte) rădăcina într-un set de primitive de la nivelul inferior. Fiecare dintre aceste primitive este apoi divizată în interconexiuni de alte primitive de la un nivel inferior. Procesul continuă până la nodurile frunză. Aici, modelele sunt întotdeauna comportamentale. O observaţie importantă legată de proiectrea top-down este aceea că divizarea se optimizează la fiecare nivel în concordanţă cu anumite obiective: cost, viteză, aria chipului, etc. Partiţionarea nu este constrânsă de "ceea ce este disponibil".

• Termenul de proiectare bottom-up este oarecum impropriu pentru că, procesul de proiectare începe tot cu definirea rădăcinii, dar în acest caz divizarea este condiţionată de ceea ce este disponibil. Părţile din partea de jos a arborelui au fost proiectate anterior, poate au fost alte proiecte, iar proiectantul este constrâns să le folosească. Folosirea metodei top-down pare să fie soluţia ideală, dar are dezavantajul că produce componente care nu sunt "standard"; deci, creşte costul proiectului. Proiectarea bottom-up este mai economică, dar nu poate îndeplini toate criteriile de performanţă. Cea mai mare parte a proiectelor reale sunt combinaţii ale tehnicilor top-down şi bottom-up.

Page 23: VHDL Curs 1

23

Proiectare moderna ASIC

• HDLs (Hardware Description Languages)

are used for system description at the high abstraction level

Proiect

Descriere Simulare & Testare

Model la nivel poarta

Conversie

Model RTL

HIGH ABSTRACTION LEVEL

LOW ABSTRACTION LEVEL