progettazione digitale e VHDL...

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

Transcript of progettazione digitale e VHDL...

Page 1: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

Sergio Ricciarini~

IFAC (CNR) - Firenze

Corso di Elettronica Generale I

Laurea Magistrale in Scienze Fisiche e Astrofisiche

Università di Firenze

2018-11-06

Progettazione di circuiti digitali e linguaggio VHDL

Page 2: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

2

Sommario

Circuiti digitali integrati.

Descrizione di un circuito digitale in VHDL.

Sincronia, asincronia, tempi di propagazione.

Struttura della macchina sincrona e realizzazione in VHDL.

Compilazione e verifica del progetto.

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

Upset da perturbazioni esterne.

Per la bibliografia è conveniente cercare risorse in rete, in funzione delle esigenze.• Queste dispense non si basano su alcun libro specifico, ma raccolgono e armonizzano

informazioni provenienti da innumerevoli fonti, oltre che da esperienza personale.

S. Ricciarini – progettazione circuiti digitali

Page 3: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

3

Circuiti digitali integrati.

S. Ricciarini – progettazione circuiti digitali

Page 4: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

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.

• Un circuito digitale integrato può anche contenere una parte analogica (ad es. ADC).

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

Un primo tipo di circuito è l'ASIC: Application

Specific Integrated Circuit (Analog Device, Texas...).

• Interconnessioni 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 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

5

Circuito digitale integrato Un secondo tipo di circuito è la FPGA:

Field Programmable Gate Array (Intel-Altera, Xilinx, MicroSemi-Actel...)

• Interconnessioni programmabili dal progettista

in base al campo ("field") di applicazione.

• Rete di piste e celle fissata dal produttore, con interruttori che collegano/scollegano i tratti di pista adiacenti secondo la scelta del progettista.

• La programmazione del chip avviene attraverso i piedini esterni:

• direttamente a bordo scheda;

• oppure (soluzione meno comoda) inserendolo in speciali dispositivi “programmatori” prima del montaggio sul circuito stampato (PCB, "Printed Circuit Board" o brevemente "scheda").

• Dopo la programmazione una parte della FPGA risulta inutilizzata.

S. Ricciarini – progettazione circuiti digitali

Page 6: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

6

"Interruttori" 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 (cioè 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 programmazione (quindi con struttura fissata, come una ASIC).

• Lo stato può essere riprogrammato in seguito.

• La memoria dello stato può essere volatile

(es. su RAM nell’interfaccia di programmazione) o non-volatile (es. su E2PROM esterna o interna alla FPGA).

Page 7: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

7

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

produttore.

Esempi di celle logiche semplici.(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 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

8

Cella logica di una FPGA Esempio di cella logica complessa: di tipo sequenziale, integra una parte combinatoria più

complessa. Progettata per maggiore versatilità, impiega più elementi circuitali delle cellesemplici.

Page 9: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

9

Descrizione di un circuito digitale in VHDL

S. Ricciarini – progettazione circuiti digitali

Page 10: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

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 di analoga diffusione è il Verilog HDL.

La descrizione funzionale rappresenta strutture logiche in modo astratto, cioè senzanecessariamente indicare una specifica struttura (realizzazione interna del circuito in termini di rete di NOT, AND e flip-flop) fra tutte le strutture 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 specifica da poter riprodurre in un dato dispositivo (ASIC o FPGA).

Il linguaggio HDL permette di realizzare un insieme di descrizioni funzionali e strutturali.• Invece, un disegno schematico rappresenta necessariamente una specifica struttura.

S. Ricciarini – progettazione circuiti digitali

Page 11: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

11

(Es. 1) Semplice progetto VHDL-- I COMMENTI sono preceduti da "--": il compilatore li riconosce e li ignora.

-- 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 sono evidenziati i nomi di oggetti che devono essere scelti dal progettista (in

-- modo da essere immediatamente compresi nella rilettura del codice).

-- Gli enunciati terminano con ";".

-- Il compilatore non tiene conto di MAIUSCOLE e minuscole.

-- E' NECESSARIO indentare ordinatamente le sezioni di codice (nel modo utilizzato in queste

-- dispense) per massimizzare la leggibilità 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 può essere

-- scritto su più righe.

end ex1;

S. Ricciarini – progettazione circuiti digitali

Page 12: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

12

(Es. 1a) Descrizione strutturale in VHDL

architecture struct1 of ex1 is -- Architettura = struttura/funzionalità interna.

-- Struct1 è il nome scelto dal progettista.

-- Questo spazio prima di begin contiene le dichiarazioni (elenco dei segnali interni,

-- elenco dei componenti interni, ecc.).

signal int1 : std_logic; -- Un solo segnale interno in questo esempio.

begin -- Questa descrizione è strutturale (viene indicata una specifica combinazione di porte

-- logiche).

int1 <= NOT input2; -- Assegnazione.

output <= input1 OR int1; -- Assegnazione.

end struct1;

S. Ricciarini – progettazione circuiti digitali

Page 13: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

13

(Es. 1b) Descrizione funzionale in VHDL-- Descrizione funzionale equivalente alla precedente struct1: architettura behav1 da compilare

-- invece che struct1 (per la stessa entità ex1).

architecture behav1 of ex1 is -- Architettura = struttura/funzionalità interna.

-- Behav1 è il nome scelto dal progettista.

-- Non ci sono segnali interni!

begin

process (input1, input2) -- "Processo" cioè 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 dei valori in ingresso per cui l'uscita è 1.

-- La lista di sensibilità ("sensitivity list"), es. (input1, input2), contiene i segnali

che vengono valutati nelle condizioni "if...end if" e simili che descrivono la funzione,

contiene cioè gli ingressi del circuito.

begin

if input1 = '1' then -- notare uso di "="

-- nella condizione

output <= '1';

elsif input2 = '0' then

output <= '1';

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

-- DOMANDA: come? quale combinazione di valori è rappresentata da "else"?

output <= '0';

end if;

end process;

end behav1;

S. Ricciarini – progettazione circuiti digitali

Page 14: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

14

Funzione o struttura? In una descrizione strutturale (disegno schematico o codice HDL strutturale) viene

specificata una sola struttura logica interna del circuito, fra le tante equivalenti che realizzano la data funzione.

• 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"), in quanto astratta, evita di specificare la

struttura logica interna.• Codice più sintetico e intuitivo: comprensione più immediata, minore possibilità di introdurre

errori umani nel codice, risparmio di tempo durante la codifica del circuito e le successive modifiche/correzioni.

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

Relazione funzione/struttura analoga a relazione fra linguaggio ad alto livello (C,

FORTRAN ecc.) e linguaggio macchina per un processore.• Entrambi descrivono sequenze di operazioni: linguaggio C ecc. lo fa in modo astratto, mentre il

linguaggio macchina individua una specifica sequenza fra tutte quelle equivalenti (cioè con gli stessi effetti).

S. Ricciarini – progettazione circuiti digitali

Page 15: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

15

Progettare un generico circuito logico Un generico circuito logico (o circuito sequenziale o 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 stati del circuito.

S. Ricciarini – progettazione circuiti digitali

Page 16: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

Per comodità pratica il progettista suddivide il circuito logico in un certo numero di blocchi

logici (detti anche componenti) organizzati in maniera gerarchica.

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

componente (ad es. C, che può essere un contatore a N bit), con ovvi vantaggi in termini di comprensione del codice, affidabilità e velocità di codifica.

16

Progettare un generico circuito logico

Page 17: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

-- Architettura arch gerarchica a blocchi logici dell'entità ex2 (contiene un solo componente

interno: component).

architecture arch of ex2 is

-- Dichiarazioni.

-- Segnali interni.

signal in1_and_in2 : std_logic;

-- Componenti interni di questa architettura.

component component1 -- Componente = blocco logico, la cui architettura NON è qui

-- specificata (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;

component1_inst1: component1 port map (

-- Chiamata ("instance") del componente "component1", univocamente identificata con

-- l'etichetta ("label") component1_inst1, con mappatura dei suoi segnali esterni sui

-- segnali del circuito "ex2.arch" che lo contiene.

input1 => in1_and_in2, -- Segnale interno di ex2.arch.

input2 => in3_pin, -- Segnale esterno di ex2 (non dipende da architettura).

output => out_pin -- Segnale esterno di ex2 (non dipende da architettura).

);

end arch;17

(Es. 2) Architettura a blocchi logici

S. Ricciarini – progettazione circuiti digitali

Page 18: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

18

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

-- in cui viene chiamato.

library IEEE;

use IEEE.std_logic_1164.all;

entity component1 is -- L'interfaccia deve essere coerente con quella dichiarata nell'

-- architettura in cui il componente viene chiamato.

port (

input1, input2: in std_logic;

output: out std_logic

);

end component1;

architecture struct1 of component1 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;

-- si usa un'assegnazione composta, invece

-- di due assegnazioni elementari (non serve

-- quindi definire il segnale interno int1).

end struct1;

S. Ricciarini – progettazione circuiti digitali

Page 19: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

19

Vantaggi della descrizione gerarchica Lo stesso componente può 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:

component1_inst1: component1 port map (…); -- prima chiamata

component1_inst2: component1 port map (…); -- seconda chiamata

Per modificare tutte le copie è sufficiente cambiare una sola volta la descrizionedell'architettura del componente.

È possibile anche definire diverse architetture (strutture/funzionalità interne) per una stessaentità (interfaccia) e poi scegliere quella da utilizzare in compilazione per ciascuna copia o gruppo di copie, quando si dichiara il componente nell'architettura che lo contiene.Ad esempio:

component … end component;

for component1_inst1, component1_inst2 : component1 use entity work.component1(arch1);

for component1_inst3 : component1 use entity work.component1(arch2);

oppure:

component … end component;

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

S. Ricciarini – progettazione circuiti digitali

Page 20: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

20

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

(inserite fra begin e end):

architecture arch of circuit is

begin

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

end arch;

Prima tipologia: chiamata di un componente (blocco logico) la cui architettura è descritta altrove.

component1_inst1: component1 port map (

input1 => in1_and_in2,

input2 => in3_pin,

output => out_pin

);

Seconda tipologia: assegnazione (descrizione strutturale), come nell'es. 2.

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

-- componente (blocco logico).

-- Membro di sinistra: uscita del componente.

-- Membro di destra: ingressi del componente.

S. Ricciarini – progettazione circuiti digitali

Page 21: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

21

Come descrivere un'architettura in VHDL• Terza tipologia: processo (descrizione funzionale), come nell'es. 1b.

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

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

-- funzione, ossia gli ingressi del componente (blocco logico).

-- Membri di sinistra nelle assegnazioni: uscite del componente.

-- In sostanza, è una definizione implicita di un componente.

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 è 1 (e per cui è 0).

if input1 = '1' then

output <= '1';

elsif input2 = '0' then

output <= '1';

else

output <= '0';

end if;

end process;

Nota bene: in un'architettura, un dato segnale (ad es. "output" ) può essere uscita di un solo

elemento (chiamata, assegnazione o processo).• Altrimenti, avremmo due o più porte logiche che pilotano la stessa linea ("bus contention").

S. Ricciarini – progettazione circuiti digitali

Page 22: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

All'interno della codifica del processo (fra "begin" e "end process"), è permesso avere più

di un'assegnazione per ciascun segnale di uscita. In tal caso, prevale l'ultima

assegnazione nell'ordine di scrittura, fra quelle al momento verificate dalla combinazione di segnali di ingresso.Il codice dell'es. 1b può assumere la forma funzionalmente equivalente:

process (input1, input2)

begin

output <= '0'; -- valida per qualsiasi combinazione di valori in ingresso al processo.

-- In questo semplice esempio, sostituisce else in coda a if.

if input1 = '1' then

output <= '1';

elsif input2 = '0' then

output <= '1';

end if;

end process;

Questa particolare modalità di codifica permette di ridurre enormemente il tempo necessario a codificare e verificare un processo complesso, come nell'es. 3.

22

S. Ricciarini – progettazione circuiti digitali

Come descrivere un'architettura in VHDL

Page 23: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

23

Macrofunzioni ("macro") I componenti più comuni possono in genere essere ottenuti senza codificarli a mano (in

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

• Oggetti semplici (ad es. contatori, registri, multiplexer, decodificatori) o complessi (ad es. FIFO,

CPU).

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

Ogni macrofunzione è un componente (internamente descritto non in VHDL ma con codifica propria del software) che può essere incluso nella struttura del progetto come i componenti descritti a mano dal progettista, con la sintassi "port map" vista prima.

Vantaggi.

• Nel caso di componenti complessi (es. CPU) si ha un risparmio di tempo notevole (servono pochi secondi per generare una macro di tipo CPU).

Svantaggi.

• La codifica della macro non è in genere leggibile in un diverso ambiente software di sviluppo. E' però in genere possibile creare automaticamente il codice HDL funzionale equivalente.

S. Ricciarini – progettazione circuiti digitali

Page 24: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

24

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 descrizioni nell'architettura HDL non ha nulla a che vedere con l'elenco di istruzioni, da eseguire ordinatamente nel tempo, codificate in un programma scritto in linguaggio di alto livello per processori (ad es. linguaggio C).

Tutte le descrizioni elencate nel codice HDL sono concorrenti simultaneamente a definirela funzionalità dell'intero circuito, in quanto rappresentano parti del circuito interconnesseelettricamente fra loro.

• Consideriamo un processo: la variazione di un segnale nella lista di sensibilità (cioè un ingressodel blocco logico) implica in generale la variazione delle uscite del processo e quindi degliingressi di altre parti (assegnazioni, processi, componenti) del circuito, indipendentemente dal punto del codice in cui sono descritte queste altre parti.

Viceversa, le istruzioni codificate in un programma C sono attive in successione nel tempo (il processore esegue un'istruzione alla volta).

S. Ricciarini – progettazione circuiti digitali

Page 25: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

25

Bus in VHDL come vettori Un "bus" è un insieme di linee digitali (è un vettore di bit).

• Il simbolo formale più diffuso per un bus a N bit è:

• Le singole linee sono identificate da un indice con N valori in un campo intero arbitrario: per semplicità (ed evitare confusione) conviene sempre scegliere il campo 0 .. N-1 ed elencare sempre

le linee per indice decrescente (seguendo cioè la stessa notazione posizionale dei numeri binari).

La rappresentazione strutturale del bus in VHDL è intuitiva. Ad esempio:signal bus_struct : std_logic_vector (7 downto 0); -- bus a 8 bit, 256 valori!

• Le linee del bus possono essere trattate singolarmente o a gruppi.

Nel codice possiamo trovare assegnazioni per gruppi di linee (notare l'uso dei doppi apici):bus_struct (5 downto 2) <= "1010"; -- Assegna i valori 1010 ai bit 5..2

oppure assegnazioni per singole linee (notare l'uso dei singoli apici):bus_struct (4) <= '0'; -- Assegna il valore 0 al bit 4 del bus

• Per comodità un valore di 4 bit può essere specificato con numeri esadecimali:bus_struct (5 downto 2) <= X"C"; -- binario 1010 (decimale 12)

• Per comodità un valore può essere specificato concatenando valori e bus:bus_struct (7 downto 0) <= X"C" & bus2_struct(1 downto 0) & "10";

-- assegna ai bit 7..0 il valore: 1010 & bus2_struct(1..0) & 10

S. Ricciarini – progettazione circuiti digitali

Page 26: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

26

Bus in VHDL come interi Una rappresentazione astratta del bus si ottiene con un numero intero in un campo che

copre tutte le 2N combinazioni di valori del bus.signal bus_funct is: integer range 255 downto 0;

-- bus a 8 bit, 28 = 256 valori possibili!

• Il compilatore calcola quante linee (bit) sono necessarie a rappresentare il bus nella struttura.

• DOMANDA: quante linee servono per rappresentare il bus seguente?

signal bus_funct_test is: integer range 16 downto 0;

• Il codice è più sintetico e intuitivo, rinunciando a specificare le singole linee del bus.

• Possiamo trovare l'assegnazione (notare l'assenza di apici per l'intero):bus_funct <= 12; -- equivalente a bus_struct (7..0) <= X"0C"

• Possiamo scegliere la notazione del valore intero (tipicamente, decimale o esadecimale), ad esempio l'assegnazione precedente può essere scritta:bus_funct <= 16#C#;

Per usare la rappresentazione dei bus con interi, devono essere chiamate le opportune librerie:use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

S. Ricciarini – progettazione circuiti digitali

Page 27: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

27

Sincronia, asincronia, tempi di propagazione.

S. Ricciarini – progettazione circuiti digitali

Page 28: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

Come far avvenire le sequenze di operazioni in un circuito logico in modo che le transizioni logiche avvengano in modo sincrono in tutto il circuito?

Serve un segnale dato da un "orologio" ("clock"), che viene utilizzato per sincronizzare il funzionamento di tutti i flip-flop del circuito.• Il segnale clock viene inviato agli ingressi dedicati (ingressi clock) di tutti i flip-flop.

• In questo modo viene creato un circuito sincrono o macchina sincrona.

Quale forma d'onda è preferibile per il segnale clock?• E' chiaro che una forma d'onda periodica (periodo Tck) permette di controllare in modo

semplice l'intervallo di tempo T fra due operazioni:

T = N * Tck

con N numero di cicli di clock fra le due operazioni.

• Come si genera? Alcuni esempi.• Primario: un oscillatore periodico ad alta stabilità (circuito integrato).

• Secondario: il flip-flop i-esimo di un contatore agisce come divisore di frequenza (per 2i+1).

• Secondario: un "anello ad aggancio di fase" ("phase-locked loop", PLL), circuito analogico, agisce come moltiplicatore di frequenza. 28

Sincronia e clock

S. Ricciarini – progettazione circuiti digitali

Page 29: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

Il caso più generale di circuito logico è quello di uncircuito asincrono, composto cioè di due o più

macchine sincrone che sono fra loro asincrone

in quanto usano segnali di clock fisicamente distinti.

Tipici casi pratici di circuito asincrono:• Un circuito che usa due oscillatori di diversa frequenza.

• Un circuito che usa due oscillatori fisicamente distinti confrequenze nominalmente uguali: infatti, per quanto strette siano le tolleranze di fabbricazione di diversi esemplari dello stesso modello di oscillatore, le frequenze reali non possono essere perfettamente uguali.

In un circuito asincrono la fase fra i diversi clock asincroni è in genere continuamente

variabile.

Un caso particolare di circuito asincrono con fase fissata fra i due clock si ottiene con un clock primario e uno secondario derivato da esso (divisione o moltiplicazione di frequenza): il periodo di uno è multiplo dell'altro.

• Dal punto di vista funzionale, è equivalente utilizzare un solo clock e abilitare il blocco di flip-flop più lenti mediante segnali di enable ripetuti con il periodo desiderato.

• Dal punto di vista fisico, il clock più lento compie un numero inferiore di transizioni, con risparmio di potenza. 29

Circuito asincrono

S. Ricciarini – progettazione circuiti digitali

Page 30: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

30

Flip-flop: ingressi "sincroni" e "asincroni"

S. Ricciarini – progettazione circuiti digitali

Ingressi "sincroni".

• Internamente: hanno effetto sull'uscita solo in corrispondenza del fronte di salita

("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 rischiare di introdurre in uscita un upset

(caricamento del valore "rovesciato" cioèsbagliato).

• Esternamente: ingressi "sincroni"possono essere pilotati da linee sincrone

(che variano cioè con lo stesso segnale 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 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

"Glitch": impulso spurio fisico su di una linea, cioè non voluto logicamente (e

imprevedibile). Può avvenire per vari motivi, ad es.:• è presente interferenza elettromagnetica esterna sulla linea;

• la linea è l'uscita di una porta logica (ad es. AND): quando gli ingressicommutano fra due configurazioni per cui l'uscita non cambia (ad es.da 01 a 10), c'è sempre un glitch, dato che la commutazionenon è mai esattamente simultanea.

Un glitch sull'ingresso clock di un flip-flop comporta in genere un ciclo di clock spurio

(cioè non voluto logicamente e imprevedibile).

Il segnale di clock non può avere glitch!

• In particolare, l'uscita di una porta logica non può essere usata come clock!

31

Requisiti dell'ingresso dedicato clock

S. Ricciarini – progettazione circuiti digitali

Page 32: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

32

Requisiti degli ingressi sincroni Se un ingresso sincrono subisce una transizione o un glitch durante il setup time o hold

time (si dice che si ha una "violazione del setup/hold time"), c'è una probabilità non nulla

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

flop non dipende soltanto dalla struttura logica, ma anche dalle tempi di propagazione dei segnali.

• La corretta funzionalità del circuito dipende quindi non solo dall'aver realizzato una struttura logica corretta, ma anche dall'aver tenuto conto delle temporizzazioni e delle loro possibili

variazioni.

I tempi di propagazione sono i ritardi fra la transizione in un punto fisico di una linea

facente parte del circuito logico e la transizione logicamente conseguente in un altro

punto fisico.

• Per l'esattezza, la definizione di tempo di propagazione

considera l'istante di attraversamento del livello postoal 50% fra VOL e VOH (in pratica, posto a metà strada frail livello basso e alto in uscita).

I segnali usati per pilotare gli ingressi sincroni possonoavere glitch, ammesso che non avvengano duranteil setup o hold time.

S. Ricciarini – progettazione circuiti digitali

Page 33: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

33

Tempi di propagazione I tempi di propagazione dei segnali dipendono da:

• tecnologia del dispositivo (circuito integrato), ossia caratteristiche fisiche delle celle logiche (ad es. dal tipo di transistor utilizzato, in particolare capacità d'ingresso);

• struttura reale del circuito: struttura logico/fisica realizzata (ad es. lunghezza delle interconnessioni fra celle, numero di porte logiche in cascata fra due flip-flop).

Essi variano con:• tolleranze di fabbricazione: ogni singolo dispositivo di una serie ha caratteristiche che fluttuano

in un intorno delle specifiche nominali della serie;

• invecchiamento (“aging”) del dispositivo: da normale usura (passaggio di corrente, cicli termici fra accensioni e spengimenti...) o da radiazione assorbita;

• parametri operativi: tensione di alimentazione e temperatura interna T del semiconduttore

("junction temperature", sempre maggiore della T ambiente).

S. Ricciarini – progettazione circuiti digitali

Actel ProASIC3E

Page 34: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

34

Macchina sincrona Come si è detto, un circuito sincrono o macchina sincrona è un circuito logico

caratterizzato dall'avere un unico segnale periodico di clock per tutti i flip-flop.

• “Unico segnale” significa che la frequenza di ripetizione del segnale di clock è perfettamente

uguale su ogni flip-flop.

• Sono presenti inevitabili sfasamenti legati ai diversi tempi di propagazione ai vari flip-flop a partire dal punto di origine del segnale (ad es. oscillatore periodico ad alta stabilità).

• Se questo circuito è diviso in blocchi logici, ciascuno di essi è una macchina sincrona e i blocchisono sincroni fra loro.

S. Ricciarini – progettazione circuiti digitali

Page 35: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

Per una macchina sincrona, la seguente condizione garantisce che non avvenga mai la violazione di setup time per un dato ingresso sincrono di un flip-flop (j):

TCTO(i)max + Tcomb(i)

max + Tskew(i-j)max + Tsetup

max < Tclockmin (ST)

per ogni flip-flop (i) che contribuisce a pilotare quell'ingresso.• L'indice "max/min" si riferisce alla variabilità dei tempi di propagazione (tolleranze, parametri

operativi, invecchiamento). Tclock è il periodo del clock.

Tcomb(i) è il ritardo (attraverso un blocco puramente combinatorio) fra la transizionesull'uscita data_out_i del flip-flop (i) e la conseguente transizione sull'ingresso data_in_j

del flip-flop (j). Dipende da:• numero di celle combinatorie attraversate (tipicamente ognuna dà un ritardo < 0.1 ns);

• lunghezza delle piste metalliche attraversate.

35

Macchina sincrona e "setup time"

S. Ricciarini – progettazione circuiti digitali

Page 36: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

36

Macchina sincrona e "setup time" TCTO(i) (CTO: "clock-to-out") è il ritardo di propagazione interno al flip-flop (i).

Tskew(i-j) = trising(i) - trising(j) rappresenta lo sfasamento ("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 interni

del 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 (vsegnale ~ 20 cm/ns ≈ 2/3 vluce).

• 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-j si

riduce per frequenza di clock maggiore (cioè periodo Tclock minore).

Tsetup_margin(j-i) = Tclockmin - (TCTO(i)

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

max + Tsetupmax)

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

S. Ricciarini – progettazione circuiti digitali

Page 37: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

Nel caso di circuito asincrono, abbiamo almeno due distinti segnali di clock.

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

Per esempio consideriamo clock_1 (va al flip-flop (1)) più lento di clock_2 (va al flip-flop (2)).

• Consideriamo le temporizzazioni per il setup time del flip-flop (2): dato che lo sfasamento in

genere varia ad ogni ciclo, necessariamente a un certo punto (dopo un numero finito di cicli di clock_2) si avrà una transizione di data_in_2 troppo vicina a quella di clock_2, con violazione di setup time.

• In altri termini, per un circuito asincrono la relazione (ST)a un certo punto non sarà soddisfatta.Ciò comporta la possibilità di avere un upset.

37

Circuito asincrono e "setup time"

S. Ricciarini – progettazione circuiti digitali

Page 38: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

38

Macchina sincrona e "hold time" Per una macchina sincrona, la non violazione di hold time per un dato ingresso

"sincrono" di un flip-flop (j) è garantita se:

TCTO(i)min + Tcomb(i)

min > Tholdmax + Tskew(j-i)

max (HT)

per ogni flip-flop (i) che contribuisce a pilotare l'ingresso "sincrono" di (j).

In questo caso la relazione non dipende dalla frequenza operativa (frequenza di clock) e quindi può essere soddisfatta in maniera più agevole che la (ST).

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

S. Ricciarini – progettazione circuiti digitali

Page 39: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

39

Vantaggi della macchina sincrona Come abbiamo visto, in una macchina sincrona la non violazione di setup e hold time può

essere garantita su tutti i flip-flop, anche tenendo conto della variabilità dei tempi di propagazione (ad es. facendo in modo che Tsetup_margin(j-i) > 0 per tutte le coppie di flip-flop).

Come vedremo, il compilatore automaticamente sceglie e ottimizza la struttura reale della macchina sincrona (tipo di celle logiche, loro disposizione geometrica e interconnessioni), con lo scopo di massimizzare i margini temporali su setup e hold time per tutte le coppie di flip-flop.

S. Ricciarini – progettazione circuiti digitali

Page 40: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

40

Svantaggi del circuito asincrono

S. Ricciarini – progettazione circuiti digitali

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

Nel circuito asincrono, 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 asincrono richiede in sostanza del lavoro addizionale da parte del progettista.• Lavoro addizionale che non conviene fare, se la stessa funzionalità si può ottenere con una

macchina sincrona.

Page 41: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

Nella trattazione dei circuiti logici, i tempi di transizione (durata della salita/discesa del segnale) non possono essere mai trascurati: essi contribuiscono ai tempi di propagazione

dei segnali (assieme alla lunghezza delle linee).• Per brevità, nei diagrami logici temporali i fronti di salita/discesa sono disegnati in modo

approssimato, come istantanei (fronti perfettamente verticali).

Il tempo di transizione su una linea è caratterizzato dalla costante di tempo (RC) data da capacità di carico C e resistenza R della linea.

• La capacità di carico aumenta linearmente col numero di porte o flip-flop reali pilotati da una

singola linea (cioè con il fan-out). Nota: "fan" = ventaglio.

• Il compilatore limita il fan-out (tipicamente a ~30) tramite la duplicazione (ridondanza) della porta o flip-flop in questione.

• Questo permette di limitarei tempi di propazione deisegnali e soddisfare lecondizioni (ST) e (HT) visteprima, su setup time e hold time.

41

Tempi di transizione (salita/discesa)

S. Ricciarini – progettazione circuiti digitali

Page 42: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

Un glitch su un ingresso asincrono del flip-flop comporta in genere un'azione spuria (cioè non voluta logicamente e imprevedibile) di impostazione a 1 (preset) o 0 (clear).

I segnali usati per pilotare gli ingressi asincroni dei flip-flop non possono avere glitch!• In particolare, l'uscita di una porta logica non può essere usata per pilotare un ingresso

asincrono!

Quali segnali possono quindi essere usati come clock o ingressi asincroni dei flip-flop?• Le uscite dei flip-flop, dato che non hanno glitch per costruzione.

Attenzione: non ha senso pilotare l'ingresso asincrono (preset/clear) di un flip-flop con un segnale sincrono: ad esempio, con l'uscita del flip-flop stesso.

• L'uscita del flip-flop commuta prima in modo sincrono e poco dopo in modo asincrono: questa seconda commutazione non deve avvenire durante l'hold time, altrimenti si può avere upset.

• Si introduce un ulteriore effetto di temporizzazione di cui il compilatore deve tener conto e per il cui controllo il tipico compilatore è inadeguato.

• Lo stesso comportamento funzionale si ottiene utilizzando gli ingressi sincroni, spostando la seconda commutazione al clock successivo.

Ha invece senso pilotare l'ingresso asincrono del flip-flop (1) con l'uscita di un flip-flop (2) asincrono rispetto (1).

42

Requisiti degli ingressi asincroni

S. Ricciarini – progettazione circuiti digitali

Page 43: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

43

Struttura della macchina sincrona e realizzazione in VHDL.

S. Ricciarini – progettazione circuiti digitali

Page 44: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

Una qualsiasi macchina sincrona è scomponibile (per equivalenze logiche) in:• un registro di stato ("status register") a N bit composto da N flip-flop elementari (cioè

ciascuno con un solo ingresso sincrono, data_in);

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

I flip-flop formano la memoria della macchina, immagazzinando l'informazione relativa allo stato della macchina duranteciascun ciclo di clock.

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

• L'uscita del registro di statoè detta bus di stato presente.

• L'ingresso del registro di statoè detta bus di stato successivo.

• Ogni configurazione di valori caricatinegli N flip-flop costituisce uno stato:gli stati possibili sono 2N.

44

Macchina sincrona: struttura

S. Ricciarini – progettazione circuiti digitali

Page 45: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

Lo stato della macchina durante il ciclo di clock successivo dipende da:1. stato presente (uscita del registro di stato);

2. struttura della LUT;

3. (nel caso in cui la macchina sia componente di circuito sincrono) ingressi di controllo

sincroni, che assieme alla LUT determinano l'ingresso del registro di stato.

Non tutti gli stati possibili sononecessariamente raggiunti (cioè usati).Ciò è dovuto agli ingressi di controllosincroni (segnali esterni).

45

Macchina sincrona: struttura

S. Ricciarini – progettazione circuiti digitali

Page 46: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

Una generica macchina sincrona è non periodica: la presenza degli ingressi di controllo

implica che per ogni stato S, lo stato successivo S' non dipende soltanto dalla LUT.

• La sequenza di stati e la loro durata (numerodi cicli di clock) non è in genere prefissata.

• Il numero di cicli di clock che intercorre fradue ripetizioni dello stesso stato non èin genere prefissato.

Un caso particolare è la macchina sincrona periodica.

• Nessun ingresso di controllo. Quindi lo stato (necessariamente) cambia ad ogni ciclo di clock e la successione di stati è fissata dalla LUT.

Una macchina sincrona periodica con N' flip-flope una LUT L' è logicamente equivalente a:

• un contatore a N ≤ N' bit;

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

46

Macchina sincrona e periodicità

S. Ricciarini – progettazione circuiti digitali

Page 47: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

47

(Es. 3) Macchina sincrona Esempio pratico. Una FPGA contiene una macchina sincrona, che esegue una sequenza di

operazioni (ciascuna corrisponde a uno stato):• dopo l'accensione della FPGA, stato iniziale: idle oppure no operation (nop); viene impostato

mediante un impulso di reset che va a tutti i flip-flop (ingresso asincrono preset o clear).

• avvio da parte di un impulso 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 suo trasferimento in RAM (ram_write2);

• ritorno nello stato iniziale, in 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

reset

Page 48: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

48

(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 secondarie quandonecessario;

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

• una macchina secondaria Seccount che conta il numero di eventi (contatore: macro!);

• una macchina secondaria SecRAM dedicata a trasferire il dato dal registro temporaneo o dal contatore alla RAM (interfaccia dedicata alla RAM: codificata dal progettista!).

Ogni macchina secondaria è specializzata per generareuna specifica sequenza digitale su uno specifico gruppo di uscite.

La stessa macchina secondaria (~ subroutine) può essere

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 di

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

S. Ricciarini – progettazione circuiti digitali

Page 49: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

Scrivo qui soltanto il codice VHDL che descrive la macchina principale Main.

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; -- DOMANDA: ci sono tutti i segnali necessari?

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/pensatouno schema a blocchi del circuito, comequello mostrato qui.

Nota: non ho considerato qui le linee di clock ereset asincrono e le uscite di controllo dellemacchine secondarie verso ADC e RAM.

(Es. 3) Macchina sincrona in VHDL

S. Ricciarini – progettazione circuiti digitali

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

Page 50: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

Abbiamo visto che l'architettura interna di unamacchina sincrona è descritta scomponendolain due blocchi logici:

• un registro di stato (insieme dei flip-flop);

• una LUT (blocco puramente combinatorio).

In questo schema della macchina Main, i segnaliinterni sono i due bus di stato.

architecture arch of main is

-- ... DOMANDA: servono altri segnali interni?

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

-- (ingresso e 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

-- presi in qualunque ordine.

);

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;

-- ...

50

(Es. 3) Macchina sincrona in VHDL

S. Ricciarini – progettazione circuiti digitali

Page 51: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

Descriviamo ora i due blocchi logici.

begin

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

-- (processo = descrizione funzionale).

begin

if (reset = '1') then -- "reset" inviato agli ingressi "asincroni" clear o preset di

-- tutti i flip-flop, per avere uno stato di partenza definito dopo l'accensione.

-- DOMANDA: 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. Si può anche

-- scrivere: (clock'rising_edge).

st_pres <= st_next;

end if;

end process;

process (-- secondo blocco logico: è la LUT che definisce lo stato successivo st_next

-- e le uscite della macchina, 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 SecADC .

ram_write_end -- segnale di ritorno dalla macchina secondaria SecRAM .

)

begin

-- ...

51

(Es. 3) Macchina sincrona in VHDL

S. Ricciarini – progettazione circuiti digitali

Page 52: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

-- ...

st_next <= nop;

adc_read_start <= '0';

ram_write_start <= '0';

ram_data_select <= '0';

-- Le uscite del processo sono poste nello stato di partenza (nop, '0') a meno che gli

-- ingressi assumano determinate combinazioni di valori, specificate nel seguito del

-- processo.

-- Questa particolare modalità di codifica permette di ridurre enormemente

-- il tempo necessario a codificare e verificare un processo complesso.

-- VERIFICA: provate a codificare questo semplice processo senza utilizzare questa

-- modalità di codifica.

-- ...

52

(Es. 3) Macchina sincrona in VHDL

S. Ricciarini – progettazione circuiti digitali

Page 53: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

53

(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;

-- (in cui la condizione "when others" non può essere omessa).

-- 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 SecADC con impulso che dura un ciclo clock.

-- DOMANDA: come faccio a sapere che adc_read_start dura 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 nop dipende dal

-- segnale di controllo esterno synchro_trigg (flessibilità).

-- ...S. Ricciarini – progettazione circuiti digitali

Page 54: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

-- ...

when adc_read =>

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

st_next <= ram_write1; -- passa allo stato successivo.

ram_write_start <= '1'; -- avvia SecRAM (impulso che dura un ciclo di clock).

else

st_next <= adc_read; -- altrimenti resta nello stato presente.

-- DOMANDA: perché per restare in adc_read è necessario scriverlo in modo esplicito,

-- mentre per restare in nop non serve scriverlo?

end if;

when ram_write1 =>

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

st_next <= ram_write2; -- passa allo stato successivo.

ram_write_start <= '1'; -- avvia DI NUOVO SecRAM .

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

else

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

end if;

-- ...

54

(Es. 3) Macchina sincrona in VHDL

S. Ricciarini – progettazione circuiti digitali

Page 55: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

55

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

when ram_write2 =>

if (ram_write_end = '1') then -- SecRAM 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.

-- DOMANDA: è sempre necessario mantenere ram_data_select a 1?

-- Suggerimento per la RISPOSTA: come funzione SecRAM ?

end if;

end case;

end process; -- NOTA: non sono MAI stati usati gli operatori

-- AND, NOT o equivalenti, cioè non è mai stata

-- data una specifica descrizione strutturale.

end arch;

S. Ricciarini – progettazione circuiti digitali

Page 56: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

56

(Es. 4) Progettazione parametrica In VHDL è possibile descrivere un blocco logico con una o più caratteristiche parametriche

e specificare poi indipendentemente per ciascuna chiamata il valore dei parametri.

Esempio: un contatore limitato ad un conteggio count_max variabile fra 10 e 40, a seconda della chiamata.

entity user_count is

generic ( -- generic = parametro

count_max : integer range 40 downto 10 := 20 -- se non assegnato nella chiamata,

-- viene posto a 20 (default).

-- Notare la sintassi ":=" per assegnare il valore al parametro. Diversa da:

-- "<=" (assegnazione di segnale)

-- "=>" (mappatura componente)

-- "=" (condizione nel processo)

);

port (

reset, clock : in std_logic;

count : out integer range 40 downto 0

);

end entity user_count;

S. Ricciarini – progettazione circuiti digitali

Page 57: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

57

(Es. 4) Progettazione parametrica La descrizione dell'architettura di "user_count" contiene la sintassi seguente:

count <= count_int; -- DOMANDA: perché non si può usare count nella sintassi che segue?

process (reset, clock)

begin

if (reset = '1')

count_int <= 0;

elsif (clock'event and clock = '1') then

count_int <= count_int + 1; -- La RISPOSTA alla domanda sta qui.

if (count_int = count_max) -- La RISPOSTA alla domanda sta anche qui.

count_int <= 0; -- se arrivato al conteggio massimo, il contatore si azzera.

-- Altrimenti, si incrementa di 1.

end if;

end if;

end process;

La chiamata del componente "user_count" contiene la sintassi seguente:

user_count_inst1: user_count

generic map (

count_max => 22 -- in questa chiamata, il massimo è posto a 22.

)

port map (

reset => ecc. ecc.

);

S. Ricciarini – progettazione circuiti digitali

Page 58: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

58

Compilazione e verifica del progetto.

S. Ricciarini – progettazione circuiti digitali

Page 59: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

59

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

• Un software (compilatore) permette di automatizzare la maggior parte del lavoro.

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

Prima fase: sintesi.

Il codice HDL (descrizione funzionale/strutturale) o disegno schematico (descrizione strutturale) ètradotto dal software di sintesi in una specifica struttura di elementi logici di base (AND, NOT e flip-flop) indicata come netlist (abbreviazione di “network list”).

• Si parte con il codice HDL (ad esempio uno o più file di testo VHDL, con estensione .vhd) o il codice che rappresenta il disegno schematico (codifica ed estensione del file dipendono dall'ambiente di sviluppo).

• Si ottiene tipicamente un file di testo con codifica EDIF, con estensione .edf

(EDIF = Electronic Design Interchange Format, formato di riferimento in campo industriale).

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

S. Ricciarini – progettazione circuiti digitali

Page 60: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

60

Con la sintesi la struttura logica del circuito viene in genere ottimizzata automaticamente, a partire dalla descrizione funzionale/strutturale del progettista.

• L'ottimizzazione avviene secondo vari criteri e sfruttando le equivalenze logiche.

• La struttura della netlist può essere molto diversa da quella specificata nei file di input. La funzionalità è la stessa.

Un esempio di ottimizzazione: sono eliminate le parti logiche ridondanti (cioè 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.

• Si riduce la potenza assorbita (consumo).

• Il codice che descrive il circuito logico può essere scritto dal progettista in maniera ridondante (cioè non necessariamente sintetica), quindi in modo più intuitivo.

• Un caso pratico: la descrizione del circuito fatta dal progettistacontiene 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: il fan-out sull'altro aumenta).

Sintesi e ottimizzazioni

S. Ricciarini – progettazione circuiti digitali

Page 61: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

61

Compilazione del progetto: configurazione Seconda fase: configurazione del dispositivo o place and route cioè “posizionamento

(elementi) e instradamento (segnali)”.

La netlist viene tradotta dal software di configurazione in un codice di configurazione per un determinato tipo di dispositivo e salvato in uno o più file di configurazione (codifica ed estensione del file dipendono dall'ambiente di sviluppo).

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

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

• Per una FPGA la scelta della 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 (dimensioni dei transistor, interdistanza fra piste, ecc.).

S. Ricciarini – progettazione circuiti digitali

Page 62: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

62

Configurazione e temporizzazioni Anche nella fase di configurazione il compilatore effettua delle ottimizzazioni, che possono

essere di tipo logico (analoghe alla fase di sintesi) o temporale (ad esempio: minimizzazione dei ritardi nelle interconnessioni).

Per le ottimizzazioni temporali, il compilatore tiene conto dei seguenti parametri, che

devono essere specificati dal progettista:

• frequenza operativa massima richiesta;

• campo di valori attesi per i parametri operativi: tensione di alimentazione e temperatura interna

del semiconduttore.

e di un data base che contiene i tempi di propagazione attesi dei segnali per lo specifico

tipo di dispositivo, in funzione dei valori dei parametri operativi (tensione dialimentazione e temperatura interna).

Il progettista deve conoscere a priori la frequenza operativa massima richiesta al suo circuito (o a ciascuna parte di esso).

• E' buona norma richiedere al compilatore di soddisfare una frequenza operativa significativamente maggiore di quella massima richiesta (margine di sicurezza per tener conto dell'approssimazione dei tempi di propagazione in compilazione).

S. Ricciarini – progettazione circuiti digitali

Page 63: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

63

Configurazione e warning Il compilatore applica i propri algoritmi per soddisfare setup e hold time per tutti i flip-flop

sincroni, per frequenze e parametri operativi indicati dal progettista.• Se la procedura non ha completo successo, il compilatore fornisce la lista dei cammini di segnale

che violano setup o hold time e indica la loro presenza tramite un avvertimento ("warning").

• Il progettista DEVE controllare il rapporto di compilazione, individuare i suddetti cammini e modificare il progetto (o il dispositivo o altro), in modo da eliminare questi problemi.

Il progettista in genere DEVE leggere e comprendere tutti gli avvertimenti ("warning")

nel rapporto del compilatore, e intraprendere azioni opportune.• Ad esempio, un tipico errore concettuale (non di sintassi VHDL!) è l'inserimento di un latch in

un elemento combinatorio.

• Il latch significa che l'uscita dell'elemento è anche suo ingresso: l'uscita può commutare senza

stimoli esterni!

• Consideriamo il seguente elemento combinatorio (LUT e porta AND) con la condizione iniziale indicata in figura (output2 = 0).

DOMANDA: dove è stato (erroneamente)

inserito il latch?

DOMANDA: cosa accade ad output2

se input2 diventa 1?

S. Ricciarini – progettazione circuiti digitali

Page 64: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

64

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

simulazione e prove in laboratorio.• In entrambi i casi si forniscono al circuito sequenze temporali (forme d'onda) di segnali digitali in

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

DOMANDA: perché?

Simulazione.• La simulazione avviene tipicamente mediante un apposito software, con le forme d'onda

visualizzate in una finestra grafica.

• E' possibile assegnare le forme d'onda in ingresso tramite interfaccia grafica o codifica testuale.

• 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 65: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

65

Tipi di simulazione Simulazione funzionale: trascura gli effetti dei tempi di propagazione nel funzionamento

del circuito.• E' rapida e permette di individuare i problemi logici del progetto.

• Non è strettamente necessaria, ma è utile prima della simulazione temporale, per separare la ricerca dei problemi logici da quella dei problemi di temporizzazione.

Simulazione temporale: completa degli effetti dei tempi di propagazione.• Il simulatore riproduce i tempi di propagazione attesi dei segnali nel circuito, per uno specifico

tipo di dispositivo e per determinati valori dei parametri operativi, utilizzando un data base dei tempi di propagazione, come fatto dal compilatore.

S. Ricciarini – progettazione circuiti digitali

Page 66: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

66

Limiti della verifica Limiti della verifica del progetto:

• in simulazione le temporizzazioni reali sono riprodotte in modo necessariamente approssimato;

• in simulazione e in laboratorio, per semplica mancanza di tempo, non è generalmente possibileprovare:

• tutte le possibili combinazioni di valori dei parametri operativi in cui il circuito opererà, anche assumendo che all'interno di determinati campi di valori V, T i tempi di propagazione restino invariati ai fini pratici;

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

Il circuito deve essere affidabile (cioè correttamente funzionante in tutte le condizioni

operative attese e per tutte le possibili casistiche di utilizzo).• Dati i limiti della verifica indicati sopra, conviene sempre progettare una macchina sincrona (nei

casi in cui ciò sia possibile), in quanto, come si è detto, le problematiche temporali di cui tenere conto sono minimizzate, in quanto si riducono a soddisfare setup e hold time per tutte le coppie di flip-flop.

S. Ricciarini – progettazione circuiti digitali

Page 67: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

67

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

S. Ricciarini – progettazione circuiti digitali

Page 68: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

68

Upset da violazione di setup/hold time Si ricorda la definizione 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?• Nei successivi cicli di clock l'upset si può propagare ad altri flip-flop nel circuito.

• In generale l’upset introduce un errore logico, cioè una variazione logicamente non prevista

delle uscite del circuito. Ad es.: un contatore passa dal conteggio N a N+2.

Un upset può verificarsi se setup o hold time di un flip-flop sono violati per 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 e 1.

• 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, tipicamente a causa 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 69: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

69

Caso della macchina sincrona In una macchina sincrona la violazione di setup/hold time può avvenire per una coppia

i,j di flip-flop se non sono soddisfatte le relazioni viste prima:

TCTO(i)max + Tcomb(i)

max + Tskew(i-j)max + Tsetup

max < Tclockmin (ST)

TCTO(i)min + Tcomb(i)

min > Tholdmax + Tskew(j-i)

max (HT)

• L'indice "max/min" si riferisce alla variabilità dei tempi di propagazione (tolleranze, parametri operativi, invecchiamento): non soddisfare le relazioni significa non poter garantire l'assenza di upset per la coppia i,j.

• Un caso tipico è quando la frequenza di clock è troppo elevata, per cui (ST) non puòessere soddisfatta per tutti o parte dei flip-flop del circuito.

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

S. Ricciarini – progettazione circuiti digitali

Page 70: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

In un circuito asincrono (cioè con due o più segnali di clock distinti), i flip-flop cherealizzano la risincronizzazione (o campionamento asincrono) avranno violazione di setup/hold time per determinati fronti di salita del proprio clock (a seconda del corrispondente sfasamento fra i due clock).

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

• E' però possibile azzerare la probabilità

di errore logico nel circuito.

70

Caso del circuito asincrono

S. Ricciarini – progettazione circuiti digitali

Page 71: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

71

Campionamento asincrono combinatorio

S. Ricciarini – progettazione circuiti digitali

Si ricorda che il campionamento asincrono può essere di tipo combinatorio

(risincronizzazione su uscita di porta logica) oppure sequenziale (risincronizzazione su uscita di flip-flop).

La figura mostra un esempio di campionamento asincrono combinatorio.• La linea ready_1 è l'uscita di un elemento combinatorio (porta logica), è sincrona con clock_1 e

indica quando la macchina 1 è pronta.

• La linea ready_2 è sincrona con clock_2

e avvia una sequenza interna alla macchina 2.

Page 72: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

72

Un segnale combinatorio come ready_1 presenta dei glitch (impulsi spuri).• Le transizioni di signal_a e signal_b non sono mai esattamente simultanee, nonostante i due

segnali siano generati da flip-flop sincroni, a causa dei tempi di propagazione dei segnali nel dispositivo reale.

Nell'esempio, per determinati fronti di salita di clock_2 (a seconda dello sfasamentointercorrente fra i due clock) il glitch su ready_1 avverrà troppo vicino al fronte di salita di clock_2, con violazione di setup o hold time e quindi con possibile upset sulla linea ready_2 e conseguente errore logico nella macchina 2.

• In caso di upset ready_2 cambia stato e la macchina 2 avvia la sequenza interna, senza che la macchina 1 abbia veramente comunicato di essere pronta!

Nel caso generale di circuito con campionamenti asincroni combinatori, sono presenti upset

dovuti a glitch, ossia transizioni logicamente non attese (errori logici) nel circuito a valle.

Nota bene: anche nel caso di campionamento sincrono combinatorio ci sono dei glitch, ma se (ST) e (HT) sono soddisfatte, questi glitch non danno mai upset, in quanto avvengonoal di fuori dell'intorno del fronte di salita del clock, identificato da setup e hold time.

S. Ricciarini – progettazione circuiti digitali

Campionamento asincrono combinatorio

Page 73: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

73

Campionamento asincrono sequenziale

• ready_2 può ancora avere un upset ma ciò non comporta un errore logico nella macchina 2, che parte quando desiderato, cioè solo dopo

che la macchina 1 ha comunicato di esserepronta con ready_1 .

• ready_2 replica le transizioni di ready_1 a menodi una fluttuazione ("jitter") nel ritardo, chepuò variare di volta in volta fra circa 0 e Tclock_2

a seconda della fase fra i due clock al momentodel campionamento.

• Per indicare il ritardo fra i due segnali ready_1 e ready_2:

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

• si rappresenta il jitter come un'incertezza δt distribuita uniformemente con ampiezzamassima pari a: δt = ± 0.5 · Tclock_2

Inserendo opportunamente un flip-flop nel circuito visto prima, si ha un segnale ready_1

per definizione privo di glitch.

S. Ricciarini – progettazione circuiti digitali

Page 74: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

74

Campionamento asincrono sequenziale Il campionamento asincrono di tipo sequenziale (cioè su uscita di flip-flop) azzera la

probabilità di errore logico, in quanto sull'uscita del flip-flop non sono presenti glitch.

Nella risincronizzazione di tipo sequenziale, pur non avendo glitch, avvengono comunque e inevitabilmente gli upset.

Gli upset avvengono però solamente in corrispondenza di una transizione logicamente

attesa dell'uscita del flip-flop e il loro unico effetto è quello di introdurre una fluttuazione

temporale (dovuta alla fase variabile fra i due clock) per la transizione logicamente attesa

nel circuito a valle.

S. Ricciarini – progettazione circuiti digitali

Page 75: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

75

Upset da perturbazioni esterne

S. Ricciarini – progettazione circuiti digitali

Page 76: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

76

Upset da perturbazioni esterne Un upset può anche avvenire a causa di perturbazioni esterne, come le correnti parassite

indotte nel flip-flop da una particella altamente ionizzante (ad es. un raggio cosmico).• La carica negativa temporaneamente accumulata su D2

ne abbassa la tensione: se l'abbassamento è sufficiente,questo rovescia lo stato dell'altra porta NOT del latch.

• Il rovesciamento si propaga alla porta NOT originale.

• A questo punto il latch si trova definitivamente

nello stato rovesciato: upset!

S. Ricciarini – progettazione circuiti digitali

Page 77: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

77

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 elettromagnetica e 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 qualche forma di ridondanza che funziona come sistema di correzione automaticadell'errore logico. Vediamo di seguito alcuni esempi.

1. Tripla ridondanza.

• Un segnale logico è realizzato da 3 flip-flop: il dato in ingresso viene caricato simultaneamentesui 3 flip-flop; il dato in uscita è il valore (1 o 0) presente in maggioranza (serve la opportunalogica combinatoria).

• Il dato in uscita viene automaticamente sovrascritto in ingresso (ad es. ad ogni clock), in modo da eliminare l'upset.

• La frazione di informazione è 1/3: servono 3 flip-flop per ciascun bit di informazione.

S. Ricciarini – progettazione circuiti digitali

Page 78: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

78

Upset da perturbazioni esterne 2. Codifica Hamming.

• Quando un valore A viene scritto in un registro a N bit, viene anche scritto un codice B in un registro ausiliario di H bit; B=f(A). Si parla di codifica Hamming (N+H, N).

• 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 dopo la scrittura di A e B, il valore letto resti identico a quello scritto A.

• Il valore letto viene automaticamente sovrascritto in ingresso (ad es. ad ogni clock), in modo da eliminare l'upset dai flip-flop.

• Il numero di upset simultanei nei registri A e/o B che possono essere corretti cresce con il numero H di bit ausiliari.

Nota: anche con la ridondanza, l'errore logico è sempre possibile: ad esempio, nel caso di tripla ridondanza, un doppio upset (su due flip-flop simultaneamente) non verrebbe corretto automaticamente.

S. Ricciarini – progettazione circuiti digitali

Page 79: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

79

Rivelazione dell'upset Di seguito alcuni tipici metodi per rivelare la presenza di un upset.

• Si configura la logica di ridondanza in modo da segnalare gli upset che essa non può

correggere.• La tripla ridondanza è in grado di correggere un singolo upset ma non è in grado di

segnalare upset superiori. DOMANDA: perché?

• Una codifica Hamming (7,4) ossia con N=4, H=3 è in grado di correggere un singolo upset e segnalare un doppio upset (cioè upset su due diversi bit) mediante una linea di allarme, mentre nulla viene segnalato in caso di upset tripli o superiori.

• Si utilizzano altri tipi di codici di controllo in grado di segnalare gli upset.

• Bit di parità, cioè un bit P che rappresenta la parità (P=1 se pari, P=0 se dispari) del numero di volte che compare '1' negli N bit che compongono un blocco di dati:

Es.: 00001100001000011 ha P=0 (infatti '1' compare 5 volte)

• Il bit P viene scritto in un flip-flop al momento della scrittura degli N bit di dati.

• In seguito, quando i dati vengono letti, la parità P' viene calcolata di nuovo.

• In caso di un numero dispari (singolo, triplo ecc.) di upset presenti nel blocco di dati, la parità calcolata P' è invertita rispetto a quella salvata P.

• In caso di un numero pari (doppio, quadruplo ecc.) di upset, il controllo è inefficace!

• In pratica si utilizzano controlli analoghi più sofisticati, con codici di controllo a M>1 bit (ad es. CRC: Cyclic Redundancy Check).

S. Ricciarini – progettazione circuiti digitali

Page 80: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

80

Rivelazione dell'upset

• Si effettuano controlli sul contenuto dei dati trasmessi.• I dati in uscita devono contenere sequenze di bit prefissate ("pattern", "frame").

• Un circuito esterno (controllore) verifica che il circuito logico agisca nel modo

corretto entro un tempo massimo prefissato:• watchdog (“cane da guardia”): un contatore sempre attivo deve essere azzerato dal circuito

logico prima che venga raggiunto un determinato conteggio, col quale viene asserita una linea di allarme.

• time-out sull'esecuzione di un comando esterno (sequenza di bit in ingresso): la risposta deve avvenire entro un tempo massimo prefissato; altrimenti il circuito esterno, che ha inviato il comando e attivato un proprio contatore di time-out, interviene.

S. Ricciarini – progettazione circuiti digitali

Page 81: progettazione digitale e VHDL 2018-11-06hep.fi.infn.it/CIBER/progettazione_digitale_e_VHDL_2018-11-06.pdf · Cella logica di una FPGA Cella logica della FPGA: struttura di porte logiche

81

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

presenza di upset? Di seguito i metodi più semplici.

• Con un impulso di reset asincrono inviato a tutti i flip-flop attraverso i loro ingressi"asincroni" (clear o preset), che riportano i singoli flip-flop nello stato iniziale

desiderato.• Si ricorda che gli ingressi "asincroni" clear e preset sono caratterizzati dall'agire sullo stato

del flip-flop indipendentemente dal clock.

• Con lo spengimento e riaccensione del circuito.

S. Ricciarini – progettazione circuiti digitali