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.