Scheda con uP Z80
[Index][Scheda madre con uP Z80][Programma][Tastierino][Scheda visualizzazione][Scheda alimentazione e clock]
[Lista Argomenti]

Con questo modulo si realizza la scheda madre dove saranno presenti il microprocessore Z-80 ( vedi PINOUT ), le memorie e i vari connettori per le connessioni con gli altri moduli ed eventuali periferiche di input/output ( I/O ).
Il dispositivo principale di questa scheda è sicuramente il uP Z80 ( vedi datasheet ); realizzato in tecnologia NMOS è uno dei microprocessori ad 8 bit più diffusi (anche se un po datato). Ha 16 linee di indirizzo e può dunque indirizzare 65536 byte di memoria.
La frequenza massima di clock varia dai 2MHz agli 8 MHz dei modelli più recenti. Come tensione di alimentazione utilizza i classici +5V ed assorbe una corrente massima di 150-200mA. I livelli di tensione sui suoi PIN sono TTL compatibili.
Lo Z80 presenta un gruppo di registri di uso speciale e due banchi di registri di uso generale, uno principale e uno secondario, scambiabili tra di loro. Presenta un totale di 22 registri riportati di seguito:

registri z80
Registri del microprocessore Z80

Per maggiori informazioni sui registri clicca qui.
I registri di uso generale o di lavoro possono essere utilizzati a coppie e, per tanto, ci saranno le coppie BC, DE e HL in modo da formare dei registri a 16 bit. In questo caso il bit più significativo del dato risiede nel primo registro B, D o H, il meno significativo nel secondo registro C, E o L.
Per ulteriori informazioni sui segnali di controllo dello Z80 clicca qui.
Per quanto riguarda la frequenza di lavoro si utilizzerà una frequenza di 2MHz per non rischiare di avere problemi con delle periferiche poichè queste possono lavorare a frequenze molto minori.
Nella CPU è inoltre presente l' ALU (Arithmetic Logic Unit) che elabora le informazioni normalmente matematiche proprio grazie al dispositivo logico aritmetico.
Per comprendere bene il funzionamento dello Z80 è necessario vederne l' architettura interna, la quale può essere divisa nei seguenti blocchi funzionali:
  • Unità logica aritmetica o ALU
  • Registro istruzioni
  • Decodificatore delle istruzioni
  • Circuito di temporizzazione e di controllo
  • Registro di controllo degli indirizzi
  • Bus dati interno ad 8 bit per lo scambio di dati tra i blocchi funzionali interni
architettura interna z80

Per lo scambio di informazioni, abilitazioni di dispositivi e loro controllo lo Z80 utilizza 3 tipi di BUS: bus dati, bus indirizzi e bus controlli.
Il microprocessore per funzionare ha bisogno di memorie dove poter prelevare ed immettere del codice, altrimenti sarebbe solo un integrato
"inutile".
Le memorie sono dispositivi che consentono di immagazzinare e mantenere, in modo permanente o temporaneo, informazioni espresse in forma binaria. Le memorie vengono utilizzate per immagazzinare il programma, ossia la sequenza delle istruzioni necessarie per l' esecuzione di un dato processo di elaborazione.
Le memorie si distinguono per capacità di contenimento e per tipo. Vi sono infatti memorie volatili come RAM ( Random Access Memory ) e non volatili come le ROM ( Read-Only Memory ), le EPROM ( Eraseble Read-Only Memory ) e le EEPROM ( Electronic-Eraseble Read-Only Memory ).
Come RAM utilizzeremo la 6264 e come EPROM la 27C64.
6264: RAM statica 8Kb x 8 della famiglia logica CMOS. Ha ingressi ed uscite TTL compatibili e alimentazione a +5V. E' possibile effettuare facilmente delle espansioni tramite dei PIN di abilitazione quali CE1, CE2 e OE.
Il PIN (attivo basso) WE abilita il controllo per la lettura/scrittura della memoria. Quando l' integrato e abilitato e WR=0 è permessa la scrittura in memoria, se WR=1 siamo in fase di lettura. Se il chip non è abilitato le uscite sono tutte in alta impedenza.
Per ulteriori informazioni vedi il datasheet.

27C64: EPROM 8Kb x 8 cancellabile ai raggi UV e riprogrammabile, della famiglia logica CMOS compatibile TTL ed alimentazione a +5V. E' programmabile tramite il PIN VPP che deve essere posto ad un voltaggio di 12,5V. Anche questa memoria ha dei PIN che ne permettono una facile espansione, ma nel nostro caso non occorre tanta memoria.
Per maggiori informazioni vedi il datasheet.
Ci occorre inoltre un demupltiplexer che ci "smisti" le abilitazioni tra le memorie e i periferici, a tale scopo utilizzeremo il 74HC138.
74HC138: Demultiplexer( vedi PINOUT). In sistemi di controllo per le memorie questi decoder possono essere utilizzati per minimizzare gli effetti della decodifica. Questo integrato è un demultiplexer 1 di 8 basato sulla condizione a 3 PIN di selezione e 3 PIN di abilitazione.
Due PIN di abilitazione attivi bassi ed uno attivo alto riducono la necessità di porte logiche esterne o inverter per l' espansione.
Si può comprendere meglio il suo funzionamento grazie alla tabella di verità nel datasheet.
Visto che i periferici non sono di numero così esagerato (65536) viene utilizzata la tecnica del demultiplexing dove ad ogni uscita dell' integrato da noi utilizzato (74HC138) corrisponde l' indirizzo di un periferico, il quale verrà così abilitato.
La tecnica che utilizzeremo per l' interfacciamento è la Memory Mapped. Per ulteriori informazioni sulla differenza tra Memory Mapped e I/O isolato clicca qui.
Agli ingressi di selezione del '138, A(PIN1), B(PIN2) e C(PIN3), dovremo mandare, rispettivamente, le linee di indirizzo A13, A14 e A15 del bus indirizzi del uP Z80 che serviranno, appunto, all' abilitazione di ogni singolo periferico (considerando anche le memorie come periferici); mentre i fili che vanno da A0 ad A12 del bus indirizzi servono a selezionare una delle locazioni di memoria presenti negli 8Kb della RAM o dell' EPROM. Alla luce di quanto esposto ora si può scrivere la tabella di verità del '138:

C
B
A
Y
Indirizzo periferico
0
0
0
Y0
0000h-1fffh EPROM
0
0
1
Y1
2000h-3fffh HI
0
1
0
Y2
4000h-5fffh LO
0
1
1
Y3
6000h-7fffh DA
1
0
0
Y4
8000h-9fffh
1
0
1
Y5
a000h-bfffh
1
1
0
Y6
c000h-dfffh Tastierino
1
1
1
Y7
e000h-ffffh RAM
Tabella di verità dell' integrato 74HC138.

Non avendo usato i PIN da A0 ad A12 del bus indirizzi c'è uno scarto di 1fffh indirizzi tra un' abilitazione e l' altra, per tanto gli altri periferici(non memorie) verranno abilitati anche utilizzando uno degli indirizzi compresi nel range specificato dalla tabella.

E' da notare che due banchi, quelli relativi a Y4 e Y5, non vengono utilizzati ma si potrebbe farlo tranquillamente.
Facendo uno schema sommario rispettando la tabella ora ottenuta avremo:

schema a blocchi dei collegamenti
Schema a blocchi con i segnali di abilitazione dello Z80 e rispettivi periferici

Gli ingressi del microprocessore da noi non utilizzati, poichè attivi bassi, vanno posti tramite una resistenza da 10kohm a Vcc, e questi segnali sono: WAIT, NMI, BUSRQ, poi ci sono INT e RESET che anch' essi sono portati normalmente a Vcc tramite resistenza ma INT verrà portato su uno zoccolo per un eventuale periferico di I/O mentre RESET sarà collegato ad una rete per permettere l' operazione di reset automaticamente o manualmente.
Il RESET automatico serve ad azzerare il contenuto del Program Counter (PC) appena si da alimentazione (vedi meglio il comando RESET ) di modo tale da assicurarsi che il microcomputer riparta sempre dalla prima locazione ( ecco perchè l' EPROM è stata collegata ad Y0 del '138). A tale scopo possiamo servirci di una rete RC costituita da una resistenza da 10khom ed un condensatore ( C1 ) da 4,7uF ottenendo un T=47msec.
Per ottenere un reset manuale (che può sempre servire in caso di loop di programmi) basta porre un pulsante ai capi del condensatore C1 in modo da porre a massa il RESET in caso di pressione del tasto.
I collegamenti con gli altri periferici sono permessi dall' utilizzo di cavi piatti e quindi occorrerà porre sulla scheda a microprocessore anche degli zoccoli con i relativi segnali necessari al funzionamento dei periferici stessi.
Al connettore per l' eventuale scheda I/O occorre portare anche i PIN M1,INT, IORQ e le linee dell' address bus da A0 ad A7 per l' I/O isolato, oltre ovviamente al bus dati e l' alimentazione (+5 e +12 V).
Al connettore per il tastierino andrà oltre al bus dati da D0 a D5 anche l' abilitazione proveniente da Y6 del '138. Per lo zoccolo che collegherà la scheda di visualizzazione andranno il bus dati da D0 a D7 e le abilitazioni per le coppie di display DA, LO e HI.
C'è inoltre un altro connettore relativo alla scheda di alimentazione dalla quale proverranno il segnale di clock per il uP Z80, +12V e i +5V e GND che occorreranno ad alimentare tutti gli altri integrati.
Alla RAM, che dovrà essere abilitata tramite Y7 del '138 portato all' abilitazione attiva bassa e ponendo l' abilitazione attiva alta a Vcc, dovranno andare anche RD e WR del uP Z80. Mentre alla EPROM, che dovrà essere abilitata tramite Y0 del '138 portata all' abilitazione attiva bassa e portando l' abilitazione attiva alta a Vcc, dovrà andare RD del uP.
Per vedere lo schema elettrico della scheda a uP Z80 clicca qui.
Per vedere le foto di questo modulo clicca qui.

Nell' EPROM risiederà il BIOS ( Basic Input Output System ) il quale dovrà svolgere una fase di verifica iniziale ed abilitazione al sistema comprendente le seguenti fasi:
  1. Scrittura e lettura di ogni locazione della RAM per verificarne l' integrità
  2. Acquisizione delle informazioni dalla tastiera e mascheramento
  3. Verifica e abilitazione della scheda di visualizzazione

Adesso si può passare al programma in assembler che dovrà essere caricato sull' EPROM e che servirà a far funzionare il microcomputer nel complesso.


[Index][Scheda madre con uP Z80][Programma][Tastierino][Scheda visualizzazione][Scheda alimentazione e clock][Lista Argomenti]