Che materia stai cercando?

Calcolatori Elettronici II Appunti scolastici Premium

Tesina per l'esame di Calcolatori Elettronici II. Nello specifico gli argomenti trattati sono i seguenti: Realizzazione di un dispositivo per il controllo di un impianto, Specifiche di progetto, Configurazione ASIM del sistema, Il sistema C in dettaglio, Il sistema P in dettaglio, ecc.

Esame di Calcolatori Elettronici II docente Prof. G. Iannello

Anteprima

ESTRATTO DOCUMENTO

2. Configurazione ASIM del sistema

In ASIM è stato prodotto un file di configurazione il cui schema è riportato di seguito:

Figura 5 - Configurazione ASIM del sistema

Il file di configurazione contiene le seguenti informazioni:

CHIP Name: MEM-A

Type: MMU/BUS. Identif: 01. BUS: 0000.

Addres 1: 00008000. Address 2: 00000000.

Com1: 0000. Com2: 0010. Com3: 0008. Com4: 0000.

Figura 6 - Configurazione della memoria 6

MEM-A rappresenta la memoria del sistema C ed è connessa al BUS che presenta l’id 01 (pari

all’identificativo della memoria stessa). Ponendo Com2 a 0010, equivale ad allocare 10Kbyte di

RAM, mentre porre Com3 a 0008 equivale ad allocare 8 Kbyte di ROM.

Il primo byte di RAM è allocato all’indirizzo 8000, mentre il primo byte di ROM è allocato

all’indirizzo 0000.

CHIP Name: M68000

Type: CPU. Identif: 02. BUS: 0001.

Addres 1: 00009000. Address 2: 00009200.

Com1: 0000. Com2: 0000. Com3: 0000. Com4: 0000.

Figura 7 - Configurazione del processore

M68000 rappresenta la CPU ed in Address1 è stato inserito l’indirizzo da cui ha inizio lo stack

utente, mentre in Address 2 è stato inserito l’indirizzo a partire dal quale ha inizio lo stack

supervisore.

CHIP Name: I8251USART

Type: Device. Identif: 03. BUS: 0001.

Addres 1: 00002004. Address 2: 00002005.

Com1: 0002. Com2: 0000. Com3: 0000. Com4: 0006.

Figura 8 - Schema della USART

Il dispositivo USART (Universal Synchronous-asynchronous Receiver Transmitter) consente di

realizzare una connessione seriale fra dispositivi (ad es. il collegamento seriale di un sistema verso 7

un dispositivo periferico quale un terminale, un modem, una stampante, etc., per effettuare un

trasferimento di dati) secondo un protocollo sincrono o asincrono.

È necessario notare che in questo caso è stato inserito come dispositivo per la gestione delle

interruzioni il processore 0002. Ponendo invece Com4 pari a 0006 si sta connettendo questa

USART con identificativo pari a 03 con la USART avente identificativo pari a 06.

CHIP Name: I8251USART

Type: Device. Identif: 06. BUS: 0004.

Addres 1: 00002004. Address 2: 00002005.

Com1: 0005. Com2: 0003. Com3: 0000. Com4: 0003.

Le considerazioni introdotte per l’USART precedente sono del tutto analoghe anche per questo

dispositivo: è necessario solo notare che in questo caso è stato inserito come dispositivo per la

gestione delle interruzioni il processore 0005. Inserendo un valore pari a 0003 alla porta Com2 si fa

in modo che la USART notifichi tramite un’interruzione sulla linea 3 del processore l’avvenuta

ricezione di un carattere. Ponendo infine Com4 pari a 0003 si sta connettendo questa USART con

identificativo pari a 06 con la USART avente identificativo pari a 03.

CHIP Name: M2

Type: MMU/BUS. Identif: 04. BUS: 0000.

Addres 1: 00008000. Address 2: 00000000.

Com1: 000D. Com2: 0010. Com3: 0008. Com4: 0000.

M2 rappresenta la memoria del sistema P ed è connessa al BUS che presenta l’id 04 (pari

all’identificativo della memoria stessa). Ponendo Com2 a 0010, equivale ad allocare 10Kbyte di

RAM, mentre porre Com3 a 0008 equivale ad allocare 8 Kbyte di ROM.

Il primo byte di RAM è allocato all’indirizzo 8000, mentre il primo byte di ROM è allocato

all’indirizzo 0000.

Le considerazioni, ovviamente, sono del tutto analoghe a quelle della memoria MEM-A

CHIP Name: M68000

Type: CPU. Identif: 05. BUS: 0004.

Addres 1: 00009000. Address 2: 00009200.

Com1: 0000. Com2: 0000. Com3: 0000. Com4: 0000.

M68000 rappresenta la CPU ed in Address1 è stato inserito l’indirizzo da cui ha inizio lo stack

utente, mentre in Address 2 è stato inserito l’indirizzo a partire dal quale ha inizio lo stack

supervisore.

CHIP Name: TERMINAL

Type: Device. Identif: 07. BUS: 0001.

Addres 1: 00002000. Address 2: 00002001.

Com1: 0002. Com2: 0001. Com3: 0002. Com4: 0000. 8

Figura 9 - Schema del terminale

ASIM mette a disposizione, come dispositivo base per realizzare l'I/O da e per un sistema, un

dispositivo da utilizzare, appunto, come terminale video- tastiera denominato TERMINAL.

Nel nostro caso tale dispositivo è configurato come segue: Alla porta Com1 abbiamo connesso la

CPU che si occupa della gestione delle interruzioni, alla porta Com2 abbiamo identificato con 0001

la linea 1 del processore per gestire l’interruzione relativa alla pressione del tasto enter, mentre per

l’interruzione relativa al buffer full abbiamo utilizzato la linea 2, servendoci della porta Com3.

CHIP Name: M6821PIA

Type: Device. Identif: 09. BUS: 0004.

Addres 1: 00002010. Address 2: 00002013.

Com1: 0005. Com2: 0005. Com3: 0000. Com4: 0208.

Figura 10 - Configurazione della PIA

Il dispositivo PIA (Periferal Interface Adapter) è un dispositivo parallelo, a parallelismo 8 bit,

facente parte della famiglia dei processori Motorola 68xx. Il dispositivo contiene due sezioni quasi

identiche, ciascuna dotata di 8 bit dati configurabili, anche singolarmente, come linee di ingresso o

di uscita. Ciascun porto può, quindi, funzionare in ingresso, uscita o in configurazione mista (in-

out). L’utilizzo tipico previsto è quello di controllore di una periferica con comunicazione full

duplex e con possibilità di controllare le operazioni di I/O mediante interruzioni e schemi di

9

handshaking preconfigurati. Due coppie di linee di controllo sono utilizzate per gestire

l’handshaking per la sincronizzazione della periferica connessa al dispositivo. Di queste, CA1 e

CB1, in ingresso al dispositivo, acquisiscono eventi dalle periferiche e controllano la linea di

interruzione IRQA e IRQB verso il processore; le altre due linee, CA2 e CB2, possono essere

programmate per operare come segnali in ingresso (in tal caso si comportano in modo analogo alla

CA1 e CB1) sia in uscita per implementare forme di handshaking. Il controllo delle operazioni

realizzabili con le due linee è programmato, come di seguito mostrato, mediante i campi del registro

di controllo.

Nel nostro caso è stata posta a 0005 la Com1 per identificare il processore come dispositivo per la

gestione delle interruzioni. La Com2, che si occupa della gestione dell’interrupt IRQA è stata posta

a 0005 per indicare che in questo caso il dispositivo fa uso della linea 5 di interruzione. La porta

Com4 è stata posta a 0208 per indicare con 08 l’identificativo della PIA con cui deve comunicare e

02 per indicare che si intende connettere la CB2 del dispotivo con la CA1 del dispositivo periferico

e la CA2 del dispositivo con la CB1 del dispositivo periferico: uno schema delle possibili

connessioni è riportato in . Figura 11 - Possibili connessioni della PIA

CHIP Name: M6821PIA

Type: Device. Identif: 08. BUS: 0001.

Addres 1: 00002010. Address 2: 00002013.

Com1: 0002. Com2: 0000. Com3: 0000. Com4: 0209.

Le considerazioni appena introdotte sono del tutto analoghe per questa PIA che presenta

l’identificativo pari a 08: in questo caso non risulta più necessario specificare la linea di

interruzione relativa a IRQA in quanto i comandi sono catturati tramite il terminale e le sue apposite

interruzioni: l’unica PIA che quindi deve notificare al processore che intende eseguire un comando

è proprio l’altra PIA ovvero quella che presenta l’identificativo pari a 09. Questo tipo di PIA non ha

bisogno di inviare interruzioni al processore.

CHIP Name: I8237DMA

Type: Device. Identif: 0A. BUS: 0004.

Addres 1: 00002020. Address 2: 0000202F.

Com1: 0005. Com2: 0004. Com3: 0005. Com4: 0000. 10

Figura 12 - Schema del DMA

Il dispositivo Direct Memory Access (DMA) è un dispositivo in grado di operare da master di bus,

in grado di gestire cicli bus di trasferimento dati ( in sostituzione del processore). Esso viene

utilizzato per aumentare le prestazioni di un sistema di calcolo gestendo, in sostituzione del

processore ma in modo più efficiente, le operazioni di trasferimento, consentendo, nel contempo, al

processore di operare in parallelo. La maggiore efficienza è dovuta al fatto che mentre un

processore per eseguire un trasferimento deve eseguire un’istruzione (ad es. un codice di move)

attraverso una fase di fetch ed execute, un DMA gestisce il trasferimento utilizzando Hw

specializzato appositamente progettato per realizzare tale unica funzione.

Nel nostro caso è stato scelto come CPU master per il trasferimento e come dispositivo per la

gestione delle interruzioni il processore con identificativo 0005. La linea di interruzione è stata

posta a 0004 e quindi rappresenta la linea 4 di interruzione.

CHIP Name: 1TO4INTGEN

Type: Device. Identif: 0B. BUS: 0004.

Addres 1: 00002040. Address 2: 00002053.

Com1: 0005. Com2: 0000. Com3: 0000. Com4: 0000.

Figura 13 - Configurazione 1TO4Intgen

Il dispositivo 1to4INTGEN è un generatore di interruzioni verso i dispositivi in grado di gestirli (in

ASIM processori e PIC). Esso è composto da 5 generatori: un generatore di interruzioni

programmabile e quattro timer ed è visto come 20 ($13+1) locazioni consecutive di memoria. Tale

dispositivo è impiegato per generare interruzioni ad intervalli di tempo prefissati (mediante la

11

programmazione dei parametri dei timer) o per generare, a programma, i segnali di interruzione

verso lo specifico oggetto gestore di interruzioni.

Nel nostro caso è sufficiente un solo timer che ogni secondo generi un’interruzione che attiva il

trasferimento del blocco di 256 Byte dal buffer M1 alla memoria M2: tale trasferimento è effettuato

tramite l’ausilio del DMA.

CHIP Name: M1

Type: MMU/BUS. Identif: 0D. BUS: 0000.

Addres 1: 00003000. Address 2: 00000000.

Com1: 0004. Com2: 0001. Com3: 0000. Com4: 0000.

M1 rappresenta il buffer di 256 Byte che viene usato dalla cisterna per inserire le informazioni

relative al proprio stato. Nel nostro caso abbiamo allocato un solo Kbyte per inserire tutte le

informazioni necessarie alla gestione dello stato della cisterna.

Al fine di avere maggiori dettagli circa la disposizione dei vari componenti all’interno del file di

configurazione ed esaminare la struttura delle interruzioni, si propone il seguente schema in cui

sono indicati anche i vari vettori di interruzione.

Figura 14 - Schema di dettaglio della configurazione 12

3. Il sistema C in dettaglio

Si analizzano di seguito le varie porzioni di codice motivando di volta in volta le varie scelte che

sono state effettuate.

Le istruzioni sono inserite all’interno della memoria a partire dall’indirizzo $8200 della RAM

tramite l’istruzione ORG; vengono successivamente definite una serie di valori che verranno

successivamente utilizzati.

Innanzitutto si è deciso di configurare il dispositivo PIA come segue: quello che si intendeva

realizzare era un sistema che facesse uso della PIA per poter inviare i comandi.

Il dispositivo PIA (Periferal Interface Adapter) è un dispositivo parallelo, a parallelismo 8 bit,

facente parte della famiglia dei processori Motorola 68xx. Il dispositivo contiene due sezioni quasi

identiche, ciascuna dotata di 8 bit dati configurabili, anche singolarmente, come linee di ingresso o

di uscita. Ciascun porto può, quindi, funzionare in ingresso, uscita o in configurazione mista (in-

13

out). L’utilizzo tipico previsto è quello di controllore di una periferica con comunicazione full

duplex e con possibilità di controllare le operazioni di I/O mediante interruzioni e schemi di

handshaking preconfigurati.

Due coppie di linee di controllo sono utilizzate per gestire l’handshaking per la sincronizzazione

della periferica connessa al dispositivo. Di queste, CA1 e CB1, in ingresso al dispositivo,

acquisiscono eventi dalle periferiche e controllano la linea di interruzione IRQA e IRQB verso il

processore; le altre due linee, CA2 e CB2, possono essere programmate per operare come segnali in

ingresso (in tal caso si comportano in modo analogo alla CA1 e CB1) sia in uscita per implementare

forme di handshaking. Il controllo delle operazioni realizzabili con le due linee è programmato

mediante i campi del registro di controllo; si ricorda che nella configurazione del sistema che si

intende realizzare si è connessa la CA2 con la CB1 e la CA1 è connessa con la CB2. Sia CA1 che

CB1 sono sempre di ingresso al dispositivo.

Figura 15 - Configurazione porti PIA

Il dispositivo PIA simulato in ASIM è derivato da quello commerciale MC6821 di cui ne conserva

quasi tutte le caratteristiche funzionali e architetturali. In particolare, la struttura dei sei registri

interni (3 per la sezione A e 3 per quella B) ad otto bit è la seguente:

• due registri per il trasferimento dei dati da e verso la periferica (PRA e PRB)

• due registri di controllo/stato (CRA e CRB)

• due registri, DRA e DRB, per il controllo della direzione dei dati (in input o in output)

Poiché il dispositivo impiega per la selezione dei registri interni solo quattro indirizzi, per accedere

a tali registri è utilizzato il meccanismo di indirizzamento indiretto per tramite di campi del registro

controllo che vanno opportunamente settati prima dell’accesso.

Figura 16 - Indirizzamento dei registri interni

Per quanto concerne invece la USART riportiamo il seguente codice: 14

Uno dei requisiti del progetto consiste nel fare in modo che le due USART funzionino utilizzando

una connessione asincrona e che utilizzino il protocollo di handshaking. Il modo di funzionamento

asincrono è realizzato ponendo ad 1 l’ultimo bit del registro mode, che rappresenta il registro che

per primo si accede dopo che il dispositivo è stato acceso.

Per quanto concerne invece l’handshake dobbiamo intervenire sul registro CNTRL e attivare sia il

DTR che lo RTS. La seguente figura mostra una connessione piena tra i due dispositivi utilizzati.

Figura 17 - Schema delle connessioni della USART

Lo schema dei segnali in gioco, invece, è il seguente: 15

Figura 18 - Segnali scambiati tra le USART

Se la connessione fosse stata parziale avremmo avuto una situazione, come quella riportata nella

seguente figura. Figura 19 - Connessione parziale

Nel nostro caso abbiamo chiaramente utilizzato una connessione completa piuttosto che una

connessione parziale, dal momento che dovevamo fare uso dell’handshaking, servendoci quindi

degli appositi segnali, e interfacciare due dispositivi gemelli l’uno con l’altro.

Per quanto concerne, infine, il terminale si è deciso di configurare tale dispositivo come segue:

Una volta che tutti i dispositivo sono stati inizializzati, creiamo un ciclo infinito all’interno del

quale il processore, in polling, verifica se è stato trasmesso un carattere all’interno della seriale.

Questo tipo di tecnica è stato utilizzato in quanto il sistema C, a parte che inviare comandi, deve

principalmente occuparsi della visualizzazione dello stato che consiste nell’output a terminale di

256 caratteri. Dal momento che l’invio di un solo carattere di comando impegna una porzione di

tempo estremamente più piccola rispetto alla ricezione di 256 caratteri si è pensato di fare uso della

tecnica di polling della usart piuttosto che della tecnica che prevedeva l’utilizzo delle interruzioni. Il

codice è riportato di seguito. 16

È stata prevista la visualizzazione di un carattere speciale (#) nel caso la USART sia accorga che si

è verificato qualche errore in fare di trasmissione delle informazioni.

Una volta che si riscontra la trasmissione di un carattere si provvede a visualizzare a schermo tale

carattere.

Si analizzano ora le ISR relative alle uniche due interruzioni previste all’interno del sistema C: la

digitazione di un tasto enter per l’invio di un carattere dal sistema C al sistema P e la gestione del

riempimento totale del buffer di tastiera. 17

Dopo aver salvato le variabili che verranno sporcate dalla ISR si passa all’analisi del carattere che si

intende trasmettere. Il carattere analizzato è solamente il primo: tutti gli altri caratteri eventualmente

inseriti all’interno del buffer della tastiera verranno ignorati. Se il carattere trasmesso corrisponde

ad S verrà inviato alla USART del sistema P che provvederà all’invio dello stato, altrimenti se è un

carattere compreso in senso largo tra i numeri 0 e 4, si invierà tale comando alla PIA che

provvederà a modificare il livello del liquido della cisterna.

Al termine della ISR, devono essere ripristinati tutti i valori dei registri utilizzati che erano stati

precedentemente salvati all’interno dello stack supervisore.

Per quanto concerne, invece, l’ISR relativa al buffer full, è stata prevista semplicemente la pulizia

dello schermo, in quanto si suppone un eventuale errore da parte dell’utente: quest’ultimo dovrebbe

essere in grado di inviare unicamente un carattere per la visualizzazione dello stato oppure per il

controllo del livello del liquido. Il codice è riportato di seguito. 18


PAGINE

30

PESO

3.56 MB

AUTORE

Sara F

PUBBLICATO

+1 anno fa


DETTAGLI
Corso di laurea: Corso di laurea in ingegneria informatica
SSD:
A.A.: 2009-2010

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Sara F di informazioni apprese con la frequenza delle lezioni di Calcolatori Elettronici II e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Napoli Federico II - Unina o del prof Iannello Giulio.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Calcolatori elettronici ii

Calcolatori Elettronici II – Gerarchia memorie
Dispensa
Calcolatori Elettronici II - Reti Sequenziali
Dispensa
Calcolatori Elettronici II
Dispensa
Calcolatori Elettronici II - Tesina
Appunto