Codici

La seconda unità del corso di TPSI tratta dei codici digitali

Gli argomenti trattati sono i seguenti:

Codici digitali ridondanti

Un codice digitale si dice ridondante quando non utilizza tutte le possibili combinazioni di bit disponibili per codificare le informazioni. Ad esempio, se devo inventarmi un codice per codificare i 12 mesi dell’anno, dovrò per forza utilizzare 4 bit, che mi forniscono 16 possibili combinazioni. Siccome i mesi sono solo 12, resteranno 4 combinazini inutilizzate, quindi il codice è ridondante. Tuttavia il codice utilizza il minor numero di bit possibile, infatti con 3 bit avremmo potuto utilizzare solo 8 combinazioni

Codici digitali efficienti

non sempre i codici utilizzano il minor numero di bit possible che, ricordiamo, è dato dal logaritmo in base 2 del numero di informazioni da codificare, arrotondato per eccesso.

Qualche volta la codifica utilizza molti più bit di quanti ne sarebbero stati necessari. In questo caso si parla di codifica inefficiente

Codici digitali automplementanti

Alcuni codici hanno una caratteristica interessante: metà delle informazioni codificate può essere ottenuta dall’altra metà semplicemente invertendo i bit con cui sono codificate. Ad esempio nel caso del codice Aiken, il numero 7 è codificato come 1101, e il suo corrispettivo, il nuemro 2, è codificato come 0010.
Si noti che 7 + 2 = 9, e quindi nei codici autocomplementanti la somma dei due numeri complementari da sempre il massimo numero codificato (1+8, 3+6, 4+5….)

Codici digitali progressivi o ciclici

I codici progressivi hanno una caratteristica molto ut9le nel campo di alcune applicazioni elettroniche o elettromeccaniche: tutti gli elementi codificati differeiscono fra loro solo per un bit, quindi, nel passaggio da una combinazione alla successiva (o alla precedente) no nsi dovrà mai modificare più di un bit. Un esempio di codice di questo tipo è il codice Gray.

Codici digitali pesati

definiamo codici digitali pesati quei sistemi che si prefiggono l’obiettivo di rappresentare un insieme di informazioni adottando un insieme finito di bit nei quali ciascuna cifra che compone la parola ha anche un peso che dipende dalla sua posizione. Ad esempio, nel codice BCD la prima cifra ha peso 1, la seconda 2, la terza 4 e così via. I codici pesati ricordano molto da vicino i sistemi di numerazione posizionali, tranne per il fatto (molto importante), che non servono a gestire grandezze ma solo a rappresentare simboli, in genere, ma non sempre, si utilizzano per rappresentare le singole cifre di numeri

Codici digitali non pesati

definiamo codici digitali quei sistemi che si prefiggono l’obiettivo di rappresentare un insieme di informazioni adottando un insieme finito di bit. Nei codici non pesati alle posizioni delle singole cifre non corrisponde un peso. Questi vengono in genere utilizzati per rappresentare non solo numeri ma anche altri simboli o codificare informazioni di altra natura.

Esempi visti a lezione

BCD (da Wikipedia)  BCD(da Giobe2000)

AIKEN

ASCII

GRAY

Codice 7 segmenti

codice a barre

QR-CODE

Articoli interessanti o approfondimenti utili

riassunto dei principali codici

la storia del codice a barre

 

La struttura dell’elaboratore: il ciclo macchina e l’architettura x86

Competenze Ciclo del processore (fetch, decode, execute), il set istruzioni della CPU, esecuzione in memoria di programmi, tipologie di istruzioni, architettura x86, BIU, EU
Abilità saper descrivere l’architettura x86 e lo svolgimento di un ciclo del processore, e descrivere l’esecuzione di un semplicissimo programma mediante un pseudo linguaggio Assembly
Conoscenze fetch, decode, execute, registri x86, BIU, EU, set istruzini, semplici istruzioni x86 Continua a leggere “La struttura dell’elaboratore: il ciclo macchina e l’architettura x86”

Programmazione didattica per Sistemi e Reti, classe terza

La programmazione discende direttamente dalle “linee guida ministeriali”, con gli opportuni adattamenti e approfondimenti legati alla particolare scuola in cui lavoro.

In sintesi, gli argomenti affrontati durante l’anno, suddivisi per unità di apprendimento, sono:

Materiali didattici utili per lo studio degli argomenti saranno di volta in volta indicati nelle pagine di approfondimento di ciascuna unità.

La struttura dell’elaboratore, modello logico-funzionale ed elementi tecnologici

Competenze Modello Von Neumann, bus, memoria, microprocessore
Abilità Saper individuare le componenti di un computer e definirne il ruolo, capire le differenze nelle tecnologie disponibili, saper collocare storicamente le tecnologie
Conoscenze modello logico funzionale, famiglia di microprocessori Intel, bus ISA, PCI, memorie RAM, ROM etc etc…, memorie di massa
Ore teo Ore lab Titolo Attività classe Attività laboratorio
2 Il modello logico funzionale presentazione modello VN
2 Evoluzione della tecnologia dei personal computer. Le CPU dall’invenzione del microprocessore al Pentium presentazione con uso di videoproiettore, tabelle e immagini. Uso di componenti hardware da far vedere agli studenti
2 Evoluzione della tecnologia dei personal computer. Le CPU dal Pentium alla tecnologia Core presentazione con uso di videoproiettore, tabelle e immagini. Uso di componenti hardware da far vedere agli studenti
1 Evoluzione: la tecnologia Core presentazione con uso di videoproiettore, tabelle e immagini.
1 Evoluzione: i bus per i PC presentazione con uso di videoproiettore, tabelle e immagini.  Uso di componenti hardware da far vedere agli studenti
1 Evoluzione: memorie (RAM e dispositivi di memorizzazione di massa) presentazione con uso di videoproiettore, tabelle e immagini.  Uso di componenti hardware da far vedere agli studenti
2  La struttura fisica dell’elaboratore Esercitazione di laboratorio: assemblaggio di un PC e riconoscimento delle componenti, inquadrate all’interno dell’architettura di un computer
1 Verifica

Materiali di studio:

  1. Architettura di von Neumann
  2. http://www.youtube.com/watch?v=oqWUYZaaTx0 questo video è molto interessante perchè traccia la storia delle prime macchine da calcolo e fa vedere come si è arrivati al modello di Von Neumann a partire dalla tecnologia meccanica, con la “macchina di Babbage”, ed inoltre ne illustra il funzionamento, il tutto perfettamente inserito nel contesto storico
  3. ) Modello von Neumann in pdf
  4. CPU e ciclo di funzionamento del processore
  5. una CPU smontata e analizzata al microscopio
  6. Evoluzione storica delle principali CPU
  7. ) Cpu multicore: la tecnologia Core
  8. ) il Chipset
  9. ) la motherboard
  10. ) la memoria primaria (o memoria di lavoro )

Capito tutto?

Per controllare la vostra preparazione, provate a rispondere alle seguenti domande (sono simili a quelle che potreste trovare sulla verifica o sentirvi chiedere in una interrogazione)

  1. Descrivete l’architettura di Von Neumann spiegando la funzione che svolgono le varie componenti
  2. La memoria principale è una componente “attiva” o “passiva”? Spiegate perchè
  3. Per quale motivo sono stati introdotti i BUS
  4. A cosa serve il Bus indirizzi
  5. A cosa serve il Bus di Controllo
  6. A cosa serve il Bus Dati
  7. Che sono sono MMU, MAR e MDR? Descrivete in che modo CU e memoria principale interagiscono
  8. Che ruolo svolge la CU (Control Unit)?
  9. Che cosa è un “microprocessore”
  10. Indicate le principali tappe evolutive delle CPU dall’8086 alla tecnologia Core
  11. Che differenza c’è, in termini di quantità massima di memoria indirizzabile, fra una CPU con MAR a 20bit ed una con MAR a 32 bit
  12. Descrivete, a grandi linee, in che modo viene realizzata una CPU
  13. Come è organizzata la “memoria principale” (quali tipi ne esistono, come è diviso lo spazio….)
  14. L’evoluzione delle CPU, negli anni, si è concentrata su tre aspetti, che sono stati migliorati di volta in volta. Quali sono
  15. Supponiamo che vogliamo progettare una nostra CPU, e possiamo scegliere, a parità di velocità complessiva finale, se usare un solo core, a 3 Ghz, oppure due core a 1,5 GHz ciascuno. Quale soluzione è preferibile in termini di consumo energetico? Perchè?
  16. Che cosa è il chipset? Descrivetene le funzioni, facendo riferimento a qualche modello che conoscete
  17. quali funzioni svolge la motherboard
  18. Quali conseguenze ha avuto negli anni ’90 la concorrenza fra AMD e Intel
  19. Descrivete le fasi del “Ciclo del processore”, con particolare riferimento aciò che avviene nei registri della CPU
  20. Indicate il nome dei registri che conoscete e spiegate a cosa servono
  21. Quale è il contenuto del Program Counter?
  22. Da quali parti fondamentali è composta una istruzione per la CPU
  23. Cosa avviene durante la fasedi “Fetch delle istruzioni”

Ancora una lightbox??? Ma basta!!!!!

e invece no! Ecco ancora un’altro script per la realizzazione dell’effetto lightbox nelle pagine web.

Perchè? Semplice: ne volevo uno leggerissimo, facilissimo da capire in quanto mi serviva per spiegare il meccanismo ai miei studenti, e soprattutto che contenesse istruzioni molto elementari (ovviamente nei limiti consentiti da uno script che comunque aggiunge oggetti al DOM e ne setta le proprietà ed i metodi). Continua a leggere “Ancora una lightbox??? Ma basta!!!!!”

PIC e Linux: 4) La gestione del display LCD

Una delle cose che possono risultare utili sin da subito è la possibilità di visualizzare “qualcosa” con i PIC.

Ad esempio ci piacerebbe poter visualizzare il valroe di una temperatura, o lo stato di alcune porte, e tutto ciò con qualcosa di meglio che non dei semplici LED o dei display a 7 segmenti.

Per tutto questo si rivelano molto utili i display alfanumerici LCD, in quanto sono:

  • economici
  • semplici da usare
  • ricchi di possibili applicazioni

I display LCD alfanumericivengono venduti in diverse forme, ma tutti consentono di visualizzare un certo numero di caratteri (ad esempio 20 caratteri) su una o più righe (in genere si trovano display da 1 riga, 2righe o 4 righe). Continua a leggere “PIC e Linux: 4) La gestione del display LCD”

PIC e Linux: 3) L’uso degli interrupt in SDCC

Cosa siano e come si usano gli interrupt lo abbiamo già visto nella lezione di settorezero sul timer, e maggiori approfondimenti che riguardano gli interrupt a due livelli tipici dei PIC18 li possiamo trovare in quest’altra lezione.

Tuttavia la sintassi con cui si usano gli interrupt nell’SDCC non è documentata molto chiaramente, e per evitarvi di perdere tempo ve la spiego con un esempio:
Continua a leggere “PIC e Linux: 3) L’uso degli interrupt in SDCC”

What is “this”

Il famigerato “This”.

Non appena cominciamo ad utilizzare il Javascript, alcuni studenti mi chiedono subito “ma prof., cosa significa quel ‘this’ che vediamo da più parti?”

Ovviamente avendo a che fare con ragazzi alle prime armi nel campo della programmazione, diventa diffcile e troppo astratto dare definizioni come “è il puntatore all’oggetto corrente. Continua a leggere “What is “this””