• Il segnale d’uscita Z può modificare il suo valore solo quando si
verifica o un fronte di salita di X1 o un fronte di salita di X2: nel
primo caso si deve avere Z=1, nel secondo Z=0.
Alberto Geniola
Esame di Reti Logiche - T
• Una rete sequenziale asincrona è dotata di due ingressi X1, X2
e di un’uscita Z. I segnali X2 e X1 non cambiano mai di valore
contemporaneamente.
Obiettivo:
eseguire il progetto, senza riduzione degli stati, in schematico Xilinx,
corredato da simulazione behavioural e post-route
1
Diagramma degli stati
00,1
10,1
00,1
00,0
C
B
A
E
10,1
00,0
Esame di Reti Logiche - T
10,0
10,1
00,0
11,0
10,0
01,0
01,1
11,1
11,0
01,0
00,1
10,1
01,0
11,0
D
Alberto Geniola
Si è scelto di svolgere la risoluzione del problema con il modello di
macchina a stati di Mealy.
G
F
H
01,1
01,0
11,1
11,1
2
Tabella degli stati
00
01
11
10
A
A,0
H,0
-,-
B,1
B
C,1
-,-
D,0
B,1
C
C,1
H,0
-,-
B,1
D
-,-
H,0
D,0
E,0
E
A,0
-,-
D,0
E,0
F
-,-
G,1
F,1
B,1
G
C,1
G,1
F,1
-,-
H
A,0
H,0
F,1
-,-
Sono presenti otto stati. Per codificarli, si necessita di tre variabili di stato, in quanto
log 2 8 = 3.
Esame di Reti Logiche - T
Stato
Alberto Geniola
Ricaviamo dal precedente diagramma la seguente tabella degli stati. Ogni riga
rappresenta le possibili transizioni da uno stato ad un altro al variare degli ingressi.
In grassetto sono riportati gli stati stabili per gli ingressi della medesima colonna.
3
Esame di Reti Logiche - T
• Sono presenti otto stati, codificabili con tre variabili binarie
• Per ipotesi due segnali di ingresso non cambiano mai di valore
contemporaneamente. Questo ci permette di avere una
indifferenza per ogni riga della tabella. In altre parole da uno
stato X stabile la rete può spostarsi solamente in altri 3 stati al
variare degli ingressi, in quanto una quarta variazione sarebbe
«illegale»
• Per ogni colonna della tabella esistono più stati stabili (due per
ogni configurazioni di ingresso). Questo fa presumere che
bisognerà imporre uno stato iniziale definito dal quale far
partire la rete (mediante l’introduzione di un reset).
Alberto Geniola
Tabella degli stati: considerazioni
4
Codifica
Codifica
00
01
11
10
A
000
000,0
100,0
-,-
001,1
B
001
011,1
-,-
010,0
001,1
C
011
011,1
100,0
-,-
001,1
D
010
-,-
100,0
010,0
110,0
E
110
000,0
-,-
010,0
110,0
F
111
-,-
101,1
111,1
001,1
G
101
011,1
101,1
111,1
-,-
H
100
000,0
100,0
111,1
-,-
Sono presenti otto stati. Per codificarli, si necessita di tre variabili di stato, in quanto
log 2 8 = 3.
Esame di Reti Logiche - T
Stato
Alberto Geniola
Analizzate le varie opportunità di codifica, si è scelta la seguente (codice gray a 3
bit), la quale ci ha permesso di avere un numero di corse accettabile e aggirabili
senza aumentare il numero di variabili di stato.
5
Corse: identificazione
B
H
C
G
D
F
Esame di Reti Logiche - T
A
Alberto Geniola
Al fine di identificare le possibili corse dovute al cambiamento di più di un bit di
stato che dovrebbe avvenire simultaneamente (cosa altamente improbabile in
natura), si è costruito il seguente diagramma delle adiacenze.
E
Le connessioni di colore rosso indicano i cambi di stati che richiedono il variare di più di un
solo bit di stato. Possiamo perciò ora passare all’identificazione e risoluzione delle corse in
tabella.
6
Corse: workaround
00
000
011
011
--100
--001
000
01
100
000
001
000
--101
101
100
11
010
000
--010
010
111
111
101
10
001
001
001
110
110
011
-----
Per arrivare allo stadio 010 con uscita 0,
si è preferito passare attraverso 000.
Questo stato ha come uscita per 11 una
INDIFFERENZA. Per evitare glitch
sull’uscita della rete quindi, andremo a
modificare la tabella degli stati per Z,
forzando lo stato 000 con ingresso 11 ad
uscita 0. Ingegneristicamente tale
decisione si traducerà in una PORTA and
in più sul circuito (+ consumo, + spazio
occupato) ma eviterà un’uscita falsata
seppur per pochissimo tempo.
La politica scelta per aggirare le corse prevede l’utilizzo minimo delle caselle di indifferenza, massimizzando
invece la condivisione di caselle di passagio (stati non stabili), al fine di garantire maggiore semplicità nel
processo di sintesi. Un esempio potrebero essere le due corse arancione e viola: entrambe i cammini con
ingresso 01 condividono il passaggio per lo stato 000, che reindirizza allo stato 100.
Esame di Reti Logiche - T
Stato
000
001
011
010
110
111
101
100
Alberto Geniola
La seguente tabella riporta le corse corrette in modo da evitare malfunzionamenti
della rete. Si è scelto di usare colori diversi per ogni caso identificato (in totale 7).
7
Codifica
00
01
11
10
A
000
000,0
100,0
010,0
001,1
B
001
011,1
000,-
000,0
001,1
C
011
011,1
001,0
- - -,-
001,1
D
010
- - -,-
000,0
010,0
110,0
E
110
100,0
- - -,-
010,0
110,0
F
111
- - -,-
101,1
111,1
011,1
G
101
001,1
101,1
111,1
-,-
H
100
000,0
100,0
101,1
-,-
Esame di Reti Logiche - T
Stato
Alberto Geniola
Tabella finale
8
Sintesi dei segnali: Y1
10
X1X2
\
Y2Y3
00
01
11
00
01
11
10
00
0
1
0
0
00
0
1
1
-
01
0
0
0
0
01
0
1
1
-
11
0
0
-
0
11
-
1
1
0
10
-
0
0
1
10
1
-
0
1
Y1=0
Esame di Reti Logiche - T
X1X2
\
Y2Y3
Alberto Geniola
• Sintetizziamo ora i vari segnali, a partire da quelli che
identificano le variabili di stato e saranno usati in retroazione
sulla nostra rete
Y1=1
𝑌1 = 𝑌1 𝑌2 ! 𝑋1 + 𝑌1 𝑌3 𝑋2 + 𝑌1 ! 𝑌2 𝑋2 + 𝑌2 ! 𝑌3 𝑋1 ! 𝑋2 + ! 𝑌2 ! 𝑌3 ! 𝑋1 𝑋2
9
10
X1X2
\
Y2Y3
00
01
11
00
01
11
10
00
0
0
1
0
00
0
0
0
-
01
1
0
0
0
01
0
0
1
-
11
1
0
-
0
11
-
0
1
1
10
-
0
1
1
10
0
-
1
1
Y1=0
Y1=1
𝑌2 = ! 𝑌1 ! 𝑌3 𝑋1 𝑋2 + ! 𝑌1 𝑌3 ! 𝑋1 ! 𝑋2 + 𝑌2 ! 𝑌3 𝑋1
Esame di Reti Logiche - T
X1X2
\
Y2Y3
Alberto Geniola
Sintesi dei segnali: Y2
10
10
X1X2
\
Y2Y3
00
01
11
00
01
11
10
00
0
0
0
1
00
0
0
1
-
01
1
0
0
1
01
1
1
1
-
11
1
1
-
1
11
-
1
1
1
10
-
0
0
0
10
0
-
0
0
Y1=0
𝑌3 = ! 𝑌2 𝑋1 ! 𝑋2 + 𝑌1 𝑌3 + 𝑌3 ! 𝑋2 + 𝑌2 𝑌3
Y1=1
Esame di Reti Logiche - T
X1X2
\
Y2Y3
Alberto Geniola
Sintesi dei segnali: Y3
11
10
X1X2
\
Y2Y3
00
01
11
00
01
11
10
00
0
0
0
1
00
0
0
1
-
01
1
-
0
1
01
1
1
1
-
11
1
0
-
1
11
-
1
1
1
10
-
0
0
0
10
0
-
0
0
Y1=0
𝑍 = 𝑌1 𝑌3 + 𝑌3 ! 𝑋2 + ! 𝑌2 ! 𝑌3 𝑋1
Y1=1
Esame di Reti Logiche - T
X1X2
\
Y2Y3
Alberto Geniola
Sintesi dei segnali: Z
Uscita che avrebbe previsto un glitch su Z
passando da 10 a 11 allo stato 000
𝑍 = 𝑌1 𝑌3 + 𝑌3 ! 𝑋2 + ! 𝑌2 ! 𝑋1 ! 𝑋2 + ! 𝑌1 ! 𝑌2 𝑋1
Uscita che non presenta glitch
Per garantire la massima qualità della rete, si sceglierà la seconda opzione, più costosa ma
più precisa.
12
𝑌1 = 𝑌1 𝑌2 ! 𝑋1 + 𝑌1 𝑌3 𝑋2 + 𝑌1 ! 𝑌2 𝑋2 + 𝑌2 ! 𝑌3 𝑋1 ! 𝑋2 + ! 𝑌2 ! 𝑌3 ! 𝑋1 𝑋2
𝑌2 = ! 𝑌1 ! 𝑌3 𝑋1 𝑋2 + ! 𝑌1 𝑌3 ! 𝑋1 ! 𝑋2 + 𝑌2 ! 𝑌3 𝑋1 + 𝑌1 𝑌3 𝑋1
𝑌3 = ! 𝑌2 𝑋1 ! 𝑋2 + 𝑌1 𝑌3 + 𝑌3 ! 𝑋2 + 𝑌2 𝑌3
Esame di Reti Logiche - T
Le funzioni logiche che caratterizzano i segnali di stato e quello d’uscita.
Il prossimo step consiste nel generare una rappresentazione schematica di tali
risultati e produrre una simulazione di funzionamento.
Alberto Geniola
Sintesi dei segnali
𝑍 = 𝑌1 𝑌3 + 𝑌3 ! 𝑋2 + ! 𝑌2 ! 𝑋1 ! 𝑋2 + ! 𝑌1 ! 𝑌2 𝑋1
13
Esame di Reti Logiche - T
Alberto Geniola
Rappresentazione schematico
14
Il banco di prova: test VHDL
Si noti che per ipotesi gli ingressi non cambiano mai simultaneamente, perciò
anche nel listato VHDL non inseriremo istruzioni parallele per l’impostazione
dei valori di ingresso (compresi aventuali valori iniziali)
Esame di Reti Logiche - T
Ecco i passaggi che si andranno a sviluppare in VHDL
1. Porre la rete in uno stato noto, grazie al segnale di RESET
2. Impostare i due segnali di ingresso al valore 00
3. Alzare ad 1 il segnale X1 (ci si aspetta fronte positivo di Z)
4. Alzare ad 1 il segnale X2 (ci si aspetta fronte negativo di Z)
5. Abbassare a 0 il segnale X2 (ci si aspetta Z invariato)
6. Abbassare a 0 il segnale X1 (ci si aspetta Z invariato)
7. Alzare a 1 X2 (ci si aspetta Z ancora a 0)
8. Alzare a 1 X1 (ci si aspetta un fronte positivo di Z)
Alberto Geniola
Al fine di testare il corretto funzionamento della rete, si fa uso di un semplice
listato VHDL-Test-Bench per simulare il comportamento della rete in risposta a
diversi stimoli di ingresso.
15
COMPONENT schematico
PORT( Z
:
X1
:
X2
:
OUT
IN
IN
END COMPONENT;
SIGNAL Z
SIGNAL X1
SIGNAL X2
:
STD_LOGIC;
:
STD_LOGIC;
:
STD_LOGIC;
SIGNAL A_RES : STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
A_RES : IN STD_LOGIC);
Esame di Reti Logiche - T
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;
LIBRARY UNISIM;
USE UNISIM.Vcomponents.ALL;
ENTITY schematico_schematico_sch_tb IS
END schematico_schematico_sch_tb;
ARCHITECTURE behavioral OF schematico_schematico_sch_tb IS
Alberto Geniola
Banco prova: VHDL 1
BEGIN
UUT: schematico PORT MAP(
Z => Z,
X1 => X1,
X2 => X2,
A_RES => A_RES
);
16
-- I segnali non cambiano mai contemporaneamente per ipotesi
X1<='0';
wait for 100 ns;
X2<='0';
A_RES<='0';
wait for 100 ns;
X1<='1'; -- Fronte positivo di X1
wait for 100 ns;
X2<='1'; -- Fronte positivo di X2
wait for 100 ns;
Esame di Reti Logiche - T
-- *** Test Bench - User Defined Section ***
tb : PROCESS
BEGIN
A_RES<='1';
Alberto Geniola
Banco prova: VHDL 2
X2<='0'; -- Fronte negativo di X2
wait for 100 ns;
X1<='0'; -- Fronte negativo di X1
wait for 100 ns;
17
Banco prova: VHDL 3
X2<='1'; -- Fronte positivo di X2
WAIT; -- will wait forever
END PROCESS;
-- *** End Test Bench - User Defined Section ***
END;
Esame di Reti Logiche - T
X1<='1'; -- Fronte positivo di X1
Alberto Geniola
wait for 100 ns;
18
Esame di Reti Logiche - T
Alberto Geniola
Simulazione: behavioural
Tutto funziona come previsto:
Con reset alto, l’uscita si porta a 0. Una volta configurati i due ingressi a 00, appena X1 diventa
alto anche Z si porta ad 1. Dopo 200 ns, al fronte di salita di X2 Z si porta a valore 0.
Successivamente vengono abbassati entrami i segnali a 0, e l’uscita rimane stabile. Al fronte
positivo di X2 all’istante 600 ns, Z rimane 0, per poi diventare 1 al fronte positivo di X1 (700
ns). Questa simulazione non mostra ritardi nella variazione tra segnale di ingresso e quello di
uscita; è perciò un modello ideale.
19
Esame di Reti Logiche - T
Alberto Geniola
Simulazione: post route
Anche in questo caso tutto funziona, ma ovviamente sono presenti dei ritardi.
Seppur di lieve entità, notiamo dei ritardi significativi che oscillano tra i 7 ed i 10 ns sul
commutare del segnale di uscita. Nonostante tutto si tratta di un ottimo risultato, migliorabile
se si prendesse in considerazione una tecnologia più avanzata per i componenti AND, OR e
NOT usati di default dal software Xilinx.
20
Scarica

Presentazione senza riduzione