limbaje moderne de descriere hardware
TRANSCRIPT
1
Limbaje moderne de descriere a structurilor hardware
Probleme organizatorice
Evaluare
Nota finala=40% *(Nota verificare pe parcurs)
+ 30% * (Nota laborator ) +30 % * (Nota teme de casa)
2 verificari pe parcurs
2 teme de casa
Prezenta la laborator obligatorie
2
Probleme organizatorice
Pagina aferenta cursului:
moolde.ee.tuiasi.ro
Disponibile:
Referate pentru lucrarile de laborator
Note de curs (cele vechi). Cursurile sunt actualizate pe parcursul semestrului
Informații suplimentare
3
Bibliografie
Haba C.G. – Proiectarea avansata cu circuite integrate programabile si limbaje de descriere a componentelor hardware
Haba C.G. si Breniuc Liviu – Proiectare cu circuite integrate programabile
Toacse Gh. si Nicula Dan, Electronica digitala Vol. I si II, Ed. Tehnica 2005
Nicula Dan – Proiectare cu Verilog - Carte de învăţătură
Ilas Mariana Eugenia si Constantin Ilas - Proiectarea circuitelor integrate digitale folosind limbajul Verilog
4
Sumar
Introducere
Unde se folosesc HDL
Istoric
Comparatie intre HDL si limbajele de programare
Descrierea circuitelor
Caracteristici ale HDL
Proiectarea cu HDL
5
Sumar
Introducere
Unde se folosesc HDL
Istoric
Comparatie intre HDL si limbajele de programare
Descrierea circuitelor
Caracteristici ale HDL
Proiectarea cu HDL
6
7
Introducere
În ultimele decenii complexitatea circuitelor logice a crescut considerabil
Vechile forme de automatizare ale proiectării sistemelor electronice nu mai sunt eficiente
Limbajele HDL oferă metode consistente şi eficiente de proiectare şi sinteză a circuitelor logice
Limbajele HDL sunt relativ uşor de învăţat
Sumar
Introducere
Unde se folosesc HDL
Istoric
Comparatie intre HDL si limbajele de programare
Descrierea circuitelor
Caracteristici ale HDL
Proiectarea cu HDL
8
Domenii de utilizare a sistemelor proiectate cu HDL
Echipamente pentru autovehicule
Stocare date
Calcule de inalta performanta
Echipamente industriale
Echipamente militare
Telecomunicatii cu sau fara fir
Audio/video
Echipamente medicale
Echipamente de masura si control
Securitate
Periferice pentru calculatoare
9
Sisteme proiectate folosind HDL
10
Aplicații ale circuitelor programabile
Aplicații auto Conducere asistată
Multimedia
Vehicule electrice
Instrumentație de bord
Aplicații industriale Securitate funcțională
Ethernet industrial
Comanda mașinilor electrice
Automate programabile
Aplicații de energie inteligentă
Supraveghere video
Recunoașterea imaginilor
Bunuri de larg consum Televizoare digitale
Cititoare și înregistratoare DVD
Monitoare și video proiectoare
Dispozitive portabile
Ecrane tactile
Clădiri inteligente
Aparatură electrocasnică
Medicină Aparatură pentru imagistică medicală
Stimulatoare cardiace
Dispozitive pentru sănătate
Aparatură medicală
Măsurare și testare Aparate de măsură
Aparatură de testare
Prelucrarea semnalelor
Dispozitive de afișare
Telecomunicații Infrastructura pentru telefonie mobilă
Wireless
3G, LTE
Dispozitive pentru comunicatie în rețea
Rutere, switch-uri
Managementul traficului
Calculatoare Sisteme de stocare
Servere
Procesare de întaltă performanță (HPC)
Accelerare calculelor financiare
11
Sisteme proiectate cu HDL www.openorg.com
12
Sisteme proiectate cu HDL
13
14
15
16
Sisteme proiectate folosind HDL
Vezi www.opencores.org
17
Sisteme proiectate folosind HDL
18
Sisteme proiectate folosind HDL
Sumar
Introducere
Unde se folosesc HDL
Istoric
Comparatie intre HDL si limbajele de programare
Descrierea circuitelor
Caracteristici ale HDL
Proiectarea cu HDL
19
20
Proiectarea grafica
21
Apariția limbajelor HDL
22
Aparitia limbajelor HDL
23
Limbaje de descriere hardware
Descriu partea hardware la diverse nivele de abstracţie: structural și comportamental
Descriere structurală
Descrierea text înlocuieşte schemele
Compunerea ierarhică a modulelor din primitive
Descrierea comportamentală funcţională
Se descrie ce face modulul, nu cum
Prin sinteză se generează schema pentru module
Semantica pentru simulare
24
Limbaje HDL
Abel (circa 1983) – dezvoltat de Data-I/O Orientat spre circuitele logice programabile Neadecvat pentru descrieri ce depaşesc
automatele finite
ISP (instruction set processor) (circa 1977) – proiect de cercetare la CMU (Carnegie Mellon University) Pentru simulare, fără sinteză
25
Limbaje HDL (2)
Verilog (circa 1985) – dezvoltat de Gateway (preluată de Cadence) Similar cu limbajele Pascal şi C Singura interacţiune cu simulatorul sunt întârzierile Destul de eficient şi uşor de scris Standard IEEE
VHDL (circa 1987) – DoD (Department of Defense) standard sponsorizat Similar cu Ada (orientat spre reutilizarea codului şi
mentenanţă uşoară) Semantica simulării vizibilă La nivel foarte general dar dimensiune mare a
codului Standard IEEE
26
Exemplu Verilog (circuit de deplasare cu selecție pe 2 biți)
reg [3:0] data_out;
always @*
case (<select>) 2'b00 : data_out = data_in; 2'b01 : data_out = data_in << 1; 2'b10 : data_out = data_in << 2; default: data_out = data_in << 3; endcase
27
Exemplu VHDL (circuit de deplasare cu selecție pe 2 biți)
--use IEEE.numeric_std.all; process(clock) begin if ( clock'event and clock ='1') then case selector is when "00" => output <= input ; when "01" => output <= input sll 1; when "10" => output <= input sll 2; when "11" => output <= input sll 3; when others => output <= input ; end case; end if; end process;
28
Limbajul Verilog
Suportă descrieri structurale şi comportamentale
Structural
Structură explicită a circuitului
E.g., fiecare poartă logică este instanţiată şi conectată la celelalte
Comportamental
Programul descrie comportamentul relativ la intrări şi ieşiri
Mai multe implementări structurale pot avea acelaşi comportament (de exemplu, diferite implementări ale aceleiaşi funcţii booleene)
29
Model structural
module xor_gate (out, a, b);
input a, b;
output out;
wire abar, bbar, t1, t2;
inverter invA (abar, a);
inverter invB (bbar, b);
and_gate and1 (t1, b, abar);
and_gate and2 (t2, a, bbar);
or_gate or1 (out, t1, t2);
endmodule
out a
b
abar
bbar
t1
t2
30
Model comportamental
Atribuire continuă module xor_gate (out, a, b);
input a, b;
output out;
reg out;
assign #6 out = a ^ b;
endmodule
Întârzierea modificării
semnalului de ieşire faţă de
modificarea semnalului de
intrare
Registru simulare -
înregistrează valorile
unui semnal
Sumar
Introducere
Unde se folosesc HDL
Istoric
Comparatie intre HDL si limbajele de programare
Descrierea circuitelor
Caracteristici ale HDL
Proiectarea cu HDL
31
32
Comparaţie: limbaje de programare limbaje HDL
Limbajele de programare procedurale descriu modul cum se realizează (reţetă): Calculele
Manipularea datelor
Execuţia pentru o anumită platformă hardware
HDL descriu un sistem Sistemele pot fi descrise din mai multe puncte de vedere
Comportamental: ce face?
Structural: din ce este alcătuit?
Proprietăţile funcţionale: cum realizez interfaţarea cu acesta?
Proprietăţile fizice: Cât este de rapid? Ce putere consumă?
33
Comparaţie: limbaje de programare limbaje HDL
Structura programului Instanţieri multiple ale unor componente de acelaşi
tip Specifică interconexiunile între module la fel ca în
schemele electrice Utilizează ierarhii de module
Atribuiri Atribuire continuă (circuitele logice prelucrează
semnalul continuu) Întârzieri ale propagării semnalelor (prelucrarea
semnalelor necesită un anumit timp) Evoluţia în timp a semnalelor este importantă
(momentul în care are loc prelucrarea)
34
Comparaţie: limbaje de programare limbaje HDL
Structurile de date Dimensiunile sunt precizate în mod explicit – nu
există structuri dinamice Nu există pointeri
Paralelism Structurile hardware au în mod natural o
funcţionare paralelă (trebuie să suporte mai multe fire de execuţie)
Atribuirile pot să apară în paralel (nu doar secvenţial)
35
Comparaţie: limbaje de programare limbaje HDL
Programele scrise în ambele limbaje sunt prelucrate de către un compilator Un compilator HDL lucrează de cele mai multe ori
în mai multe etape producând în primă fază o descriere într-un format intern. Acesta este apoi convertit într-o descriere într-un format standard (EDIF - Electronic Design Interchange Format) apoi într-un format JEDEC (Joint Electron Device Engineering Council).
Fişierul JEDEC conţine instrucţiunile ce trebuiesc date unui programator PLD pentru a configura un circuit programabil.
Sumar
Introducere
Unde se folosesc HDL
Istoric
Comparatie intre HDL si limbajele de programare
Descrierea circuitelor
Caracteristici ale HDL
Proiectarea cu HDL
36
37
HDL şi circuitele combinaţionale
Module: se specifică intrările, ieşirile, terminalele bidirecţionale şi semnalele interne
Atribuire continuă: în orice moment ieşirea unei porţi este o funcţie de intrările porţii (nu trebuie să aştepte să fie apleată)
Întârzirea la propagare: se utilizează conceptul de timp şi de întârziere a ieşirii faţă de modificarea intrării
38
HDL şi circuitele combinaţionale
Compunere: modulele se conectează utilizând fire de conexiune
Ierarhie: modulele incorporează blocuri funcţionale
Pot fi specificate condiţii indiferente sau incomplet specificate - don't care (se utilizează “x” pentru respectivele ieşiri)
39
HDL şi circuitele secvenţiale
Circuite bistabile Este reprezentat semnalul de tact ce indică
modificarea stări
Pot fi modelate atât bistabilele asincrone cât şi cele sincrone
Automate finite Descriere structurală (bistabilele separate de logica
combinaţională)
Descriere comportamentală (sinteza secvenţiatoarelor)
40
HDL şi circuitele secvenţiale
Căi de date (data-paths = ALU + registre) Se utilizează operatori logico-aritmetici
Partea de control a elementelor de stocare
Paralelism Mai multe automate funcţionând în paralel
Stări incomplet definite
Sumar
Introducere
Unde se folosesc HDL
Istoric
Comparatie intre HDL si limbajele de programare
Descrierea circuitelor
Caracteristici ale HDL
Proiectarea cu HDL
41
42
Caracteristici ale HDL
Principala caracteristică a HDL este că permit descrierea comportamentului circuitelor hardware independent de modul în care acestea vor fi implementate.
Cu ajutorul unui singur limbaj se poate descrie atât funcţia circuitului cât şi implementarea acestuia.
43
Nivele de abstractizare
Descrierea poate fi la diferite nivele de abstracţie
Nivelul de comutaţie: modelează comutaţia la tranzistoare
Nivelul transfer între registre: modelează componentele combinaţionale şi secvenţiale
Nivelul setului de instrucţiuni: comportamentul unui microprocesor
Descrierile pot fi folosite pentru Simulare
Verificare, evaluarea performanţelor
Sinteză
Primul pas în proiectarea hardware
44
Utilizarea descrierilor HDL
Specificarea sistemului
Definirea fără ambiguitate a componentelor şi a interfeţelor într-un sistem de mare dimensiune
Simularea sistemului
Verificarea sistemului/componentelor/circuitului înainte de a fi implementat
Sinteza sistemului
Generarea automată a structurii hardware care implementează funcţionarea sistemului
Sumar
Introducere
Unde se folosesc HDL
Istoric
Comparatie intre HDL si limbajele de programare
Descrierea circuitelor
Caracteristici ale HDL
Proiectarea cu HDL
45
46
Procedura generală de proiectare
Cerinţe
Proiectare funcţională Simulare comportamentală
Proiectare RTL Simulare RTL
Proiectare logică Simuare logică, verificare, simularea defectelor
Proiectarea circuitului Simulare temporală, analiza circuitului
Proiectare la nivel fizic Verificarea regulilor de proiectare
Descrierea procesului de fabricare
47
48
Procedura generală de proiectare
Procedura generală de proiectare presupune parcurgerea mai multor nivele de abstractizare
Este necesară o descriere uniformă care să permită conversia între diversele nivele de abtractizare
Costurile mari de proiectare şi fabricare impun utilizarea unor unelte automate CAD
–Costul proiectării unui nou circuit este de $5M - $100M
–Timp ridicat de lansare pe piaţă
49
Rolul HDL
celule
module
circuite
plăci PCB
Algoritmi
Transfer între registre
Expresii booleene transfer functions
procesoare registere
porţi logice transistoare
FIZIC
COMPORTAMENTAL STRUCTURAL
[Gajski and Kuhn]
50
Rolul HDL
• Proiectarea este structurată în jurul unei ierarhii de reprezentări
• HDL pot descrie aspecte distincte ale sistemului la diferite nivele de abstractizare
• Interoperabilitate: modele la diverse niveluri de abstractizare
• Independenţă tehnologică: model portabil (poate fi implementat folosind diverse tehnologii)
• Reutilizarea proiectelor şi prototipare rapidă
51
Piaţa produselor
Întârzierea lansării pe piaţă are un impact substanţial asupra beneficiului obţinut de pe urma produsului
Primele 10%-20% a ciclului de proiectare poate determina 70%-80% din costul proiectului
Costurile se măresc rapid cu fiecare nouă tehnologie introdusă
Sunt necesare standarde şi posibilitatea de a reutiliza descrierile deja validate autmatizarea bazată pe utilizarea uneltelor ce utilizează limbaje HDL
52
Piaţa produselor
53
Alternative
Sisteme bazate pe limbaje de programare SystemC
C++ cu elemente adiţionale specifice structurilor hardare
C C + extensii sau bazat pe ANSI C based
Altele Java, MATLAB sau limbaje specializate
54
Procedura de proiectare VLSI
Descriere algoritmică
Descriere nivel RTL
Descriere nivel logică/tranzistor
Măşti layout
Sinteză logică
Sinteză layout
Sinteză nivel înalt
Specificare sistem
Sinteză sistem
Verificare layout
Verificare logică
Verificare comportament
Verificare sistem
Unelte sinteză : transformă o descriere a sistemului într-o descriere mai detaliată (sinteză logică, sinteză layout)
Unelte de verificare : verifică corectitudinea descrierii (simulatoare, verificare simbolică)
Uneltele de sinteză logică şi layout sunt destul de dezvoltate pentru a fi utilizate pe scară largă
Uneltele de sinteză de nivel înalt au început să fie folosite în sistemele de proiectare uzuale (mulţi preferă încă descrierea la nivel RTL)
Uneltele de sinteză la nivel sistem încă nu există (domeniu de cercetare activ)
55
Procedura de proiectare VLSI
Descriere la nivel de algoritm (comportamental)
Descriere structurală la nivel transfer între registre
Descriere nivel logic/tranzistor
Măşti Layout VLSI
Sinteză logică
Sinteză layout
Sinteză de nivel înalt
Specificare sistem
Sinteză la nivel sistem
Verificare layout
Verificare logică
Verificare comportamentală
Verificare sistem
Complexitate: < 100 – 1K cuvinte >
< 100 – 10K linii >
< 1K – 100K linii >
< 10K – 1M componente >
< 1M – 1G geometrii >
56
Specificarea la nivel sistem
Funcţionalitatea sistemului (aplicaţie)
Mediul de operare (interfaţa de I/O)
Cost (dezvoltare, fabricare, testare)
Dimensiune/greutate (# de circuite, suprafaţă placă PCB, dimensiuni carcasă)
Putere consumată
Flexibilitate (modificări ale specificaţiei, funcţionalităţi suplimentare)
57
Verificare/sinteză la nivel sistem
Descriere algoritmică
Specificare sistem
Simulare funcţională co-simulare (SW/HW )
Date : tipuri/dimensiuni, structuri, masivi Proces : expresii, procedura de control, proceduri, funcţii Comunicaţie : protocoale Simulare : stimuli la intrare, verificarea ieşirilor
Conversie manuală
Limbaj natural < 100 – 1K cuvinte >
Limbaje software (C/C++, Java) Limbaje HDL (Verilog, VHDL) Limbaje la nivel sistem (System-C, SpecC) < 100 – 10K linii >
58
Verificare/sinteză la nivel înalt
Descriere algoritmică
Simulare funcţională
Descriere structurală RTL Verilog, VHDL < 1K – 100K linii >
Descriere arhitecturală Module (CPU, memorii, registre, unităţi funcţionale, interfaţa IO) Arhitectura magistralelor
Descrierea modulelor (funcţional/structural) Descrierea combinaţională/secvenţială a circuitului
Conversie manuală Sinteză la nivel înalt
Limbaje software (C/C++, Java) Limbaje HDL (Verilog, VHDL) Limbaje la nivel sistem (System-C, SpecC) < 100 – 10K linii >
59
Sinteză/verificare logică
Verificare logică Verificare temporală Analiză consum
Descriere structurală RTL
Descriere nivel logic/tranzistor Verilog, VHDL Schematic Listădeconexiuni(netlist) < 10K – 1M componente >
Verilog, VHDL < 1K – 100K linii >
Minimizare logică Mapare tehnologică
Componente celulă (porţi, registre, tranzistoare) Reţele Terminale I/O
60
Verificare/sinteză layout
Verificare topologie circuit Verificare reguli proiectare Verificare temporală
Descriere nivel logic/tranzistor
Măşti layout VLSI Modelemască < 1M – 1G geometrii >
Layout celule / module (manual sau auto) Plasare şi interconectare
Straturi (substrat, difuzie, polysilicon, metale, treceri) Dreptunghiuri, poligoane
Verilog, VHDL Schematic Listădeconexiuni(netlist) < 10K – 1M componente >
Nivel structural sau comportamental
61
entity ALU32 is port( A, B: in bit_vector( 31 downto 0); Op: in bit_vector( 5 downto 0); end half_adder; C: out bit_vector( 31 downto 0); N, Z: out bit);
module ALU32 (A,B,Op,C,N,Z); input [31:0] A, B; input [5:0] Op; output [31:0] C; output N, Z; endmodule
Descriere la nivel înalt
62
Nivel RTL
63
Nivelul de porți logice
64
Nivel circuit
65
Nivel măști (layout)
66