Calcolatori Elettronici - Intranet...

113
C.Brandolese, F.Salice Politecnico di Milano SNAP SNAP Synthesis Netlist and Program Synthesis Netlist and Program Software Software Calcolatori Elettronici

Transcript of Calcolatori Elettronici - Intranet...

C.Brandolese, F.Salice Politecnico di Milano

SNAPSNAP™™

Synthesis Netlist and Program Synthesis Netlist and Program SoftwareSoftware

Calcolatori Elettronici

Calcolatori Elettronici 2

SommarioSommario• Introduzione• SNAP: Interfaccia• I tools di SNAP: Panoramica• Progetti• Tools• Progetto gerarchico• La libreria SNAP100.SYM• Le equazioni• Esempi

Calcolatori Elettronici 3

IntroduzioneIntroduzione• SNAP e’ un pacchetto applicativo per la progettazione di circuiti

digitali utilizzando PLD della Philips• SNAP supporta diversi formalismi per la specifica di progetto

• Schematico OrCAD• Netlist in formato EDIF• Equazioni logiche testo• Equazioni di stato testo

• SNAP consente di combinare differenti modalita’ di specifica.

Calcolatori Elettronici 4

IntroduzioneIntroduzione• E’ possibile utilizzare SNAP per le seguenti funzioni:

• Creare, mostrare e modificare gli stimoli per la simulazione• Simulare le funzioni logiche ed il comportamento temporale• Determinare la copertura ai guasti per un dato insieme di ingressi• Generare i vettori di test• Generare la fuse map per un dispositivo PLD target• Estrarre la netlist di una realizzazione PLD per la simularne il

comportamento• Scaricare la fuse map ed i vettori di test sul programmatore di PLD

Calcolatori Elettronici 5

IntroduzioneIntroduzione• La generazione delle specifiche logiche del progetto e’

indipendente dal tipo di PLD.• Il collegamento ad un dato tipo di dispositivi puo’ essere

effettuato dopo la simulazione e la verifica del progetto.• I dispositivi supportati da SNAP sono del tipo:

• Programmable Macro Logic PML• Programmable Logic Sequencer PLS• Programmable Logic Array PLA• Programmable Array Logic PAL (Advanced Micro Device)

Calcolatori Elettronici 6

SNAP: InterfacciaSNAP: Interfaccia

4

7

9

10

12 14

1 3

2 5

6

13

16

minime opzioni richieste per specificare un progetto

8

11

15

Calcolatori Elettronici 7

II tools tools di SNAP di SNAP• Punti 1 e 2: ScCapture, NetGen

• Specifica, anche gerarchica, del progetto utilizzando il generatore dischematico (schematic capture) e successiva conversione in una netlistintermedia (.MAC).

• Punti 3, 4 e 5: Equation, Minimizer, NetConv• Specifica mediante equazioni logiche o di stato, che possono essere

eventualmente minimizzate, e successiva conversione in una netlistintermedia (.MAC).

• Il progetto puo’ essere realizzato combinando schematici edequazioni logiche.

• Parti differenti di progetto possono essere specificateseparatamente.

• Ogni parte del progetto diviene una macro riutilizzabile.

Calcolatori Elettronici 8

II tools tools di SNAP di SNAP• Punto 6: Merger

• Unisce netlist disgiunte dette macro (.MAC) in una singola netlist (.NET).

• Punto 7: SimNet• Converte la netlist principale in un formato binario da utilizzare per la

simulazione (.BIN).

• Punto 8: Waveforms• E’ un editor grafico per la creazione di segnali di ingresso per la

simulazione che vengono convertiti in un formato SCL - Simulation ControlLanguage (.SCL).

Calcolatori Elettronici 9

II tools tools di SNAP di SNAP• Punto 9: SimScl

• Simulatore della funzionalità logica e temporale del progetto facendo usodi segnali di ingresso precedentemente creati. Il risultato è salvato in unfile (.RES).

• Punto 10: Plot• Visualizzatore grafico dei risultati della simulazione.

• Punto 11: SimPrt• Interfaccia per la stampa dei risultati della simulazione (su file, stampate o

schermo).

Calcolatori Elettronici 10

II tools tools di SNAP di SNAP• Punto 12: SimFlt

• Simulatore in presenza di guasti (.FLT).• Riporta la percentuale di guasti che possono essere rilevati per un dato

insieme di configurazioni di segnali di ingresso. I segnali di test possonoessere specificati da un file ASCII o come forme d’onda.

• Punto 13: Compiler• Generatore della fuse map per la realizzazione del dispositivo dopo aver

selezionato il tipo di PLD ed aver specificato il nome dei segnali di I/Oassociati ad ogni piedino del dispositivo.

• Il progetto viene ottimizzato per il dispositivo selezionato, in formatostandard JEDEC (.JED).

• La percentuale di utilizzo viene mostrata a schermo e salvata (.USE).

Calcolatori Elettronici 11

II tools tools di SNAP di SNAP• Punto 14: ModGen

• Genera una netlist simulabile (.MOD) a partire dal tipo di PLD selezionato edalla fuse map.

• Punto 15: TestVector• Converte i vettori di test, costituiti dai segnali di ingresso ed i valori di

uscita corrispondenti, nel formato JEDEC.

• Punto 16: DPI• Scarica verso il programmatore di PLD, attraverso la porta seriale, i vettori

di test e la fuse map.• Il programmatore di una PLD utilizza la fuse map per programmare il

dispositivo ed i vettori di test per verificarlo.

Calcolatori Elettronici 12

ProgettiProgetti• SNAP consente di lavorare su di un progetto solo alla volta.• Un progetto e’ una realizzazione logica completa specificata in

termini di netlist o da un insieme di equazioni logiche e/o di stato• Più file sono associati ad un unico progetto e risiedono tutti in

uno stesso direttorio.• Progetti differenti possono essere combinati gerarchicamente

per dar origine ad un unico progetto utilizzando il Merger.• Tipicamente, un unico direttorio è utilizzato per contenere il

progetto top-level ed tutti i progetti lower-level ad esso correlato.• E’ buona norma tenere progetti non correlati in direttori differenti.

Calcolatori Elettronici 13

ProgettiProgetti• SNAP richiede il sistema operativo MS-DOS.• Posizionarsi nel direttorio relativo al progetto.• Invocare SNAP• Specificare il nome del progetto usando F3.• Utilizzare i tasti cursore per selezionare l’operazione desiderata,

quindi premere <invio> o F2 per invocare l’operazione, oppure<Esc> o F10 per annullare l’operazione.

• Utilizzare <Esc> o F10 per uscire da SNAP.

Calcolatori Elettronici 14

Esempio 1:Esempio 1: Half Adder Half Adder

• Utilizzando F3, definire il nome del progetto HADD1, quinditornare al menu principale.

• Viene creato automaticamente un file HADD1.EQN.• La tabella della verità di un half adder e’ mostrata di seguito:

In1 In2 Carry Sum

0 00 11 01 1

0 00 10 11 0

Calcolatori Elettronici 15

Esempio 1: Editing del file EQNEsempio 1: Editing del file EQN

• Descrizione:• Definizione delle equazioni logiche che descrivono la funzionalità del

dispositivo.

• Operazione: Equations• Formato ingresso: EQN• Formato uscita: EQN

@PINLIST@GROUPS@TRUTHTABLE@LOGIC EQUATIONS@INPUT VECTORS@OUTPUT VECTORS@STATE VECTORS@TRANSITIONS

Calcolatori Elettronici 16

Esempio 1: Editing del file EQNEsempio 1: Editing del file EQN

• @PINLIST: elenco dei segnali di ingresso ed uscita:

• @LOGIC EQUATIONS: elenco delle equazioni logiche:

@PINLIST In1 I; In2 I; Sum O; Carry O;

Le lettere I, O e B indicano rispettivamente ingressi, uscite esegnali bidirezionali.

@LOGIC EQUATIONS Sum = In1 :+: In2; Carry = In1 * In2;

Calcolatori Elettronici 17

ToolsTools:: Minimizzazione Minimizzazione

• Descrizione:• Minimizzazione delle equazioni logiche che descrivono la funzionalita’ del

dispositivo.

• Operazione: Minimizer• HIGH Elevata ottimizzazione• BEST Migliore ottimizzazione• LOW Bassa ottimizzazione

• Formato ingresso: EQN• Formato uscita: EQM• Premendo F8 mantenendo evidenziato Minimizer si attiva

l’editor sul file EQM.• Si noti che il Minimizer agisce solo sulle equazioni.

Calcolatori Elettronici 18

ToolsTools : Conversione in netlist : Conversione in netlist• Descrizione:

• Controlla le equazioni logiche e converte il formato in una netlist.• Si ottiene cosi’ una macro, riutilizzabile più volte in un progetto gerarchico.

• Operazione: NetConv• NORMAL• MINIMIZED

• Formato ingresso: EQN EQM EQJ EQQ• Formato uscita: MAC• In caso si verifichino errori utilizzare il tasto F4 per la

visualizzazione del file ERR contenente informazioni di errore.• Premendo F8 mantenendo evidenziato NetConv si attiva l’editor

sul file MAC.

Calcolatori Elettronici 19

ToolsTools : : Merging Merging di più netlist di più netlist• Descrizione:

• Combina le parti ed i livelli gerarchicamente differenti del progetto ecostruisce una netlist appiattita che non e’ caratterizzata per nessundispositivo specifico.

• Operazione: Merger• Formato ingresso: MAC• Formato uscita: NET• In caso si verifichino errori utilizzare il tasto F4 per la

visualizzazione del file ERR contenente informazioni di errore.• Premendo F8 mantenendo evidenziato Merger si attiva l’editor

sul file NET.• Gli elementi logici presenti nella netlist tipicamente non

coincidono con quelli del dispositivo target per cui il progettodovra’ essere ottimizzato e convertito in una nuova netlist.

Calcolatori Elettronici 20

ToolsTools : Preparazione simulazione : Preparazione simulazione• Descrizione:

• Converte la netlist del progetto in un file binario per la simulazione logicoe/o temporale ed assegna i ritardi di propagazione agli elementi logici delprogetto.

• Operazione: SimNet.• NETLIST Utilizza il file NET• MODEL Utilizza l’uscita prodotta da ModGen

• Formato ingresso: NET• Formato uscita: BIN SCL LESIM.SET• Il file SCL contiene alcuni segnali di ingresso (arbitrari)

modificabili con Waveforms.• Il file LESIM.SET contiene una lista dei parametri per la

simulazione.

Calcolatori Elettronici 21

ToolsTools : Preparazione simulazione : Preparazione simulazione• Descrizione:

• Consente di creare, modificae e salvare i segnali di stimolo da utilizzarecome ingresso ai simulatori logico, temporale e di guasti.

• Le forme d’onda sono modificabili a livello grafico.• Operazione: Waveforms• Formato ingresso: SCL• Formato uscita: SCL

Calcolatori Elettronici 22

ToolsTools : Preparazione simulazione : Preparazione simulazione

• Funzionalita’:• F7 comprime la scala del tempo• F8 espande la scala del tempo• ← , → si muove lungo l’asse del tempo• H, L inserisce un impulso alto (H) o basso (L), della durata di 20ns,

sulla traccia su cui e’ posizionato il cursore.• <Del> cancella• F9 menu: aggiunge una forma d’onda

copia una forma d’ondacancella una forma d’onda

rinomina un segnalevisualizza il periodo di clockspecifica il termine della simulazionesalva

• C la prima pressione ripete indefinitamente la forma d’onda tra iltempo zero ed il tempo corrente. La seconda pressione eliminatutta la forma d’onda ad eccezione del primo periodo.

Calcolatori Elettronici 23

ToolsTools : Simulazione : Simulazione• Descrizione:

• Simulazione logica e temporale del progetto.• Operazione: SimScl• Formato ingresso: BIN SCL• Formato uscita: RES• Funzionalita’:

• F5 durante una simulazione timing, consente di modificare alcuniparametri:Delay CalcualtionOne Time Slot Means

Calcolatori Elettronici 24

ToolsTools : Visualizzazione risultati : Visualizzazione risultati• Descrizione:

• Visualizza i risultati della simulazione logica e temporale.• Operazione: Plot• Formato ingresso: RES• Funzionalita’:

• F7 comprime la scala del tempo• F8 espande la scala del tempo• ← ,→ si muove lungo l’asse del tempo, 4 unita’ alla volta• F7, F8 modificano la scala dei tempi• <Ctrl> si muove lungo l’asse del tempo, 1 unita’ alla volta• F3 sposta l’origine dell’asse dei tempi• F4 annulla lo spostamento dell’asse dei tempi

Calcolatori Elettronici 25

ToolsTools : Stampa risultati : Stampa risultati• Descrizione:

• Stampa dei risultati della simulazione logica e temporale in forma, testualeo grafica.

• Operazione SimPrt• Alphanumeric Formato alfanumerico• Graphical Fromato grafico• Printer Stampante• Disk Disco• Screen Video

• Formato ingresso: RES

Calcolatori Elettronici 26

ToolsTools : Simulazione di guasti : Simulazione di guasti• Descrizione:

• Simula la funzionalita’ del progetto inserendo in esso dei guasti edeterminando quali guasti possono essere rilevati osservando le uscite.

• Lo scopo e’ trovare un vettore di test.• Operazione: SimFlt• Formato ingresso: BIN SCL• Formato uscita: FLT• Funzionalita’

• F5 Consente di modificare i parametri della simulazioneMode of Fault Simulation Exhaustive, DelayDelay Calculation Nominal, Worst, BestPotential Detected Threshold Off, 1, 10, 100, 1000

Calcolatori Elettronici 27

ToolsTools : Generazione fuse map : Generazione fuse map• Descrizione:

• Genera la fuse-map per il dispositivo selezionato dopo aver assegnato isegnali di ingresso e uscita ai piedini del dispositivo.

• Operazione: Compile• DevSelect Selezione di uno dei PLD disponibili• PinSelect Definizione della pinout• FuseMap Generazione della fuse map

• Formato ingresso: NET• Formato uscita: JED USE PIN• Il file JED e’ la fuse map.• Il file USE e’ un sommario dell’utilizzo del dispositivo.• Il file PIN contiene la pinout, ovvero la corrispondenza tra i

segnali ed i pin del dispositivo.

Calcolatori Elettronici 28

ToolsTools : Estrazione netlist : Estrazione netlist• Descrizione:

• Genera una nuova netlist o un nuovo insieme di equazioni logicheestraendole dalla sulla fuse-map ed utilizzando le le informazioni relativealle caratteristiche del dispositivo.

• Operazione: ModGen• Model Estrae una netlist dalla realizzazione sul dispostivo

selezionato (inclusi i buffer di I/O ed altri dispositivi).Genera un nuovo file BIN caratterizzato in tempo esovrascrive il vecchio file BIN.

• Equations: Estrae un nuovo insieme di equazioni dalla realizzazionesul dispostivo selezionato.

• Formato ingresso: JED UPD• Formato uscita: MOD opzione Model

EQJ opzione Equations

Calcolatori Elettronici 29

ToolsTools : Generazione vettori di test : Generazione vettori di test• Descrizione:

• Genera un nuovo file in formato JED che contiene i vettori di test per ildispositivo programmato.

• Operazione: TestVector• PLOT2VEC Converte i file PIN, MOD e RES in un file VEC.• GENERATOR Genera un .VEC.

• Formato ingresso: PIN MOD RES opzione Plot2Vecnessuno opzione Generator

• Formato uscita: VEC

Calcolatori Elettronici 30

ToolsTools : : Dowloading Dowloading• Descrizione:

• Scarica, sulla macchina per la programmazione dei dispositivi, facendouso della porta seriale, i file relativi al fuse map ed ai vettori di test.

• Operazione: DPI• Formato ingresso: JED VEC• Formato uscita: JWV

Calcolatori Elettronici 31

Progetto GerarchicoProgetto Gerarchico• E’ possibile realizzare un progetto gerarchico utilizzando OrCad.• OrCad consente di definire tutti i moduli presenti nella gerarchia.• Si procede bottom-up ovvero dal livello gerarchico più basso al

più alto.• Le operazioni da compiere sono:

• SNAP Si cambia il nome del progetto• SNAP Si invoca OrCad utilizzando ScCapture• OrCad Si definisce un dispositivo• SNAP Si genera la macro con NetGen

• Raggiunto il livello gerarchico piu’ alto, tutti i moduli vengonoassemblati utilizzando il Merger di SNAP.

Calcolatori Elettronici 32

Progetto GerarchicoProgetto Gerarchico• I comandi di OrCad per definire un modulo sono mostrati dalla

figura seguente:

delimita lo spazio della cella

definisce la piedinatura

definisce il nome del modulo

Place

Wire

Module Port

Junction

Sheet

Begin

End

Add Net

Name

delimita lo spazio della cella

connessioni

ingressi e uscite

contatti

Calcolatori Elettronici 33

Progetto GerarchicoProgetto Gerarchico• I comandi per utilizzare moduli di libreria sono mostrati nella

figura seguente:Get

Which library

Place

SNAP100.SYM

TTL.LIB

USER.LIB

...

posizionamento

Edit

Edit

...

Reference

Which Device

identifica il modulo

identifica il componente

Calcolatori Elettronici 34

Progetto GerarchicoProgetto Gerarchico• Le librerie standard sono utilizzabili senza alcun intervento

dell’utente.• E’ possibile costruire delle librerie personalizzate.• Le librerie sono file di testo che descrivono, secondo un

formalismo ben definito, i vari moduli che le compongono.• Le librerie vengono salvate in formato MLA• I file MLA generati dall’utente possono essere trasformati in

librerie utilizzabili compilandole con il comando LIB_COMP.EXEeseguibile da DOS.

• Le librerie compilate possono essere riconvertite in file leggibili emodificabili con il comando LIB_DCOMP.EXE eseguibile da DOS

Calcolatori Elettronici 35

Progetto GerarchicoProgetto Gerarchico• Il procedimento per sviluppare un progetto gerarchico

nell’ambiente SNAP è descritto di seguito.• I moduli presenti nella gerarchia si definiscono utilizzando il

meccanismo delle macro.• Partendo dal livello gerarchico più basso (non necessariamente)

e procedendo verso il livello più alto:• Si cambia il nome del progetto.• Si definisce con il tool MacSel il dispositivo.• Con il tasto F8 si modifica la struttura della cella facendo eventualmente

riferimento ad altre macro, definite in precedenza.• Raggiunto il livello gerarchico più alto, si combinano i vari moduli con il toolMerger.

Calcolatori Elettronici 36

Esempio 2:Esempio 2: Ripple Carry Adder Ripple Carry Adder• Si consideri ad esempio la realizzazione di un Full Adder Ripple

Carry a 4 bit.• La sua struttura e la sua descrizione sono:

CIN A1 B1 A2 B2 A3 B3 A4 B4

S1 S2 S3 S4 COUT

FA FA FA FA

MACROZ A4RC I(A3,A2,A1,A0,B3,B2,B1,B0, CIN) O(S3,S2,S1,S0,COUT)U1 FA (A0,B0,CIN) O(S0,COUT0)U2 FA (A1,B1,CIN0) O(S1,COUT1)U3 FA (A2,B2,CIN1) O(S2,COUT2)U4 FA (A3,B4,CIN2) O(S3,COUT) MEND

Calcolatori Elettronici 37

Esempio 2:Esempio 2: Ripple Carry Adder Ripple Carry Adder• Lo schema di un Full Adder e la sua descrizione sono:

MACROZ FA I(A,B,CIN) O(S,COUT)U1 HA I(A,B) O(TS,C1)U2 HA I(TS,CIN) O(S,C2)U3 OR2 I(C1,C2) O(COUT) MEND

A B CIN

COUT S

HA

HA

Calcolatori Elettronici 38

Esempio 2:Esempio 2: Ripple Carry Adder Ripple Carry Adder• Lo schema di un Half Adder e la sua descrizione sono:

MACROZ HA I(A,B) O(S,C)U1 INV I(A) O(NA)U2 INV I(B) O(NB)U3 AN2 I(A,NB) O(T1)U4 AN2 I(B,NA) O(T2)U5 OR2 I(T1,T2) O(S)U6 AN2 I(A,B) O(C) MEND

S

BA

COUT

Calcolatori Elettronici 39

Progetto GerarchicoProgetto Gerarchico• Un meccanismo alternativo per sviluppare progetti gerarchici

prevede:• Utilizzo di macro per i livelli alti della gerarchia• Definizione di equazioni per il livello più basso

• La procedura è la seguente:• Si definiscono i livelli alti della gerarchia secondo il metodo mostrato

nell’esempio precedente.• Si definiscono le equazioni dei moduli dell’ultimo livello gerarchico. Tali

moduli possono essere sia combinatori che sequenziali.• Si convertono i moduli cosi’ definiti in macro con il tool NetConv.• Raggiunto il livello gerarchico piu’ alto, si combinano i vari moduli con il

tool Merger.

Calcolatori Elettronici 40

Esempio 3:Esempio 3: Ripple Carry Adder Ripple Carry Adder• Le descrizioni dei vari livelli del Ripple Carry Adder divengono:

MACROZ A4RC I(A3,A2,A1,A0,B3,B2,B1,B0, CIN) O(S3,S2,S1,S0,COUT)U1 FA (A0,B0,CIN) O(S0,COUT0)U2 FA (A1,B1,CIN0) O(S1,COUT1)U3 FA (A2,B2,CIN1) O(S2,COUT2)U4 FA (A3,B4,CIN2) O(S3,COUT) MEND

MACROZ FA I(A,B,CIN) O(S,COUT)U1 HA I(A,B) O(TS,C1)U2 HA I(TS,CIN) O(S,C2)U3 OR2 I(C1,C2) O(COUT) MEND

@PINLIST A I; B I; S O; C O;@LOGIC EQUATIONS S = A :+: B; C = A * B;

Livello 2

Livello 1

Livello 0

Calcolatori Elettronici 41

Progetto GerarchicoProgetto Gerarchico• Tutti i meccanismi riportati in precedenza possono essere

combinati per formare un progetto gerarchico.• Le possibilità sono riassunte dallo schema seguente:

• Livello 0:• Schematico OrCad utilizzando i componenti di libreria• Macro SNAP• Equazioni

• Altri livelli:• Schematico OrCad utilizzando i componenti di libreria• Macro SNAP

Calcolatori Elettronici 42

La libreria SNAP100.SYMLa libreria SNAP100.SYM• Porte logiche:

• NA = Nand (NA2, NA3, …, NA11, NA16)• AN = And (AN2, AN3, …, AN11, AN16)• OR = Or (OR2, OR3, …, OR11, OR16)• NO = Nor (NO2, NO3, …, NO11, NO16)• INV = Not (INV)• EX = Xor (EX2)

• Celle di ingresso/uscita:• IN = ingresso diretto• NIN = ingresso complementato• OUT = uscita diretta• NOUT = uscita complementata• TOUT = uscita in tri-state diretta• TNOUT = uscita in tri-state complementata

Calcolatori Elettronici 43

La libreria SNAP100.SYMLa libreria SNAP100.SYM• Elementi sequenziali:

• LAD = Latch D• DFFR = Flip-flop D con reset• DFFS = Flip-flop D con set• DFFSR = Flip-flop D con set e reset

• Soft Macros:

Calcolatori Elettronici 44

Le equazioniLe equazioni• Il formato Equations di SNAP permette di descrivere equazioni

logiche e di stato• Le equazioni vengono salvate in file EQN• I file EQN sono organizzati secondo sezioni introdotte da parole

chiave precedute dal simbolo “@”:

@PINLIST@GROUPS@TRUTHTABLE@LOGIC EQUATIONS@INPUT VECTORS@OUTPUT VECTORS@STATE VECTORS@TRANSITIONS

Calcolatori Elettronici 45

Le equazioniLe equazioni• Regole sintattiche:

• Le quazioni terminano con un “;”• Ogni riga non deve superare i 128 caratteri• Spazi extra e linee vuote sono ignorati• Maiuscole e minuscole non vengono distinte• Gli identificatori devono iniziare con una lettera e possono contenere

caratteri alfanumerici e undescore• I commenti possono essere inseriti dovunque ed iniziano e terminano con

un “;”

Calcolatori Elettronici 46

Le equazioni: Le equazioni: @PINLIST@PINLIST

• Descrive la lista dei segnali di ingresso, uscita e bidirezionali.• Ingressi: <segnale> I• Uscite: <segnale> O• Segnali bidirezionali: <segnale> B

• Esempio:

@PINLIST a I; b I; Sum O; Carry O;

Calcolatori Elettronici 47

Le equazioni: Le equazioni: @GROUPS@GROUPS

• Definisce i nomi che devono essere gestiti come gruppi disegnali

• La notazione per la descrizione di BUS e’ la seguente:• <nome>[0..<N>] equivale a <nome0>, <nome1>, … , <nomeN>• Questa notazione puo’ essere utilizzata dovunque nel progetto, non

richiede una esplicita diciharazione e segue le stesse regole utilizzate perla definizione delle equazioni logiche.

• Ogni elemento del BUS può essere usato separatamente

• Esempio:

dataQ[0..7].rst = RESET;dataQ[4..7] = DATA[0..3];dataQ0 = InputData;

Calcolatori Elettronici 48

Le equazioni: Le equazioni: @GROUPS@GROUPS

• In molti casi e’ conveniente raggruppare segnali con funzionisimili ma con nomi differenti in un unico elemento.

• A differenza dei BUS, i gruppi di segnali devono essere dichiaratiin questa sezione

• Esempio:

@GROUPS G1 = [A,B,C,D]; gruppo di segnali G2 = E[0..3]; gruppo definito come bus G3 = [0,1,0]; gruppo definito con costanti G4 = [F,G,1,0]; gruppo definito con costanti e segnali G5 = [F,G,E[0..3]]; gruppo definito con segnali e BUS G6 = [G1, G2]; gruppo definito con gruppi

Calcolatori Elettronici 49

Le equazioni: Le equazioni: @GROUPS@GROUPS

• Ad un gruppo può essere assegnato un valore.• I valori possono essere in forma binaria (B) o esadecimale(H)• Esempio:

@GROUPS G1 = [A, B, C, D]: ... G1 = 6H; corrisponde a A=0, B=1, C=1, D=0; G1 = 1100B; corrisponde a A=1, B=1, C=0, D=0;

• Sui BUS e sui GRUPPI si possono effettuare operazioni piu’complesse delle semplici operazioni logiche

Calcolatori Elettronici 50

Le equazioni: Le equazioni: @GROUPS@GROUPS

• La tabella seguente riassume le operazioni sui BUS e GRUPPI

Operatore Descrizione Risultato Esempio= Assegnamento GRUPPO G1 = G2/ Complemento a 1 GRUPPO / G2* AND GRUPPO G1 * G2+ OR GRUPPO G1 + G2

Logiche

:+: XOR GRUPPO G1:+: G2== Uguale SEGNALE G1 == G2

>, <, >=, <= Maggiore, minore… SEGNALE G1 >= G2Relazionali!= Diverso SEGNALE G1!= G2- Complemento a 2 GRUPPO - G2- Sottrazione GRUPPO G1 – G2Aritmetiche# Addizione GRUPPO G1 # G2

Calcolatori Elettronici 51

Le equazioni: Le equazioni: @GROUPS@GROUPS

• In una operazione è possibile usare GRUPPI e SEGNALI:

A[1..3] = D[0..2] * In + B[7..9];

A1 = D0 * In + B7;A2 = D1 * In + B8;A3 = D2 * In + B9;

@LOGIC EQUATIONS MuxOut = a[0..3] * /select + b[0..3] * select; MusOut = a[0..3] * select==0 + b[0..3] * select==1;

equivale a:

• Esempio

Calcolatori Elettronici 52

Esempio 4: BCD - 7 segmentiEsempio 4: BCD - 7 segmenti• Encoder BCD per un display a sette segmenti

@GROUPS In = [x,y,z,w]; Seg = [a,b,c,d,e,f,g];@LOGIC EQUATIONS Seg = In==[0,0,0,0] * [1,1,1,1,1,1,0] + In==[0,0,0,1] * [0,1,1,0,0,0,0] + In==[0,0,1,0] * [1,1,0,1,1,0,1] + In==[0,0,1,1] * [1,0,0,1,1,1,1] + In==[0,1,0,0] * [0,1,1,0,0,1,1] + In==[0,1,0,1] * [1,0,1,1,0,1,1] + In==[0,1,1,0] * [0,0,1,1,1,1,1] + In==[0,1,1,1] * [1,1,1,0,0,0,0] + In==[1,0,0,0] * [1,1,1,1,1,1,1] + In==[1,0,0,1] * [1,1,1,0,0,1,1];

a

g

de c

bf

Calcolatori Elettronici 53

Le equazioni: Le equazioni: @TRUTHTABLE@TRUTHTABLE

• Specifica una tabella della verità• I valori consentiti sono:

• Segnali di ingresso: 1, 0, X (don’t care)• Segnali d’uscita: 0, 1, Z (alta impedenza)

• Esempio:

@TRUTHTABLE [a,b,c,d : A,B,C] 000X : ZZ1; 10XX : 100; 1100 : 101;

• I segnali in alta impedenza devono avere un segnale diabilitazione definito.

Calcolatori Elettronici 54

Le equazioni: Le equazioni: @LOGIC EQUATIONS@LOGIC EQUATIONS

• Definisce l’insieme delle equazioni logiche multi livello chedescrivono la funzionalità del dispositivo

• La forma generale di una equazione logica e’:

<segnale> = <espressione>

• Gli operatori disponibili sono

Operatore Descrizione Esempio/ Complemento a 1 / S2* AND S1 * S2+ OR S1 + S2

:+: XOR S1:+: S2

Calcolatori Elettronici 55

Le equazioni: Le equazioni: @LOGIC EQUATIONS@LOGIC EQUATIONS

• Gli elementi logici sequenziali disponibili sono:è consentito l’usodei seguenti elementi logici:• Flip-flop D• Flip-flop J-K• Flip-flop S-R• Buffer three-state

• Per utilizzare gli elementi sequenziali si aggiunge al nume delsegnale un opportuno suffisso:

<segnale>.<suffisso> = <espressione>

• Non esistono suffissi che indicano le uscite

Calcolatori Elettronici 56

Le equazioni: Le equazioni: @LOGIC EQUATIONS@LOGIC EQUATIONS

• La tabella che segue riassume i suffissi disponibili.

Suffisso Dispositivo Descrizione Attivo.D Flip-Flop D Ingresso D -.J Flip-Flop JK Ingresso J -.K Flip-Flop JK Ingresso K -.R Flip-Flop SR Ingresso R -.S Flip-Flop SR Ingresso S -.SET Flip-Flop generico Preset Basso.RST Flip-Flop generico Reset Basso.CLK Flip-Flop generico Clock -.OE Buffer three-state Output enable Alto.LD Latch Load -

Calcolatori Elettronici 57

Le equazioni: Le equazioni: @LOGIC EQUATIONS@LOGIC EQUATIONS

• La massa e l’alimentazione hanno i nomi predefiniti:• Vcc Massa 0 logico• GND Alimentazione 1 logico

• Il clock è per default collegato al clock globale.• Esempio:

@LOGIC EQUATIONS Q0.D = A * B; Q0.CLK = MCLK; Q0.RST = C; Q0.SET = D * E;

AB

DE

MCLK

C

Q0D Qpreset

clear

Calcolatori Elettronici 58

Le equazioni: Le equazioni: @LOGIC EQUATIONS@LOGIC EQUATIONS

• Nel caso di macchine a stati questa sezione viene utilizzata perspecificare i segnali di controllo ai flip-flop.

• Esempio:

@LOGIC EQUATIONS Q0.CLK=CLOCKA; Q1.CLK=CLOCKA; QO.RST=RESET; Q1.RST=RESET;

• I segnali di SET e RESET sono attivi bassi.• Per le macchine a stati, quando RESET e’ basso lo stato viene

forzato allo stato iniziale S0.

Calcolatori Elettronici 59

Le equazioni: Le equazioni: @INPUT VECTORS@INPUT VECTORS

• Definisce i vettori di ingresso.• Un vettore di ingresso è l’insieme dei valori (simboli) di ingresso

al dispositivo.• Esempi:

@INPUT VECTOR IN1 = A3*/A2*A1*A0; IN2 = /A3*/A2*/A1*/A0; IN3 = A3*A2*/A1*A0;

@INPUT VECTOR [A3,A2,A1,A0] IN1 = 1011 B; IN2 = 0000 B;

• I vettori di ingresso vengono usati per associare un nomesimbolico ai simboli di ingresso.

Calcolatori Elettronici 60

Le equazioni: Le equazioni: @OUTPUT VECTORS@OUTPUT VECTORS

• Definisce i vettori di uscita associati agli stati logici del sistema.• Un vettore di uscita è l’insieme dei valori di uscita del dispositivo

corrispondenti ad una condizione d’uscita.• Una condizione d’uscita è associata:

• Ad uno stato (Macchine di Moore).• Ad una combinazione ingresso-stato (Macchine di Mealy).

• Esempi:

@OUTPUT VECTOR OUT1 = O2*O1*O0; OUT2 = O2*/O1*/O0; OUT3 = /O2*O1*/O0;

@OUTPUT VECTOR [O2,O1,O0] OUT1=111B; OUT2=100B;

Calcolatori Elettronici 61

Le equazioni: Le equazioni: @OUTPUT VECTORS@OUTPUT VECTORS

• E’ possibile campionare le uscite con un tipo specifico di flip-flop.• Esempio:

• Il modo in cui sono realizzati i flip-flop dipende dalla lorodisponibilità nel dispositivo.

• Se assenti, vengono realizzati mediante porte NAND oppurefacendo uso di altri tipi (DFF).

@OUTPUT VECTOR [O1, O2, O3] SRFF OUT1=101 B; OUT2=110 B;

Calcolatori Elettronici

Le equazioni: Le equazioni: @STATE VECTORS@STATE VECTORS

• Specifica i vettori di stato.• I vettori di stato sono funzioni delle uscite dei flip-flop.• E’ possibile specificare il tipo di flip-flop che si desidera utilizzare

specificandolo dopo la dichiarazione del vettore di stato.• Esempi:

@STATE VECTOR ST1 = Y3*/Y2*Y1; ST2 = /Y3*/Y2*/Y1; ST3 = /Y3*Y2*/Y1;

@STATE VECTOR [Y3,Y2,Y1] SRFF ST1=101 B; ST2=000 B;

Calcolatori Elettronici

Le equazioni: Le equazioni: @TRANSITIONS@TRANSITIONS

• Specifica le cause ed gli effetti delle transizioni di stato.

• Si possono utilizzare i due costrutti equivalenti:• while-if-then-else• while-case-endcase

• Ogni istruzione specifica, per ogni stato:• Le transizioni mediante l’elenco dei possibili stati raggiungibili.• Le condizioni di ingresso che causano le transizioni.• Lo stato prossimo.• Le uscite (associate allo stato o alla transizione).

• SNAP consente di realizzare 4 differenti architetture.

Calcolatori Elettronici 64

Le equazioni: Macchine a statiLe equazioni: Macchine a stati• Macchina di Moore con registri sulle uscite

• Le uscite provengono dai flip-flop e sono coincidono con le configurazionidi stato.

• Macchina di Moore senza registri sulle uscite• Le uscite provengono dalla rete combinatoria funzione del solo stato.

• Macchina di Mealy con registri sulle uscite• Le uscite primarie sono quelle della rete combinatoria funzione dello stato

e degli ingressi, campionate.

• Macchina di Mealy senza registri sulle uscite• Le uscite primarie sono quelle della rete combinatoria funzione dello stato

e degli ingressi, campionate

Calcolatori Elettronici 65

Le equazioni: Macchine a statiLe equazioni: Macchine a stati• Nella descrizione dei costrutti per la specifica di macchine a stati

finiti, si farà uso dei seguenti termini:• stato presente, stato prossimo

• Uno degli stati definiti nella sezione @STATE VECTORS

• ingresso• Un vettore di ingresso definito nella sezione @INPUT VECTORS• Un segnale di ingresso definito nella @PINLIST• Un segnale interno presente nella sezione @LOGIC EQUATION• Una espressione logica dei precedenti

• uscita• Una delle uscite definite nella sezione @OUTPUT VECTORS

Calcolatori Elettronici 66

Le equazioni: Macchine a statiLe equazioni: Macchine a stati• Macchina di Moore con registri sulle uscite

WHILE [stato presente] IF [ingresso] THEN [stato prossimo] IF [ingresso] THEN [stato prossimo] ... ELSE [stato prossimo]

Funzione di statoprossimo

Registri distato

ingressiuscite

clock

Calcolatori Elettronici 67

Le equazioni: Macchine a statiLe equazioni: Macchine a stati• Macchina di Moore con registri sulle uscite

WHILE [stato presente]CASE [ingresso] :: [stato prossimo] [ingresso] :: [stato prossimo] ... ELSE [stato prossimo]ENDCASE

Funzione di statoprossimo

Registri distato

ingressiuscite

clock

Calcolatori Elettronici 68

Le equazioni: Macchine a statiLe equazioni: Macchine a stati• Macchina di Moore senza registri sulle uscite

WHILE [stato presente] WITH [uscita] IF [ingresso] THEN [stato prossimo] IF [ingresso] THEN [stato prossimo] ... ELSE [stato prossimo]

Funzione di statoprossimo

Registri distato

ingressiuscite

clock

Funzione diuscita

Calcolatori Elettronici 69

Le equazioni: Macchine a statiLe equazioni: Macchine a stati• Macchina di Moore senza registri sulle uscite

WHILE [stato presente] WITH [uscita]CASE [ingresso] :: [stato prossimo] [ingresso] :: [stato prossimo] ... ELSE [stato prossimo]ENDCASE

Funzione di statoprossimo

Registri distato

ingressiuscite

clock

Funzione diuscita

Calcolatori Elettronici 70

Le equazioni: Macchine a statiLe equazioni: Macchine a stati• Macchina di Melay con registri sulle uscite

WHILE [stato presente] IF [ingresso] THEN [stato prossimo] WITH [uscita] IF [ingresso] THEN [stato prossimo] WITH [uscita] ... ELSE [stato prossimo] WITH [uscita]

Funzione di statoprossimo

Registri distato

ingressiuscite

clock

Funzione diuscita

Registri diuscita

Calcolatori Elettronici 71

Le equazioni: Macchine a statiLe equazioni: Macchine a stati• Macchina di Melay con registri sulle uscite

WHILE [stato presente]CASE [ingresso] :: [stato prossimo] WITH [uscita] [ingresso] :: [stato prossimo] WITH [uscita] ... ELSE [stato prossimo] WITH [uscita]ENDCASE

Funzione di statoprossimo

Registri distato

ingressiuscite

clock

Funzione diuscita

Registri diuscita

Calcolatori Elettronici 72

Le equazioni: Macchine a statiLe equazioni: Macchine a stati• Macchina di Melay generale (senza registri sulle uscite)

WHILE [stato presente] IF [ingresso] WITH [uscita] THEN [stato prossimo] IF [ingresso] WITH [uscita] THEN [stato prossimo] ... ELSE [stato prossimo] WITH [uscita]

Funzione di statoprossimo

Registri distato

ingressiuscite

clock

Funzione diuscita

Calcolatori Elettronici 73

Le equazioni: Macchine a statiLe equazioni: Macchine a stati• Macchina di Melay generale (senza registri sulle uscite)

WHILE [stato presente]CASE [ingresso] WITH [uscita] :: [stato prossimo] [ingresso] WITH [uscita] :: [stato prossimo] ... ELSE [stato prossimo] WITH [uscita]ENDCASE

Funzione di statoprossimo

Registri distato

ingressiuscite

clock

Funzione diuscita

Calcolatori Elettronici 74

Esempio 5: Macchina di Esempio 5: Macchina di MooreMoore• Diagramma degli stati e codifica

RESET RESET

RESET

00

0

0

1

1

1

1

S0 S1

S2S3

S0 00S1 01S2 10S3 11

Stato Codifica

Calcolatori Elettronici 75

Esempio 5: Macchina diEsempio 5: Macchina di Moore Moore• La specifica in SNAP e’ la seguente:

@PINLISTseriale I;uscita[1..2] O;

CLK I;RESET I;

@LOGIC EQUATIONSFF0.rst = RESET;FF1.rst = RESET;

(continua)

Ingressi del circuito. In base a questi ingressi vengono costruiti gli input vectors.

Clock e segnale di reset. Il segnale di reset deve esserespecificato esplicitamente nel file di stimoli.

Condizioni di reset. I segnali FF0 ed FF1 sono i segnaliche rappresentano lo stato.

Calcolatori Elettronici 76

Esempio 5: Macchina diEsempio 5: Macchina di Moore Moore

@INPUT VECTORS[seriale]zero = 0 B;uno = 1 B;

@OUTPUT VECTORS[uscita1, uscita2]init = 00 B;run = 10 B;ok = 11 B;

@STATE VECTORS[FF1,FF0]s0 = 00 B;s1 = 01 B;s2 = 10 B;s3 = 11 B;

(continua)

Ai valori logici 0 ed 1 vengono assegnati i nomi simbolici‘zero’ ed ‘uno’, rispettivamente.

Ai valori logici 00, 01 ed 11 vengono assegnati i nomi simbolici ‘init’, ‘run’ e ‘ok’, rispettivamente. Questi nomisaranno usati per la generazione delle uscite.

Agli stati viene assegnato un nome simbolico (s0, … , s3)ed una codifica binaria. Questi nomi saranno usati perla generazione della funzione di stato prossimo.

Calcolatori Elettronici 77

Esempio 5: Macchina diEsempio 5: Macchina di Moore Moore

@TRANSITIONSWHILE[s0] WITH [init] IF[zero] THEN [s0] IF[uno] THEN [s1]

WHILE[s1] WITH [run] IF[zero] THEN [s1] IF[uno] THEN [s2]

WHILE[s2] WITH [run] IF[zero] THEN [s3] IF[uno] THEN [s2]

WHILE[s3] WITH [ok] IF[zero] THEN [s3] IF[uno] THEN [s0]

Per ogni stato ed in base alle condizioni di ingresso e diuscita, viene assegnato lo stato prossimo.La prima linea indica lo stato presente ‘s0’ ed il valore dell’uscita ‘init’.La seconda indica che lo stato prossimo, quando l’ingresso vale ‘zero’, e’ ‘s0’.La terza indica che lo stato prossimo, quando l’ingressovale ‘uno’, e’ ‘s1’.

Calcolatori Elettronici 78

Esempio 5: Macchina diEsempio 5: Macchina di Moore Moore• File degli stimoli

Aggiunto a mano.E’ attivo basso.

Clock di sistema.

Calcolatori Elettronici 79

Esempio 5: Macchina diEsempio 5: Macchina di Moore Moore• Risultato della simulazione

Stato ed uscite.

Calcolatori Elettronici 80

Esempio 5: Macchina diEsempio 5: Macchina di Moore Moore• Compilazione (fasi 1 e 2):

• Il circuito contiene dei FF che, per default, sono di tipo JK con reset.• Il dispositivo da utilizzare e’ il PLC42VA12

Calcolatori Elettronici 81

Esempio 5: Macchina diEsempio 5: Macchina di Moore Moore• Compilazione (fase 3)

• Resource Summary

Sono stati usati due flip-flop JK con reset.

Calcolatori Elettronici 82

Esempio 6: Macchina di Esempio 6: Macchina di MelayMelay• Descrizione funzionale:

• Da tastiera si introduce una sequenza numerica• La sequenza di attivazione e’ 091827• Sono presenti due tasti uno di conferma ed uno di reset

• La pressione del tasto di reset porta nello stato iniziale.• La pressione simultanea di un numero compreso tra 0 e 9 e del tasto di

conferma può modificare lo stato.• Se il valore introdotto non appartiene alla sequenza si torna allo stato

iniziale.• Le uscite sono 6 ed assumono le seguenti configurazioni:

Valore Significato Valore Significato000000 inattivo 111111 ok000001 attivo1 000010 attivo2000100 attivo3 001000 attivo4010000 attivo5 100000 attivo6

Calcolatori Elettronici 83

Esempio 6: Macchina diEsempio 6: Macchina di Melay Melay• Rappresentazione schematica:

Priority Encoder(BCD)

tastiera[9..0]Riconoscitore 091827

Mealy con latch

Output Decoder

tastiera10

tastiera11

Enter

Reset

OUT[5..0]

BCD[2..0]

Calcolatori Elettronici 84

Esempio 6: Macchina diEsempio 6: Macchina di Melay Melay• Diagramma degli stati del riconoscitore:

S0 S1

/Enter - 000 Zero * Enter - 001

S2

Nove * Enter - 010

/Enter - 001

/Enter - 011S3

Uno * Enter - 011

S4S5

S7

S6

Otto * Enter - 100Sette * Enter - 110

Due * Enter - 101

Per ogni ingresso - 111

/Enter - 100/Enter - 101

/Enter - 110

Per ogni ingresso - 111 /Enter - 010

Reset - 000In tutti gli altri casi

Calcolatori Elettronici 85

Esempio 6: Macchina diEsempio 6: Macchina di Melay Melay• La specifica in SNAP è la seguente:

@PINLISTTastiera[9..0] I;Tastiera10 I;Tastiera11 I;

OUT[5..0] O;

CLK I;

(continua)

Ingressi primari. La tastiera genera sequenze di bit dacodificare secondo uno schema a priorità.

Uscite primarie

Clock di sistema

Calcolatori Elettronici 86

Esempio 6: Macchina diEsempio 6: Macchina di Melay Melay

@TRUTHTABLE[Tastiera[9..0]:BCD[3..0]]1XXXXXXXXX:1001;01XXXXXXXX:1000;001XXXXXXX:0111;0001XXXXXX:0110;00001XXXXX:0101;000001XXXX:0100;0000001XXX:0011;00000001XX:0010;000000001X:0001;0000000001:0000;0000000000:1111;

(continua)

Tabella della verità per la generazione del codice BCDrelativo agli ingressi da tastiera. Il codice 1111, che nonè significativo in BCD, è riservato al tasto Enter.

Calcolatori Elettronici 87

Esempio 6: Macchina diEsempio 6: Macchina di Melay Melay

[uscita[2..0]:OUT[5..0]]000:000000;001:000001;010:000010;011:000100;100:001000;101:010000;110:100000;111:111111;

@LOGIC EQUATIONSd0.rst = /Tastiera11;d1.rst = /Tastiera11;d2.rst = /Tastiera11;

uscita0.rst = /Tastiera11;uscita1.rst = /Tastiera11;uscita2.rst = /Tastiera11;

(continua)

Tabella della verità per la generazione delle uscite primarie a partire dallo stato della macchina di Melay.

Reset dei registri di stato della machina a stati. Il segnale di reset à attivo basso e quindi va negato.

Reset dei registri di uscita della macchina a stati.

Calcolatori Elettronici 88

Esempio 6: Macchina diEsempio 6: Macchina di Melay Melay

@INPUT VECTORS[BCD[3..0]]zero = 0000B;uno = 0001B;due = 0010B;tre = 0011B;quattro = 0100B;cinque = 0101B;sei = 0110B;sette = 0111B;otto = 1000B;nove = 1001B;

(continua)

Vettore di ingresso della macchina a stati.

Calcolatori Elettronici 89

Esempio 6: Macchina diEsempio 6: Macchina di Melay Melay

@OUTPUT VECTORS[uscita[2..0]]disattivo = 000B;attivo1 = 001B;attivo2 = 010B;attivo3 = 011B;attivo4 = 100B;attivo5 = 101B;attivo6 = 110B;OK = 111B;

(continua)

Vettore di uscita della macchina a stati.

Calcolatori Elettronici 90

Esempio 6: Macchina diEsempio 6: Macchina di Melay Melay

@STATE VECTORS[d2,d1,d0]s0 = 000B;s1 = 001B;s2 = 010B;s3 = 011B;s4 = 100B;s5 = 101B;s6 = 110B;s7 = 111B;

(continua)

Vettore di stato della macchina a stati. I segnali d2, d1 e d0 sono i flip-flop.

Calcolatori Elettronici 91

Esempio 6: Macchina diEsempio 6: Macchina di Melay Melay

@TRANSITIONSWHILE[s0] IF [zero*Tastiera10] THEN [s1] WITH [attivo1] ELSE [s0]WHILE[s1] IF [nove*Tastiera10] THEN [s2] WITH [attivo2] IF [/Tastiera10] THEN [s1] WITH [attivo1] ELSE [s0]WHILE[s2] IF [uno*Tastiera10] THEN [s3] WITH [attivo3] IF [/Tastiera10] THEN [s2] WITH [attivo2] ELSE [s0]WHILE[s3] IF [otto*Tastiera10] THEN [s4] WITH [attivo4] IF [/Tastiera10] THEN [s3] WITH [attivo3] ELSE [s0]

(continua)

Pressionecontemporaneadei tasti ‘Enter’ e‘Zero’.

Calcolatori Elettronici 92

Per ogni ingresso

Esempio 6: Macchina diEsempio 6: Macchina di Melay Melay

WHILE[s4] IF [due*Tastiera10] THEN [s5] WITH [attivo5] IF [/Tastiera10] THEN [s4] WITH [attivo4] ELSE [s0]WHILE[s5] IF [sette*Tastiera10] THEN [s6] WITH [attivo6] IF [/Tastiera10] THEN [s5] WITH [attivo5] ELSE [s0]WHILE[s6] IF [] THEN [s6] WITH [OK]

Calcolatori Elettronici 93

Esempio 6: Macchina diEsempio 6: Macchina di Melay Melay• File per la simulazione (.SCL)P TASTIERA11, TASTIERA10, TASTIERA9, TASTIERA8, TASTIERA7, TASTIERA6,# TASTIERA5, TASTIERA4, TASTIERA3, TASTIERA2, TASTIERA1, TASTIERA0,# CLK, VCC, OUT[5..0] PCO S 1 (220, 1920, 2020, 10000580, ETC) TASTIERA11 S 0 (340, 2200, 2460, 10000980, ETC) TASTIERA10 S 0 (660, 820, 10000160, ETC) TASTIERA9 S 0 (1060, 1200, 10000140, ETC) TASTIERA8 S 0 (1460, 1560, 10000100, ETC) TASTIERA7 S 0 (10000000, ETC) TASTIERA6 S 0 (10000000, ETC) TASTIERA5 S 0 (10000000, ETC) TASTIERA4 S 0 (10000000, ETC) TASTIERA3 S 0 (1260, 1360, 10000100, ETC) TASTIERA2 S 0 (880, 1040, 2660, 3880, 5080, 6280) TASTIERA1 S 0 (460, 640, 2240, 2600) TASTIERA0 S 0 (100, 200, ETC) CLK S 1 (7200) VCC SU time = 7200 F

Indica che i segnali da OUT5ad OUT0 devono esserevisualizzati sotto forma di bus.

Calcolatori Elettronici 94

Esempio 6: Macchina diEsempio 6: Macchina di Melay Melay• Risultato della simulazione:

Rappresentazione esadecimale delbus OUT[5..0]

Calcolatori Elettronici 95

Esempio 7: Macchine interagentiEsempio 7: Macchine interagenti• Macchine a stati interagenti

T0 T1

T2

Attivo / due

RESET

Inattivo / zeroAttivo / zero

Inattivo / zero

Attivo /uno

Inattivo /uno

RESET

seriale RESET

control

count[0..1]

S0/0 S1/0

S3/1 S2/0

Per ogni ingresso

RESET

seriale /seriale seriale

/seriale

/seriale

RESET + /seriale

Codifica Nome simbolico 0 Inattivo 1 Attivo FSM 1

FSM 2

Calcolatori Elettronici 96

Esempio 7: Macchine interagentiEsempio 7: Macchine interagenti• Specifica in SNAP@PINLISTseriale I;count[0..1] O;

CLK I;RESET I;

@LOGIC EQUATIONS“Reset della FSM 1”FF0_1.RST = RESET;FF1_1.RST = RESET;

“Reset della FSM 2”FF0_2.RST = RESET;FF1_2.RST = RESET;

(continua)

Ingressi ed uscite primari.

Reset della FSM 1

Reset della FSM 1

Calcolatori Elettronici 97

Esempio 7: Macchine interagentiEsempio 7: Macchine interagenti@OUTPUT VECTORS“Uscita della FSM 1”[control]Inattivo = 0 B;Attivo = 1 B;

“Uscita della FSM 2”[count0, count1]zero = 00 B;uno = 01 B;due = 10 B;

(continua)

Uscite simboliche della FSM 1.Queste condizioni vengonousate come ingressi per laFSM 2.

Uscite simboliche della FSM 2.Queste condizioni sono leuscite primarie del circuito.

Calcolatori Elettronici 98

Esempio 7: Macchine interagentiEsempio 7: Macchine interagenti@STATE VECTORS”Codifica degli stati della FSM 1"[FF1_1, FF0_1] SRFFRs0 = 00 B;s1 = 01 B;s2 = 10 B;s3 = 11 B;

”Codifica degli stati della FSM 2"[FF1_2, FF0_2] DFFRt0 = 00 B;t1 = 01 B;t2 = 10 B;

(continua)

Flip-flop SR con reset

Flip-flop D con reset

Calcolatori Elettronici 99

Esempio 7: Macchine interagentiEsempio 7: Macchine interagenti@TRANSITIONS”Transizioni della FSM 1 (Moore)"WHILE [s0] WITH [Inattivo] IF [seriale] THEN [s0] IF [/seriale] THEN [s1]

WHILE [s1] WITH [Inattivo] IF [seriale] THEN [s1] IF [/seriale] THEN [s2]

WHILE [s2] WITH [Inattivo] IF [seriale] THEN [s0] IF [/seriale] THEN [s3]

WHILE [s3] WITH [Attivo] IF [/seriale + seriale] THEN [s0]

(continua)

I valori ‘Inattivo’ e ‘Attivo’sono associati al segnale‘control’; quest’ultimo èuscita di FSM 1 e ingressodi FSM 2.

Calcolatori Elettronici 100

Esempio 7: Macchine interagentiEsempio 7: Macchine interagenti”Transizioni della FSM 2 (Melay)"WHILE [t0] IF [control] WITH [zero] THEN [t1] IF [/control] WITH [zero] THEN [t0]

WHILE [t1] IF [control] WITH [uno] THEN [t2] IF [/control] WITH [zero] THEN [t1]

WHILE [t2] IF [control] WITH [due] THEN [t0] IF [/control] WITH [uno] THEN [t2]

Il segnale ‘control’, uscitadella FSM 1, pilota la FSM 2.

I valori simbolici ‘zero’, ‘uno’ e‘due’ sono le uscite primaredel circuito.Tali valori sono assegnati alsegnale ‘count[0..1]’.

Calcolatori Elettronici 101

Esempio 8: FSMDEsempio 8: FSMD• Procedura (OCCAM II)

• Architettura:• è costituita da una unità di controllo (FSM) e da una sezione per

l’elaborazione dei dati (DATA PATH)• HP: una sola unità funzionale (una sola ALU)

WHILE (true)SEQ

PARDATO1 ? aDATO2 ? b

c:=c+a+b

Canali:dati da 4 bit;un flag segnala che il dato è pronto.

Calcolatori Elettronici 102

Esempio 8: FSMDEsempio 8: FSMD• Architettura

Unità di

Controllo

Unità di

Controllo

Unità di

Elaborazione

Unità di

Elaborazione

Bus

Test

Controllo

Calcolatori Elettronici 103

Esempio 8: FSMDEsempio 8: FSMD• Scheduling

• Servono 3 registri: uno per a, uno per b ed uno per c• il risultato temporaneo viene memorizzato in uno dei registri presenti

(questo giustifica la presenza di due segnali β).

ba

+

+

c

Passo di duratanon definita

Risualtoparziale

α, β1, β2

β1, β2, δ

δ, γ

Segnali dicontrollo

Calcolatori Elettronici 104

Esempio 8: FSMDEsempio 8: FSMD• Data Path

Registro 1 Registro 2 Registro 1

+

αβ1

β2 γ

δ

0

0

0 0

0

Calcolatori Elettronici 105

Esempio 8: FSMDEsempio 8: FSMD• Unità di Controllo (FSM)

S0

/(flaga+flagb)

S1 - αS2 - β1, β2

flagaflagb

/flaga /flagb

S4 - α

flaga

S3 - β1, β2

flagb

S5 - /δ, /β1, β2

S6 - δ, δγ

ba

+

+

c

Passo di duratanon definita

Risualtoparziale

α, β1, β2

β1, β2, δ

δ, γ

Segnali dicontrollo

Quando non specificati, i segnali Alfa, Beta2 e Gammadevono assumere valore 0 (non si memorizza alcun valore)

Calcolatori Elettronici 106

Esempio 8: FSMD - DataEsempio 8: FSMD - Data Path Path• Multiplexer 2 to 1 (MUX2TO1)

Calcolatori Elettronici 107

Esempio 8: FSMD - Data Esempio 8: FSMD - Data PathPath• Multiplexer 8 to 4 (MUX8TO4)

Calcolatori Elettronici 108

Esempio 8: FSMD - DataEsempio 8: FSMD - Data Path Path• REG4

Calcolatori Elettronici 109

Esempio 8: FSMD - DataEsempio 8: FSMD - Data Path Path• Multiplexer e Registro (REGMUX)

• simulazione

Calcolatori Elettronici 110

Esempio 8: FSMD - DataEsempio 8: FSMD - Data Path Path• Adder (ADDER4)

@PINLISTIa[0..3] I;Ib[0..3] I;S[0..3] O;

@LOGIC EQUATIONSS0=Ia0:+:Ib0;R0=Ia0*Ib0;

S1=Ia1:+:Ib1:+:R0;R1=(Ia1:+:Ib1)*R0+Ia1*Ib1;

S2=Ia2:+:Ib2:+:R1;R2=(Ia2:+:Ib2)*R1+Ia2*Ib2;

S3=Ia3:+:Ib3:+:R2;

Calcolatori Elettronici 111

Esempio 8: FSMD - DataEsempio 8: FSMD - Data Path Path• Data Path (DATAPATH)

Calcolatori Elettronici 112

Esempio 8: FSMD - Esempio 8: FSMD - Macchina a StatiMacchina a Stati

• Unità di Controllo (UC)@PINLISTFlagA I;FlagB I;Reset I;Clock I;

Alfa O;Beta1 O;Beta2 O;Gamma O;Delta O;

@LOGIC EQUATIONSst0.RST=Reset;st1.RST=Reset;st2.RST=Reset;st0.CLK=Clock;st1.CLK=Clock;st2.CLK=Clock;

@OUTPUT VECTORS[Alfa,Beta1,Beta2,Gamma,Delta]S0_out= 0-00-b;S14_out=1-00-b;S23_out=0110-b;S5_out= 00100b;S6_out= 0-011b;

@STATE VECTORS[st0,st1,st2]S0=000b;S1=001b;S2=010b;S3=011b;S4=100b;S5=101b;S6=110b;@TRANSITIONSWhile [S0] with [S0_out] If[/(FlagA+FlagB)] Then [S0] If[FlagA] Then [S1] If[FlagB] Then [S2]While [S1] with [S14_out] If[/FlagB] Then [S1] If[FlagB] Then [S3]While [S2] with [S23_out] If[/FlagA] Then [S2] If[FlagA] Then [S4]While [S3] with [S23_out] If[] Then [S5]While [S4] with [S14_out] If[] Then [S5]While [S5] with [S5_out] If[] Then [S6]While [S6] with [S6_out] If[] Then [S0]

Calcolatori Elettronici 113

Esempio 8: FSMDEsempio 8: FSMD• Unità di Controllo con Unità di Elaborazione (FSMD)