progettazione digitale e VHDL...

64
Sergio Ricciarini ~ IFAC (CNR), Firenze Corso di Elettronica Generale I Laurea Magistrale in Scienze Fisiche e Astrofisiche Università di Firenze 2014-11-04 Progettazione di circuiti digitali e linguaggio VHDL

Transcript of progettazione digitale e VHDL...

Page 1: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

Sergio Ricciarini~

IFAC (CNR), Firenze

Corso di Elettronica Generale ILaurea Magistrale in Scienze Fisiche e Astrofisiche

Università di Firenze

2014-11-04

Progettazione di circuiti digitali e linguaggio VHDL

Page 2: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

2

Sommario

� Circuiti digitali integrati.� Descrizione di un circuito digitale in VHDL.

� Compilazione e verifica del progetto.� Temporizzazioni dei segnali e macchine sincrone.� Struttura della macchina sincrona e realizzazione in VHDL.

� Upset da violazione di setup/hold time; asincronia e risincronizzazione.

� Upset da perturbazioni esterne.

� Per la bibliografia: cerchiamo insieme in reteS. Ricciarini – progettazione circuiti digitali

Page 3: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

3

� Circuiti digitali integrati.

S. Ricciarini – progettazione circuiti digitali

Page 4: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

4

Circuito digitale integrato� Un circuito digitale integrato è un dispositivo

elettronico (“chip”) che contiene al suo interno un insieme di celle logiche opportunamente interconnesse in modo da realizzare la funzionalità desiderata.

� Ogni cella logica è formata da una combinazione di elementi logici di base: flip-flop, porte AND e porte NOT.

� Un primo tipo è l'ASIC: application specificintegrated circuit (Analog Device, Texas...).• Circuito digitale integrato caratterizzato da

interconnessioni scelte e fissate dal produttore al momento della fabbricazione del chip, in base all’applicazione richiesta.

• Il circuito è programmato una volta per tutte durante la fabbricazione.

S. Ricciarini – progettazione circuiti digitali

Page 5: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

5

Circuito digitale integrato� Un secondo tipo è la FPGA:

field programmable gate array (Altera, Xilinx, Actel, Quicklogic...)

• Circuito digitale integrato caratterizzato da interconnessioni programmabili dall’utente in base al campo (“field”) di applicazione.

• Una rete di piste e celle fissata dal produttore, con interruttori che collegano/scollegano i tratti di pista adiacenti secondo la scelta dell'utente.

• La programmazioneavviene con speciali dispositivi “programmatori” oppure direttamente nel circuito stampato (“scheda” o “printed circuit board” PCB).

• Dopo la programmazione una parte della FPGA risulta inutilizzata.

S. Ricciarini – progettazione circuiti digitali

Page 6: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

6

Interconnessioni nella FPGA� Possono essere non-riprogrammabili o

riprogrammabili.

� Non-riprogrammabili : ad esempio, connessioni ad antifusibile (Actel).

• Alla fabbricazione, l'antifusibile è un interruttore aperto.

• Una volta "bruciato", la connessione è permanente e quindi non-volatile (si mantiene dopo lo spengimento della FPGA).

� Riprogrammabili: ad esempio, connessioni realizzate con transistor NMOS.• Lo stato degli interruttori NMOS è

memorizzato in una porzione della FPGA che funge da interfaccia di configurazione (quindi con struttura fissata, come una ASIC).

• Lo stato può essere riprogrammato in seguito.

• La memoria dello stato può essere volatile(RAM) o non-volatile (E2PROM).

Page 7: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

7

Cella logica di una FPGA� Cella logica della FPGA:struttura di porte logiche e flip-flop predefinita dal

produttore.

� Esempi di celle logiche (FPGA Actel).(a) Cella combinatoria: solo logica combinatoria: combinazione di porte AND e NOT;

(b) Cella sequenziale: un flip-flop (registro a 1 bit) e logica combinatoria.

S. Ricciarini – progettazione circuiti digitali

Page 8: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

8

Cella logica di una FPGA� Altro esempio di cella logica (FPGA Altera): un solo tipo di cella logica, di tipo sequenziale

che integra una parte combinatoria più complessa del caso Actel. Progettata per maggiore versatilità, impiega più elementi circuitali delle celle Actel.

Page 9: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

9

� Descrizione di un circuito digitale in VHDL

S. Ricciarini – progettazione circuiti digitali

Page 10: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

10

Linguaggio VHDL� VHDL: Very-high-speed-integrated-circuits Hardware Description Language.

� Uno dei linguaggi per la descrizione funzionale di qualsiasi circuito digitale (FPGA, ASIC...), indicati genericamente come HDL.

� Il VHDL è largamente diffuso a livello mondiale (standard IEEE).• Un altro linguaggio spesso utilizzato è il “Verilog HDL”.

� La descrizione funzionale rappresenta strutture logiche in modo astratto, cioè senzanecessariamente indicare una specificarealizzazione interna del circuito in termini di rete di NOT, AND e flip-flop, fra tutte quelle equivalenti che danno la stessa funzione logica(cioè la relazione fra uscite e ingressi del circuito).

� Un compilatore (software installato su PC) traduce la struttura HDL astratta in una struttura specificada poter riprodurre in un dato dispositivo (ASIC o FPGA).

S. Ricciarini – progettazione circuiti digitali

Page 11: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

11

Descrizione funzionale o strutturale?� In una descrizione strutturale (ad esempio un disegno schematico) viene specificata una

solastruttura logica interna del circuito, fra le tante equivalenti.• La descrizione strutturale diventa utile quando ci sono esigenze molto particolari in termini di

numero di celle utilizzate per realizzare il circuito, ritardi fra ingressi e uscite del circuito ecc.

� La descrizione funzionale (“behavioural” , ad esempio un codice HDL), in quanto astratta, evita di specificare la struttura logica interna.

• Risparmio di tempo durante la codifica del circuito e le successive modifiche/correzioni.

• Minore possibilità di introdurre errori umani nel codice.

• Maggiore leggibilità del codice da parte degli utenti.

• Diventa in pratica indispensabile per circuiti di media o alta complessità (> 100 flip-flop).

� Analogia con C (FORTRAN ecc.) rispetto a linguaggio macchinaper un processore. Entrambi descrivono sequenze di operazioni: C lo fa in modo astratto, mentre il linguaggio macchina individua una specifica sequenza fra tutte quelle equivalenti (cioè con stesso risultato finale).

� Nota: in HDL è anche possibile codificare una descrizione strutturale (porte AND, NOT e flip-flop) del tutto analoga al disegno schematico.

• In genere un codice HDL contiene un insieme di descrizioni funzionali e strutturali.

S. Ricciarini – progettazione circuiti digitali

Page 12: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

12

(Es. 1) Semplice progetto VHDL-- i COMMENTI sono preceduti da "--" in modo che il compilatore li riconosca e li ignori

-- Questo è un esempio di progetto elementare (solo combinatorio per semplicità)

-- In blu sono evidenziate alcune delle parole riservate per la codifica del linguaggio VHDL

-- In rosso : nomi di oggetti che devono essere scelti dal progettista (in modo da essereimmediatamente compresi nella rilettura del codice)

library IEEE;

use IEEE.std_logic_1164.all; -- libreria di base (da indicare sempre)

entity ex1 is -- entità = interfaccia esterna del circuito; "ex1" è il nome, definito dal progettista

port ( -- elenco dei segnali esterni di ex1

input1 , input2 : in std_logic; -- std_logic (tipo del segnale): due valori logici possibili, '1' o '0'

output : out std_logic

); -- un singolo enunciato puo’ essere scritto su più righe

end ex1 ;

S. Ricciarini – progettazione circuiti digitali

Page 13: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

13

(Es. 1) Semplice progetto VHDL

architecture struct1 of ex1 is -- architettura = struttura/funzionalità interna; struct1 è il nome scelto dal progettista

-- elenco dei segnali interni

signal int1 : std_logic;

begin

int1 <= NOT input2 ; -- assegnazione

output <= input1 OR int1 ; -- assegnazione

end struct1 ; -- questa descrizione è strutturale (viene indicata una specifica combinazione di porte logiche).

S. Ricciarini – progettazione circuiti digitali

Page 14: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

14

(Es. 1) Semplice progetto VHDLarchitecture behav1 of ex1 is -- architettura = struttura/funzionalità interna; behav è il nome

scelto dal progettista

-- non ci sono segnali interni!!!

begin

process (input1, input2) -- "processo" (descrizione funzionale ) con lista di sensibilità (“sensitivity list”) che contiene i segnali che vengono valutati nellecondizioni “if...end if” e simili (che costituiscono la descrizione funzionale)

begin -- descrizione funzionale : non indica una specifica combinazione di NOT e AND fra quelle equivalenti (ne sono riportate ad esempio due nelle figure) , ma piuttosto indica astrattamente la funzione desiderata, cioè le combinazioni per cui l’uscita e’ 1

if input1 = '1' then

output <= '1';

elsif input2 = '0' then

output <= '1';

else -- ATTENZIONE: può essere omesso, ma allora cambia la funzionalità! -- (come?)

output <= '0';

end if ;

end process ;

end behav1 ;

S. Ricciarini – progettazione circuiti digitali

Page 15: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

15

Progettare un generico circuito logico� Un generico circuito logico(circuito sequenziale, macchina logica) è composto di un

insieme di flip-flop e di una rete combinatoria (combinazione di porte NOT e AND).• I flip-flop memorizzano lo “stato logico”della macchina.

• La rete combinatoria definisce, con la propria struttura, la sequenza degli statidel circuito.

� Per comodità pratica il progettista suddivide il circuito logico in un certo numero di blocchilogici (detti anchecomponenti) organizzati in manieragerarchica.

• Si noti l'analogia con la subroutine nella programmazione di un processore.

• Conviene definire la gerarchia in modo da poter ripetere più volte nel progetto lo stessocomponente e, se possibile, far coincidere la funzionalità di un componente con quella di unamacrofunzione (“macro”).

S. Ricciarini – progettazione circuiti digitali

Page 16: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

16

Macrofunzioni (“macro”)� I componenti più comunipossono in genere essere ottenuti senza codificarli a mano(in

HDL o disegno schematico), utilizzando un software generatore dimacrofunzioni, di solito accessibile tramite interfaccia grafica nell'ambiente software di sviluppo (nell'ambiente Quartus di Altera: MegaWizard Plug-in Manager).

• Contatori, registri, multiplexer, decodificatori...

• Configurabili dall’utente: numero di bit, presenza di ingressi asincroni preset e/o clear, presenza di ingressi sincroni addizionali (enable, load, reset ecc.)

� Ogni macrofunzionegenerata è un blocco logico che può essere incluso nella struttura gerarchica del progetto come tutti gli altri componenti descritti a mano dall'utente.

� Prima di scrivere il codice per realizzare una data funzione logica, conviene verificare se è possibile utilizzare una o più macro.

• Risparmio di tempo notevole (servono pochi secondi per generare una macro).

• A meno che ci siano esigenze molto particolari, per cui serve una descrizione manuale, strutturale e ottimizzata (ritardi, numero di celle utilizzate...).

• Nota: in genere la macro non è esportabile in un diverso ambiente software di sviluppo. In genere è però possibile creare automaticamente il codice HDL funzionale equivalente, che può essere utilizzato in qualsiasi ambiente.

S. Ricciarini – progettazione circuiti digitali

Page 17: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

17

(Es. 2) Architettura a blocchi logici-- Architettura gerarchica a blocchi logici (un solo componente interno)

architecture arch of ex2 is

-- segnali interni

signal in1_and_in2 : std_logic;

-- componenti interni di questa architettura

component logic_function -- componente = blocco logico , la cui architettura NON è

-- specificata qui (il nome e l'interfaccia esterna del componente devono corrispondere a

-- un’entità decritta altrove)

port (input1, input2: in std_logic;

output: out std_logic

);

end component ;

begin

in1_and_in2 <= in1_pin AND in2_pin;

logic_function_inst1 : logic_function port map (

-- chiamata (“instance”), identificata come "logic_function_inst1", del componente"logic_function" con mappatura dei suoi segnali esterni sui segnali del circuito "ex2" chelo contiene

input1 => in1_and_in2, -- segnale interno di ex2

input2 => in3_pin, -- segnale esterno di ex2

output => out_pin -- segnale esterno di ex2

);

end arch ;S. Ricciarini – progettazione circuiti digitali

Page 18: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

18

(Es. 2) Descrizione del componente-- Tipicamente il componente è descritto in un file separato da quello del circuito in cui

viene chiamato

library IEEE;

use IEEE.std_logic_1164.all;

entity logic_function is -- l’interfaccia deve essere coerente con quanto dichiarato nella architettura dove il componente viene chiamato (~ subroutine)

port (

input1, input2: in std_logic;

output: out std_logic

);

end logic_function ;

architecture struct1 of logic_function is -- in questo esempio, il nome e la descrizione (strutturale) dell'architettura sono gli stessi usati nell'esempio 1 (ma si noti il diverso formalismo permesso dalla sintassi del VHDL, anche per indicare una stessa STRUTTURA)

begin

output <= input1 OR NOT input2;

-- una assegnazione composta invece di

-- di due assegnazioni elementari

-- (non serve definire int1)

end struct1 ;

S. Ricciarini – progettazione circuiti digitali

Page 19: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

19

Vantaggi della descrizione gerarchica� Lo stesso componentepuò essere inserito in N copie (cioè chiamato N volte) in uno stesso

circuito logico.• Ogni copia è identificata da una diversa“etichetta” ("label" ) scelta dal progettista:

logic_function_inst1 : logic_function port map (…); -- prima chiamata

logic_function_inst2 : logic_function port map (…); -- seconda chiamata

� Per modificaretutte le copie è sufficiente cambiare una sola volta la descrizionedell’architettura del componente (parametri della macro, oppure codice scritto a mano nelcaso di componente codificato dal progettista).

� È possibile anche definire diverse architetture (strutture interne) per una stessa entità(interfaccia) e poi scegliere quella da utilizzare in compilazione per ciascuna copia o gruppodi copie; ad esempio:

component … end component;

for logic_function_inst1, logic_function_inst2 : logic_function use entity work. logic_function ( arch1 );

for logic_function_inst3 : logic_function use entity work. logic_function ( arch2 );

oppure ad esempio:component … end component;

for all: logic_function use entity work. logic_function ( arch1 );

S. Ricciarini – progettazione circuiti digitali

Page 20: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

20

Come descrivere un’architettura in VHDL� Riepilogando, un’architettura in VHDL può contenere 3 diverse tipologie descrittive

(inserite frabegine end):

architecture arch of logic_function is

begin

........................ <<---------- INSERIRE QUI

end arch_simple;

• Prima tipologia: chiamata di un componentela cui architettura è indicata altrove.

logic_function_inst1 : logic_function port map (

input1 => in1_and_in2,

input2 => in3_pin,

output => out_pin

);

• Seconda tipologia: assegnazione(descrizionestrutturale ):

output <= input1 OR NOT input2; -- in sostanza, è una definizione implicita di un

-- blocco logico (entità e struttura). Membro di sinistra = uscita.

-- Membro di destra = ingressi.

S. Ricciarini – progettazione circuiti digitali

Page 21: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

21

Come descrivere un’architettura in VHDL• Terza tipologia: processo(descrizionefunzionale):

process (input1, input2) -- lista di sensibilità (“sensitivity list”): contiene i

-- segnali che vengono valutati nelle condizioni “if...end if” e simili che costituiscono

-- la descrizione funzionale.

-- In sostanza è una definizione implicita di un blocco logico.

-- Lista di sensibilità = lista degli ingressi del blocco logico.

-- Membri di sinistra nelle assegnazioni: uscite del blocco logico.

begin -- descrizione funzionale : non indica una specifica combinazione di NOT e AND

-- fra quelle equivalenti , ma piuttosto indica astrattamente la funzione desiderata, cioè

-- le combinazioni di valori dei segnali valutati per cui l’uscita e’ 1 (e per cui è 0)

if input1 = '1' then

output <= '1';

elsif input2 = '0' then

output <= '1';

else

output <= '0';

end if ;

end process ;

S. Ricciarini – progettazione circuiti digitali

Page 22: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

22

Concetto di “concorrenza”� L’ordine , all’interno del codice HDL,in cui vengono scritti chiamate, assegnazioni e

processi non ha effetto sulla struttura del circuito logico.• Il codice HDL è una rappresentazione “unidimensionale” (un elenco) dei componenti del circuito.

• Il disegno schematico è una rappresentazione “bidimensionale”.

� L’elenco di descrizioninell’architettura HDL non ha nulla a che vedere con l’elenco di istruzioni, da eseguire ordinatamente nel tempo, codificate in un programma C o simililinguaggio di alto livello per processori.

� Tutte le descrizioni elencate nel codice HDL sonoconcorrenti simultaneamente a definirela funzionalità dell'intero circuito, in quanto rappresentano parti del circuito interconnessefra loro.

• Consideriamo un processo: la variazione di un segnale nellalista di sensibilità del processoimplica in generale la variazione delle uscite del processo e quindi degli ingressi di altre parti del circuito (assegnazioni, processi, componenti), indipendentemente dal punto del codice in cui sonodescritti.

� Viceversa, le istruzioni codificate in un programma C sono per costruzioneattive in successionenel tempo (il processore esegue una istruzione alla volta).

S. Ricciarini – progettazione circuiti digitali

Page 23: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

23

� Compilazione e verifica del progetto.

S. Ricciarini – progettazione circuiti digitali

Page 24: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

24

Compilazione del progetto: sintesi� La compilazione avviene in due fasi.

• Un software (compilatore) permette di automatizzare il lavoro.

• Eventuali raffinamenti, in entrambe le fasi, sono operati a mano.

� Prima fase:sintesi.Il codice HDL (descrizione funzionale) o disegno schematico (descrizione strutturale) ètradotto dal software di sintesi in una specifica struttura di elementi logici di base (AND, NOT e flip-flop), la netlist (abbreviazione di "network list").

• Input: il codice HDL (ad esempio uno o più file di testo con estensione .vhd) o il codice che rappresenta il disegno schematico (il formato del file dipende dall'ambiente di sviluppo).

• Output: tipicamente un file con estensione .edf cioè in formato EDIF (Electronic Design Interchange Format, altro standard industriale).

� La netlist non fa riferimento ad alcun dispositivo specifico (FPGA o ASIC).

S. Ricciarini – progettazione circuiti digitali

Page 25: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

25

� Con la sintesi la struttura logica del circuito viene in genere ottimizzata a partire dalla descrizione funzionale o strutturale fatta dall'utente.• L'ottimizzazione avviene secondo vari criteri e sfruttando le equivalenze logiche.

• La struttura della netlist può essere molto diversa da quella dell'eventuale disegno schematico di input.

� Un esempio di ottimizzazione: sono eliminate le parti logiche ridondanti (duplicate nel codice originale)in modo da ridurre il numero di elementi logici necessari.

• Si ricordi che il numero di elementi logici disponibili in un dato dispositivo è limitato.

• In genere, così si riduce la potenza assorbita (consumo).

• Il codice che descrive il circuito logico può cosìessere scritto dall'utente in maniera ridondante (non necessariamente sintetica), quindi più naturale e meglio leggibile.

• Un caso pratico: la descrizione del circuito fatta dall'utentecontiene due flip-flop che pilotano parti diverse delcircuito, ma che hanno lo stesso segnale logicoin ingresso: uno dei due flip-flop può quindi essereomesso (ma attenzione: ilfan-out sull'altro aumenta!).

• Fan-out: numero di linee fisiche di ingresso (di elementilogici) pilotate dall'uscita di un elemento logico.

• Nota: "fan" = ventaglio.

Sintesi e ottimizzazioni

S. Ricciarini – progettazione circuiti digitali

Page 26: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

26

Compilazione del progetto: configurazione� Seconda fase: configurazionedel dispositivo o place and route(“posizionamento e

interconnessione”).

La netlist viene tradotta dal software di configurazione in un codice di configurazioneper un determinato tipo di dispositivoe salvato in uno o più file di configurazione.

Il codice di configurazione viene utilizzato nella fase di realizzazione fisica del circuito nel dispositivo (fabbricazione ASIC o programmazione FPGA).

� Il codice di configurazione descrive una specifica struttura reale del circuito logico (cioè la disposizione degli elementi logici e delle interconnessioni in un dato tipo di dispositivo), scelta fra quelle logicamente equivalenti alla specifica struttura descritta nella netlist.

• La codifica del file di configurazione varia a seconda della tecnica di fabbricazione della ASIC o di programmazione della FPGA.

• Per una FPGA la configurazione si basa sulle celle e interconnessioni a disposizione.

• Per una ASIC la struttura reale viene definita tenendo conto dei vincoli costruttivi legati alla tecnologia di fabbricazione utilizzata (spessore delle piste, dimensioni dei transistor ecc.).

� Anche nella fase di configurazione avvengono ottimizzazioni.• Ad esempio: minimizzazione dei ritardi nelle interconnessioni, tenendo conto della tecnologia di

fabbricazione del dispositivo.

S. Ricciarini – progettazione circuiti digitali

Page 27: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

27

Verifica del progetto� Ci sono due modi per verificare la corretta funzionalità del circuito digitale progettato:

simulazionee prove in laboratorio.• In entrambi i casi si forniscono al circuito i necessari segnali digitali in ingresso, variabili nel

tempo, e si osserva il comportamento nel tempo dei segnali in uscita.

• Conviene passare alle prove in laboratorio solo quando la simulazione ha dato esito positivo.

� Simulazione.• La simulazione avviene mediante un apposito software; le forme d’onda sulle uscite del circuito

sono visualizzate in una finestra grafica.

• E’ possibile assegnare le forme d’onda in ingresso tramite interfaccia grafica.

• Il VHDL contiene la sintassi necessaria per codificare forme d’onda digitali per il simulatore.

Ad esempio:

process (input1)

begin

input1 = '1';

wait for 100 ns ;

input1 = '0';

wait for 100 ns ;

...

end process;

S. Ricciarini – progettazione circuiti digitali

Page 28: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

28

Verifica del progetto� La simulazione è solitamente di tipotemporale. Il simulatore riproduce le temporizzazioni

(tempi di propagazione) attesedei segnali nel circuito, per unospecifico dispositivoe per determinati valori deiparametri operativi (Valim, T).

• Si ricorda che le temporizzazioni in un dispositivo elettronico dipendono dai parametri operativi.

� È possibile anche una simulazione di tipofunzionale (più rapida), assumendo che le temporizzazioni nel circuito non influiscano sul comportamento del circuito (ipotesirealistica solo in pochissimi casi pratici).

� Limiti della verifica del progetto:• in simulazione le temporizzazioni reali sono riprodotte in modo necessariamente approssimato;

• in simulazionee in laboratorionon è generalmente possibile provare:

• tutte le possibili combinazionidi valori dei parametri operativi in cui il circuito opererà;

• tutte le possibili casistiche di utilizzo(sequenze di segnali in ingresso) in cui il circuitoopererà.

• Conviene quindi scegliere un metodo di progettazioneche permetta di ottenere un circuito affidabile (cioè correttamente funzionante in tutte le condizioni operative attese e probabili casistiche di utilizzo) nonostante i limiti di verifica indicati qui sopra: in pratica la soluzione è quella di progettare una macchina sincrona(nei casi in cui ciò è possibile).

S. Ricciarini – progettazione circuiti digitali

Page 29: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

29

� Temporizzazioni dei segnali e macchine sincrone.

S. Ricciarini – progettazione circuiti digitali

Page 30: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

30

Flip-flop: ingressi “sincroni” e “asincroni”

S. Ricciarini – progettazione circuiti digitali

� Ingressi “sincroni”.

• Internamente: hanno effetto sull’uscitasolo in corrispondenza del fronte di salita(“leading edge” o “rising edge”) di clock.

• Setup time e hold time definiscono l’intervallo temporale nell’intorno del fronte di salita del clock, in cui questi ingressi devono essere stabili per non introdurre in uscita un upset(caricamento del valore"rovesciato" cioè sbagliato).

• Esternamente:possono esserepilotati da linee sincrone(che variano cioè con lo stessosegnale di clock del flip-flop) o asincrone.

� Ingressi “asincroni”.

• Internamente: hanno effettosull’uscita immediatamente e indipendentemente dal clock.

• Esternamente:possono esserepilotati da linee sincrone o asincrone.

Page 31: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

31

Temporizzazioni� Se ilsetup timeo hold time di un flip-flop non viene rispettato, c'è unaprobabilità non

nulla che il flip-flop carichi in uscita il valore sbagliato (upset).• Quindi, in una macchina logicareale (FPGA o ASIC), il valore caricato in uscita su

ciascun flip-flop non dipende solo dalla struttura logica ma anche dalletemporizzazioni dei segnali.

� Con temporizzazioni dei segnali si indicano genericamente i tempi di propagazione (ritardi) fra la transizione in un punto fisico di una linea facente parte del circuito logicoe la transizione logicamente conseguentein un altro punto fisico.

� Dipendono da:• struttura reale del circuito: struttura logico/fisica (connessioni e loro lunghezza) realizzata nel

dispositivo;

• tecnologiadel dispositivo (circuito integrato): caratteristiche fisiche delle celle logiche (transistor) e delle interconnessioni (piste metalliche).

� Variano con:• tolleranze di fabbricazione: ogni singolo dispositivo di una serie ha caratteristiche che fluttuano

in un intorno delle specifiche nominali della serie;

• condizioni ambientali: temperatura e tensione di alimentazione;

• invecchiamento(“aging”) del dispositivo: da normale usura (passaggio di corrente, variazioni di temperatura...) o da radiazione assorbita.

S. Ricciarini – progettazione circuiti digitali

Page 32: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

32

Macchina sincrona: introduzione� Per poter tener conto in maniera efficace delle temporizzazioni nel circuito integrato, la

soluzione più semplice è quella di creare un circuito sincrono o macchina sincrona, cioèun circuito logico caratterizzato dall’avere ununico segnale usato come clock per tutti i flip-flop .

• Il clock è tipicamente generato da un oscillatore periodicoad alta stabilità (si tratta solitamentedi un altro circuito integrato).

• “Unico segnale” significa che la forma d’onda realedel clock su ogni flip-flop è la stessa, a meno di sfasamenti legati ai diversi tempi di propagazione del segnale dall’oscillatore ai vari flip-flop.

• Se il circuito è diviso in blocchi logici, ciascuno di essiè una macchina sincrona e i blocchi sono sincroni fra loro(stessosegnale di clock).

� In generale potrebbe però essere necessario suddividere ilcircuito in due o più macchine sincrone, asincrone fra loro(usano cioè segnali di clock fisicamente distinti).

• Il circuito complessivo in questo caso è asincrono(ci sono

almeno due segnali di clock distinti).

S. Ricciarini – progettazione circuiti digitali

Page 33: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

33

Macchina sincrona e setup time (1/2)� Per un circuito sincrono, la relazione chegarantiscela non violazione di setup time per

il flip-flop (j) è:

TCTO(i)max + Tcomb(i)

max + Tskew(i-j)max + Tsetup

max < Tclock (ST)

per ogni flip-flop (i) che contribuisce a pilotare un dato ingresso “sincrono” di (j).• “Max” si riferisce alla variabilità delle temporizzazioni (tolleranze, condizioni ambientali,

invecchiamento). • Tclock è il periodo del clock.

� Tcomb(i) è il ritardo (attraverso un blocco puramente combinatorio) fra la transizionesull’uscitadata_out_idel flip-flop (i) e la conseguente transizione sull’ingresso “sincrono” data_in_jdel flip-flop (j). Dipende da:

• numero di celle combinatorie attraversate(tipicamente ognuna dà un ritardo < 0.1 ns);

• lunghezza delle pistemetalliche attraversate.

S. Ricciarini – progettazione circuiti digitali

Page 34: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

34

Macchina sincrona e setup time (2/2)� TCTO(i) (CTO: clock-to-out) è ilritardo di propagazione interno al flip-flop (i).

� Tskew(i-j) = trising(i) - trising(j) rappresenta lo sfasamento, cioè il ritardo ("skewness") fra i fronti di salita del clock su flip-flop diversi.

• Stiamo parlando dello stesso segnale esterno di clock, che arriva in diversi punti fisici internidel circuito: clock(i) all'ingresso del flip-flop (i), clock(j) all'ingresso del flip-flop (j).

• Lo sfasamento deriva dalla diversa lunghezza del cammino del segnale di clock dall’oscillatore ai due flip-flop.

• Può essere positivo o negativo.

• Tipicamente |Tskew(i-j)| << Tclock in ogni condizione.

• Il margine residuo sulla violazione di setup time (“setup margin”) nella connessione i-jsi riduce per frequenze operative (frequenze di clock) maggiori.

Tsetup_margin(i-j) = Tclock - (TCTO(i)max + Tcomb(i)

max + Tskew(i-j)max + Tsetup

max)

Nota: (ST) è soddisfatta se e solo se Tsetup_margin(j-i)> 0 .

S. Ricciarini – progettazione circuiti digitali

Page 35: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

� Nel caso di circuitoasincrono, abbiamo almenodue distinti segnali esterni di clock.• Il circuito è asincrono anche se i due (o più) oscillatori hanno frequenze nominalmenteuguali:

infatti essi sono comunque fisicamentediversi (per quanto strette siano le tolleranze di fabbricazione di diversi esemplari dello stesso modello, le frequenze non saranno mai perfettamente uguali).

� Per esempio consideriamoclock_1 (va al flip-flop (1)) più lento diclock_2 (va al flip-flop (2)). Consideriamo le temporizzazioni per il setup time del flip-flop (2): dato che lo sfasamento aumenta ad ogni ciclo, necessariamente a un certo punto si avrà una transizionedi data_in_2troppo vicina a quella di clock_2, con violazione di setup time.

• In altri termini, per uncircuito asincrono la relazione (ST)a un certo tempo non sarà soddisfatta.

• Si dice che il flip-flop (2) realizza una risincronizzazione(o un campionamento asincrono) del segnale data_in_2.

35

Circuito asincrono e setup time

S. Ricciarini – progettazione circuiti digitali

Page 36: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

36

Macchina sincrona e hold time� Per un circuito sincrono, la relazione che garantisce la non violazione di hold time per il

flip-flop (j) è:

TCTO(i)min + Tcomb(i)

min > Tholdmax + Tskew(j-i)

max (HT)

per ogni flip-flop (i) che contribuisce a pilotare un dato ingresso “sincrono” di (j).

� In questo caso la relazione non dipende dalla frequenza operativa (frequenza clock) e quindipuò essere soddisfatta in maniera più agevole che la (ST) da parte del compilatore.

� Nel caso asincrono, valgono considerazioni analoghe a quelle svolte per il setup time.

S. Ricciarini – progettazione circuiti digitali

Page 37: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

37

Vantaggi della macchina sincrona� Nel circuito sincrono, basta un solo oscillatore (perché usarne due se non ce n'è bisogno?).

• Con un segnale di clock unico per tutti i flip-flop, la struttura del circuito è la più semplice possibile.

� Il compilatore (nella fase di configurazione) automaticamente sceglie e ottimizza la struttura reale (tipo di celle logiche, loro disposizione geometrica e interconnessioni) di ciascuna macchina sincrona che compone in circuito, allo scopo di massimizzare i margini temporali su setup e hold timeper tutte le coppie di flip-flop i-j.

• Il compilatore si basa su un modello approssimatodelle temporizzazioni nel dispositivo (tecnologia, tolleranze, condizioni ambientali ammesse) e sulla massima frequenza operativarichiesta dal progettista per il clock corrispondente a ciascuna macchina sincrona.

� In genere l'algoritmo di place and route è in grado di trovare una configurazionedellamacchina sincrona che sia soddisfacente per tutti i flip-flop alle condizioni richieste.

• In caso contrario, il compilatoreindica i cammini di segnale che violano setup o hold time.

S. Ricciarini – progettazione circuiti digitali

Page 38: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

38

Svantaggi del circuito asincrono

S. Ricciarini – progettazione circuiti digitali

� Nel circuitoasincrono, gli upset sono inevitabili: richiedono quindi di essere trattatiopportunamente per garantire la funzionalità desiderata del circuito (vedremo poi come).

� Nel circuitoasincrono, occorre in genere tenere il conteggio dei cicli dei vari clock impiegati, per assicurare la simultaneità di determinate azioni da parte dei rispettivi blocchilogici (asincroni fra loro).

• Se Tclock_1= 110% · Tclock_2, 10 cicli di clock_1 durano quanto 11 cicli di clock_2.

� Il circuito asincronorichiede in sostanza del lavoro addizionale da parte del progettista.• Lavoro addizionale che non conviene fare, se la stessa funzionalità si può ottenere con un circuito

sincrono.

Page 39: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

39

Tempo di salita/discesa� I tempi di transizione (durata della salita/discesa del segnale) sono stati fin qui trascurati e

i fronti di salita/discesa sono stati approssimati come istantanei (linee verticali neidiagrammi).

• In realtà il tempo di transizione su una linea è caratterizzato dalla costante di tempo (RC) data dalla capacità di carico e resistenza della linea.

• La capacità di carico aumenta linearmente col numero di porte o flip-flop pilotati da una singola linea (cioè con il fan-out).

� Il compilatoreottimizza il circuito in modo chei tempi di transizione siano trascurabilirispetto alle altre temporizzazioni.• In pratica il fan-out viene limitato tramite la duplicazione (ridondanza) della porta o

flip-flop in questione.

S. Ricciarini – progettazione circuiti digitali

Page 40: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

40

� Struttura della macchina sincrona e realizzazione in VHDL.

S. Ricciarini – progettazione circuiti digitali

Page 41: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

� Una macchina sincrona può essere scomposta in due blocchi logici:• un registro di stato (“status register”) a N bit (l’insieme degli N flip-flop della macchina) la cui

uscita è ilbus di stato(“status”);

• unalook-up-table (LUT) (cioè un generico circuito combinatorio).

� I flip-flop formano la memoria della macchina, immagazzinando l’informazione relativa allo stato della macchinadurante ciascun ciclo di clock.

• La macchina sincrona è, per questo, anche chiamatamacchina a stati.

• Ogni possibile configurazione di valori caricati nei flip-flop costituisce uno stato.

• Gli stati possibili sono 2N. Non tutti sono necessariamente raggiunti (cioè usati).

• Lo stato durante il ciclo di clock successivodipende da:• stato presente(“status”);

• LUT;• valori degli ingressidi controllo (assumiamo che gli

ingressi di controllo siano pilotati da segnali sincroni).

• Uno stato può durare N cicli di clock.

41

Macchina sincrona: struttura

S. Ricciarini – progettazione circuiti digitali

Page 42: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

� Una generica macchina sincrona ènon periodica: la presenza degliingressi di controlloimplica che per ogni stato S, lo stato successivo S' non dipende soltanto dalla LUT.

• La sequenza di stati e la loro durata (numero di cicli di clock) non è necessariamente prefissata.

• Il numero di cicli di clock che intercorre fra due ripetizioni dello stesso stato non è necessariamente fissato.

� Un caso particolare è lamacchina sincrona periodica.• Nessun ingresso di controllo. Quindi la successione di stati è fissata dalla LUT.

� Si può dimostrare che ogni macchina sincronaperiodica con N flip-flop e una LUT L1 è logicamenteequivalente a:

• un contatore a N bit;

• una LUT L2 (contiene la parte di L1 che non èinglobata nel contatore).

42

Macchina sincrona e periodicità

S. Ricciarini – progettazione circuiti digitali

Page 43: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

43

(Es. 3) Macchina sincrona� Esempio pratico: una FPGA contiene una macchina sincrona che esegue unasequenza di

operazioni:• dopo l’accensione della FPGA, si trova nello stato iniziale: idle oppureno operation (nop);

• avvio da parte di un impulso sincrono esterno (ad es. impulso di trigger da un rivelatore);

• lettura di un ADC esterno e trasferimento del dato in una RAM esterna (ram_write1)

• incremento del numero di evento e suotrasferimento in RAM (ram_write2);

• di nuovo nello stato iniziale, in attesa di un nuovo trigger.

� La macchina genera sequenze sincronesu un certo

numero di uscite digitali verso ADC e RAM.

S. Ricciarini – progettazione circuiti digitali

Page 44: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

44

(Es. 3) Macchina sincrona� Conviene scegliere la struttura gerarchica della macchina sincrona in modo opportuno:

• una macchina principale Main che coordina e attiva varie macchine secondariequando necessario;

• una macchina secondaria SecADC dedicata a leggere l’ADC e immagazzinare il dato in un registro temporaneo (registro? macro! Interfaccia ADC? progettista!);

• un’altra macchina secondaria Seccount che conta il numero di eventi (contatore? macro!);

• un’altra macchina secondaria SecRAM dedicata a trasferire il dato dal registro temporaneo o dal contatore alla RAM (interfaccia dedicata alla RAM utilizzata? codificata dal progettista!).

� Ogni macchina secondaria è dedicata (specializzata) per generare

una specifica sequenza digitale su uno specifico gruppo di uscite.

� Tipicamente la stessa macchina secondaria (~ subroutine)viene attivata in momenti diversidel funzionamento della

macchina principale:• ad es. la scrittura nella RAM avviene due volte per ogni trigger e implica la stessa sequenza

digitale di controllo verso la RAM (mentre i dati trasferiti possono cambiare ogni volta).

S. Ricciarini – progettazione circuiti digitali

Page 45: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

� Scriviamo il codice VHDL che descrive la macchina principaleMain.

entity main is

port (

synchro_trigg, adc_read_end, ram_write_end : in std_logic;

adc_read_start, ram_write_start, ram_data_select : out std_logic

);

end main ;

� La descrizione dell'interfaccia (entità)di Main comporta di aver chiaro qualisono i segnali di ingresso e di uscita cheservono a Main per coordinare il lavoro dellealtre macchine Sec.

� Conviene quindi aver disegnato uno schemaa blocchi del circuito, come quello mostrato qui.

• Nota: non sono mostrate le linee di clock, resetasincrono e i segnali di controllo per ADC e RAM.

(Es. 3) Macchina sincrona in VHDL

S. Ricciarini – progettazione circuiti digitali

trigger è un segnale asincrono rispetto al clock;il risincronizzatore "trigger resync" è descritto più avanti

Page 46: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

� Abbiamo visto che l'architettura di una macchina sincrona è ben descritta

scomponendola in due blocchi logici:• un registro di stato (insieme dei flip-flop);

• unaLUT (blocco puramente combinatorio).

architecture arch of main is

... -- servono altri segnali interni?

type st_value is ( -- con questa descrizione funzionale (astratta) il bus di stato (uscita

-- del registro di stato) viene rappresentato in maniera ben leggibile, definendo un-- apposito tipo di segnale i cui valori sono rappresentati da stringhe

nop, adc_read, ram_write1, ram_write2 -- la macchina che definisco in questo esempio ha -- 4 diversi stati (equivalenti ai 4 possibili valori di 2 linee digitali: 00,01,10,11);

);

signal st_pres, st_next -- definisco 2 bus di stato di tipo st_value: stato presente

-- (uscita registro) e stato successivo (ingresso registro)

: st_value;

... 46

(Es. 3) Macchina sincrona in VHDL

S. Ricciarini – progettazione circuiti digitali

Page 47: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

...

begin

process ( reset , clock ) -- primo blocco logico : è il registro di stato della macchina

-- sincrona (insieme di flip-flop) [processo = descrizione funzionale]

begin

if ( reset = '1') then -- “reset” inviato agli ingressi “asincroni” clear o preset,

-- per avere uno stato di partenza definito dopo l'accensione ( in che stato vanno

-- i flip-flop all'accensione? )

st_pres <= nop ; -- No OPeration

elsif ( clock 'event and clock = '1') then -- fronte di salita di clock

st_pres <= st_next ;

end if;

end process;

process (-- secondo blocco logico : è la LUT della macchina sincrona, che definisce lo stato

-- successivo st_next e le uscite, in funzione dello stato presente st_pres

-- e degli ingressi di controllo [processo = descrizione funzionale]

st_pres ,

synchro_trigg , -- trigger sincronizzato con clock (dal blocco "trigger resync")

adc_read_end , -- segnale di ritorno dalla macchina secondaria Sec ADC

ram_write_end -- segnale di ritorno dalla macchina secondaria Sec RAM

)

begin

...47

(Es. 3) Macchina sincrona in VHDL

S. Ricciarini – progettazione circuiti digitali

Page 48: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

...

-- All'interno del processo (fra "begin" e "end process"), è permesso avere, per ciascun

-- segnale di uscita, più di una assegnazione (ciascuna in genere condizionata ai segnali

-- della lista di sensibilità), tali che per una data combinazione di valori in ingresso,

-- due o più assegnazioni siano valide.

-- In tal caso, prevale l'ultima assegnazione nell'ordine di scrittura.

st_next <= nop ;

adc_read_start <= '0';

ram_write_start <= '0';

ram_data_select <= '0';

-- Queste assegnazioni sono valide per qualsiasi combinazione di valori in ingresso al

-- processo; se nel seguito del processo si trova un'altra assegnazione per uno di questi

-- segnali, ed è valida, essa prevale.

-- Lo scopo di queste assegnazioni (e delle successive assegnazioni condizionate,

-- che vedremo subito) è di far sì che le uscite del processo siano sempre 0 a meno che

-- gli ingressi assumano determinate combinazioni di valori.

...

48

(Es. 3) Macchina sincrona in VHDL

S. Ricciarini – progettazione circuiti digitali

Page 49: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

49

(Es. 3) Macchina sincrona in VHDL...

-- In alternativa all’uso di:

-- if (“condizione 1”) then ... elsif (“condizione N”) then ... else ... end if;

-- [in cui la condizione “else” può anche essere omessa...]

-- è possibile usare:

-- case “bus” is when “valore 1” =>... when “valore 2” =>... when others => ... end case ;

-- ATTENZIONE: con “if” si specificano le assegnazioni derivanti da un sottoinsieme dei

-- possibili valori di un bus (gli altri valori non modificano il valore in uscita);

-- con “case” si specificano le assegnazioni derivanti da ciascuno dei

-- possibili valori del bus (è obbligatorio includere nell’elenco dei “when” TUTTI

-- i possibili valori del bus: esplicitamente, o implicitamente con “when others”).

case st_pres is

when nop =>

if ( synchro_trigg = '1') then -- c’è un trigger!!

st_next <= adc_read ; -- passa allo stato successivo

adc_read_start <= '1'; -- avvia la macchina Sec ADC (un impulso lungo un ciclo di clock)

-- ram_write_start e ram_data_select non cambiano

end if; -- altrimenti resta nello stato presente (nop)

-- NOTA: il numero di cicli di clock in cui la macchina Main resta in un generico stato

-- dipende dal segnale di controllo (flessibilità)

...

S. Ricciarini – progettazione circuiti digitali

Page 50: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

50

(Es. 3) Macchina sincrona in VHDL...

when adc_read =>

if ( adc_read_end = '1') then -- è terminata la lettura dell'ADC (comunicazione da Sec ADC)

st_next <= ram_write1 ; -- passa allo stato successivo

ram_write_start <= '1'; -- avvia Sec RAM (un impulso lungo un ciclo di clock)

else

st_next <= adc_read ; -- altrimenti resta nello stato presente (*)

end if;

(*) Perché per adc_read è necessario scriverlo mentre per nop è implicito?

when ram_write1 =>

if ( ram_write_end = '1') then -- Sec RAM comunica di aver terminato la scrittura nella RAM

st_next <= ram_write2 ; -- passa allo stato successivo

ram_write_start <= '1'; -- avvia DI NUOVO Sec RAM

ram_data_select <= '1'; -- ‘1’ seleziona il dato del contatore

else

st_next <= ram_write1 ; -- altrimenti resta nello stato presente

end if;

...

S. Ricciarini – progettazione circuiti digitali

Page 51: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

51

(Es. 3) Macchina sincrona in VHDL...

when ram_write2 =>

if ( ram_write_end = '1') then -- Sec RAM comunica di aver terminato la (seconda) scrittura

-- nella RAM

st_next <= nop ; -- passa allo stato successivo (chiusura del ciclo)

else

st_next <= ram_write2 ; -- altrimenti resta nello stato presente

ram_data_select <= '1'; -- mantiene la selezione attiva, altrimenti la linea torna a 0

-- (davvero necessario? dipende dal funzionamento di Sec RAM)

end if;

end case;

end process; -- NOTA: non sono mai stati usati gli operatori AND, NOT ossia non è mai stata

-- data una specifica descrizione strutturale

end arch;

S. Ricciarini – progettazione circuiti digitali

Page 52: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

52

� Upset da violazione di setup/hold time; asincronia e risincronizzazione

S. Ricciarini – progettazione circuiti digitali

Page 53: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

53

Upset da violazione di setup/holdtime� Definizione generale di upset("rovesciamento"): il valore dell'uscita di un flip-flop

diviene l'inverso di quello che al momento sarebbe logicamente corretto.

� Qual’è la conseguenza pratica dell’upset?• In generale (tranne casi specifici, come vedremo) l’upset nei successivi cicli di clock si propaga

ad altri flip-flop nel circuito, modificandone lo stato logico in maniera diversa rispetto a quantoprevisto in base alla struttura logica del circuito (viene quindi introdotto un errore logico nelfunzionamento del circuito).

� Un upsetpuò verificarsi se setup o hold time di un flip-flop sono violatiper un qualchefronte di salita di clock.

• L’uscita del flip-flop (bistabile) si viene a trovare in uno stato metastabile (cioè di equilibrio instabile), caratterizzato da un valore di tensione intermedio fra lo stato 0 (per circuiti LVTTL: Vout< 0.8 V) e lo stato 1 (per circuiti LVTTL: Vout> 2.0 V).

• Il flip-flop decade dallo stato metastabilein tempi brevi (~ 1 ns) nello stato 0 o nello stato 1 (stati stabili), in maniera sostanzialmenteimprevedibile (tipicamente a cause delle oscillazioni di rumore elettronico): può quindi decadere nello stato logicamente sbagliato rispetto a quello che sisarebbe dovuto caricare in base ai valori degli ingressi "sincroni" del flip-flop, può cioè avvenirel'upset.

S. Ricciarini – progettazione circuiti digitali

Page 54: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

54

Caso della macchina sincrona� In unamacchina sincronala violazione di setup/hold time avviene se non sono

soddisfatte per ogni coppia i,j di flip-flop le relazioni:

TCTO(i)max + Tcomb(i)

max + Tskew(i-j)max + Tsetup

max < Tclock (ST)TCTO(i)

min + Tcomb(i)min > Thold

max + Tskew(j-i)max (HT)

• Ciò avviene ad esempio se la frequenza di clock è troppo elevata, per cui (ST) non può essere soddisfatta per tutti o parte dei flip-flop del circuito (e per ogni ciclo di clock).

• La probabilità di questo upset viene azzeratase si riesce a soddisfare (ST) e (HT).

S. Ricciarini – progettazione circuiti digitali

Page 55: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

� In un circuito asincrono, che quindi ha (almeno) due clock di frequenza diversa, i flip-flop che realizzano il campionamento asincrono avranno violazione di setup/hold time per determinati fronti di salita del proprio clock (a seconda dello sfasamento corrente fra i due clock).

• La probabilità di questo tipo di upsetnon può mai essere azzerata.

� In un circuito asincrono, è però possibile configurare opportunamente lo stadio di risincronizzazioneo campionamento asincrono(flip-flop (2) nello schema) in modo da azzerare la probabilità di errore logico nel funzionamento complessivo del circuito.

55

Caso del circuito asincrono

S. Ricciarini – progettazione circuiti digitali

Page 56: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

56

Campionamento asincrono combinatorio (1/2)� Vediamo un caso pratico di risincronizzazione.

• Una parte del circuito lavora con clock_1, l’altra parte con clock_2, dati da due oscillatori diversi.

• La linea ready_1(combinatoria) è sincrona con clock_1e indica quando la macchina 1è pronta.

• La linea ready_2è sincrona con clock_2e avvia una sequenza interna alla macchina 2.

• Sta avvenendo ilcampionamento asincrono del segnale ready_1che è uscita di un elemento combinatorio (porta logica, non flip-flop).

S. Ricciarini – progettazione circuiti digitali

Page 57: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

57

� Un segnale combinatorio come ready_1presenta in genereglitch (impulsi spuri) a causa delletemporizzazioni dei segnali nel dispositivo reale.

• Le transizioni di signal_ae signal_bnon sono mai esattamente simultanee, nonostante i due segnali siano generati da flip-flop sincroni.

� Nel campionamento asincrono combinatorio, per determinati fronti di salita di clock_2(a seconda dello sfasamento corrente fra i due clock) il glitch avverrà troppo vicino al fronte di salita di clock_2, con violazione di setup o hold time e quindi con possibile upsetsulla linea ready_2, da cui la possibilità di errore logico nellamacchina 2.

• In caso di upsetready_2cambia stato e la macchina 2inizia a lavorare senza che la macchina 1abbia veramente comunicato di essere pronta!

� Nota bene: anche nel caso di campionamento sincronocombinatorio ci sono in genere deiglitch, ma se (ST) e (HT) sono soddisfatte, questi glitch non danno maiupset, in quantoavvengono al di fuori dell’intorno del fronte di salita del clock, identificato da setup e hold time.

S. Ricciarini – progettazione circuiti digitali

Campionamento asincrono combinatorio (2/2)

Page 58: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

58

Come risincronizzare senza errore logico?� Per evitare di avere il glitch in ingresso allo stadio di risincronizzazione, occorre

evitare di avere campionamenti asincroni di tipo combinatorio.

� Occorre quindi averesolo campionamenti asincroni di tipo sequenziale(cioèsolo sul segnale che esce da un flip-flop).

� Attenzione: nella risincronizzazione di tipo sequenziale, pur non avendo glitch, avvengono comunque e inevitabilmente degli upset.• Il vantaggio sta nel fatto che mentre l’upset originato da un glitch introduce sempreun

errore logico, l’upset originato da una transizione logicamente attesa (dell'uscita del flip-flop) può essere elaborato in maniera tale da non comportare mai errori logici.

S. Ricciarini – progettazione circuiti digitali

Page 59: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

59

Campionamento asincrono sequenziale

• ready_2può ancora avere un upset ma ciò non comporta un errore logico nellamacchina 2, che parte quando desiderato, cioè solo dopoche la macchina 1 ha comunicato di esserepronta con ready_1 .

• ready_2replica le transizioni di ready_1a menodi un’incertezza(jitter ) nel ritardo, che puòvariare di volta in volta fra circa 0 e Tclock_2a seconda della fase fra i due clock al momentodel campionamento.

• per indicare il ritardo fra i due segnaliready_1e ready_2:

• si considera ilritardo medio , pari a circa 0.5 · Tclock_2 ;

• si rappresenta iljitter come un’incertezzaδt distribuitauniformementecon ampiezzamassima pari a: δt = ± 0.5 · Tclock_2

� Inserendo opportunamente un flip-flopnel circuito visto prima, si ha un segnaleready_1per definizioneprivo di glitch .

S. Ricciarini – progettazione circuiti digitali

Page 60: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

60

� Upset da perturbazioni esterne

S. Ricciarini – progettazione circuiti digitali

Page 61: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

61

Upset da perturbazioni esterne� Un upset può anche avvenire a causa di perturbazioni esterne, ad esempio le correnti

parassite indotte nel flip-flop da una particella altamente ionizzante (ad es. un raggiocosmico).

S. Ricciarini – progettazione circuiti digitali

Page 62: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

62

Upset da perturbazioni esterne� Non è possibile azzerare la probabilità di questo tipo di upset, perché è intrinsecamente

associata al flip-flop (e alla presenza di radiazione ionizzante in natura).

� Non è possibile azzerare la probabilità che questo tipo di upset comporti un errore logico, perché può avvenire in qualunque flip-flop del circuito.

� Si può ridurre la probabilità che questo upset comporti un errore logico, introducendouna qualcheridondanza che funziona come sistema di correzione automatica dell'errorelogico. Ad esempio:

• Tripla ridondanza. Un segnale logico è realizzato da 3 flip-flop (scrittosimultaneamente sui 3 flip-flop).Il valore associato (letto) è dato da quello presente in maggioranza(serve la opportuna logicacombinatoria).

• Codifica Hamming. Quando un valore A viene scritto in un registro a N bit, viene anche scrittoun codice B in un registro ausiliario di H bit.Il valore letto è una combinazione logica delle N+H uscite, tale che in caso di upset di uno o piùflip-flop fra gli N+H (es. A → A + 2, B invariato), il valore letto nel registro restiidentico a quelloscritto (A+2 combinato con B dà A, proprio come A combinato con B dà A).

� Anche con la ridondanza, l'errore logico è sempre possibile: ad esempio, nel caso di triplaridondanza, un doppio upset (su due flip-flop simultaneamente) non verrebbe correttoautomaticamente.

S. Ricciarini – progettazione circuiti digitali

Page 63: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

63

Rivelazione dell'errore logico� Come rivelare la presenza di un errore logico?

• Si configura la logica di ridondanza in modo da segnalare gli errori logici che essanon può correggere: ad esempio, una codifica Hamming con N=10, H=5 è in grado di correggere un singolo upset e segnalare un doppio upset (ma nulla segnala in caso di upset tripli o superiori).

• Si verifica che il circuito risponda in un tempo massimo prefissato:• watchdog(“cane da guardia”): un contatore sempre attivo all'interno del circuito deve essere

azzerato dal circuito stesso prima che venga raggiunto un determinato conteggio, chegenererebbe automaticamente un segnale di allarme (ad esempio: un reset asincrono per tuttii flip-flop del circuito);

• time-out sull’esecuzione di un comando: la risposta a un comando esterno deve avvenireentro un tempo massimo prefissato. Altrimenti il circuito logico esterno, che ha inviato ilcomando, interviene (esempio: reset asincrono, spengimento/riaccensione).

• Si controllano le sequenze di bitin uscita dal circuito:• codici di controllo: controllo di parità , cioè un bit che rappresenta il numero di 1 presenti

nei dati (è pari o dispari?); oppure controlli analoghi più sofisticati (ad es. CRC: Cyclic Redundancy Check);

• controlli sul formato dei dati: presenza di sequenze prefissate (“pattern”, “frame”).

S. Ricciarini – progettazione circuiti digitali

Page 64: progettazione digitale e VHDL 2014-11-04hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2014-11-04.pdf · 2 Sommario Circuiti digitali integrati. Descrizione di un circuito digitale

64

Contromisure all'errore logico� Come si riporta il circuito in una configurazione corretta dopo aver rivelato la

presenza di errore logico? Di seguito i metodi più semplici.

• Con un impulso di reset asincronoinviato a tutti i flip-flop attraverso i loro ingressi“asincroni” (clear o preset), che riportano i singoli flip-flop nello stato inizialedesiderato: 0 (clear) o 1 (preset).

• NOTA: si ricorda che gli ingressi “asincroni” clear e preset sono caratterizzati dall’agiresullo stato del flip-flop indipendentemente dal clock.

• Con lo spengimento e riaccensione del circuito.

S. Ricciarini – progettazione circuiti digitali