Introduzione alle reti di calcolo programmabili
1.2 Progettare una rete di calcolo programmabile
1.2.1 Una rete di calcolo dedicata
1.2.1.1 Soluzione combinatoria
1.2.1.2 Soluzione sequenziale
1.2.1.3 Il diagramma degli stati del sequenziatore
1.2.2 Sequenziatore basato su contatore e memoria ROM
1.2.3 Estensione delle possibilità di calcolo
ALU
Test della ALU
1.2.4 Rete di calcolo basata su ALU.
E' denominata Mp8A ed è riportata anche nell'Appendice B del libro.
Per programmare la memoria di programma con l'esempio del "calcolo della media" descritto nel libro e riportato anche qui sotto, si può utilizzare il file di programmazione reperibile qui.
1.3 Sequenziazione, Microistruzioni e Microprogrammi
1.3.1 Un sequenziatore più compatto
1.3.2 Il sequenziatore microprogrammato
1.3.3 Il sequenziatore microprogrammato e la precedente rete di calcolo
Questa rete è stata denominata Mp8B ed è riportata anche nell'Appendice B del libro.
Per programmare la memoria di programma con l'esempio del "calcolo della media" descritto nel libro e riportato anche qui sotto, si può utilizzare il file di programmazione reperibile qui.
1.4 Salti, cicli e decisioni
1.4.1 I cicli e l'istruzione di salto
Rete con salto incondizionato.
La figura mostrata qui è parziale, mostra soltanto le modifiche al sequenziatore rispetto alla rete precedente (spiegate nel libro). Con un click sulla figura, si aprirà in Deeds la rete completa, già programmata con l'esempio introduttivo descritto nel libro e riportato sotto alla figura.
1.4.2 Le decisioni e l'istruzione di salto condizionato
Rete con i salti condizionati.
Le due figure qui sotto rappresentano le modifiche rispetto alla precedente rete Mp8B (il registro dei FLAG e la rete di controllo delle condizioni di salto). Con un click sulle figure, si aprirà in Deeds la rete completa (Mp8C), in grado di eseguire i salti condizionati e incondizionati.
Per programmare la memoria di programma con l'esempio sui salti condizionati descritto nel libro e riportato anche qui sotto, si può utilizzare il file di programmazione reperibile qui.
1.5 Porti di ingresso e uscita
Le due figure del libro rappresentano i porti di ingresso e i porti di uscita, questi ultimi aggiunti alla rete precedente (Mp8C). Con un click sulla figura, si aprirà in Deeds la rete completa (Mp8D).
Per programmare la memoria di programma con l'esempio introduttivo sui porti di ingresso e uscita, riportato anche qui sotto, si può utilizzare il file di programmazione reperibile qui.
1.5.3 Esempi di utilizzo dei porti
Per ciascun esempio, viene fornito il file di programmazione della ROM (memoria di programma), e l'opportuna rete da utilizzare. Per i primi due esempi, infatti, alla rete Mp8D sono stati aggiunti dei componenti DAC (Digital to Analog Converter), utili per visualizzare l'andamento delle uscite dei porti; si tenga presente che i DAC visualizzano numeri con segno (in complemento a due), con un range compreso tra -128 e +127.
Si consiglia di impostare le costanti sui porti di ingresso come suggerito per ciascun esempio.
1.5.3.1 Generazione di sequenza triangolare
- Rete Mp8D (con aggiunta dei DAC)
- Programma
- OP0 = 7Fh (valore di partenza, supposto maggiore di zero)
- OP1 = 01h (per l'incremento di 1)
- Frequenza di animazione del clock = circa 300 Hz
1.5.3.2 Generazione di sequenza trapezoidale
- Rete Mp8D (con aggiunta dei DAC)
- Programma
- OP0 = 01h (per l'incremento di 1)
- OP1 = 20h (valore di partenza, supposto maggiore di zero)
- OP2 = 60h (valore di arrivo, supposto maggiore di OP1 e maggiore di zero)
- OP3 = 1Fh (durata del tratto costante, supposta maggiore di zero)
- Frequenza di animazione del clock = circa 300 Hz
1.5.3.3 Generazione di segnali con tecnica PWM
- Rete Mp8D
- Programma
- OP0 = 00h (per azzerare l'accumulatore, dopo l'inizializzazione dei porti)
- OP1 = 3Fh (test PORT0)
- OP2 = 7Fh (test PORT1)
- OP3 = 01h (incremento di 1, ma anche inizializzazione delle linee 0 dei porti ad 1)
- Frequenza di animazione del clock = circa 300 Hz
1.6 Costanti, variabili e la memoria di lettura e scrittura
Dopo l'aggiunta della possibilità di leggere costanti dalla memoria di programma, e l'aggiunta della memoria RAM, la rete finale del processore è la seguente (Mp8E):
1.6.8 Esempi di utilizzo della rete Mp8E
Per ciascun esempio, viene fornito il file di programmazione della ROM (memoria di programma), e l'opportuna rete da utilizzare. Nel terzo esempio, alla rete Mp8E sono stati aggiunti dei componenti DAC (Digital to Analog Converter), utili per visualizzare l'andamento delle uscite dei porti; si ricorda che i DAC visualizzano numeri con segno (in complemento a due), con un range compreso tra -128 e +127.
Si consiglia di impostare le costanti sui porti di ingresso come suggerito per ciascun esempio.
1.6.8.1 Calcolo di una espressione logica
- Rete Mp8E
- Programma
- Suggerimento: OP0 = 11h
- Suggerimento: OP1 = 10h
- Frequenza di animazione del clock < 5 Hz, o animazione disabilitata
1.6.8.2 Calcolo di una espressione matematica
- Rete Mp8E
- Programma
- Suggerimento: OP0 = D8h
- Suggerimento: OP1 = 03h
- Frequenza di animazione del clock = 20 Hz, o animazione disabilitata
1.6.8.3 Generazione dei campioni di una sinusoide
- Rete Mp8E (con aggiunta dei DAC)
- Programma
- OP0, OP1: non utilizzati
- Frequenza di animazione del clock = 30 Hz, o animazione disabilitata
1.7 Esercizi
1.7.1 Reti di calcolo dedicate
Esercizio 1 (traccia):
Esercizio 2 (traccia):
Esercizio 3 (traccia):
Esercizio 4a (tracce della rete di calcolo e della MSF):
Esercizio 4b (tracce della rete di calcolo e della MSF):
Esercizio 5a (traccia):
Esercizio 5b (traccia):
Esercizio 6 (traccia della ALU e della rete di test):
Esercizio 7 (traccia del comparatore e della rete di test):
1.7.2 Reti di calcolo programmabili
Esercizi 1a, 1b, 1c:
(Rete di calcolo Mp8A, da programmare)
Esercizi 2a, 2b:
(Rete di calcolo Mp8C, da programmare, alla quale è stato aggiunto un DAC, per permettere la visualizzazione delle forme d'onda generate. Si tenga presente che il DAC visualizza numeri con segno [in complemento a due], con un range compreso tra -128 e +127)
Esercizi 3a, 3b:
(Rete di calcolo Mp8D, da programmare, alla quale sono stati aggiunti due DAC, per permettere la visualizzazione delle forme d'onda generate. Si tenga presente che il DAC visualizza numeri con segno [in complemento a due], con un range compreso tra -128 e +127)
Esercizi 4, 5, 6, 7:
(Rete di calcolo Mp8E, da programmare)
1.8 Soluzioni
1.8.1 Reti di calcolo dedicate
Soluzione esercizio 1:
Soluzione esercizio 2:
Soluzione esercizio 3:
Soluzione esercizio 4a (rete di calcolo e MSF):
Soluzione esercizio 4b (rete di calcolo e MSF):
Soluzione esercizio 5a (rete di calcolo e file di programmazione della ROM):
Soluzione esercizio 5b (rete di calcolo e file di programmazione della ROM):
Soluzione esercizio 6 (ALU modificata e rete di test):
Soluzione esercizio 7 (comparatore e rete di test):
1.8.2 Reti di calcolo programmabili
Qui di seguito sono scaricabili i file di programmazione della ROM (memoria di programma), con accanto il link per scaricare il file della relativa rete da programmare.
Rete Mp8A:
Soluzione es. 1a,
Soluzione es. 1b,
Soluzione es. 1c
Rete Mp8C:
Soluzione es. 2a,
Soluzione es. 2b
Rete Mp8D:
Soluzione es. 3a,
Soluzione es. 3b
Rete Mp8E:
Soluzione es. 4,
Soluzione es. 5,
Soluzione es. 6,
Soluzione es. 7
1.8.3 Microprogrammazione di nuove istruzioni
Soluzione complessiva degli esercizi 1, 2, 3, 4, 5, 6, 7, 8: File di programmazione (della memoria di microprogramma) Rete Mp8E (da riprogrammare)
1. Errata Corrige (Cap. 1)
Pag. XIII (prefazione)
Ultimo capoverso a fondo pagina. Si legga, all'inizio:
Pag. 5
Prima nota a piè di pagina. Si legga:
Pag. 5 e 6
In più punti, nelle due pagine, al posto di 'Harward', si legga 'Harvard'. Ad esempio, nella seconda nota a piè di pagina 5, si legga:
Pag. 24
Al centro pagina, dopo la prima tabella, si legga:
Dopo la seconda tabella, si legga:
Pag. 25
Primo capoverso in alto. Si legga:
Pag. 62
Primo capoverso in alto. Si legga:
Pag. 66
Secondo capoverso, al centro pagina. Si legga:
Pag. 68
Ultimo capoverso, al centro pagina. Si legga:
Pag. 111
Primo capoverso delle note. Si legga: