progettazione digitale e VHDL -...

55
Sergio Ricciarini ~ INFN Firenze Corso di Elettronica Generale I Laurea Specialistica in Scienze Fisiche e Astrofisiche Dip. di Fisica - Università di Firenze 2010-11-24 Progettazione di circuiti digitali e linguaggio VHDL

Transcript of progettazione digitale e VHDL -...

Page 1: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

Sergio Ricciarini~

INFN Firenze

Corso di Elettronica Generale ILaurea Specialistica in Scienze Fisiche e Astrofisiche

Dip. di Fisica - Università di Firenze

2010-11-24

Progettazione di circuiti digitali e linguaggio VHDL

Page 2: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

2

Sommario

Circuiti digitali integrati.Progettazione digitale e VHDL:• descrizione del progetto: come progettare un circuito logico in VHDL;• compilazione e verifica del progetto.

Temporizzazioni dei segnali e macchine sincrone.Struttura della macchina sincrona e realizzazione in VHDL.Upset ed errori logici.Circuito asincrono e risincronizzazione.

S. Ricciarini – progettazione circuiti digitali

Page 3: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

3

Bibliografia

http://mikro.e-technik.uni-ulm.de/vhdl/anl-engl.vhd/html/vhdl-all-e.html

http://www.csee.umbc.edu/help/VHDL/index.shtml

http://www.eng.auburn.edu/department/ee/mgc/vhdl.html

http://instruct1.cit.cornell.edu/courses/ee475/tutorial/VHDL3651.html

http://www.disi.unige.it/person/AnconaD/Architettura/vhdl.htm

ricerca su google etc.: "vhdl manual"

biblioteche di Ateneo (non Polo Scientifico)

S. Ricciarini – progettazione circuiti digitali

Page 4: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

4

Circuiti digitali integrati

S. Ricciarini – progettazione circuiti digitali

Page 5: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

5

Circuito digitale integratoASIC: application specific integrated circuit (Analog Device, Texas...).• Insieme di celle logiche con interconnessioni fissate dal produttore al momento della

fabbricazione del chip, in base all'applicazione richiesta.

FPGA: field programmable gate array (Altera, Xilinx, Actel, Quicklogic...)• Il chip è un insieme di celle logiche con interconnessioni configurabili dall’utente in

base al campo (“field”) di applicazione.• La configurazione avviene o con speciali dispositivi (“programmatori”) o direttamente

nel circuito stampato (“scheda” o “printed circuit board” PCB).• Dopo la configurazione una parte della FPGA risulta inutilizzata.

Celle logiche:(a) combinatorie: solo logica combinatoria: combinazione di porte AND, NOT ecc.;(b) sequenziali:

- un flip-flop (memoria a 1 bit);- logica combinatoria.

S. Ricciarini – progettazione circuiti digitali

Page 6: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

6

Esempio: FPGA Actel

Contengono celle logiche dei due tipi:(a) cella combinatoria.(b) cella sequenziale.

S. Ricciarini – progettazione circuiti digitali

Page 7: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

7

Esempio: FPGA AlteraContengono un’unica cella logica di tipo sequenziale: integra una parte combinatoria piùcomplessa del caso Actel. Progettata per massima versatilità.

S. Ricciarini – progettazione circuiti digitali

Page 8: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

8

Progettazione digitale e VHDL• descrizione del progetto: come progettare un circuito

logico in VHDL

S. Ricciarini – progettazione circuiti digitali

Page 9: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

9

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

Uno dei linguaggi per la descrizione funzionale di qualsiasi circuito digitale (FPGA, ASIC...), diffuso a livello mondiale (standard IEEE).

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

Un compilatore (software installato su PC) traduce la struttura VHDL astratta in una struttura specifica da realizzare in un dato dispositivo.

S. Ricciarini – progettazione circuiti digitali

Page 10: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

10

Descrizione funzionale o strutturale?• Dall’altra parte, in una descrizione strutturale (ad esempio un disegno schematico) viene

indicata una sola struttura logica interna fra le tante equivalenti.• La descrizione strutturale diventa utile quando ci sono esigenze molto particolari in termini di

numero di celle utilizzate, ritardi fra ingressi e uscite ecc.

• La descrizione funzionale, in quanto astratta, è di più immediata comprensione per l’utente rispetto a quella strutturale.

• Risparmio di tempo durante la codifica del circuito e le successive modifiche/correzioni.• Minore possibilità di introdurre errori.• Diventa in pratica indispensabile per circuiti di media-alta complessità (> 100 celle elementari).• Analogia con C, FORTRAN rispetto a linguaggio macchina per un processore.

• NOTA: in VHDL è anche possibile effettuare una descrizione strutturale (porte AND, NOT e flip-flop) del tutto analoga al disegno schematico.

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

S. Ricciarini – progettazione circuiti digitali

Page 11: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

11

(Es. 1) Semplice progetto VHDL-- COMMENTO: esempio di progetto elementare (solo combinatorio per semplicità)

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

entity main is -- entità = interfaccia esterna; main è il nome, definito dall’utenteport ( -- elenco dei segnali esterni di main

in1_pin, in2_pin, in3_pin: in std_logic; -- std_logic (tipo del segnale): due valori, '1' o '0'

out_pin: out std_logic ); -- un singolo enunciato puo’ essere scritto su più righe

end main;

architecture arch1 of main is -- architettura = struttura/funzionalità interna; arch1 è il nome

-- segnali internisignal in1_and_in2 : std_logic;

begin

in1_and_in2 <= in1_pin AND in2_pin;

out_pin <= in1_and_in2 OR NOT in3_pin;

end arch1; -- questa descrizione è strutturale (una specifica combinazione di porte logiche), non funzionale

S. Ricciarini – progettazione circuiti digitali

Page 12: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

12

Progettare un generico circuito logicoUn generico circuito logico (FPGA, ASIC...) è una struttura sequenziale o macchina logica, composta cioè di un insieme di flip-flop e di parti puramente combinatorie (combinazioni di NOT, AND ecc.).

• I flip-flop memorizzano lo “stato logico” della macchina.• Le parti combinatorie definiscono con la loro struttura la sequenza degli stati del circuito.

Un circuito logico è in genere suddiviso per comodità pratica in un certo numero di blocchi logici o componenti organizzati in maniera gerarchica.

• 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 una “macro”.

S. Ricciarini – progettazione circuiti digitali

Page 13: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

13

Macrofunzioni (“macro”)I componenti più comuni possono in genere essere ottenuti senza codificarli a mano (in VHDL o disegno schematico), utilizzando un software generatore di macrofunzioni, accessibile tramite interfaccia grafica nel software di sviluppo (in Quartus: 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, clear ecc.)

La macrofunzione viene inclusa nella struttura gerarchica del progetto come gli altri componenti.

• In genere la macrofunzione prodotta contiene una descrizione strutturale tale da garantire la funzionalità desiderata nel dispositivo reale.

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

• Risparmio di tempo notevole (servono pochi secondi per generare una macro).• Un blocco di codice VHDL scritto a mano raramente potrà essere meglio ottimizzato della macro

equivalente; in ogni caso occorrerebbe dare una specifica descrizione strutturale e ottimizzata.

S. Ricciarini – progettazione circuiti digitali

Page 14: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

14

(Es. 2) Architettura a blocchi gerarchici-- altra architettura più generale per l’entità main, con un componente interno, la cui

architettura è definita altrove (~ subroutine)

architecture arch2 of main is

-- segnali internisignal 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 del componente devono corrispondere a un’entitàdecritta altrove)port (input1, input2: in std_logic;

output: out std_logic);

end component;

beginin1_and_in2 <= in1_pin AND in2_pin;logic_function_inst1: logic_function port map ( -- chiamata (“instance”) del componente con mappatura dei suoi segnali esterni sui segnali interni o esterni di main

input1 => in1_and_in2, -- segnale interno di maininput2 => in3_pin, -- segnale esterno di mainoutput => out_pin);

end arch2;

S. Ricciarini – progettazione circuiti digitali

Page 15: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

15

(Es. 2) Descrizione del componente-- tipicamente il componente è descritto in un file separato, come blocco logico indipendente

library IEEE;use IEEE.std_logic_1164.all;

entity logic_function isport (

input1, input2: in std_logic; -- l’interfaccia deve essere coerente con quanto dichiarato nella architettura dove il componente viene chiamato (~ subroutine)

output: out std_logic );

end logic_function;

architecture arch_simple of logic_function is

begin

output <= input1 OR NOT input2;

end arch_simple;

S. Ricciarini – progettazione circuiti digitali

Page 16: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

16

Uso dei componentiLo stesso componente (blocco logico) può essere inserito in N copie (cioè chiamato N volte) in uno stesso progetto VHDL.

• Ogni copia è identificata da una diversa “etichetta” (label):logic_function_inst1: logic_function port map (…);logic_function_inst2: logic_function port map (…);

Nel caso di componente originale:• per modificare tutte le copie è sufficiente cambiare una volta il codice che descrive l’architettura

del componente;• è possibile definire tante diverse architetture per uno stesso componente e poi scegliere quella da

utilizzare in compilazione:

entity logic_function isport (

input1, input2: in std_logic;output: out std_logic);

end logic_function;for all: logic_function use entity work.logic_function(arch_chosen);

S. Ricciarini – progettazione circuiti digitali

Page 17: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

17

Come descrivere un’architettura in VHDLUn’architettura in VHDL può contenere 3 diverse tipologie descrittive (inserite per un numero a piacere di volte fra begin e end):

architecture arch_simple of logic_function isbegin........................ <<<<<<<<<<---------- QUIend arch_simple;

• Prima tipologia: chiamata di un componente la cui architettura è indicata altrove (eventualmente una macro):

example_instance: example port map (…);

• Seconda tipologia: assegnazione (descrizione strutturale):

architecture struct of example isbegin

output <= input1 OR NOT input2;end struct;

S. Ricciarini – progettazione circuiti digitali

Page 18: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

18

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

architecture behav of example is -- funzionale -->> “behavioural”begin

process (input1, input2) -- lista di sensibilità: contiene gli ingressi del componente che vengono valutati nelle condizioni “if...end if” e simili

begin -- struttura interna del componente, descritta in maniera astratta: diversamente dall’assegnzione precedente, non indica una specifica data combinazione di NOT e AND fra quelle equivalenti, ma piuttosto indica la funzione desiderata, cioè le combinazioni di valori di ingresso per cui l’uscita deve essere 1

if (input1 = '1' OR input2 = '0') thenoutput <= '1';

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

output <= '0';end if;

end process;end behav;

NOTA: assegnazione e processo non fanno altro che descrivere componenti interni specificandoli immediatamente, invece di rimandare ad una descrizione del componente fatta altrove.

S. Ricciarini – progettazione circuiti digitali

Page 19: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

19

Concetto di concorrenzaL'ordine, all’interno dell’architettura, in cui vengono elencati chiamate, assegnazioni e processi non ha effetto sulla struttura del circuito logico.

• Il codice VHDL è una rappresentazione “unidimensionale” (un elenco) dei componenti del circuito.

• Il disegno schematico è una rappresentazione “bidimensionale”.

Il codice VHDL è analogo al codice C ecc., ma solo per certi aspetti. In particolare, l’elenco di componenti nell’architettura VHDL non ha nulla a che vedere con l’elenco di istruzioni elencate in un programma C.

Tutti i componenti dell’elenco VHDL sono concorrenti simultaneamente a definire la funzionalità del circuito, in quanto fra loro interconnessi.

• Consideriamo un processo generico: la variazione, ad esempio, di un segnale nella lista di sensibilità del processo implica in generale la variazione delle uscite del componente e quindi degli ingressi di altri componenti, indipendentemente da dove sono stati scritti nel codice!

Dall’altro lato, le istruzioni dell’elenco C in una data routine sono necessariamente attive una alla volta nel tempo.

S. Ricciarini – progettazione circuiti digitali

Page 20: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

20

Progettazione digitale e VHDL• compilazione e verifica del progetto

S. Ricciarini – progettazione circuiti digitali

Page 21: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

21

Compilazione del progettoIl compilatore agisce in due fasi.

• Per le FPGA: spesso due software distinti; unico software (Quartus) nel caso di Altera.

1) Sintesi.Il codice VHDL (o schematico) è tradotto in una specifica struttura di porte logiche elementari (AND, NOT e flip-flop): la netlist.

• Input: il codice VHDL (uno o più file di testo .vhd).• Output: tipicamente un file .edf cioè con formato EDIF (Electronic Design Interchange

Format, altro standard industriale).• La netlist non fa riferimento ad alcun dispositivo specifico (FPGA o ASIC).

2) Fit (“adattamento”) o place and route (“posizionamento e interconnessione”).La netlist è tradotta in un codice di configurazione per un determinato dispositivo, e salvato in uno o più file di configurazione, in modo da realizzare una determinata struttura reale che svolga la funzionalità desiderata.

• Per le FPGA: il fitter (software) e il codice di configurazione cambiano a seconda del modello di FPGA e della modalità di configurazione (dispositivo programmatore, memoria flash sul circuito stampato ecc.).

S. Ricciarini – progettazione circuiti digitali

Page 22: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

22

Con la sintesi la struttura logica viene automaticamente ottimizzata (sia che sia stata descritta in maniera funzionale o strutturale).

• Un esempio: sono eliminate le parti logiche ridondanti (duplicate nel codice originale) in modo da ridurre il numero di celle logiche necessarie.

• Si riduce la potenza assorbita (consumo).• In ogni caso, il numero di celle in un dato dispositivo è limitato.• Inoltre, il codice può così essere scritto in maniera non necessariamente sintetica, quindi più

naturale e meglio leggibile.

Sintesi e ottimizzazioni

S. Ricciarini – progettazione circuiti digitali

Page 23: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

23

Verifica del progettoCi sono due modi per verificare la corretta funzionalità del circuito digitale (FPGA, ASIC...) progettato: simulazione e prove in laboratorio.• In entrambi i casi si forniscono al circuito i necessari segnali digitali di 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

sono visualizzate in una finestra grafica.• E’ possibile assegnare le forme d’onda di ingresso tramite interfaccia grafica.• Il VHDL contiene la sintassi necessaria per codificare forme d’onda digitali per il

simulatore.

S. Ricciarini – progettazione circuiti digitali

Page 24: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

24

Verifica del progettoLa simulazione è solitamente di tipo temporale:• il simulatore riproduce le temporizzazioni (tempi di propagazione) attese dei segnali

nel circuito, per uno specifico dispositivo e per determinati valori dei parametri operativi.

• NOTA: le temporizzazioni variano con i parametri operativi (Valim, T).• NOTA: possibile anche una simulazione funzionale (più rapida), assumendo che le

temporizzazioni nel circuito non influiscano sul comportamento del circuito (ipotesi realistica solo in pochi casi pratici).

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

approssimato;• in simulazione e in laboratorio non è generalmente possibile provare:

• tutte le possibili combinazioni di valori dei parametri operativi (Valim, T);• tutte le possibili casistiche di utilizzo (sequenze di segnali in ingresso) in cui il circuito

logico verrà ad operare.

S. Ricciarini – progettazione circuiti digitali

Page 25: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

25

Temporizzazioni dei segnali e macchine sincrone

S. Ricciarini – progettazione circuiti digitali

Page 26: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

26

Temporizzazioni: setup e hold timePer un blocco puramente combinatorio (cioè blocco logico senza flip-flop) la corretta funzionalità dipende solo dalla correttezza del codice.

Per un blocco sequenziale o macchina logica (cioè un blocco logico che contiene anche flip-flop), invece, la effettiva realizzazione della funzionalità desiderata dipende anche dalle temporizzazioni dei segnali.

• Per ogni flip-flop nella macchina logica, setup time e hold time non devono essere violati, pena la possibilità di funzionamento scorretto della macchina (il flip-flop carica in uscita il valore sbagliato: upset).

Temporizzazione dei segnali: indicano genericamente il ritardo fra la transizione in un punto fisico di una linea facente parte del circuito logico e la successiva transizione in un altro punto. Esse variano (in maniera più o meno significativa) con:

• tecnologia del circuito integrato: caratteristiche delle celle logiche (transistor) e delle interconnessioni (piste metalliche);

• tolleranze di fabbricazione: ogni singolo dispositivo di una serie ha caratteristiche che fluttuanoin un intorno delle specifiche nominali del modello;

• struttura reale: struttura logico/fisica realizzata nel dispositivo;• condizioni ambientali: temperatura e tensione di alimentazione;• invecchiamento (aging) del dispositivo: da semplice usura o da radiazione assorbita.

S. Ricciarini – progettazione circuiti digitali

Page 27: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

27

Temporizzazioni e compilazioneIl compilatore (place and route) sceglie e ottimizza la struttura reale (tipo di celle, loro disposizione geometrica e interconnessioni), allo scopo di massimizzare i margini temporali su setup e hold time.

• Il compilatore si basa su un modello approssimato delle temporizzazioni nel dispositivo (tecnologia, tolleranze, condizioni ambientali ammesse) e sulla massima frequenza operativarichiesta dall'utente.

• Il compilatore, se l’algoritmo di place and route non è in grado di trovare una configurazione del circuito soddisfacente per tutti i flip-flop alle condizioni richieste, indica i cammini di segnale che violano setup o hold time.

Conviene usare un metodo di progettazione che permetta al compilatore di massimizzare nella maniera più efficace i margini temporali su ciascun flip-flop del circuito. Vediamo quale...

S. Ricciarini – progettazione circuiti digitali

Page 28: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

28

Macchina sincrona: introduzioneIl seguente metodo di progettazione è impiegato normalmente, se la particolare applicazione lo permette:

• si struttura il circuito digitale in un dato dispositivo come una macchina sincrona (o circuito sincrono), cioè un circuito logico caratterizzato dall’avere un unico segnale come clock per tutti gli ingressi “sincroni” dei suoi flip-flop);

• il clock è tipicamente generato a partire da un oscillatore periodico ad alta stabilità (circuito integrato esterno).

• Più in generale, il circuito è diviso in blocchi gerarchici, ciascuno costituito da una macchina sincrona, e tutti sincroni fra loro (stesso clock).

• Ancora più in generale, può essere necessario suddividere il circuito in diverse macchine sincrone, ma asincrone fra loro (usano clock diversi).

• Il corretto metodo di progettazione per realizzare le interfacce asincrone verrà descritto in seguito.

S. Ricciarini – progettazione circuiti digitali

Page 29: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

29

Flip-flop: ingressi sincroni e asincroni

S. Ricciarini – progettazione circuiti digitali

Ingressi “sincroni”

• Internamente: hanno effetto sull’uscita solo in corrispondenza del segnale di clock.

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

Ingressi “asincroni”• Internamente: hanno

effetto sull’uscita immediatamente, indipendentemente dal clock.

• Esternamente: possono essere pilotati da linee sincrone o asincrone.

Page 30: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

30

Macchina sincrona e setup time (1)Per un circuito sincrono, la relazione che garantisce la non violazione di setup time è:

TCTOmax + Tcomb

max + Tskewmax + Tsetup

max < Tclock (ST)

• TCTO(i) (clock-to-out) è il ritardo di propagazione interno al flip-flop i-esimo.

• Tcomb(i) (combinatorio) è il ritardo (attraverso un blocco puramente combinatorio) fra la transizione sull'uscita data_out di un flip-flop e la conseguente transizione sull'ingresso data_indi un altro flip-flop. Dipende da:

• numero di stadi combinatori attraversati (tipicamente ogni stadio dà un ritardo inferiore a 0.1 ns);• lunghezza delle piste metalliche che connettono due flip-flop attraverso vari stadi combinatori.

S. Ricciarini – progettazione circuiti digitali

Page 31: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

31

Macchina sincrona e setup time (2)Per un circuito sincrono, la relazione che garantisce la non violazione di setup time è:

TCTOmax + Tcomb

max + Tskewmax + Tsetup

max < Tclock (ST)

• Tskew(i-j) = tleading(i) - tleading(j)

rappresenta lo sfasamento (skewness) fra i fronti di salita più vicini dei clock su flip-flop diversi.

• Deriva dalla diversa lunghezza del cammino del segnale di clock dall’oscillatore ai due flip-flop.• Può essere positivo o negativo: -Tskew

max < Tskew(i-j) < Tskewmax

• Tskewmax > 0

• Tipicamente Tskewmax << Tclock

• Il margine a disposizione del compilatore per non violare il setup time si riduce per frequenze operative (frequenze di clock) maggiori.

Tsetup_margin = Tclock - (TCTOmax + Tcomb

max + Tskewmax + Tsetup

max)

S. Ricciarini – progettazione circuiti digitali

Page 32: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

32

Circuito asincrono e setup timeNel caso di circuito asincrono, consideriamo come riferimento il clock del secondo flip-flop clock_2.Tskew(1-2)= tleading(1) - tleading(2) può assumere, durante il funzionamento del circuito, qualsiasivalore fra - Tclock_2/2 e +Tclock_2/2.

La relazione (ST) è quindi impossibile da soddisfare.

S. Ricciarini – progettazione circuiti digitali

Page 33: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

33

Macchina sincrona e hold timePer un circuito sincrono, la relazione che garantisce la non violazione di hold time è:

TCTOmin + Tcomb

min - Tskewmax > Thold (HT)

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

S. Ricciarini – progettazione circuiti digitali

Page 34: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

34

Tempo di salita/discesaI tempi di transizione (salita/discesa) sono stati fin qui trascurati (fronti verticali).

• Essi dipendono dal numero di porte pilotate da una singola linea (fan-out).• La capacità di carico e quindi la costante di tempo sulla linea aumenta linearmente col numero di

porte pilotate.

Il compilatore si occupa di ottimizzare il circuito in modo che i tempi di transizione siano trascurabili rispetto alle altre temporizzazioni.• In pratica durante la sintesi il fan-out viene limitato tramite la ridondanza

(duplicazione) della parte logica in questione.

S. Ricciarini – progettazione circuiti digitali

Page 35: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

35

Struttura della macchina sincrona e realizzazione in VHDL.

S. Ricciarini – progettazione circuiti digitali

Page 36: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

36

Macchina sincrona: strutturaLa macchina sincrona può essere scomposta in due blocchi logici:

• un registro di stato (“status register”) a N bit (l’insieme di tutti gli N flip-flop della macchina, con il clock comune);

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

I flip-flop formano la memoria della macchina, immagazzinando l’informazione relativa allo stato della macchina fra due successivi impulsi di clock.

• La macchina sincrona è, per questo, anche chiamata macchina a stati.• Ogni possibile configurazione di valori nei flip-flop costituisce uno stato.• Gli stati possibili sono 2N.• Lo stato all’impulso di clock successivo dipende da:

• stato presente (“(present) status”);• LUT;• valori degli ingressi sincroni di controllo.

• Uno stato può durare N impulsi di clock.

S. Ricciarini – progettazione circuiti digitali

Page 37: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

37

Macchina sincrona e periodicitàUna macchina sincrona generica è non periodica:

• la presenza degli ingressi di controllo sincroni implica che per ogni stato S, lo stato successivonon dipende solo dalla struttura della macchina.

• In altri termini: la sequenza di stati e la loro durata (numero di impulsi di clock) non ènecessariamente prefissata.

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

Un caso particolare è la macchina sincrona periodica.• Nessun ingresso di controllo.• Quindi: la successione di stati è fissata.

Si può mostrare che è equivalente a:• un contatore a N bit;• una LUT.

S. Ricciarini – progettazione circuiti digitali

Page 38: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

38

Macchina sincrona: esempioEsempio pratico: una FPGA contiene una macchina sincrona che esegue una sequenza di operazioni;

• dopo l’accensione della FPGA, stato iniziale: idle, no operation (nop);• avvio da parte di un impulso logico esterno (ad es. impulso di trigger da un rivelatore);• lettura di un ADC e trasferimento del dato in una RAM;• incremento del numero di evento e suo trasferimento in una RAM;• attesa di un nuovo trigger.

La macchina genera sequenze sincrone su un certonumero di uscite digitali verso ADC e RAM.

S. Ricciarini – progettazione circuiti digitali

Page 39: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

39

Macchina sincrona: esempioConviene scegliere la struttura gerarchica della macchina sincrona in modo opportuno:

• una macchina principale Main che coordina e attiva varie macchine secondarie (componenti) quando necessario;

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

• 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.

Ogni macchina secondaria è dedicata (specializzata) per unaspecifica sequenza digitale su uno specifico gruppo di uscite.

Tipicamente la stessa macchina secondaria (~ subroutine)viene attivata in momenti diversi del funzionamento dellamacchina principale:

• ad es. la scrittura nella RAM avviene due volte per ogni trigger e implica la stessa sequenza digitale verso la RAM.

S. Ricciarini – progettazione circuiti digitali

Page 40: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

40

Scriviamo il codice VHDL che descrive la macchina principale dell’esempio precedente.Abbiamo visto che una macchina sincrona è ben descrittascomponendola in due blocchi logici:

• un registro di stato (insieme di flip-flop);• una LUT (blocco puramente combinatorio).

architecture arch of main is

signal synchro_trigg, adc_read_end,ram_write_end, adc_read_start, ram_write_start,ram_data_select : std_logic;

... -- altri segnali interni

type st_value is ( -- con questa notazione funzionale (astratta) il bus di stato viene rappresentato in maniera ben leggibile

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

); -- descrizione funzionale (astratta)

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

: st_value;

(Es. 3) Macchina sincrona in VHDL

S. Ricciarini – progettazione circuiti digitali

Page 41: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

41

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(indispensabile per avere uno stato di partenza definito, anche in una macchina sincrona: risolve il problema del transitorio all’accensione)

st_pres <= nop;elsif (clock'event and clock = '1') then-- fronte di salita di clock

st_pres <= st_next;end if;

end process;

process (-- secondo blocco logico, puramente combinatorio:è la LUT della macchina sincrona, che definisce lo statosuccessivo e le uscite, in funzione dello stato presentee degli ingressi di controllo[processo: descrizione funzionale]

st_pres,synchro_trigg, -- trigger sincronizzatoadc_read_end, -- segnale di ritorno dalla macchina secondaria SecADCram_write_end -- segnale di ritorno dalla macchina secondaria SecRAM)

begin...

(Es. 3) Macchina sincrona in VHDL

S. Ricciarini – progettazione circuiti digitali

Page 42: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

42

...-- in alternativa all’uso di:if (“condizione 1”) then...elsif (“condizione N”) then...else...end ifè possibile usare:case “segnale” 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 hanno nessun effetto);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).

case st_pres iswhen nop => -- No OPeration

case synchro_trigg is -- case innestato (sottocaso)when '0' => -- ancora nessun trigger

st_next <= nop; -- resta nello stato presente (nop)adc_read_start <= '0';ram_write_start <= '0';ram_data_select <= '0';

when '1' => -- c’è un trigger!!st_next <= adc_read; -- passa allo stato successivoadc_read_start <= '1'; -- avvia la SecADCram_write_start <= '0';ram_data_select <= '0';

end case;...

(Es. 3) Macchina sincrona in VHDL

S. Ricciarini – progettazione circuiti digitali

Page 43: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

43

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

when adc_read =>case adc_read_end iswhen '0' =>

st_next <= adc_read; -- resta nello stato presente (adc_read)adc_read_start <= '0';ram_write_start <= '0';ram_data_select <= '0';

when '1' => -- è terminata la lettura dell'ADC (comunicazione da SecADC)-- NOTA: il numero di cicli di clock in cui la macchina Main resta in un generico stato dipende

dal segnale di controllo (flessibilità)st_next <= ram_write1; -- passa allo stato successivoadc_read_start <= '0';ram_write_start <= '1'; -- avvia SecRAMram_data_select <= '0'; -- ‘0’ seleziona il dato ADC *****

end case;...

-- Domanda: è consentito omettere un’assegnazione, ad esempio la riga indicata con ***** ?-- Risposta: sì, ma tenendo conto che la funzionalità della macchina, in genere, cambia.-- Domanda: come cambia il funzionamento della macchina?-- Risposta: mentre prima, nello stato adc_read, con l’ingresso adc_read_end a 1, l’uscita

ram_data_select era necessariamente 0, adesso nelle stesse condizioni, ram_data_select MANTIENE IL VALORE CHE AVEVA PRECEDENTEMENTE: tale valore, in generale, può essere 1 o 0 a seconda di quale era la condizione della macchina (stato e ingressi) al clock precedente.

S. Ricciarini – progettazione circuiti digitali

Page 44: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

44

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

when ram_write1 =>case ram_write_end iswhen '0' =>

st_next <= ram_write1; -- resta nello stato presente (ram_write1)adc_read_start <= '0';ram_write_start <= '0';ram_data_select <= '0';

when '1' => -- SecRAM comunica di aver terminato la scrittura nella RAMst_next <= ram_write2; -- passa allo stato successivoadc_read_start <= '0';ram_write_start <= '1'; -- avvia DI NUOVO SecRAMram_data_select <= '1';-- ‘1’ seleziona il dato del contatore

end case;...

S. Ricciarini – progettazione circuiti digitali

Page 45: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

45

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

when ram_write2 =>case ram_write_end iswhen '0' =>

st_next <= ram_write2; -- resta nello stato presente (ram_write2)adc_read_start <= '0';ram_write_start <= '0';ram_data_select <= '1'; -- mantiene la selezione attiva (davvero necessario?

dipende dal funzionamento di SecRAM)when '1' => -- SecRAM comunica di aver terminato la (seconda) scrittura nella RAMst_next <= nop; -- passa allo stato successivo (chiusura del ciclo)adc_read_start <= '0';ram_write_start <= '0';ram_data_select <= '0';

end case;end case;

end process; -- NOTA: non sono mai stati usati gli operatori AND, NOT ossia non è mai stata data una specifica descrizione strutturale

... -- altra logica: macchine secondarie ecc. (non descritti in queste dispense.....)

end arch;

S. Ricciarini – progettazione circuiti digitali

Page 46: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

46

Upset ed errori logici

S. Ricciarini – progettazione circuiti digitali

Page 47: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

47

UpsetCosa succederebbe se il setup o hold time di un generico flip-flop fosse violato per un certo fronte di salita del clock?

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

• Il flip-flop decade dallo stato metastabile in tempi brevi (~ 1 ns) nello stato 0 o nello stato 1 (stati stabili), in maniera sostanzialmente imprevedibile: può quindi decadere nello stato logicamente sbagliato, può cioè avvenire l’inversione (upset) del valore effettivo rispetto al valore logicamente atteso.

• Quindi: se setup o hold time sono violati può verificarsi un upset.• Esempio: frequenza clock troppo elevata in una macchina sincrona;• Altro esempio: due clock di frequenza diversa in un circuito asincrono.

• Un upset può essere prodotto anche da perturbazioni esterne, ad esempio le correnti parassite indotte nel flip-flop da una particella altamente ionizzante (ad es. un raggio cosmico).

S. Ricciarini – progettazione circuiti digitali

Page 48: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

48

Errori logici• Qual’è la conseguenza pratica dell’upset?

• In generale (vedremo in seguito un caso particolare in cui ciò non avviene) l'upset nei successivi cicli di clock si propaga ad altri flip-flop nel circuito, modificandone lo stato logico in maniera scorrelata dal funzionamento atteso e in genere imprevedibile (errore logico).

• L’errore logico può essere evitato in un sistema con tripla ridondanza per cui un segnale logico è realizzato da 3 segnali fisici; il valore associato è dato da quello presente in maggioranza.

• Come si rivela l'errore logico?• Meccanismi per verificare la risposta del circuito in un tempo massimo prefissato:

• watchdog (“cane da guardia”): un contatore sempre attivo deve essere azzerato dal circuito prima che venga raggiunto un determinato contaggio, che farebbe partire un segnale di allarme;

• time-out sull’esecuzione di un comando: la risposta a un comando deve avvenire entro un tempo massimo prefissato.

• Controllo delle sequenze di bit in uscita dalla macchina:• controllo di parità: controllo del numero di 1 o controlli più sofisticati (ad es. Cyclic

Redundancy Check);• controlli sul formato dei dati: presenza di sequenze prefissate (pattern).

S. Ricciarini – progettazione circuiti digitali

Page 49: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

49

Errori logici• Come si riporta il circuito in una configurazione corretta dopo aver rivelato la presenza

di errore logico?

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

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

S. Ricciarini – progettazione circuiti digitali

Page 50: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

50

Circuito asincrono e risincronizzazione

S. Ricciarini – progettazione circuiti digitali

Page 51: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

51

Circuito asincronoAbbiamo visto come si realizza un circuito sincrono immune da errori logici legati alle violazioni di setup e hold time.

In un circuito sincrono si può fare in modo di evitare che avvengano tali violazioni.

Resta da capire come fare a realizzare un circuito asincrono immune da errori logici legati alle medesime violazioni.

In un circuito asincrono, non è in genere possibile evitare che avvengano tali violazioni e quindi degli upset (es.: due clock di frequenza diversa).

S. Ricciarini – progettazione circuiti digitali

Page 52: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

52

Campionamento asincrono combinatorioVediamo un caso pratico di circuito asincrono.

• Una parte del circuito lavora con clock_a, l’altra parte con clock_b.• La linea ready_a (combinatoria) è sincrona con clock_a e indica quando la macchina A è pronta.• La linea ready_b è sincrona con clock_b e avvia una sequenza interna alla macchina B.• L’uscita del flip-flop A è quindi un segnale asincrono rispetto a clock_b, anche se viene inviato

ad un ingresso che dovrebbe essere sincrono.

S. Ricciarini – progettazione circuiti digitali

Page 53: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

53

Campionamento asincrono combinatorio• Sta avvenendo il campionamento asincrono (o risincronizzazione) sul segnale ready_a che è

uscita di un elemento combinatorio (porta logica, non flip-flop).• Un glitch (impulso spurio) su ready_a (inevitabile sui segnali combinatori) comporta in genere un

errore logico nella macchina B, in quanto ready_b potrebbe cambiare stato per upset e la macchina B partire senza che la macchina A abbia veramente comunicato di essere pronta.

• NOTA: se il campionamento fosse sincrono (con setup e hold time soddisfatti), il glitch non avrebbe alcun effetto!

S. Ricciarini – progettazione circuiti digitali

Page 54: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

54

Come risincronizzare?Per evitare che gli inevitabili upset nel campionamento asincrono (o risincronizzazione) diano errori logici, conviene evitare di avere risincronizzazione di tipo combinatorio (cioè sull’uscita di un elemento combinatorio), facendo solo campionamenti asincroni di tipo sequenziale (cioèdirettamente sull’uscita di un flip-flop).

Infatti il campionamento asincrono di tipo sequenziale introduce upset in maniera inevitabilmente casuale ma prevedibile e controllabile, e soprattutto non comporta errori logici.

S. Ricciarini – progettazione circuiti digitali

Page 55: progettazione digitale e VHDL - hep.fi.infn.ithep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL.pdf ·  ... solo logica combinatoria: ... (Electronic Design Interchange

55

Campionamento asincrono sequenziale

• ready_b può ancora avere un upset ma ciò non comporta un errore logico nella macchina B, che parte quando desiderato, cioè solo dopo che la macchina A ha comunicato di essere pronta con ready_a .

• ready_b replica tutti e soli i cambiamenti di stato di ready_a (non le transizioni!) a meno di un'incertezza (jitter) nel ritardo, che può variare di volta in volta fra circa 0 e Tclock_b a seconda della fase istantanea fra i due clock.

• per indicare il ritardo fra i due segnali ready_ae ready_b:

• si considera il ritardo medio, pari a circa 0.5 ·Tclock_b ;

• si rappresenta il jitter come un'incertezza uniformemente distribuita con ampiezza massima di circa ± 0.5 · Tclock_b .

Inserendo un flip-flop si ha un segnale ready_a per definizione privo di glitch.

S. Ricciarini – progettazione circuiti digitali