dhow2 - l1

Post on 13-Jun-2015

602 Views

Category:

Entertainment & Humor

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

POLITECNICO DI MILANO

VHDL: una breve VHDL: una breve introduzioneintroduzione

DRESDDRESD HHow ow TTo (DHow2) – L1o (DHow2) – L1

DRESD Team

info@dresd.org

2

VHDLVHDL

VHSIC Hardware Description Language

Very High Speed Integrated Circuit

Linguaggio per la descrizione dei C.I.

Esistono tre modi per descrivere un C.I.Dataflow – Descrivere un circuito usando i gateStructural – Descrivere un circuito usando delle distinte descrizioni strutturaliBehavioral – Attraverso del codice (ifs, loops, etc.)

3

IntroduzioneIntroduzione

Il Linguaggio VHDL viene utilizzato per: Documentare, Simulare, Sintetizzare circuiti e sistemi logici.Esso è costituito da più parti alcune delle quali fanno parte integrale del linguaggio stesso, mentre altre vengono integrate da opportuni “packages” realizzati all’interno di “libraries”

User Library User Package blocchi e funzioni precedentemente sviluppati dall'utente

Vendor Library Vendor Package blocchi e funzioni sviluppati dal fornitore

Library IEEE Package STD_LOGIC_1164 Package STD_LOGIC_ARITH

Definizione variabili logiche "fisiche" Definizione di funzioni aritmetico-logiche

Library STD Package TEXTIO Package STANDARD

Operazioni su stringhe Unità di tempo, caratteri ASCII, ecc.

Library WORK Local User Package Variabili, blocchi e funzioni locali

4

Un primo esempioUn primo esempio

A <= B + C after 5.0 ns

B

C

A+

8

8

8

Aspetti introdotti:• Descrizione / documentazione• Simulazione• Sintesi Logica

5

Descrizione / DocumentazioneDescrizione / Documentazione

Una delle funzioni del VHDL è quella di descrivere / documentare il funzionamento di un sistema in modo chiare ed inequivocabileNon è detto che questo sistema debba essere realizzatoAlle volte è IMPOSSIBILE la realizzazione fisica del circuitoPotrebbe essere la descrizione di un sistema già in funzionePotrebbe essere un modo per descrivere gli stimoli da impiegare per testare un circuito

6

Un sistema descritto in VHDL viene solitamente SIMULATO per analizzarne in comportamento (simulazione comportamentale)Bisogna fornire degli stimoli (INPUT)Ed avere un sistema capace di osservare l’evoluzione del modello durante la simulazione, registrarne le variazioni per un’eventuale ispezione di funzionamentoIl simulatore deve aver la possibilità di rappresentare una variabile come “unknown”.

SimulazioneSimulazione

7

Sintesi LogicaSintesi Logica

Passaggio tra descrizione comportamentale e descrizione a porte logicheLa sintesi avviene tramite appositi programmi che si appoggiano a librerie dove sono descritte le porte logiche da impiegare (fornite dal venditore)La sintesi è un processo delicato che deve essere opportunamente “guidato ed ottimizzato”Solo un ristretto sottoinsieme del VHDL si presta ad essere Sintetizzato automaticamente.Non tutto ciò che è scritto in VHDL è Non tutto ciò che è scritto in VHDL è sintetizzabilesintetizzabile

La restante parte è da impiegarsi per la descrizione e per la simulazione

8

Progetto in VHDLProgetto in VHDL

Può essere composto da più unità compilate e salvate in opportune librerie

Queste unità sono:EntityArchitecturePackage

Entity ed Architecture descrivono i componenti come interfaccia e come struttura interna

Package: contiene funzioni e/o grandezze di uso comune

use libreria

entity circuito is...end circutio;

architecture archi of circuito is -- istruzione concorrente 1-- istruzione concorrente 2begin

pa: process begin

-- istruzione sequenziale pa_1

-- istruzione sequenziale pa_2

-- ... end;

pb: process begin

-- istruzione sequenziale pa_2

-- ... end;

end;

Area sequenziale

Area sequenziale

Area concorrente

Struttura generale di un Struttura generale di un programmaprogramma

10

EntityEntity

Descrive un circuito solo come Interfaccia da e verso l’esterno, ne fornisce una visione “ai morsetti”

Descrive gli ingressi e le uscite di un circuito

Non fornisce alcun dettaglio sul funzionamento o sull’architettura

entity circuito isport ( a, b: in bit;

c: out bit );end entity;

Nome della entityNome delle porte

Modo delle porte (direzione)

Tipo delle porteParole riservate

circuito

a

bc

11

ArchitectureArchitecture

Descrive il funzionamento dell’”Entity” tramite:descrizione astratta (comportamentale)equazioni logico/ aritmetiche (dataflow)Interconnessione tra moduli (strutturale)

Lo stesso componente può essere descritto a più livelli di astrazione

12

Architecture: Descrizione Architecture: Descrizione comportamentalecomportamentale

Descrizione comportamentale ad alto livello di astrazione(risulta molto simile ad un algoritmo espresso secondo il classici linguaggi sequenziali (C, Fortran, Pascal, ecc..)Utile per simulare parti di circuito senza dover scendere troppo nel dettaglio del funzionamento.Utilizzo di PROCESS (con lista dei segnali di attivazione) Più operazioni agenti in parallelo risiedono in diversi “Process”Diversi processi comunicano tra loro mediante “SEGNALI” ma al loro interno lavorano mediante “VARIABILI”Al loro interno i “Processes” sono sequenzialiATTENZIONE: non tutto ciò che viene descritto al livello comportamentale risulta sintetizzabile

13

ProcessiProcessi

Un process è un'istruzione concorrente che contiene un'area sequenziale. Un processo viene eseguito parallelamente alle altre istruzioni concorrenti.

L'esecuzione del suo body può essere condizionata da una sensitivity list, una lista di segnali. La sensitivity list non si usa quando il body contiene un'istruzione wait.

In questo caso l'esecuzione viene avviata e si sospende nel modo indicato da wait.

Note:In un processo le variabili locali conservano in proprio valore nel tempo tra un'esecuzione e l'altra.

14

Architecture: descrizione Architecture: descrizione strutturalestrutturale

Descrizione Strutturale ovvero mediante blocchi tra loro interconnessi

I vari “components” devono essere già presenti in una libreria di riferimento

La dichiarazione dei “components” e’ spesso raccolta in un “package”

La “port map” indica il collegamento fisico

Vengono solitamente impiegati segnali interni

15

Un primo esempio…Un primo esempio…

16

Sommare due numeri interi positiviSommare due numeri interi positivi

17

Addizione senza segnoAddizione senza segnobit-slice a propagazione di riportobit-slice a propagazione di riporto

Un sommatore bit-slice ripple carry è strutturato in modo che il modulo in posizione i-esima:

Riceve in ingresso i bit xi e yi degli operandi

Riceve in ingresso il riporto ci del modulo precedente

Produce la somma si = xi'yi'ci + xi'yici' + xiyi'ci' + xiyici

= (xi xor yi)’ci + (xi xor yi)ci’ = xi xor yi xor ci

Produce il riporto ci+1 = xiyi + xici + yici

= xi yi + (xi xor yi)ci

Il modulo in posizione 0 ha il bit di riporto c0=0

Il riporto c0 può essere sfruttato per sommare il valore 1 Necessario per il calcolo del complemento a 2

La somma di numero ad n bit richiede un tempo pari ad n volte circa quello richiesto da un modulo di somma

ci xi yi si ci+1

0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1

18

Full Adder - expressionFull Adder - expression

Full Adder

xi yi

cici+1

si

iiiiiiiiiiiii cyxcyxcyxcyxs xi yi ci

si

iiiiiii cycxyxc 1

xi yi ci

ci+1

Full Adder

19

Half adderHalf adder

X

Y

S

CHA

XY

S

C

X Y S C0 0 0 00

00

00

1 111 1

11

20

Full AdderFull Adder

CHA

HA

Xi

Yi

Ci

S

Ci+1

Si

XY

S

CFA

i

i+1

Ci

i

i

0 0 0 00 0

00

0

11

1

Xi Yi Ci Si Ci+1

11

11

00 1

11

00

0

01

1

11

1

1 111

1

0

000

0

21

Addizione senza segno Addizione senza segno ripple-carryripple-carryPrestazioni: calcolo dei ritardiPrestazioni: calcolo dei ritardi

Il calcolo esatto del ritardo si effettua basandosi sulla seguente architettura Siano Ts e Tr i ritardi per il calcolo della somma e del riporto i-mi rispettivamente

Prestazioni: il ritardo totale per ottenere tutti i bit della somma è dato dall’espressione:

Ttot = (n-1)Tr + Ts

Il percorso critico è quindi quello del riporto

FAn-1 FA1 FA0

x0 y0x1 y1xn-1 yn-1

s1 s0

c0

cn c2 c1sn-1

22

Ripple Carry AdderRipple Carry Adder

Full Adder

x0 y0

c0

s0

Full Adder

x1 y1

c1c2

s1

Full Adder

xn-1 yn-1

cn-1cn

sn-1

Ripple-Carry Architecture

n-bit Ripple Carry

Adder

sn-1 s0

xxn-1 n-1 yyn-1 n-1 xx0 0 yy00

c0cn

Ripple-Carry Adder

23

n-bit Ripple Carry

Adder

sn-1 s0

xxn-1 n-1 yyn-1 n-1 xx0 0 yy00

n-bit Ripple Carry

Adder

s2n-1 sn

xx2n-1 2n-1 yy2n-1 2n-1 xxn n yynnxxkn-1 kn-1 yykn-1kn-1

c0cnc2n

n-bit Ripple Carry

Adder

skn-1 s(k-1)n

c(k-1)nckn

Ripple Carry Block AdderRipple Carry Block Adder

24

Addizione veloce Addizione veloce (ad anticipazione di riporto)(ad anticipazione di riporto) Funzioni di generazione e di propagazione del riportoFunzioni di generazione e di propagazione del riporto

Si basa sulle seguenti considerazioniLe espressioni di somma e riporto per lo stadio i sono:

si = xi'yi'ci + xi'yici' + xiyi'ci' + xiyici

ci+1 = xiyi + xici + yici

L’espressione del riporto in uscita può essere riscritta come:ci+1 = Gi + Pici con Gi = xiyi e Pi = xi + yi

(o anche Pi = xi yi )

Le funzioni Gi e Pi

Sono dette funzioni di generazione e propagazioneGi: se xi=yi=1, allora il riporto in uscita deve essere generato

Pi: se xi o yi=1 e ci =1, allora il riporto in ingresso deve essere propagato in uscita

Possono essere calcolate in parallelo, per tutti gli stadi, rispetto alle rispettive somme.

25

Addizione veloceAddizione velocecalcolo dei riporti in parallelocalcolo dei riporti in parallelo

L’espressione per il riporto ci+1 = Gi + Pici può essere calcolata in modo iterativo.

Sostituendo ci = Gi-1 + Pi-1ci-1 nell'espressione di c i+1 si ha:

ci+1 = Gi + Pi(Gi-1+Pi-1ci-1) = Gi + PiGi-1+ PiPi-1ci-1

Continuando con l'espansione fino a c0 si ottiene:

ci+1 = Gi + PiGi-1 + PiPi-1Gi-2 + + ... + + PiPi-1...P1G0 + + PiPi-1...P1P0c0

I riporti in uscita di ogni singolo stadio possono essere calcolati tutti in parallelo e con ritardo identico (realizzazione SOP) tramite:

le i funzioni di generazione Gi e le i funzioni di propagazione Pi

il riporto in ingresso allo stadio 0, c0

I sommatori che sfruttano il meccanismo della generazione dei riporti in anticipo sono detti Carry-Look-Ahead Adders o CLA Adders

26

CLA Logic c0cn

x0 y0xn-1 yn-1

cn-1 c1

Carry Look-Ahead Logic

x0 y0

G0 P0

c0

c1

x1 y1

G1 P1

c2

Gn-1 Pn-1

xn-1 yn-1

Carry Look-Ahead Logic: Internal architecture

Carry Look-Ahead AdderCarry Look-Ahead Adder

27

Addizione veloceAddizione veloceEsempio: prestazioni per un CLA a 4 bitEsempio: prestazioni per un CLA a 4 bit

2

x0 y0x1 y1

s1 s0

c0

c1

P0 G0

2

2

1

5 2

x2 y2

s2

c2

P1 G1 P0 G0

2

2

1

5

x3 y3

s3

c3

P2 G2P1 G1P0G0

2

2

1

5

c4

2

1P3 G3P2 G2P1G1P0G0

3

•c1=G0+P0c0

•c2= G1+P1G0+P1P0c0

•c3= G2+P2G1+P2P1G0+P2P1P0c0

•c4 = G3 + P3G2 + P3P2G1 + P3P2P1G0 + P3P2P1P0c0

c0c0c0 c0

3 3 3

c4

3

CLA logic

Full Adder

dove

Gi=xiyi

Pi=xi+yi

28

Carry Look-Ahead Logic

Full Adder

c0

s0

Full Adder

c1

s1

Full Adder

xn-1 yn-1

sn-1

cn-1 x1 y1 x0 y0

cn

x0 y0xn-1 yn-1

Carry Look-Ahead Logic

Carry Look-Ahead AdderCarry Look-Ahead Adder

29

E in VHDL?E in VHDL?

30

Complichiamo un pò il problema...Complichiamo un pò il problema...

31

VHDL – Half AdderVHDL – Half Adder

Problema: descrivere un singolo bit half adder con i segnali di carry ed enable

SpecificaIngressi e uscite sono tutti definiti da un solo bitQuando enable è alto, result è x + yQuando enable è alto, carry è uguale x and yLe uscite sono uguali a 0 quando enable è basso

xy

enable

carry

resultHalf Adder

32

Entity Half AdderEntity Half Adder

xy

enable

carryresult

HalfAdder

ENTITY half_adder IS

PORT( x, y, enable : IN BIT; carry, result : OUT BIT);

END half_adder;

33

Half Adder: CircuitoHalf Adder: Circuito

0 0 1 01 0

10

0

11

1

x y e r c

01 1

0

00

0

11

0

0 000

1

0

000

00 01 0

101 1

xy

c

r

e

34

ARCHITECTURE half_adder_a OF half_adder ISBEGIN

PROCESS (x, y, enable)BEGIN

IF enable = ‘1’ THENresult <= x XOR y;carry <= x AND y;

ELSEcarry <= ‘0’;result <= ‘0’;

END IF;END PROCESS;

END half_adder_a;

HA: Descrizione HA: Descrizione comportamentalecomportamentale

35

HA: Descrizione dataflowHA: Descrizione dataflow

ARCHITECTURE half_adder_b OF half_adder ISBEGIN

carry <= enable AND (x AND y);

result <= enable AND (x XOR y);END half_adder_b;

36

ARCHITECTURE half_adder_c OF half_adder IS

COMPONENT and2PORT (in0, in1 : IN BIT;

out0 : OUT BIT);END COMPONENT;

COMPONENT and3PORT (in0, in1, in2 : IN BIT;

out0 : OUT BIT);END COMPONENT;

COMPONENT xor2PORT (in0, in1 : IN BIT;

out0 : OUT BIT);END COMPONENT;

-- description is continued on next slide

HA: Descrizione strutturaleHA: Descrizione strutturale

Dichiarazione dei component

37

-- continuing half_adder_c description

SIGNAL xor_res : BIT; -- internal signal-- Note that other signals are already declared in entity

BEGIN

A0 : and2 PORT MAP (enable, xor_res, result);A1 : and3 PORT MAP (x, y, enable, carry);X0 : xor2 PORT MAP (x, y, xor_res);

END half_adder_c;

HA: Descrizione strutturaleHA: Descrizione strutturale

38

ArchitectureArchitecture

Tutte queste tecniche costitutive per l’Architecture possono fondersi tra loro

Una buona descrizione architetturale è il primo passo per una buona Sintesi

Non tutto ciò che è scritto in VHDL può essere sintetizzato!!

Piccola nota... Double DRIVENPiccola nota... Double DRIVEN

ARCHITECTURE arch OF circ ISSIGNAL s : BIT;BEGIN

PROCESSBEGIN

s <= operazione1;END PROCESS;

PROCESSBEGIN

s <= operazione2;END PROCESS;

END arch;

S

operazione1

operazione2

40

ReferencesReferences

The VHDL Cookbook, P. J.AshendenThe Hamburg VHDL archive:

http://tech-www.informatik.uni-hamburg.de/vhdl/

Il Linguaggio VHDL. Introduzione al linguaggio VHDL per la descrizione di sistemi digitali, Xilinx Inc.WEB-LINKS:

http://www.ashenden.com.au/designers-guide/DG.htmlhttp://www.ashenden.com.au/designers-guide/DG-intro-lectures.htmlhttp://www.ashenden.com.au/students-guide/SG.html

41

QuestionsQuestions

top related