AngoLinux

Il Programma Teorico di Terza

- A cura del Prof. Stefano Salvi -


Sistemi e modelli
Automi
Comunicazioni e Codifiche
Microprocessore
Controllore 8051

Sistemi e modelli

La prima parte del programma di Sistemi per la classe terza prevede l'esposizione di alcuni concetti di Teoria dei Sistemi. Questa parte viene costantemente ridotta, dato che l'accento viene portato sulle parti seguenti, più importanti per la figura del Perito Informatico utile oggi.

Classificazione dei sistemi
Vengono indicate le principali classificazioni dei sistemi (statico/dinamico, continuo/discreto, aperto/chiuso, combinatorio/sequenziale, ecc.). Viene dato particolare risalto alla classificazione continuo/discreto e viene poi fatto notare che l'operazione di misura trasforma un sistema continuo a tempo continuo in uno discreto a tempo discreto. Viene anche posto l'accento sul concetto di sistemo combinatorio/sequenziale, che poi trona utile negli automi.
Formalizzazione del sistema
Si evidenziano gli insiemi che definiscono il sistema (ingressi, valori degli ingressi, funzioni di ingresso ecc.) e soprattutto le funzioni di transizione e delle uscite.
Schematizzazione del sistema alle differenze (forma locale della funzione di transizione)
Si fà notare come la forma normale della funzione di transizione sia poco adatta ad un trattamento numerico e spesso molto difficile da calcolare. Si introduce il concetto di approssimazione, sostituendo l'area del rettangolo all'area sottesa ad una curva. Si indica come si può ridurre l'approssimazione riducendo il Δt
Laboratorio: I primi due argomenti non possono trovare applicazione in laboratorio, qundi le prime lezioni si sfruttano introducendo il Sistema Operativo Linux, l'interfaccia Gnome, il foglio di calcolo GNumeric ed eventualemnte altri strumenti dell'ambinete.

Una volta giunti alla forma locale della funzione di trasferimento si cominciano a fare delle simulazioni di sistemi tramite il foglio di calcolo. Ovviamente, utilizzando Linux il foglio di calcolo sarà quello scelto per Linux, appunto, vale a dire GNumeric.

Automi

Per quanto riguarda gli Automi, spiegato il concetto di Automa si espongono le rappresentazioni grafica e tabellare, e come si può passare dall'una all'altra.
Vengono mostrati l'automa di Mealy e quello di Moore.
Vengono spiegati i concetti di controllabilità, di raggiungibilità, di indistinguibilità e la tecnica delle partizioni per la riduzione delgi automi.
Vengono introdotti gli automi riconoscitori, sia con il riconoscimento per stato finale che per uscita.

Laboratorio: Gli automi vengono sperimentati in laboratorio con uno specifico programma automi, che consente di descrivere in maniera semplice e tabellare un automa, quindi di simularlo.
In precedenza si è tentato di usare la programmazione C (insegnata nel frattempo in informatica), ma la scarsa abilità di programmazione degli studenti in quel momento e la tendenza a fare programmi invece che automi ha sconsigliato questo approccio.
Altrettanto, l'uso del foglio elettronico è risultato molto fuorviante.

Comunicazioni e Codifiche

Si introduce il concetto di bit come unità di misura dell'informazione ed il logaritmo come metodo di misura
Si introduce il concetto di entropia e l'albero di Huffmann.
Si accenna ai vari tipi di compressione non basati sul singolo carattere, lossless e lossy.
Si introduce il concetto di codifica standard e se ne elencano le principali (Baudot, ASCII, EBCDIC, Unicode)
Si introduce il concetto di trasmissione e di rumore.
Si introducono i principali codici di rilevazione dell'errore (parità longitudinale, trasversale ed incrociata, checksum, CRC)
Si introduce il concetto di distanza di Hamming ed i codici a correzione dell'errore.
Si introducono le numerazioni (accenno) e le codifiche numeriche, sia intere che in virgola fissa o mobile.

Laboratorio: Questa è la parte più ricca di esercizi.

  • Si può calcolare l'entropia di un file, facendo diverse considerazioni.
  • Si possono far calcolare i vari codici di rilevazione dell'errore (parità, checksum e CRC) e li si possono fare verificare, per individuare gli errori.
  • Si possono far generare codici con distanza di Hamming definita.
  • Si possono fare fare conversioni di base, tra le varie numerazioni.
  • Si possono fare convertire numeri con segno nelle varie codifiche.
  • Si può fare scoprire la codifica di un numeroin virgola mobile, analizzando la codifica prodotta dal sistema, con una serie di esperimenti.

Microprocessore

Una teoria vorrebbe che si giungesse al microprocessore attraverso gli automi generalizzati e la macchina di Turing. Ho notato che questo percorso, molto bello dal punto di vista teorico, non semplifica la vita agli studenti e spesso lascia 'tracce'. L'argomento è già complesso, porre delle tappe intermedie consente allo studente di confondere le architetture corrette con quelle intermedie.
La sequenza da mè scelta è invece:

  • Connessione a BUS
  • Schema della cella di memoria con D-Latch
  • Address, Data e Control Bus
  • Mondo esterno, interfacce ed I/O
  • Schema della cella di I/O, come modifca della cella di memoria
  • Introduzione alla CPU, l'Instruction Decode And Timing e l'Instruction Register
  • Le fasi della Fetch
  • Le categorie di istruzioni
  • Le istruzioni Aritmetico/Logiche, la ALU, il Tempory Address Register
  • Gli schemi a tre, due ed un operando ed i registri di uso generale; l'accumulatore
  • I metodi di indirizzamento; lo stack
  • Le operazioni di trasferimento del controllo
Con questo percorso si arriva ad una padronanza dello schema e dei limiti di un microporocessore.

Laboratorio: Questa parte crea grossi problemi in laboratorio perchè per un lungo periodo (circa un paio di mesi) non ci sono esperienze da fare.
È possibile fare qualche esperimento con un simulatore di CPU (The Incredible Computing Machine), ma in genere gli studenti non riescono a sperimentare indipendentemente ed il simulatore viene utilizzato per mostrare il funzionamento della CPU con il videoproiettore, oltre che per stampare degli schemi presentabili su cui lavorare.
Si può sfruttare il periodo per aggiungere esperienze sui temi precedenti, per fare programmazione C di basso livello, lavorando ad esempio sulle operazioni bitwise e sulle maschere di bit, opure si possono fare esperienze utili per Informatica (nel caso l'ITP sia in comune con la materia).

Controllore 8051

Una volta presentata la struttura del microprocessore e de sistema di calcolo, si deve passare alla presentazione di un sistema reale. La scelta di passare direttamente alla presentazione dell'architettura X86 Intel è stata scartata per due motivi:

  • L'architettura presenta una complessità molto maggiore del modello presentato e delle caratteristiche peculiari che richiedono una certa maturità per essere comprese facilmente
  • Il Perito Informatico deve aver sperimentato la maggior quantità di diversità che sia possibile.
Per questo motivo si è scelto di usare un microcontrollore, al posto di un microprocessore. Il microcontrollore, che contiene, oltre al processore, meoria e periferiche, è una scelta interessante in quanto cade proprio nel campo del Perito Informatico, quando partecipa ad un progetto di automazione.
La scelta è caduta sull'8051 dell'Intel perchè possiede una CPU abbastanza quadrata ed ha poche caratteristiche peculiari difficili da comprendere. Inoltre contiene un interrupt controller abbastanza semplice che dà modo di introdutte il concetto di interruzione ed una seriale, che consente di introdurre il discorso sulla trasmissione seriale dei dati, anche con una modalità master/slave, molto utile per presentare concetti che verranno utlizzati più oltre.

Laboratorio: Come indicato nella Presentazione del Laboratorio, per le esperienze sul processore 8051 si utilizzano delle schede industriali (GPC F2 dela Grifo) tramite un ambiente di cross-sviluppo / emulazione scritto in C++ con Gnome.
Si incomincia con piccole routine assembler scritte tramite l'assembler in linea dell'ambiente di sviluppo e provate con l'esecuzione passo-passo, per rendersi conto del funzionamento della CPU.
Si passa poi a delle epserienze che utilizzino i due LED ed il cicalino connessi sulla scheda, utilizzando dei loop di ritardo.
Si scrivono dei programmi che utilizzano il tastierino esterno (TI/O 16), programmando in maniera semplice il PPI mappato in XDATA.
Si può poi passare ad esperienze più complesse usando il timer, l'interrupt controller e l'interfaccia seriale.
Purtroppo tutte queste esperienze non sono state realizzate quest'anno, perchè il programma non è stato terminato, quindi per ora non verranno introdotte in questo lavoro.


[Home Page dell'ITIS "Fermi"] [Indice Terza] [Successivo]

© Ing. Stefano Salvi - Released under GPL licence