elettronica |
RELAZIONE PRIMO PROGETTO - BASETTA TESTER PER 8255
ANALISI GENERICHE
DESCRIZIONE DEL PROGETTO
Con questo progetto, si vuole creare un dispositivo che testi il corretto funzionamento dell'8255.
La basetta monofaccia, di dimensioni 55x160mm, prevede tre connettori a 20+20pin: uno per connettere la scheda al PC, e gli altri due per il collegamento trasparente.
IL PPI8255
Il PPI8255 è un'interfaccia periferica programmabile (PPI dall'inglese Programmable Peripheral Interface), usato nei dispositivi basati sull'8080 e 8085.
La sua conurazione è programmabile tramite dip-switch, in modo da evitare la necessità di una logica di controllo esterna. Ha la caratteristica di possedere un buffer del data-bus a 8 bit, interfacciato al data-bus del sistema. I dati sono trasmessi o ricevuti dal sistema tramite istruzione di input-output da parte della CPU.
L'8255 è composto di tre port: A, B e C, di otto linee ciascuno, con le linee del port C, divise in due gruppi da quattro. Le linee e sono rispettivamente di lettura e di scrittura e determinano la direzione dei dati. ½ sono inoltre una linea di attraverso la quale tutti i port sono settati come ingresso, e una linea (ovvero di Chip Select), che abilita la comunicazione tra 8255 e CPU. Le linee A0 e A1 sono i due bit di indirizzo.
Proprio tramite questi due bit, che sono i due più bassi dell'address-bus della CPU viene deciso quale dei cinque registri dell'8255 deve essere abilitato (vedi Tabella 1).
Tabella 1
MODI D'USO DEL PPI8255
L'8255 può essere fatto funzionare in tre diversi modi: modo 0, 1 e 2.
Il modo 0 è il modo di base di input-output. Con questo modo le uscite vengono memorizzate in latch, gli ingressi no.
Tramite la conurazione in modo 1, si fornisce un mezzo per trasferire dati di I/O a, o da uno specifico port, tramite dei segnali di handshake. Questi sono:
(Strobe
Un livello basso in questo pin carica i dati nel latch di ingresso.
IBF (Input Buffer Full)
Un livello alto a questo ingresso indica che i dati sono stati caricati. IBF è settato, in altre parole portato a 1, dal fronte di salita di , ed è resettato dal fronte di salita di .
(Output Buffer Full)
L'uscita va bassa per indicare che la CPU ha scritto i dati per uno specifico port di uscita. Questo segnale è portato a 0 dal fronte di salita di ovvero quando è terminata l'operazione di scrittura. È invece portato a 1 (quindi disabilitato) quando l'ingresso va basso.
(Acknowledgement) Un livello basso a questo ingresso informa l'8255 che i dati all'uscita del port A o B, sono stati accettati. Il segnale è generato per risposta a da un dispositivo periferico.
Se all'ingresso di interrupt, INTR, c'è un livello alto, viene interrotta la CPU dal suo normale lavoro. All'interno dell'8255 ci sono dei flip-flop chiamati INTE (INTerrupt-Enable). INTR è a livello logico alto quando , IBF e INTE sono a 1.
Conurando invece l'8255 con il modo 2 si fornisce un mezzo per comunicare con dispositivi periferici, o strutture basate su un singolo BUS a 8 bit; sia per trasmissione sia per ricezione di dati (detto anche BUS di I/O bi-direzionale).
LA PAROLA DI CONTROLLO
La definizione del modo d'uso dell'8255 è effettuata da una parola di controllo a 8 bit, che va caricata nel registro di controllo.
In tale registro è solamente possibile eseguire operazioni di scrittura, e per poterlo fare bisogna che i piedini A0 e A1 siano ambedue a livello logico 1 (si veda tabella 1). In ura 1 è riportata la struttura del registro di controllo e delle relative funzioni.
ura 1
Ogni singolo bit degli 8 della parola di controllo, ha un ben preciso significato. Con il bit D7, stabilisco che questa parola di controllo, una volta inviata nell'omonimo registro, servirà per impostare uno dei tre possibili modi con le relative conurazioni dei port (ciascuno impostato come ingresso o uscita).
Definire uno dei tre modi d'uso dell'interfaccia 8255, non è il solo uso della parola di controllo. Questa infatti è anche utilizzata per forzare a 0 o a 1 individualmente i bit del port C. Viene ovvero fatta un'operazione di set/reset di singolo bit. Cambiano quindi le funzioni dei singoli bit nel registro di controllo:
ura 2
In questo caso il bit D7 è messo a 0, e con questo valore, la parola di controllo prende la funzione di portare un bit del port C (definito dai bit D3 D2 D1 della parola di controllo) a 0 o a 1 (valore deciso dal bit D0 della parola).
Con istruzioni assembly, per scrivere la parola di controllo nel registro, bisognerà innanzi tutto caricare in AL il valore della parola, e poi trasferirne il contenuto nello specifico indirizzo.
ANALISI DEL CONNETTORE
La scheda dell'8255 viene connessa a dispositivi esterni tramite un cavo flat a 40 connettori. Ad entrambi i capi di questo fascio di cavi, c'è un connettore IDE a 20+20pin. Il terminale 1 è identificato da una freccia posta sul corpo di plastica del connettore, e i pin sono sistemati per due file. Sulla prima fila tutti i numerati dispari: dal primo fino al trentanovesimo; sulla fila opposta ci sono i terminali pari: il pin 2 è di fronte al pin 1, e il pin 40 di fronte al 39. Ogni terminale porta un preciso segnale, come mostrato dalla tabella 2 riportata qui sotto:
Tabella 2
Ad esempio, se si volesse prelevare il segnale di CLK2, bisognerebbe farlo dal terminale 11 del connettore.
Nelle piste del collegamento trasparente, le ultime quattro piste che collegavano i terminali 37, 38, 39 e 40 di ciascun connettore, sono state interrotte da dei jumper che permettono in qualsiasi momento di chiudere il collegamento o aprirlo, di prelevare il segnale per portarlo da un'altra parte o per isolarlo.
ANALISI SPECIFICHE
LISTA COMPONENTI
1 Barra led da 10 rossi LED1
1 Blocco DIP-SW 8 dip 1/0 DIP1
2 Pulsanti P1-2
1 Rete resistiva SIL 10kW 8R R1
1 Rete resistiva SIL 1kW 8R R2
1 Resistenza 10kW ¼ W R3
1 Resistenza 330W ¼ W R4
ANALISI FUNZIONALE
ANALISI DEI COMPONENTI
BARRA LED:
Visualizza il valore del port B, e gli ultimi due led indicano lo stato dei segnali e .
I led devono accendersi a livello alto (livello logico 1) e spegnersi per valori logici uguali a 0.
DIP SWITCH:
Tramite questi 8 dip-switch, viene impostato il valore del port A (conurato come ingresso).
PULSANTE P1:
È il pulsante che simula il segnale di . Il pulsante deve essere attivo quando viene premuto, in altre parole: si preme il pulsante e il segnale va a livello logico basso, una volta rilasciato il pulsante, il segnale torna a livello alto. Come risposta viene generato il segnale di IBFA, che fa accendere il rispettivo led.
PULSANTE P2:
È quello che simula il segnale . Una volta premuto, viene inviato il segnale al PPI8255 che genera come risposta un segnale di , che fa accendere come per il precedente, il rispettivo led.
RETE RESISTIVA R4:
È la rete limitatrice per proteggere la barra led. Il valore è stato preso a 330W ormai noto per questa funzione.
RETE RESISTIVA R1:
È la rete di pull-up che fa funzionare i dip-switch.
RESISTENZE R2/R3:
Sono le due resistenze di pull-up per far funzionare i due pulsanti.
CONNETTORE 1. A 40pin, al quale va collegato il cavo connettore con l'altra uscita connessa alla scheda dell'8255.
CONNETTORI 2 e 3. Utilizzati per il collegamento trasparente. Tale collegamento è effettuato collegando ogni terminale del primo connettore, al rispettivo del secondo. Vengono così trasferiti tutti i segnali di dato, inclusi i segnali dell'8253, la massa (fissa), e le quattro alimentazioni. Queste ultime sono interrotte nel collegamento da dei jumper.
PROGRAMMA PER IL TEST
Per verificare il funzionamento della basetta test, è stato realizzato un programma che permetta la comunicazione tra PC e progetto.
Il file sorgente è stato creato tramite linguaggio di programmazione Turbo Pascal. All'interno del programma sono state inserite delle righe di codice Assembly, soprattutto definite come procedure. Questo è stato fatto tramite il comando Pascal "ASM" con la sintassi:
ASM
righe in codice assembler
END
Nella ina seguente è riportato il testo del programma.
Il programma deve prevedere le possibilità di leggere un dato dal port A, o scriverne uno dato dall'utente tramite tastiera sul port B.
Un'altra delle possibili funzioni del programma può essere la comunicazione tra port A e port B: verrà ovvero letto il valore del port A e visualizzato nei led che rappresentano il port B.
01: PROGRAM TEST;
02: VAR MODO:CHAR;
NUM:INTEGER;
04: PROCEDURE PAR_CTRL;
05: BEGIN
ASM
MOV DX,1B3H
MOV
OUT
END
11: END;
12: PROCEDURE LETTURA;
13: BEGIN
ASM
MOV DX,1B0H
IN AL,DX
END
18: END;
19: PROCEDURE SCRITTURA(NUM:BYTE);
20: BEGIN
REPEAT
WRITE ('INSERISCI IL NUMERO DA METTERE NEL PORT B(MAX.255):');
READLN (NUM);
IF NUM>255 THEN WRITELN ('IL NUMERO DEV''ESSERE MINORE DI 255!')
ELSE IF NUM<0 THEN WRITELN ('IL NUMERO DEV''ESSERE MAGGIORE DI ZERO');
UNTIL NUM<=255;
ASM
MOV AL,NUM
MOV DX,1B1H
OUT
END
32: END;
33: PROCEDURE LETT_SCRI;
34: BEGIN
ASM
MOV DX,1B0H
IN AL,DX
MOV AH,AL
MOV DX,1B1H
IN AL,DX
END
42: END;
43: BEGIN
44: WRITELN ('QUESTO PROGRAMMA PREVEDE LA PROGRAMMAZIONE DELL''8255':10);
45: WRITELN ('PER INTERFACCIAMENTI PERIFERICI.':17);
46: WRITELN;
47:WRITELN ('VUOI UTILIZZARE L''INTERFACCIA IN SCRITTURA(S),LETTURA(L) O IN':8);
WRITE ('COMUNICAZIONE TRA IL PORT A E IL PORT B(C)?: ':15);
READLN (MODO);
PAR_CTRL;
IF MODO='S' THEN BEGIN
SCRITTURA(NUM);
END
ELSE IF MODO='L' THEN BEGIN
LETTURA;
END
ELSE IF MODO='C' THEN BEGIN
LETT_SCRI;
END
ELSE WRITELN ('LE POSSIBILITA''
SONO:(S)SCRITTURA,(L)LETTURA,(C)COMUNICAZIONE!');
READLN;
63: END.
DIAGRAMMA DI FLUSSO
INTERPRETAZIONE DEL PROGRAMMA
Dopo aver dichiarato le variabili utilizzate nel programma (righe 2-3), avviene la dichiarazione delle procedure.
La prima di queste (righe 4-l1), carica la parola di controllo nel registro. Per far sì che questo avvenga, bisogna dare al registro dx, il valore dell'indirizzo del registro di controllo (1B3H), caricare la parola di controllo in ax, ed eseguire l'istruzione out dx,al (riga 9) che manda i dati contenuti in ax all'indirizzo contenuto in dx.
La seconda procedura (righe 12-l8), svolge le operazioni per far leggere al PC il dato contenuto nel port A (che ha indirizzo 1B0H). Come prima, viene caricato in dx il valore dell'indirizzo (riga 15), e con un'operazione opposta a prima (ora è in), viene prelevato il dato da quell'indirizzo e posto nel registro ax (riga 16).
La terza procedura (righe 19-32), richiede all'utente di inserire un dato, che sarà poi scritto nel port B. Dopo la digitazione da parte dell'utente del dato, avviene un controllo per verificare che il dato inserito, non sia maggiore di 255. Nel caso in cui il numero sia valido, viene caricato nel registro al e inviato all'indirizzo 1B1H (quello del port B), inserito in dx.
La quarta procedura invece (righe 33-42), fa sì che venga prelevato ciò che è contenuto nel port A (e quindi letto), e scritto nel port B. Avviene quindi una comunicazione tra i port A e B.
Successivamente comincia il corpo del programma (riga 43), con la richiesta (righe 47-48) di quale operazione tra le 3 si vuole effettuare. Viene richiamata la procedura che carica la parola di controllo che imposta l'8255 nel registro di controllo e poi avviene un controllo sul tasto premuto dall'utente, che richiama la procedura richiesta. Nel caso che il tasto premuto non corrisponda a nessuno di quelli previsti dal programmatore, il programma termina.
CONCLUSIONI FINALI
REALIZZAZIONE
MASTER
DISPOSIZIONE COMPONENTI
SCHEMA ELETTRICO
NOTE DI COLLAUDO
Il collaudo è risultato positivo, e come previsto la basetta testa il corretto funzionamento della scheda dell'8255.
Tramite il programma creato, si riesce a scrivere dati nel port B (visualizzati da una parte della barra led), leggere dati dal port A (inseriti tramite i dip-switch) e leggere il dato dal port A e visualizzarlo nel port B.
NOTE
BIBLIOGRAFIA
Per la stesura della relazione si è fatto riferimento ai seguenti testi:
- "MANUALE DI ELETTRONICA E TELECOMUNICAZIONI", 4a edizione
Biondo, Sacchi
Hoepli
- "SISTEMI AUTOMATICI" - vol.2
Fagarazzi, Mialich, Rossi
Calderini
Per lo sviluppo pratico del progetto:
È stato utilizzato il software "Arianna - ADraft" per il disegno dello schema elettrico.
Per la creazione del master, è stato utilizzato il software "Arianna - APCB".
Per un ulteriore sviluppo dello schema elettrico, è stato fatto uso del programma "Protel '99" - EDA Client.
Il programma è stato realizzato con il linguaggio di programmazione Turbo Pascal con alcune procedure interne definite in linguaggio Turbo Assembly.
Il diagramma di flusso relativo al programma di test, è stato realizzato con l'ausilio del software "EDGE Diagrammer" ver. 3.0a
DATA SHEET
Il data sheet del PPI8255 è stato scaricato dal sito della casa produttrice Intel®:
https://developer.intel.com/design/periphrl/datashts/231256.htm
Privacy
|
© ePerTutti.com : tutti i diritti riservati
:::::
Condizioni Generali - Invia - Contatta