struttura pal gal - Itis Leonardo da Vinci – Pisa

Transcript

struttura pal gal - Itis Leonardo da Vinci – Pisa
PAL GAL PLA, PLD dispositivi logici programmabili
PAL = programmable array logic (national, amd) PALCE (texas instruments), GAL = generic array logic (lattice,
atmel). Nomi diversi per gli stessi dispositivi di diversi produttori. Fanno parte dei PLD (programmable logic device),
insieme alle eprom, ai PLA (programmable logic array, più flessibili delle pal, e agli FPGA (field programmable gate
array, assai più complessi e programmabili sul target). Sono insiemi più o meno grandi di AND, OR, NOT, FLIP-FLOP
D-edge triggered e porte tri-states (negli fpga anche registri, sommatori e addirittura CPU) variamente connettibili fra
loro (e riconfiguabili) per mezzo di "fusibili" di silicio, come le eprom delle quali sono "cugine" (nelle eprom i fusibili
sono fra gli and e gli or (fatte coi diodi) e non in ingresso agli or). Si possono implementare reti combinatori e/o (nei
modelli che contengono Flip-Flop) sequenziali. La programmazione si effettua scrivendo un file di testo (pds
programming description) che contiene le equazioni logiche e le transizioni di stato (per le reti sequenziali). Il file viene
poi tradotto con un apposito software (silicon compiler) in una mappa di programmazione dei fusibili (jed, jedec file)
che viene caricata in un apposito programmatore detto GALEP (gal eprom programmer), o comunque
programmatore universale, per mezzo di un PC. Si noti che anche se viene utilizzato il termine "programmazione", il
file che viene caricato all'interno del dispositivo non è un programma ma una mappa di connessioni. I vantaggi sono:
compattezza, si può racchiudere una logica complessa in un unico chip; riconfigurabilità; nei nuovi modelli bassi
consumi e tensioni di alimentazione; Minor spreco di silicio rispetto alle eprom se si vuole implementare una tabella di
verità o di stato "sparsa", con molti non specificati. Convenienti rispetto ai microcontrollori se le applicazioni non sono
troppo complesse. I dispositivi vengono venduti in varie taglie, a seconda di numero di ingressi, uscite, flip-flop. Nelle
figure, alcuni dispositivi, anziani, ma sufficientemente semplici per la comprensione.
and a 32 ingressi
Matrice di connessioni programmabili
Or a 8 ingressi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
; file ITI1.pds: trasforma una pal 16L8 o 16V8 in un decoder 3 a 8; esempio di implementazione di logica combinatoria
; Tutto cio' che viene dopo il carattere ; e' un commento, cioe' non e' strettamente necessario, e' stato inserito solo per fornire spiegazioni.
; Il silicon compiler utilizzato è il PALASM 5(PAL assembler) della AMD. Le parole chiave del PALASM sono scritte in maiuscolo.
; Il PALASM è obsoleto ma veloce, di poco ingombro e comprensibile.
; Dichiarazione del titolo del progetto, modello del chip, autore, data di creazione e altre informazioni per identificare il progetto.
TITLE decodificatore da 3 ad 8 ; titolo
PATTERN a
; Pattern e Revision identificano
REVISION 2.0
; la versione del progetto
AUTHOR Domenico Iraca'
COMPANY Iti Pisa
DATE 23/11/2014
CHIP decoder PAL16L8
Indica blocco fondamentale
; PAL16L8 e' un chip della Advanced Micro Device.
; Assegnazione dei segnali ai PIN
;
; Formato: PIN numero_pin nome_segnale tipo_segnale commento
PIN
PIN
PIN
PIN
PIN
PIN
PIN
PIN
PIN
PIN
PIN
PIN
PIN
2
3
4
10
12
13
14
15
16
17
18
19
20
X
Y
Z
GND
A
B
C
D
E
F
G
H
VCC
;
COMBINATORIAL; input COMBINATORIAL significa che il segnale è di tipo combinatorio
COMBINATORIAL; input
COMBINATORIAL; input
; alimentazione. GND
COMBINATORIAL; output
COMBINATORIAL; output
COMBINATORIAL; output
COMBINATORIAL; output
COMBINATORIAL; output
COMBINATORIAL; output
COMBINATORIAL; output
COMBINATORIAL; output
; alimentazione. VCC
Equazioni Logiche
EQUATIONS
; / = Negazione logica (not), * = AND, + = OR :+: = XOR
A = /X * /Y * /Z
B = /X * /Y * Z
C = /X * Y * /Z
D = /X * Y * Z
E = X * /Y * /Z
F = X * /Y * Z
G = X * Y * /Z
H= X* Y* Z
; riconosce 000 : 0
; riconosce 001 : 1
; riconosce 010 : 2
; riconosce 011 : 3
; riconosce 100 : 4
; riconosce 101 : 5
; riconosce 110 : 6
; riconosce 111 : 7
;SIMULATION ; sezione di simulazione (opzionale), per la creazione di grafici temporali per la verifica del funzionamento
TRACE_ON X Y Z A B C D E F G H
SETF /X /Y /Z
SETF /X /Y Z
SETF /X Y /Z
SETF /X Y Z
SETF X /Y /Z
SETF X /Y Z
SETF X Y /Z
SETF X Y Z
TRACE_OFF
;
file ITI2.pds: trasforma una pal 16R8 o 16V8 in un contatore up/down modulo 8; esempio di implementazione di logica sequenziale
TITLE CONTATORE Up Down Modulo 8
AUTHOR Domenico Iraca'
COMPANY ITI Pisa
DATE 23/11/2014
CHIP Sequence PAL16V8 ; modello chip; devo usarne ovviamente uno che abbia quanto meno un numero di FF sufficienti
;
PIN
PIN
PIN
PIN
PIN
PIN
PIN
1
2
10
12
13
14
20
ASSEGNAZIONE SEGNALI AI VARI PIN
CLK
COMBINATORIAL; INPUT
UD
COMBINATORIAL; INPUT; UD = 1 up, UD = 0 down.
GND
; alim. GND
Q0
REGISTERED ; OUTPUT
Q1
REGISTERED ; OUTPUT
Q2
REGISTERED ; OUTPUT
VCC
; alim. VCC
; REGISTERED significa che l'uscita in questione viene da un registro D sincronizzato da CLK che e' il clock.
;
DEFINIZIONE MACCHINA A STATI FINITI
STATE
; quello che segue e' la definizione dell' automa, la tabella di stato
MOORE_MACHINE
; macchina di MOORE; è la sola che abbiamo visto, ma cìè anche il modello MEALY
START_UP := POWER_UP -> A ; all' accensione vai in A; condizione di reset
;
A :=
+
B :=
+
C :=
+
D :=
+
E :=
+
F :=
+
G :=
+
H :=
+
EQUAZIONI TRANSIZIONI DI STATO (tabella di flusso); gli stati interni vengono automaticamente codificati dal compilatore,coi bit necessari.
up -> B ; lista dei possibili comportamenti (intesi come transizioni
down -> H ; di stato) al variare delle variabili di ingresso (qui solo UD).
up -> C
down -> A
up -> D
down -> B
up -> E
down -> C
up -> F
down -> D
up -> G
down -> E
up -> H
down -> F
up -> A
down -> G
; CORRISPONDENZA STATI INTERNI <---> USCITE (la macchina e' di MOORE)
A.OUTF = /Q0 * /Q1 * /Q2 ; 000
B.OUTF = /Q0 * /Q1 * Q2 ; 001
C.OUTF = /Q0 * Q1 * /Q2 ; 010
D.OUTF = /Q0 * Q1 * Q2 ; 011
E.OUTF = Q0 * /Q1 * /Q2 ; 100
F.OUTF = Q0 * /Q1 * Q2 ; 101
G.OUTF = Q0 * Q1 * /Q2 ; 110
H.OUTF = Q0 * Q1 * Q2 ; 111
; .OUTF e' una regola sintattica del PALASM che vuole semplicemente dire impostazione delle variabili di uscita dei FF D secondo
; quanto specificato nel prodotto seguente a .OUTF =.
CONDITIONS ; CORRISPONDENZA NOMI CONDIZIONI <---> INGRESSI
up = UD ; chiamo up la condizione quando UD = 1
down = /UD ; chiamo up la condizione quando UD = 0
SIMULATION ; sezione opzionale di simulazione che crea dei grafici
SETF /CLK UD
PRELOAD /Q0 /Q1 /Q2
TRACE_ON CLK Q0 Q1 Q2
CLOCKF CLK
CLOCKF CLK
CLOCKF CLK
CLOCKF CLK
CLOCKF CLK
CLOCKF CLK
CLOCKF CLK
CLOCKF CLK
CLOCKF CLK
CLOCKF CLK
CLOCKF CLK
TRACE_OFF
Purtroppo il PALASM gira in una finestra DOS; per utilizzarlo con WINqualcosa installare DOSBOX, copiare la cartella dosprog da qualche parte;
per creare un file jed creare il file pds nella cartella <percorso dosprog>\palasm\ ,
lanciare dosbox con "C:\<directory installazione DOSBox>\DOSBox.exe" <percorso dosprog>\psu.bat ,
poi seguire le istruzioni.