HARDWAREMONTAGES ★ User Port Per Amstrad ★

User PortHardware Montages

Anche se il computer Anistrad CPC464 ha un enorme potenziale di espansione ed è certamente una buona macchina per chiunque sia interessato ai dispositivi che possono essere aggiunti dall'utente, manca di una qualsiasi cosa che possa essere paragonata alla porta di utente, che invece si può trovare su altre macelline, come i Commodore 64 e VIC20. Queste porte mettono a disposizione 8 linee, ciascuna delle quali può essere separatamente programmata come ingresso o come uscita, più una coppia di linee handshake. Sono inoltre disponibili due temporizzatori/contatori da 16 bit. che possono essere utilizzati per contare gli impulsi d'ingresso, oppure per dividere il clock di sistema, in modo da fornire u-na vasta gamma di frequenze d'uscita. Questa è una funzione invero molto utile. utilizzata in molti accessori del computer in oggetto.

Il componente utilizzato per formare la porta di utente del VIC20è il VIA (Versatile Interface Adaptor) tipo 6522. Il Commodore 64 ha una specie di versione migliorata del 6522. il CI A (Complex Interface Adaptor) tipo 6526. ma questo componente non è disponibile per gli u-tilizzi dilettantistici.

Il 6522 è. naturalmente, previsto per essere utilizzato con le famiglie di micro-processori 6502 e 6800, mentre il computer Amstrad CPC464 è basato su uno Z80A. Sarebbe possibile ottenere prestazioni analoghe a quelle del 6522, utilizzando una coppia di periferiche Z80A (P10Z80A e CTCZ80A ) ma, nonostante alcune difficoltà, è possibile interfacciare le periferiche delle serie 6500 e 6800 a computer basati su Z80 e Z80A. L'utilizzo un 6522 con un CPC464 è u-na proposta attraente, perché offre una eccellente gamma di funzioni ad un costo molto modesto. Dovrebbe anche permettere l'interfacciamento al CPC464 della maggior parte degli accessori disponibili per il VIC20e il C64: è sufficiente un pò di ingegnosità. Il dispositivo descritto in questo articolo è quindi un'interfaccia 6522 abbastanza semplice da realizzare.

I problemi relativi all'interfacciamento di una periferica della serie 6500 con un sistema basato sullo Z80A. scaturiscono dalle differenze nei bus di controllo. C'è inoltre un altro problema, in quanto il sistema Z80A utilizza di solito una frequenza di clock di circa 4 MHz, mentre un 6522 standard ha la massima frequenza di clock di un solo MHz. In realtà, questo non è un vero problema, perché la maggiore frequenza di clock dello Z80A è dovuta ai diversi sistemi di gestione delle operazioni inteme e non a circuiti logici realmente veloci. Questo è dimostrato dal fatto che le periferiche standard ( 1 MHz) 6500 e 6800 possono essere fatte funzionare con i sistemi Z80A a 4 MHz e non è sempre necessario far ricorso alle periferiche ad alta velocità delle serie "A" e "B". Per pura informazione, il CPC464 incorpora una periferica della serie 6800. sotto forma del chip video 6845.

I due elenchi dati in Tabella 1 sono i bus di controllo standard 6502 e Z80. e mostrano le differenze più importanti tra i due.

Non esistono difficoltà con le linee CLOCK e RESET negato, che sembrano entrambe compatibili. Nemmeno con la linea M1 esistono problemi e. quando si utilizzano periferiche della serie 6500. può essere semplicemente i-gnorata. Il principale ostacolo consiste nelle differenti disposizioni di lettura/ scrittura: infatti, il 6502 ha un'unica linea che viene mantenuta a livello basso durante le operazioni di lettura, mentre lo Z80 possiede linee di lettura e scrittura separate, che vanno a livello basso durante le operazioni alle quali sono destinate.

La linea di scrittura dello Z80 è in realtà approssimativamente equivalente alla linea di lettura/scrittura del 6502, perché entrambe vanno a livello basso durante la scrittura e può essere usata per pilotare l'ingresso lettura/scrittura di una periferica della serie 6500. Tuttavia.

non sempre è sicuro lasciare semplicemente scollegata la linea di lettura ed è consigliabile collegare ad una porta sia questa linea che quella di scrittura, usandole poi per pilotare un ingresso di selezione del chip della periferica serie 6500, per garantire che il dispositivo sia disattivato sempre, tranne quando ha luogo effettivamente un'operazione di lettura/scrittura, evitando in tal modo letture spurie. Questo potrebbe sembrare di scarsa importanza, ma il risultato potrebbe essere un prematuro azzeramento dei flag del registro di stato.

Il 6502 possiede dispositivi di ingresso /uscita mappati in memoria, mentre lo Z80 utilizza una mappa di ingresso Ai-scita separata. Le linee IORQ negato (ri-chiesta di ingresso /uscita ) e MEMRQ negalo (richiesta di memoria) vengono utilizzate per fornire le mappe separate, mentre la linea IORQ negato va a livello basso durante l'accesso ad un dispositivo di ingresso/uscita e la linea MEMRQ negato va a livello basso quando si accede ad un circuito di memoria. Questi differenti schemi comportamentali non hanno reali conseguenze e la linea IORQ negato viene decodificata dal decodificatore degli indirizzi, proprio come avviene per qualsiasi circuito periferico del tipo Z80. MEMRQ negato viene semplicemente ignorato.

Figura 1. Schèma elettrico della porta d'utente. Il cuore del circuito è il VIA 6522.
Figura 2. Piedinatura della porla di espansione. Sono evidenziali i segnali utili al circuito.

Schema elettrico

Lo schema elettrico completo dell'interfaccia è illustrato in Figura I. I1CPC464 presenta un sistema molto semplice di mappatura ingresso /uscita nel quale.

mantenendo basse le otto linee più significative. viene attivato un circuito periferico. Le otto linee di indirizzamento meno significative sono disponibili qualora un circuito periferico necessiti di più di un indirizzo.

Questo non è il sistema standard di mappatura di ingresso/uscita dello Z80. ma costituisce un approccio pratico, che permette di utilizzare una quantità minima di decodifica degli indirizzi. La linea di indirizzamento AIO è libera per le aggiunte da parte dell'utilizzatore ed inquesto circuito essa viene decodificata con IORQ negato, dalla porta NOR a due ingressi IC2d. L'uscita di IC2d va a livello alto ed attiva l'ingresso positivo di selezione del chip di IC1 (il 6522) quando A10 e IORQ negato sono entrambe a livello basso.

Le restanti tre porte logiche di IC2 decodificano le linee di lettura e di scrittura. IC2b produce un'uscita bassa quando sono a li vello basso RD negato o WR negato e pilota l'ingresso negativo di selezione del chip di IC1.

Oltre ad IC2 ed al condensatore di disaccoppiamento C1. il solo altro componente del circuitoè lo stesso 6522. Il bus dei dati del computer si collega diretta-mente al bus dei dati di IC1 II 6522 ha sedici registri e di conseguenza quattro ingressi di selezione del registro. Essi sono pilotati dalle linee di indirizzamento A0-A3. disponendo i registri in sedici indirizzi contigui. Poiché viene utilizzata una parte notevolmente minore dell'intera capacità di indirizzamento, ciascun registro appare contemporaneamente in un certo numero di indirizzi. Tuttavia, è consigliabile utilizzare gli indirizzi da &F800 a &F80F. per evitare operazioni indesiderate da parte del-l'hardware intemo del computer.

Z806502
RDR/W
WR
IORQ
MEMRQ
CLOCKCLOCK
RESETRESET
M1
Tabella 1. Linee di controllo della CPU.

I terminali RESET negato e CLOCK sono alimentati dalle corrispondenti linee della porta "floppy disk" (espansione) del CPC464. Osservare che. poiché la frequenza di clock è di 4 MHz anziché di 1 MHz. quando i temporizzatori sono usali per dividere il segnale di clock, la frequenza d'uscita sarà quattro volte maggiore rispetto alla situazione normale. Questo non è però un grave inconveniente e la più ampia gamma di frequenze d'uscita può persino essere vantaggiosa in alcune applicazioni. Non è possibile dividere per quattro il clock, in modo da ottenere il segnale da 1 MHz per IC1. perché questo supererebbe le possibilità di temporizzazione del sistema durante le operazioni di scrittura, rendendo impossibile scrivere dati in IC1. PB0-PB7 sono le otto linee di dati della porta B di IC1 e CB1 più CB2 sono le due linee di handshake. Solo questa è disponibile come porta d'utente nel VIC20. In questo caso, sono anche disponibili le otto linee di dati della porta A (PA0-PA7) e le due linee di handshake CAI e CA2), con un totale di 20 linee di ingresso/uscita.

Per il circuito è necessaria una sola alimentazione da 5 V. con una corrente assorbita ben minore di 100 mA, che può essere prelevata dalla porta di utente del computer stesso.

Realizzazione pratica

La traccia rame del circuito stampato è disegnata in scala naturale in Figura 3. mentre la disposizione dei componenti è riportata in Figura 4. Poiché ICI è un componente MOS e costa anche parecchio (è un DIL a 40 piedini), per questo circuito integrato è indispensabile uno zoccolo. Montare tutti gli altri componenti. compresi i cavi ed i collegamenti cablati prima di inserire IC1 nel suo zoccolo, accertandosi poi che il suo orientamento sia corretto.

IndirizzoFunzione
&F800Porta periferiche B (porta B)
&F801Porta periferiche A (porta A)
&F802Direzione dati B
&F803Direzione dati A
&F804Latch temporizzatore 1 (byte basso)
&F805Latch temporizzatore 1 (byte alto)
&F806Contatore temporizzatore 1 (byte basso)
&F807Contatore temporizzatore 1 (byte alto)
&F808Latch temporizzatore 2 (byte basso)
&F809Latch temporizzatore 2 (byte alto)
&F80ARegistro a scorrimento
&F80BControllo ausiliario
&F80CControllo periferiche
&F80DFlag di interruzione
&F80EAttivazione interruzione
&F80FPorta A (niente handshaking)

Tabella 2. Indirizzi e funzioni dei registri del VIA 6522.

I collegamenti al computer verranno effettuati mediante uno spezzone di cavo a piattina da 20 poli, lungo circa mezzo metro. L'estremità libera del cavo è munita di un connettore da 2 x 25 poli e passo di 0,1 pollici tra i contatti, utilizzando il sistema di collegamento illustrato nelle Figure 2 e 3. L'utilizzo di cavo multipolare a fili di diverso colore è fortemente raccomandato, perché riduce di molto il rischio di errori di cablaggio. E' improbabile che abbiate a disposizione un connettore munito di adatta chiave di orientamento ma, con un pò di ingegnosità. potrete inserirne una. In alternativa, il connettore dovrà essere munito di chiari contrassegni.

Sul prototipo, sono stati utilizzati semplici connettori per c.s., con passo di 2,54 min tra i contatti, per portare le connessioni di ingresso e di uscita della porta (che comprendono +5 V e GND, con un totale di 22 terminali ). La spina a 22 poli consiste in realtà di una a 10 ed una a 12 poli, accostate tra loro. Naturalmente, va bene anche qualsiasi altro tipo di connettore con passo di 2.54 mm.

Messa in opera

Collegare l'unità alla porta "floppy disk" del computer prima di accenderlo. Dopo che il computer è stato acceso, dovrebbe apparire sullo schermo il solito messaggio ed il computer dovrebbe funzionare normalmente. Se si nota qualche segno di malfunzionamento, spegnere immediatamente e ricontrollare l'interfaccia. Come prova veloce, per determinare se l'unità funziona normalmente o meno, inserire questo comando:

PRINT INP(&F800)

Se tutto va bene, dovrebbe apparire il numero 255. Provare a collegare a massa PBO e ripetere il comando. Il valore ottenuto dovrebbe ora essere 254.

Il 6522 è un componente molto complesso, che dispone di una vasta gamma di prestazioni. In questo caso, non viene utilizzata l'uscita IRQ (richiesta di interruzione ) dei piedino 21. escludendo definitivamente alcune funzioni. Qui abbiamo spazio sufficiente soltanto a descrivere alcuni aspetti fondamentali del 6522 e chiunque voglia utilizzare praticamente questo progetto è vivamente consigliato di procurarsi i fogli dati, che trattano compiutamente di tutti gli a-spetti del componente In Tabella 2 sono elencati tutti i sedici registri, oltre ai loro indirizzi primari. Naturalmente, le funzioni più utili del componente sono le due porte di ingresso/uscita. la cui funzione è abbastanza facile da capire. Ciascuna linea può essere predisposta come ingresso o come uscita e la funzione ottenuta dipende dallo stato del relativo bit nell'appro-priato registro direzione dati. Un bit a livello 0 predispone la corrispondente linea come ingresso; la linea viene predisposta come uscita se il bit è 1. L'impulso di reset all'accensione azzera tutti i registri e di conseguenza tutte le linee sono predisposte come ingressi.

Figura 3. Circuito stampato visto dal lato rame in scala unitaria.

Se. per esempio, vogliamo predisporre le linee PA0-PA3 come uscite e PA4-PA7 come ingressi, i bit da 0 a 3 del registro direzione dati A dovranno essere portati al livello 1 ed i bit da 4 a 7 a livello 0. Dovrà quindi essere scritto nel registro direzione dati A il numero 15 e questo risultato potrà essere ottenuto da BASIC, utilizzando l'istruzione OUT (cioè OUT &F803.15). Nella maggior ti in esse contenuti non vengono letti in questi indirizzi. Essi vengono scritti o Ietti dagli appropriati registri delle periferiche. Per esempio, i dati per la porta B vengono scritti nel registro delle periferiche B, che si trova al-l'indirizzo &F800. Le porte possono essere lette in BASIC utilizzando la funzione INP(X), come nel semplice e-sempio dato in precedenza. A tutti gli ingressi sono applicati resistori di pull-up e di conseguenza sono a livello alto se lasciati non collegati. Il CPC464 gestisce una funzione AND a bit, che può essere utilizzata per mascherare qualsiasi bit che non interessi. Molte applicazioni necessitano della funzione handshaking per controltransizioni alto-basso che basso-alto. In altre parole, non può rispondere a livelli logici fissi, come le linee dei dati, ma rileva transizioni da uno stato logico ad un altro. CA2 è più complesso ed ha otto modi operativi (quattro ingressi e quattro uscite). Quando viene usato come ingresso, risponde anch'esso a transizioni. piuttosto che a stati fissi. CA1 e CA2 sono controllati dai quattro bit meno significativi del registro di controllo delle periferiche, come specificato nella Tabella 3. CB1 e CB2 sono controllati esattamente nello stesso modo, dai quattro bit più significativi ed i numeri decimali tra parentesi sono i valori equivalenti per CB1 e CB2.

Figura 4. Disposizione dei componenti sulla basetta stampata.

Quando un ingresso viene attivato, predispone l'opportuno bit del registro dei flag di interruzione, nel seguente modo: CA1 Bit 1 (2), CA2 Bit 0 (1), CB1 Bit 4 (16) , CB2 Bit 3 (8).

Il numero tra parentesi è il valore decimale del quale viene incrementato il valore prelevato dal registro delle interruzioni quando questo bit viene settato. Con i modi di ingresso handshakek i flag vengono resettati leggendo o scrivendo nell'opportuna porta, oppure scrivendo I nel rispettivo bit del registro delle interruzioni (e non. come si potrebbe pensare, scrivendo 0 nel bit da resettare). Questo potrebbe sembrare uno strano modo di fare le cose, ma rende più facile resettare soltanto il flag od i flag desiderati. I modi di ingresso indipendenti sono diversi, perché i flag possono essere resettati esclusivamente utilizzando questo secondo sistema e non vengono influenzati dalle operazioni di lettura o scrittura sulle porte.

Numero binario / decimaleModo operativo
0000/0 (0)CA1 handshake da alto a basso
0001/1 (16)CA1 handshake da basso ad alto
0000/0 (0)CA2 handshake da alto a basso
0010/2 (32)CA2 indipendente da alto a basso
0100/4 (64)CA2 handshake da basso ad alto
0110/6 (96)CA2 indipendente da basso ad alto
1000/8 (128)CA2 handshake da alto a basso
1010/10 (160)CA2 uscita impulso da alto a basso
1100/12 (192)CA2 uscita bassa
1110/14 (224)CA2 uscita alta
Tabella 3. Valori dei registri di controllo periferiche per il funzionamento handshaking.

Due dei modi d'uscita sono utilizzati semplicemente per stabilire a livello alto o basso, come necessario, la linea d'uscita. Il modo di uscita ad impulso è uti-le perché fornisce un breve impulso negativo quando i dati vengono scritti, oppure letti dal relativo registro della periferica. Il modo di uscita handshake porta a livello basso la linea quando i dati vengono scritti nella rispettiva porta e la linea viene riportata al livello alto in occasione di una transizione attiva sull'altra linea handshake di quella porta.

Naturalmente, se state utilizzando diverse linee handshake, deve essere scritto un singolo valore nel registro di controllo delle periferiche, per predisporre i necessari modi operativi. Si tratta soltanto di trovare il valore necessario a predisporre ciascuna linea per il modo richiesto, usando la Tabella 3; la somma di questi valori viene poi scritta in &F80C. Per un rapido controllo della linea handshake, provare questo sempl ice programma

5 OUT &F80C,0
10 PRINT INP(&F80D) AND 1
20 OUT &F801,0
30 FOR D=1 TO 100
40 NEXT
50 GOTO 10

Facendolo girare, questo programma stampa ripetutamente lo stato del flag CA2, nell'angolo in basso a sinistra dello schermo e lo resetta, se necessario. CA2 viene predisposto nel modo handshake da alto a basso. Di conseguenza, vengono normalmente ottenute letture "0", ma ogni volta che CA2 viene cortocircuitato a massa, verrà ottenuta dal computer un'unica lettura "1". L'utilizzo dei temporizzatori va invero oltre gli scopi di questo articolo ma. come rapida prova, potrete provare questi comandi:

OUT &F80B,192
OUT &F804,208
OUT &F805.7

La prima riga predispone il temporizzatore 1 nel modo ad avanzamento libero ed attiva l'uscita su PB7, mentre le successive due righe scrivono il valore 2000 nei latch del temporizzatore 1. La frequenza d'uscita su PB7 è uguale a 2000000 divisi per il valore scritto nel temporizzatore 1: con questi valori, la frequenza d'uscita è 1 kHz. Tuttavia, u-tilizzando valori differenti, è possibile ottenere frequenze comprese tra la banda audio bassa e la banda ultrasonica.

ELENCO DEI COMPONENTI
C1cond. in poliestere da 100 nF
IC1VIA 6522
IC274LS02
-piattina 20 fili
1connettore a pettine 2x25 poli, passo 2,54 mm
1zoccolo DIL. 40 piedini
1zoccolo DIL 14 piedini
1spina 12 poli, passo 2,54 nnn
1spina 10 poli, passo 2.54 mm
1circuito stampato

Il Kit e il circuito stampato di questa realizzazione sono distribuiti dalla I B I- Casella Postale 154 - 37053 Cerea (VR) tel. 0442*****

Fare Elettronica

★ PUBLISHER: Fare Elettronica
★ ANNÉE: 1989
★ AUTHOR: A. Cattaneo
 


Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.732-desktop/c
Page créée en 914 millisecondes et consultée 75 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.