
                Descrizione tecnica scheda sviluppo Z80

Questo progetto  nato circa 8 anni f , e nel corso degli anni  stato
aggiornato fino alla versione attuale .
La base di partenza deriva da uno schema molto utilizzato ,in campo
amatoriale ,per gestire la trasmissione dati nei ponti radio .

La realizzazione di questa scheda  sorta dalla necessit di avere una
base di partenza affidabile e dal funzionamento certo , su cui poter
sviluppare software ed hardware specifico , da riprodurre in seguito nella
applicazione definitiva .

*********************
N.B.
        Per  chi intende realizzare questo progetto sono
 ASSOLUTAMENTE INDISPENSABILI :

      1) Eprom programmer
         Su questo sito  presente il progetto di un modello adatto
         allo scopo. Altri sono reperibili sul web .

      2) Assemblatore Z80
         (a meno che non intenda scrivere a mano le istruzioni e caricarle
         in memoria una ad una)
         Vedere all'indirizzo:
         http://geocities.com/siliconValley/Peaks/z80_home.htm
         nella sezione software

      3) Terminale video settato a 9600 baud nessuna parit 1 stop bit
         non  richiesta nessuna emulazione particolare .
         Ovviamente pu essere convenientemente sostituito dal PC in
         emulazione di terminale , sia da windows che da dos avviando
         un qualunque programma di emulazione ( qmodem,bitcom,pc-vt,ecc.)

 UTILE :

       4) Oscilloscopio
          Non tanto per il presente progetto che non richiede nessuna
          messa a punto , ma diventa quasi indispensabile se si vogliono
          sviluppare programmi che accedono a risorse esterne alla CPU .

*********************


La presente documentazione descrive :

        le caratteristiche della scheda in oggetto
        il software di gestione residente in eprom
        le soluzioni circuitali adottate

Caratteristiche  scheda :
        CPU                     = Z80 cmos (Z84C00)
        Frequenza clock         = 2.457.600 Hz
        EPROM                   = 32K cmos  (27C256)
        RAM                     = 32K cmos  (62256)
        Ritenzione dati ram     = batteria NICD 3.6v
        I/O                     = 3 port configurabili (82C55)
        Comunicazione seriale   = RS232 baud rate & formato configurabile
                                  (82C50 o 16C450 o 16C550)
        Interrupt               =  N 1  mascherabile


*********************

  All'accensione del sistema ed ad ogni reset viene eseguito un test sui
  dip switch per determinare quale programma , tra quelli eventualmente
  presenti in EPROM avviare.
  Al momento attuale sono eseguibili 2 soli programmi :
     configurazioni diverse da quelle indicate non sono gestite
  1) test della trasmissione seriale al display remoto
     chiudere dip switch 2
  2) monitor residente
     aprire entrambi gli switch

              MONITOR  residente
  Questo programma permette alla CPU di gestire le risorse della scheda
  ed di comunicare con l'operatore .
  Se il terminale video  collegato viene visualizzato un men da cui
   possibile selezionare una delle funzioni .
  Tutti i parametri DEVONO essere indicati in ESADECIMALE
     ex.   2  1a   2BF  a157   Fe9c
  Sono disponibili le seguenti funzioni :

        DU ssss eeee
        DUmp memoria : visualizza i dati contenuti in memoria a partire
        dall'ind. ssss  fino all'ind. eeee
        tutto il campo di indirizzamento (0 - FFFF)  accessibile .

        EN ssss
        ENter data : permette di inserire in memoria a partire dallo
        ind. ssss una sequenza di byte ; ogni byte viene memorizzato
        all'invio del CR ed il contatore di indirizzi incrementato .
        Si possono inserire pi byte separati da SPAZIO ma non bisogna
        superare i 32 caratteri prima di dare CR.
        Si termina l'inserimeto con  / (slash) e CR
        N.B. il programma non distingue tra zona ram e rom per cui
             evitare di inserire dati in rom .
        La zona ram disponibile parte da 8100 e termina a FFFF
        NON inserire dati ad indirizzi inferiori ad 8100 questa zona
         utilizzata dal sistema e si rischia di bloccarlo.

        GO ssss
        Avvia l'esecuzione del programma residente in memoria (ram o rom)
        a partire dall'indirizzo ssss .
        Ovviamente all'indirizzo deve essere presente un programma eseguibile
        altrimenti il blocco del sistema  garantito .
        Una volta avviato il programma il monitor perde completamente il
        controllo del sistema ; per cui sar cura dell'utente prevedere
        un ritorno al monitor inserendo alla fine del proprio programma
        in esecuzione l'istruzione RET .
        Oppure terminare l'esecuzione tramite  il RESET

        TE
        TEst ram : avvia l'esecuzione di un test della memoria a partire
        dall'indirizzo 8100 fino all'indirizzo FFFF .
        Prima di eseguire il test il programma chiede nuovamente conferma
        se si desidera veramente eseguire il test occorre rispondere
        con  s (minuscolo) .
        Tenere presente che il test  molto lento e  MODIFICA  tutti i
        dati contenuti in ram .

  Nel monitor sono presenti una serie di routine di uso generale che
  possono essere utilmente impiegate nei propri programmi.
  Fare riferimento al sorgente assembler  Z80MY.src
  e al file Z80MY.sym  per l'indirizzo delle routine .
  Non  stato volutamente inserito il listato .
  Se si desidera importare delle routine nel propio programma occorre
  verificare che la sintassi adottata sia compatibile con quella dello
  assemblatore usato .
  Il monitor occupa meno di 2k di EPROM


Schemi elettrici :
  Sono presentati in 3 parti per comodit di visualizzazione.

   1) Z80MY.sch
      rappresenta la parte logica  con CPU Z80 , i dispositivi di memoria
      e quelli di I/O .

      La configurazione adottata per selezionare le memorie permette di
      usare dispositivi con tempi di accesso relativamente lenti.

      I dati in ram vengono mantenuti grazie ad una batteria NICD ; se
      questa funzione non  ritenuta indispensabile si pu eliminare
      batteria e relativo circuito di isolamento dal 5v e collegare
      il pin 28 della ram a +5v .

      La linea seriale  implementata utilizzando una uart con generatore
      di baud rate interno ; questo tipo di uart  largamente impiegato
      nelle schede seriali dei PC (da cui l'ho smontata) ; e non dovrebbe
      essere difficile reperirne una .
      Eventualmente si pu sostituire con una uart di tipo 8251 ,occorre
      per aggiungere un contatore CD4040 per generare il baud rate
      e modificare le routine software relative.

      Gli I/O sono gestiti tramite una interfaccia programmabile (8255)
      ha 2 port da 8 bit programmabili come input o come output e 2 port
      da 4 bit pure questi programmabili.
      Se si pensa di non cambiare la configurazione di I/O pu venire
      sostituito con  latch (74HC273) e con buffer (74HC244) aggiungendo
      un decoder (74HC139)

      Il generatore di clock a 2.457.600 Hz  fatto con semplici porte
      TTL ; non sostituirlo con HC o C in quanto la cpu Z80 richiede un
      segnale di clock prossimo a Vcc , ottenuto tramite una resistenza
      di valore relativamente basso .

   2) Z81MY.sch
      rappresenta la parte di generazione del reset , l'alimentatore ed
      una interfaccia current loop per pilotare un display  LCD remoto .
      Inoltre sono presenti dei dip-switch  utili per selezionare la
      esecuzione automatica di uno dei programmi presenti in eprom .

      Il circuito di reset pu sembrare inutilmente complicato ma  quello
      che ha dato i migliori risultati tra i tanti provati.
      Il circuito si porta in reset quando la tensione di alimentazione
      scende sotto gli 11V - 9V  ; il valore preciso dipende dallo zener .
      Sconsiglio di sostituirlo con circuiti pi semplici se la scheda deve
      essere usata in applicazioni reali .

      L'interfaccia current loop consuma circa 50mA per cui e stato inserito
      un interruttore per poterla disattivare se il display non viene usato.

      Se si pensa di usare solo il terminale come dispositivo di visualiz_
      zione si pu eliminare l'interfaccia current loop ; non  necessario
      apportare modifiche al programma ; ovviamente i pin destinati alla
      trasmissione al dispaly non saranno disponibili all'utente .

   3) Z82MY.sch
      rappresenta lo schema della interfaccia necessaria per riconvertire
      la trasmissione seriale in parallelo e pilotare adeguatamente il
      display .

      Si  adottata la trasmissione sincrona (occorre inviare anche il clock)
      rispetto a quella asincrona per non essere vincolati a precise tempo_
      rizzazioni , difficili od impossibili da ottenere se il software deve
      gestire anche degli interrupt.

      La funzione del contatore CD4017  quella di fornire l'impulso di
      memorizzazione del dato trasmesso al display ; questo  ottenuto
      inviando una serie di impulsi sulla linea dati , questi non modificano
      l'informazione memorizzata negli shift register ma fanno avanzare
      il contatore fino a produrre un impulso sul piedino collegato al
      pin Enable del display che memorizza il dato .

      Non eliminare il CD40106/74C14 ;  indispensabile per fornire un fronte
      ripido all'ingresso di clock dello shift register .

      Il display utilizzato  un modello relativamente anziano (LM016) e
      richiede una tensione negativa sul piedino di regolazione contrasto ,
      i modelli pi recenti funzionano correttamente con una tensione tra
      0 e 5v ; per cui si pu eliminare tutta la parte relativa alla genera_
      zione della tensione negativa.

      In alternativa si pu collegare il display al bus dati della cpu
      aggiungendo qualche porta logica e riscrivendo il software .

      Se il collegamento al display rimane entro  1 o 2 metri  si pu
      evitare l'interfaccia current loop e provare ad effettuare il
      collegamento a livello TTL , eliminando optoisolatori e generatori di
      corrente , collegando direttamente le uscite dell'8255 al HC164 .


