GPIB
From Eric
m |
m |
||
(2 intermediate revisions not shown) | |||
Line 27: | Line 27: | ||
Chaque instrument a une adresse en écoute / en émission (voire les deux). | Chaque instrument a une adresse en écoute / en émission (voire les deux). | ||
- | |||
- | |||
== Fonctionnement du handshake == | == Fonctionnement du handshake == | ||
Line 49: | Line 47: | ||
* NDAC passe à l'état bas. | * NDAC passe à l'état bas. | ||
- | + | La description précise du protocole est donnée dans le standard IEEE 488. | |
- | + | Le chronogramme qui suit donne une vue détaillée des l'évolution des signaux en cours d'handshake. | |
[[File:gpib_handshake_ieee488_1.jpg|600px|thumb|none]] | [[File:gpib_handshake_ieee488_1.jpg|600px|thumb|none]] | ||
+ | |||
+ | EN voici une version simplifiée : | ||
+ | [[File:gpib_handshake.jpg|600px|thumb|none]] | ||
+ | |||
+ | Enfin, l'organigramme ci-après (issu du standard) donne une possibilité de réalisation du protocole d'handshake. | ||
[[File:gpib_handshake_ieee488_2.jpg|600px|thumb|none]] | [[File:gpib_handshake_ieee488_2.jpg|600px|thumb|none]] | ||
Line 71: | Line 74: | ||
== Le sens des lignes == | == Le sens des lignes == | ||
- | Line NRFD NDAC DAV ATN EOI IFC REN SQR | + | Line NRFD NDAC DAV ATN EOI IFC REN SQR |
- | + | I O | I O | I O | I O | I O | I O | I O | I O | | |
- | -----------|------|------|------|------|------|------|------|------| | + | -----------|------|------|------|------|------|------|------|------| |
- | Listener | X | X | X | X | X | X | X | X | | + | Listener | X | X | X | X | X | X | X | X | |
- | Talker | X | X | X | X | X | X | X | X | | + | Talker | X | X | X | X | X | X | X | X | |
- | Controller | X X | X X | X X | X X | X X | X | G | X | | + | Controller | X X | X X | X X | X X | X X | X | G | X | |
== Les commandes de gestion du bus == | == Les commandes de gestion du bus == | ||
Line 125: | Line 128: | ||
Le SN75161 est le driver des lignes de handshake et de contrôle. | Le SN75161 est le driver des lignes de handshake et de contrôle. | ||
L'orientation (entrée/sortie) des signaux est décrit dans la table ci-après (extrait du document http://www.baltissen.org/newhtm/ieee.htm) | L'orientation (entrée/sortie) des signaux est décrit dans la table ci-après (extrait du document http://www.baltissen.org/newhtm/ieee.htm) | ||
- | + | ||
- | + | | ATN | |
- | + | | NDAC | IFC | |
- | + | | NRFD | REN | |
- | + | ATN | TE | DC || EOI | DAVV | SQR | |
- | ------------------------------------------------- | + | ------------------------------------------------- |
- | + | L | L | L || O | O | O | |
- | + | L | L | H || I | O | I | |
- | + | L | H | L || O | I | O | |
- | + | L | H | H || I | I | I | |
- | + | H | L | L || O | O | O | |
- | + | H | L | H || O | O | I | |
- | + | H | H | L || I | I | O | |
- | + | H | H | H || I | I | I | |
ATN, IFC, REN et SQR sont des sorties si DC = (L), sinon, ce sont des entrées. | ATN, IFC, REN et SQR sont des sorties si DC = (L), sinon, ce sont des entrées. | ||
DAVV,NDAC and NRFD sont des sorties if TE = (L), sinon ce sont des entrées. | DAVV,NDAC and NRFD sont des sorties if TE = (L), sinon ce sont des entrées. | ||
EOI se comporte comme DAVV quand ATN = (H) ; sinon, il se comporte comme SQR. | EOI se comporte comme DAVV quand ATN = (H) ; sinon, il se comporte comme SQR. | ||
+ | |||
+ | [[File:gpib_sn7516x_signals.jpg|600px|thumb|none]] | ||
Quelques exemples : | Quelques exemples : | ||
[[File:gpib_sn7516x.jpg|400px|thumb|none]] | [[File:gpib_sn7516x.jpg|400px|thumb|none]] |
Latest revision as of 20:32, 9 June 2012
Contents |
Caractéristiques générales
Le bus GPIB comprend
- 8 lignes de données
- 3 lignes de handshake
- 5 lignes de gestion du bus
Autres caractéristiques :
- toutes les lignes sont compatibles TTL
- utilise une logique négative (vrai = 0, faux = 1)
- assure un débit max de de 1Mo/s
- supporte une longueur maximale de 20m
- utilise un codage des données en ASCII sur 7 bits (en général)
Le connecteur est de type "centronics", mais avec 24 broches. La désignation est "24 points ribbon connector".
Le brochage du connecteur est le suivant (de Wikipedia):
Un équipement peut être
- Contrôleur (controler) : il gère le trafic, reçoit et émet des données,
- Ecouteur (listener) : il recoit des données,
- Parleur (talker) : il émet des données.
C'est Le contrôleur détermine qui parle et qui écoute. Un bus peut avoir plusieurs contrôleurs, mais un seul peut être actif à un instant donné.
Chaque instrument a une adresse en écoute / en émission (voire les deux).
Fonctionnement du handshake
On rappelle que les signaux sont en logique négatif : VRAI au niveau BAS.
Le handshake utilise 3 lignes. Si on se place du point de vue d'un contrôleur, la signification des signaux est la suivante :
- DAV (Data Valid) VRAI signifie que les signaux du bus de données (commandes ou données) sont stables et sont prêtes à être lues ;
- NRFD (Not Ready For Data, collecteur ouvert) VRAI signifie qu'au moins un écouteur n'est pas prêt à recevoir des données ;
- NDAC (Not Data Accepted, collecteur ouvert) VRAI signifie qu'au moins un écouteur n'a pas encore lu la donnée.
Appelons "émetteur" un noeud contrôleur ou parleur. Le protocole de communication est le suivant :
- L'émetteur positionne DAV à FAUX (niveau haut). Il attend que les lignes NFRD et NDAC soit VRAI (niveau bas).
- L'émetteur met les données sur le bus.
- NFRD passe à FAUX (niveau haut) lorsque tous les écouteurs sont prêts à recevoir une donnée. C'est le écouteur le plus lent qui détermine la remontée du signal.
- L'émetteur place DAV à VRAI (niveau bas) pour signifier que les données sont prêtes.
- NRFD reste à l'état VRAI (niveau bas) tant qu'au moins moins un récepteur est en train d'acquérir la donnée.
- NDAC passe à l'état FAUX (niveau haut) dès que tous les écouteurs ont accepté la donnée.
- L'émetteur passe DAV à FAUX (niveau haut) pour indiquer qu'il cesse de piloter les lignes de données.
- NDAC passe à l'état bas.
La description précise du protocole est donnée dans le standard IEEE 488.
Le chronogramme qui suit donne une vue détaillée des l'évolution des signaux en cours d'handshake.
EN voici une version simplifiée :
Enfin, l'organigramme ci-après (issu du standard) donne une possibilité de réalisation du protocole d'handshake.
Fonctionnement des lignes de contrôle
- ATN (Attention)
- ATN au niveau BAS : le bus de donnée porte une commande
- ATN au niveau HAUT : le bus de donnée porte une donnée
- IFC (Interface Clear)
- IFC au niveau BAS : le bus est réinitialisé
- REN (Remote ENable)
- REN au niveau BAS : le bus est contrôlé par le contrôleur. Normalement, cette ligne est placée au niveau bas aussi longtemps que le contrôleur est en charge du bus.
- SRQ (Service ReQuest, collecteur ouvert)
- SRQ au niveau BAS : un instrument souhaite recevoir ou émettre sur le bus. Le contrôleur va poller les instruments pour connaître celui qui a activer le signal.
- EOI (End Or Identity)
- EOI au niveau BAS : signale la fin d'un message émis par un parleur ou est utilisé par le contrôleur lors du polling après un SRQ.
Le sens des lignes
Line NRFD NDAC DAV ATN EOI IFC REN SQR I O | I O | I O | I O | I O | I O | I O | I O | -----------|------|------|------|------|------|------|------|------| Listener | X | X | X | X | X | X | X | X | Talker | X | X | X | X | X | X | X | X | Controller | X X | X X | X X | X X | X X | X | G | X |
Les commandes de gestion du bus
Le contrôleur peut émettre les commandes suivantes :
L'accès au bus
Le contrôleur donne accès à un instrument en écouteur de la façon suivante :
- Il émet la commande Unlisten (UNL, 0x3F) pour déconnecter les éventuels écouteurs actuels (pas indispensable)
- Il émet la commande écouteur Address (LAD, 0x40+ adresse de l'instrument) pour faire passer un instrument donné en écouteur.
Le contrôleur donne accès à un instrument en parleur de la façon suivante :
- Il émet la commande Untalk (UNT, 0x5F) pour déconnecter les éventuels écouteurs actuels (pas indispensable)
- Il émet la commande parleur Address (TAD, 0x20+ adresse de l'instrument) pour faire passer un instrument donné en parleur.
Le fonctionnement de la requête de service (Service Request, SRQ)
Le traitement d'une requête de service série est schématiquement le suivant : Lister
- Un instrument place la ligne SRQ à l'état BAS pour signaler la demande.
- Le contrôleur émet une commande Serial Poll Enable (SPE) à destination de tous les instruments.
- Le contrôleur fait passer chaque instrument en parleur
- L'instrument désigné émet un Event Status dont la structure est la suivante :
- Bit 7 : Power On
- Bit 6 : User Request <= ce bit est à un si une reqête de service a été émise.
- Bit 5 : Command Error
- Bit 4 : Execution Error
- Bit 3 : Device Dependent Error
- Bit 2 : Query Error
- Bit 1 : Request Control
- Bit 0 : Operation Complete
- Le contrôleur émet une commande Serial Poll Disable (SPD) pour terminer le polling
Noter qu'il existe aussi un mode parallèle. Ce mode peut être utilisé s'il y au plus 8 instruments. Dans ce mode, le contrôleur envoi un mot de donnée à chaque instrument lui indiquant quel bit il doit positionner pour indiquer s'il a émis la requête.
Les commandes standards
Un instrument doit être capable de répondre aux commandes suivantes :
Quelques adaptateurs GPIB <=> Série
Voir adaptateur GPIB/USB
Connexion des drivers SN75160/161
Le SN75160 est le driver des lignes de données.
Le SN75161 est le driver des lignes de handshake et de contrôle. L'orientation (entrée/sortie) des signaux est décrit dans la table ci-après (extrait du document http://www.baltissen.org/newhtm/ieee.htm)
| ATN | NDAC | IFC | NRFD | REN ATN | TE | DC || EOI | DAVV | SQR ------------------------------------------------- L | L | L || O | O | O L | L | H || I | O | I L | H | L || O | I | O L | H | H || I | I | I H | L | L || O | O | O H | L | H || O | O | I H | H | L || I | I | O H | H | H || I | I | I
ATN, IFC, REN et SQR sont des sorties si DC = (L), sinon, ce sont des entrées. DAVV,NDAC and NRFD sont des sorties if TE = (L), sinon ce sont des entrées. EOI se comporte comme DAVV quand ATN = (H) ; sinon, il se comporte comme SQR.
Quelques exemples :