ePerTutti


Appunti, Tesina di, appunto elettronica

RELAZIONE PRIMO PROGETTO - BASETTA TESTER PER 8255

ricerca 1
ricerca 2

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






N.  Q.tà Materiale Valore Caratt. Legenda





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 AL,10111100B

OUT DX,AL

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 DX,AL

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