CODINGCLEFS POUR AMSTRAD 2 ★ Système disque par Daniel Martin et Philippe Jadoul ★

Clefs2 40 - Reg - EcritCoding Clefs Pour Amstrad 2

CIRCUITS UTILISES Z80-SIO

Les registres d'écriture

Pour chaque canal, le Z80-S10 contient huit registres d'écriture programmables séparément (WR0-WR7). Ces registres permettent de configurer chaque canal pour une application bien spécifique.
A l'exception du registre WRO, la programmation des registres d'écriture nécessite deux octets. Les bits de poids faible du premier octet (B0-B2) contiennent le numéro du registre à sélectionner. Le deuxième octet contient le mot de commande qui sera écrit dans le registre sélectionné.
Remarque ; une fois le registre sélectionné, le programmeur en fait ce qu'il désire. Il peut soit le lire pour le tester, soit y écrire une commande. En initialisant le Z80-SI0 de manière structurée, le programmeur aura à sa disposition des modules entrée/sortie puissants.

La particularité du registre WRO réside dans le fait que la programmation de ses commandes de base ne nécessite qu'un seul octet. Sa sélection est obtenue par un RESET interne ou externe,

Les commandes de base (CMD0-CMD2) ainsi que les codes de contrôle CRC (CRC0-CRC1) sont déterminés respectivement par le positionnement des bits (B3-B5) et (D6-D7) du premier octet de chaque registre d'écriture. Ceci permet un maximum de souplesse au système de commande.
Chaque canal possède tous les registres décrits ci-après. Ils sont adressés comme des commandes et non comme des DATAs.

Registre d'écriture WR0

WR0 est le registre de commande. Cependant, il est également utilisé pour l'initialisation des codes CRC et pour la sélection des autres registres,

----------------------------------------
B7 B6 B5 B4 B3 B2 B1 B0
----------------------------------------
CRC CRC CMD CMD CMD PTR PTR PTR
-----------------------------------------
reset reset
n°1 n°0 n°2 n°1 n°0 n°2 n°1 n°0

0 Bits de pointeurs (B2-B0)

Les bits B2 à B0 du registre WR0 déterminent le numéro du registre dans lequel le deuxième octet de commande sera écrit ou lu. Après un RESET exécuté par commande ou par une entrée externe, le premier octet est introduit dans le registre WRO. Une lecture ou une écriture dans n'importe quel registre (excepté le registre WRO) initialisera le pointeur de registre sur WRO.

0 Bits de commande (B5-B3)

Les différentes combinaisons des bits B5 à B3 permettent la sélection des sept commandes de base du Z80-SIO.

-------------------------------------------------------------------------------
Cde CMD n°2 CMD n° 1 CMD n°0
-------------------------------------------------------------------------------
0 0 ;0 0 Commande sans effet.
1 0 ;0 1 Envoie ABORT en mode SDLC.
2 0 ;1 0 Initialise les interruptions
externes/états.
3 0 ;1 1 ;Initialisation du canal.
4 1 ;0 0 ;Autorise les interruptions sur
; le prochain caractère de réception.
5 1 ;0 1 ;Initialise les interruptions en
; transmission,
6 1 ;1 0 ;Initialise le LATCH d'erreur.
7 1 ;1 1 ;Retour d'interruption (canal A).
-------------------------------------------------------------------------------

Commande 0. Elle est normalement utilisée pour rendre le SI0 inactif pendant que les pointeurs sont initialises en vue de charger l'octet suivant.

Commande 1 (arrêt en mode SDLC). Cette commande est uniquement utilisée en mode SDLC. Elle génère une suite de huit à treize 1.

Commande 2 (initialisation des interruptions externe/état). Après une interruption externe/état, les bits d'état du registre RR0 (registre de lecture) sont mémorisés. La commande 2 les initial ise à nouveau et autorise une nouvelle interruption.

Commande 3 (initialisation du canal). Cette commande provoque le même effet qu'une initialisation externe, mais uniquement pour un canal. L'initialisation du canal A initialise également le niveau de priorité des interruptions. Après une initialisation, tous les registres du canal doivent être programmés à nouveau.

Commande 4 (autorisation des interruptions sur le prochain caractère de réception). Si l'interruption est validée sur le premier caractère reçu, cette commande réactivera ce mode après réception de chaque message complet et préparera ainsi le SIO pour le prochain message.

Commande 5 (initialisation des interruptions en transmission). Lorsque les interruptions sont validées sur la transmission, un signal d'interruption est généré quand le tampon de transmission est vide. Dans le cas où il n'y a plus de caractère à transmettre (fin de message), cette commande interdit toute interruption en transmission jusqu'au chargement d'un nouveau caractère dans le tampon de transmission ou jusqu'à l'envoi complet d'un code CRC.

Commande 6 (initialisation de la mémoire d'erreur). Les erreurs de parité ou d'overrun sont mémorisées dans le registre RR1. De cette façon, les erreurs apparues lors d'un transfert de données peuvent être analysées à la fin du bloc. La mémoire d'erreur (latch) est remise à 0 par l'exécution de la commande 6.

Commande 7 (retour d'interruption). Cette commande doit provenir du canal A. Elle est interprétée par le SIO de la même façon qu'une commande RETI pour le Z80. Elle initialise le latch interne d'interruption de la plus haute priorité en service et permet aux circuits de priorité inférieure de générer des interruptions via le DAISY CHAIN (chaînage interne et externe entre circuits de la famille Z80 qui génère les priorités d'interruptions). Cette commande peut également être utilisée pour le DAISY CHAIN interne du SIO, même pour des systèmes sans chaînage externe ou sans commande RETI.

0 Initialisation des codes CRC (B7-B6)

La combinaison de ces deux bits sélectionne une des quatre commandes d'initialisation suivantes :

-------------------------------------------------------------------------------
CRC n° 1 CRC n° 0
-------------------------------------------------------------------------------
0 ;0 Aucun effet.
0 ;1 Initialisation et vérification du CRC en
; réception.
1 ;0 Initialisation du générateur de CRC en
; transmission.
1 ;1 Initialisation underrun Tx et fin de message
-------------------------------------------------------------------------------

Remarque : la commande d'initialisation du générateur de CRC est normalement programmée pour générer des 0. En mode SDLC, elle générera des 1. De même, la vérification des codes CRC en réception sera programmée pour des valeurs 1 en mode SDLC.

Registre d'écriture WR1

Le registre d'écriture contient les bits de commandes des diffé rents modes d'interruption ai'nsi que les fonctions d'attente (WAIT) et système prêt (READY).

-------------------------------------------------------------------------------


B7 ; B6 ; B5 ; B4
-------------------------------------------------------------------------------


wait/ready wait ou ready wait/ready interruption


validation fonctions réception ;réception


;transmission mode 1
-------------------------------------------------------------------------------


;

B3 ; B2 ; B1 ; B0
-------------------------------------------------------------------------------


interruption vecteur interruption interruption
réception d'affectation transmission externes
mode 0 d'état ;validation validation
-------------------------------------------------------------------------------

B0 : validation des interruptions externes/état

Si le latch UNDERUN/EOM contient 1, alors le positionnement de ce bit permet aux interruptions externes/état d'avoir lieu suite à une transition sur les entrées modem DCD, CTS ou SYNC ou à la détection d'un abandon ou d'un arrêt immédiat ou au début de transmission d'un CRC ou d'un caractère de transmission de synchronisation.

B1 : validation des interruptions en transmission

Val-idée, l'interruption se produit chaque fois que le tampon de transmission est vide.

B2 : vecteur d'affectation d'état

Ce bit est uniquement programmé dans le canal B. S'il est à l'état 0, le vecteur d'interruption programmé dans le registre WR2 est renvoyé inchangé, suite à un accusé de réception d'interruption. Si ce bit est à l'état 1, le vecteur est renvoyé après avoir été modifié suivant les conditions d'interruption décrites ci-dessous. Seuls les bits V3 à V1 du vecteur d'interruption sont utilisés.

-------------------------------------------------------------------------------
V3 V2 V1
-------------------------------------------------------------------------------
0 0 0 Canal B int. sur le tampon de transmission vide.
0 0 1 Canal B int. sur le changement externe/état.
0 1 0 Canal B int. sur le caractère de réception disponible.
0 1 1 Canal B int. sur des conditions spéciales réception.
1 0 0 Canal A int. sur le tampon de transmission vide.
1 0 1 Canal A int. sur le changement externe/état.
1 1 0 Canal A int. sur caractère de réception disponible.
1 1 1 Canal A int. sur des conditions spéciales réception.
-------------------------------------------------------------------------------
Conditions spéciales de réception : erreur de parité, overrun,
erreur de trame et fin de trame (SDLC).
-------------------------------------------------------------------------------

B4-B3 : interruption en réception mode 1 et mode 0

La combinaison de ces deux bits spécifie les différentes possibilités d'interruption en réception. En mode d'interruption 1, 2 ou 3, une condition spéciale de réception provoque une modification du vecteur d'interruption.

-------------------------------------------------------------------
D4 D3
interruption interruption
réception réception
mode 1 mode 0
------------------------------------------------------------------
0 ;0 Interdiction des interruptions enréception.
0 ;1 Interruption sur le premier caractère.
1 ;0 Interruption sur tous les caractères
; reçus (l'erreur de parité étant
; une condition spéciale).
1 ;1 Interruption sur tous les caractères
; reçus (l'erreur de parité n'étant
; pas une condition spéciale).
-------------------------------------------------------------------

B7-B6 : fonction wait/ready

Les fonctions wait et ready sont sélectionnées par le contrôle des bits B7 et B6. Elles sont validées si le bit B7 du registre WR1 est positionné à 1. La fonction ready est sélectionnée en positionnant le bit B6 à 1. La sortie commute d'un niveau haut vers un niveau bas lorsque le Z80-SI0 est prêt à transférer des données. La fonction wait est sélectionnée par la valeur 0 dans 86 et la sortie à l'état drain ouvert passe à un état bas lorsqu'elle est active. Les fonctions wait et ready peuvent être utilisées en réception ou en transmission mais pas simultanément.

-------------------------------------------------------------------------------
; B7 = 0
-------------------------------------------------------------------------------
B6 = 1 ready à l'état haut. B6 = 0 wait est flottant.
-------------------------------------------------------------------------------
; B7 = 1
-------------------------------------------------------------------------------
B5 = 0 ready est haut quand ;B5 = 1 ready est haut quand le
le tampon de trans- ; tampon de réception est
mission est plein. ; vide.
wait est bas quand ; wait est bas quand le
le tampon de trans- ; tampon de réception est
mission est plein et ; vide et qu'un port data
qu'un port data du ; du SIO est sélectionné.
SIO est sélectionné.
ready est bas quand ; ready est bas quand le
le tampon de trans- ; tampon de réception est
mission est vide. ; plein.
wait est flottant ; wait est bas quand le
quand le tampon de ; tampon de réception est
transmission est vide. ; plein.
-------------------------------------------------------------------------------

Registre d'écriture WR2

WR2 est le registre qui contient le vecteur d'interruption. Il n'existe que dans le canal B. Lors d'un accusé d'interruption, les bits B7, B6, B5, B4 et BO sont retournés sans aucune modification. Seuls les bits B3, B2 et B1 sont modifiés si le bit vecteur d'affectation d'état du registre WR1 est égal à 1.

------------------------
B7 B6 B5 B4 B3 B2 B1 BQ
------------------------
V7 V6 V5 V4 V3 V2 V1 V0
------------------------

Registre d'écriture WR3

WR3 contient les bits et les paramètres de commande de la logique de réception.

-----------------------------------------------------
B7 ; B6 ;B5 ; B4
-----------------------------------------------------
réception réception auto ;phase de
bits car 1 bits car 0 validation recherche
;d'entrée
-----------------------------------------------------
B3 ; B2 ; B1 ; B0
-----------------------------------------------------
validation mode de inhibition validation
du CRC en recherche chargement réception
réception d'adresses caract sysnc

B0 : validation de réception
Après avoir initialisé tous les paramètres de réception, le positionnement de BO à 1 permet le début du fonctionnement en mode réception.

B1 : inhibition du chargement du caractère de sysnc
Si cette option est sélectionnée, le caractère de synchronisation précédant le message n'est pas chargé dans le tampon de réception.

B2 : mode de recherche d'adresses
Si le mode SDLC est sélectionné, les messages dont les adresses ne correspondent pas aux adresses programmées dans le registre WR6 ou à l'adresse globale (11111111) sont rejetés. En résumé, en mode de recherche adresses, aucune interruption sur la réception n'aura lieu s'il n'y a pas concordance d'adresses.

B3 : validation du CRC en réception
Si le bit B3 est positionné à 1, le calcul du CRC commence sur le début du dernier caractère transféré depuis le registre à décalage de réception vers la pile tampon, indépendamment du nombre de caractères présents dans la pile (voir les sections SDLC réception et CRC vérification du manuel technique du Z80-SI0 de ZILOG).

B4 : phase de recherche d'entrée
Après un reset, le Z80-SI0 lance automatiquement la phase de recherche. Cependant, cette dernière peut être réactivée si le caractère de synchronisation est perdu ou si le contenu d'un message n'est pas nécessaire (mode HDLC). La réactivation de la phase de recherche est obtenue en positionnant le bit B4 du registre WR3 à 1. Ceci positionne le bit B4 de RRO (sync/recher).

B5 : auto validation
Si ce mode est sélectionné, les signaux DCD et CTS deviennent les signaux de validation de réception et de transmission. Si B5 est égal à 0, DCD et CTS positionnent simplement leur bit d'état respectif dans RRO.

B7-B6 : réception de bits/caractères
Ces deux bits déterminent le nombre de bits reçus pour former un caractère. Il est possible de les modifier durant l'assemblage d'un caractère et ce, avant que le nombre de bits programmés ne soit atteint.

-----------------------------------------------------
B7 B6 Bits/caractères
-----------------------------------------------------
0 0 5
0 1 7
1 0 6
1 1 8
-----------------------------------------------------

Registre d'écriture WR4

WR4 contient les bits qui affectent la transmission et la réception du SIO.

--------------------------------------------------------
B7 B6 B5 B4 B3 B2 B1 B0
--------------------------------------------------------
fréquence fréquence modes modes stop stop parité parité
horloge horloge sync sync bit bit paire
1 ;0 1 0 1 0 impaire
--------------------------------------------------------

B0 : parité
Si ce bit est positionné à 1, un bit supplémentaire est additionné aux bits spécifiés par la commande (bits/caractères) du registre WR3. Dans le mode réception, le bit de parité reçu est transmis au CPU comme partie intégrante du caractère, sauf si un caractère de 8 bits est spécifié.

B5 : parité paire/impaire
Dans le cas où la parité est spécifiée, ce bit est à 0 si elle est paire et à 1 si elle est impaire.

B3-B2 : stop bits
Ils déterminent le nombre de bits d'arrêt ajoutés à chaque caractère asynchrone envoyé. A la réception, la présence d'un stop bit est toujours vérifiée. Le mode spécial (00) signifie qu'un mode synchrone doit être sélectionné.

--------------------------------------------------
B3 B2
--------------------------------------------------
0 0 Mode synchrone.
0 1 1 stop bit par caractère.
1 0 1+1/2 stop bits par caractère.
1 1 2 stop bits par caractère.
--------------------------------------------------

B5-B4 : modes synchrones
Ces bits sélectionnent les différentes options de caractère de synchronisation.

--------------------------------------------------
B5 B4
--------------------------------------------------
0 0 Synchronisation sur 8 bits.
0 1 Synchronisation sur 16 bits.
1 0 Mode SDLC (01111110).
1 1 Mode synchronisation externe.
--------------------------------------------------

B7-B6 : fréquence horloge
Ces bits déterminent le coefficient de multiplication entre les horloges TxC et RxC. TxC représente l'horloge d'émission et RxC représente l'horloge de réception. Pour le mode synchrone, le coefficient 1 doit être spécifié. Toutes les fréquences de transmission sont permises en mode asynchrone. Dans tous les cas, l'horloge système doit être au moins 4,5 fois plus rapide que la fréquence des données. Lorsque le facteur de multiplication choisi est égal à 1, la synchronisation doit provenir d'une source extérieure.

--------------------------------------------------
B7 B6
--------------------------------------------------
0 0 Fréq horloge x 1 = fréq data
0 1 Fréq horloge x 16 = fréq data
1 0 Fréq horloge x 32 = fréq data
1 1 Fréq horloge x 64 = fréq data
--------------------------------------------------

Registre d'écriture WR5
WR5 contient les bits de contrôle des opérations de transmission, à l'exception du bit B2 qui affecte la réception et la transmission.

------------------------------------------------------------------------
B7 B6 B5 B4 B3 ; B2 B1 B0
------------------------------------------------------------------------
DTR TX BIT TX BIT ARRET VALIDATION CRC-16 RTS TX CRC
CAR N°1 CAR N°2 IMMED TX ; SDLC ;VALIDAT
------------------------------------------------------------------------

B0 : validation CRC en transmission
Ce bit détermine si le CRC est calculé sur un caractère spécial de transmission. S'il est égal à 1, le caractère est chargé du registre de transmission vers le registre à décalage de transmission et le CRC est calculé sur ce caractère. Le CRC n'est pas automatiquement transmis sauf si ce bit est positionné à 1 lorsqu'une condition de transmission UNDERRUN existe.

B1 : RTS ou demande d'envoi (Request To Send)
Lorsque le bit de commande RTS est égal à 1, la sortie RTS du SIO passe à un état bas et passe à un état haut après un reset. En mode asynchrone, la sortie RTS ne passe à un état haut qu'après transmission complète de tous les bits constituant le caractère et qu'une fois que le tampon de transmission est vide.

B2 : CRC-16/SDLC
Ce bit sélectionne le type de polynôme du calcul du CRC pour la transmission et la réception. S'il est égal à 1, c'est le CRC-16 (x16 + x15 + x12 + 1) qui est sélectionné. S'il est égal à 0, c'est le polynôme CRC SDLC (x16 + x 15 + x5 + 1) qui est sélectionné, Si le mode SDLC est utilisé, le générateur de CRC, ainsi que le système de vérification sont initialisés pour tout 1 et une vérification spéciale est appliquée. Si le mode SDLC n'est pas sélectionné, le générateur et le système de vérification sont initialisés pour tout 0 (pour les deux polynômes).

B3 : validation de transmission
Les données ne sont pas transmises tant que le bit B3 du registre WR5 est positionné à 1 et que l'état de la sortie de transmission est maintenu en marquage. Dès que ce bit est remis à 0, les données et les caractères de synchronisation en cours de transmission sont entièrement transmis. Si le transmetteur est arrêté pendant la transmission d'un caractère CRC, des caractères de synchronisation ou de drapeau sont envoyés à la place de CRC.

B4 : arrêt immédiat (BREAK)
Si ce bit est égal à 1, la sortie de transmission (Transmit Data) est placée à un état espacement (space) et ce, quelles que soient

les données transmises. Lorsqu'il est remis à 0, la sortie de transmission retourne à un état de marquage (marking).

B6-B5 : transmission bits/caractères

B6 et B5 déterminent le nombre de bits composant chaque octet transféré dans le tampon de transmission.

------------------------------------------------------------------------
B6 : bit de B5 : bit de
transmission transmission ;Nombre de bits par caractère
caractère n°1 caractère n°0
------------------------------------------------------------------------
0 ;0 ;5 ou -
0 ;1 ;7
1 ;0 ;6
1 ;1 ;8
------------------------------------------------------------------------

Les bits des octets à envoyer doivent être justifiés à droite. Le mode 5 peut transmettre 1 à 5 bits par caractère, mais le caractère doit être formaté comme ci-dessous :

------------------------------------------------------------------
B7 B6 B5 B4 B3 B2 B1 B0
------------------------------------------------------------------
1 1 1 1 0 0 0 D Envoie 1 bit de données.
1 1 1 0 0 0 0 D Envoie 2 bits de données.
1 1 0 0 0 0 0 D Envoie 3 bits de données.
1 0 0 0 0 0 0 D Envoie 4 bits de données.
0 0 0 D D D D D Envoie 5 bits de données.
------------------------------------------------------------------

B7 : DTR ou Terminal de Données Prêt (Data Terminal Ready)

Positionné à 1, le signal DTR est actif bas. Positionné à 0, il est inactif.

Registre d'écriture WR6

Ce registre est programmé pour contenir : soit le caractère de synchronisation en mode MONOSYNCHRONE ; soit les huit premiers bits des seize bits formant un caractère de synchronisation en mode BISYNCHRONE ; soit un caractère de synchronisation de transmission en mode SYNCHRONISATION EXTERNE.
En mode SDLC, il est programmé pour contenir le champ d'adresses secondaire destiné à être comparé avec le champ d'adresses de la trame SDLC.

-----------------------------------------------------------------
B7 B6 B5 B4 B3 B2 B1 B0
-----------------------------------------------------------------
sync7 sync6 sync5 sync4 sync3 sync2 sync1 syncO

Registre d'écriture WR7
Ce registre est programmé pour contenir les caractères de synchronisation de réception dans le mode MONOSYNCHRONE, les huit bits de poids fort d'un caractère de synchronisation en mode BISYNCHRONE ou un caractère drapeau (01111110) en mode SDLC. Le registre WR7 n'est pas utilisé en mode de synchronisation externe.

-----------------------------------------------------------------
B7 B6 B5 B4 B3 B2 B1 B0
-----------------------------------------------------------------
sync15 sync14 sync13 sync12 sync11 synd0 sync9 sync8

★ ANNÉE: ???
★ AUTEUR(S): ???

Page précédente : Clefs2 40 - Circuit Z80
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.7-desktop
Page créée en 019 millisecondes et consultée 1511 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.