Menu
Général
URL: http://www.ens-lyon.fr/~bkuhlmey/nik/ci.html
Les Bus
Quand de nombreuses unitées distinctes (circuits de fonctions ou
de localisations différentes) doivent pouvoir communiquer entre
elles, il est souvent indispensable de centraliser le cablage entre celles-ci.
Tous les signaux intéressants sont alors disponibles sur quelques
conducteurs qui forment un 'bus' ; chaque unitée y a accès
en lecture (toutes les unitées voient ce qui se passe sur le bus)
mais une seule peut y ecrire à la fois.
L'exemple de l'ordinateur
Prenons l'exemple d'un ordinateur:
Le microprocesseur (CPU) doit pouvoir
communiquer avec, entre autres:
-
La mémoire
-
Le disque dur, les disquettes
-
Le clavier, la souris
-
La carte vidéo
-
Les ports I/O (série, parallèle, réseaux...)
Il serait impossible de relier par autant de cables que de bits de données
chaque périphérique au CPU. A la place, tous les péripheriques
sont reliés aux mêmes cables (dans ce cas plutôt des
pistes du circuit imprimé). Ce sont certains signaux (dits signaux
d'adresse) de ces cables qui préciserons avec quel periphérique
le CPU veut échanger des données. D'autres cables seront
alors porteurs des données. On en vient donc à distinguer
naturellement le bus de données et le bus d'adresses.
Dans le cas de l'ordinateur:
Le bus d'adresses est constitué de 16, 24 ou 32 conducteurs
dans la plupart des cas, véhiculant autant de bits d'adresses (le
CPU peut donc adresser 2^16=64k,2^24=16M ou 2^32=4G péripheriques
ou adresses mémoire ; rarement plus de 24 en électronique
amateur).
Le bus de données peut comporter jusqu'à 128 conducteurs
(donc 128 bits de données, 64 étant bien plus courant et
16 étant en pratique le maximum accessible en électronique
amateur).
Le périphérique d'adresse n peut accéder
en permanence aux données sur le bus, mais il n'en tient compte
que quand le bus d'adresse porte l'adesse n.
En réalité, bus de données et bus d'adresses sont
insuffisant. Il faut en effet également préciser au périphérique
si le CPU veut lire ou écrire (dans une mémoire par exemple),
préciser si l'adresse du bus est valide, indiquer l'état
du bus (actif, inactif etc.). Des fonctions plus complexes de BUS, telles
les interruptions, le controle d'un périphérique par un autre
etc., conduisent à un nombre important de conducteurs ne portant
ni adresses ni données. Ils sont parfois regroupés sous le
terme de bus de signaux ou bus de contrôle.
A un bus materiel est associé un protocole de bus. Il faut en
effet définir précisémét comment les périphériques
doivent réagir à tel ou tel signal, pour éviter la
cacophonie d'une part, mais aussi parce que deux périphériques
actifs simultanément peuvent produire un court-circuit fatal à
l'un des deux.
Dans le cadre de l'électronique amateur, deux cas se présentent:
-
Le bus existe déjà, et le but est de construire un nouveau
périphérique (carte ISA ou PIC par exemple);
-
Il faut concevoir soit même un bus (parfois le cas dans des montages
à microcontrolleurs ou microprocesseurs).
(Remarquons que le choix d'un microprocesseur impose le protocole de bus,
au moins au niveau local (mémoire et périphériques
directement connectés au proceseur))
Quelques points de vocabulaire
-
Maitre de bus
-
C'est le circuit connecté au bus qui définit l'adresse et
les signaux de contrôle. Il controle donc logiquement le bus et tous
les autres dispositifs connectés sur le bus (les esclaves). Sur
les bus de conception ancienne, il n'y avait qu'un seul maitre immuable.
Maintenant, en particulier pour le bus PCI, la fonction de maitre est allouée
dynamiquement, ie. si un dispositif demande a être maitre de bus,
il peut le devenir.
-
Esclave
-
Tout dispositif connecté au bus ne faisant qu'obéir aux commandes
fournies par un maitre. Meme sur des bus permettant plusieurs maitres,
la plupart des extensions ne sont conçues que pour être esclave.
L'esclave a cependant une certaine marge d'initiative personelle par les
interuptions.
-
Les interuptions
-
Il n'est ici question que des interuptions materielles. Une interuption
est un signal déclenché par un esclave, qui interrompt le
maitre dans ses operations habituelles, et lui signalant que "quelquechose
se passe" (souvent l'interruption n'en dit vraiment pas plus). Le maitre
est alors libre de verifier ce qui se passe ou d'ignorer l'interruption,
selon la priorité de celle-ci et le logiciel controlant le maitre.
Les différents types de bus
Nous avons vu dans l'exemple de l'ordinateur un bus bien spécifique:
il était numérique et parallèle (à chaque bit
d'adresse, de donnée ou de signal correspond un conducteur). Il
existe aussi des bus sériels et des bus analogiques:
-
Le bus parallèle
-
A chaque bit d'adresse, de donnée, de signal correspond un conducteur.
Utilisé quand l'encombrement ne pose pas de problème, c'est
la forme de bus la plus rapide et une des plus facile à mettre en
oeuvre. On distingue ici encore les bus synchrones des bus asynchrones,
Pour l'amateur, le problème est souvent de pouvoir caser toutes
les pistes (ex: 24 d'adresses, 8 de données et 8 de sigal = 40 pistes)
sur le circuit imprimé. Exemples: Bus ISA, PCI, bus local de microprocesseurs
etc.
-
Le bus série
-
Le bus série est composé de 2 ou 3 fils conducteurs en général.
Les données et adresses sont véhiculées sur le même
cable, les bits sont envoyés l'un après l'autre. Par son
mode de fonctionnement ce type de bus est plus lent que les bus parallèles,
et la mise en place d'interruptions, la gestion de différents maitres
est plutôt compliquée en ce qui concerne le logiciel (cas
de réseaux d'ordinateurs). Il est employé surtout quand les
différentes parties du circuit sont distantes les unes des autres
(ex: domotique, alarmes) ou que le nombre de conducteurs doit être
limité pour des raisons d'encombrement/de coût (cas de certains
ordinateurs massivement parallèles). Pour l'amateur, il est assez
embétant de définir sa propre norme de bus sériel
et surtout de la mettre en place: il faudrait un circuit décodant
l'information pour chaque extension, ce qui implique un microcontrolleur
sur chaque extension (solution lourde et couteuse). L'amateur peut recourir
à des bus sériels existants, pour lesquels il existe des
composants électronique prenant en charge le décodage et
une fonction particulière (ex. convertisseur analogique/numérique
que l'on peut brancher directement sur le bus). C'est notament le cas pour
les applications domotiques, ou le bus 'I□C' est très
répendu. (d'autres bus, notament CAN pour les automobiles, sont
également répendus).
-
Bus analogiques
-
Certains bus véhiculent aussi des données analogiques (bus
audio, video ou autre, regardez les cables du labo de langues). Cependant,
un bus servant souvent à distribuer des données sur des distances
assez importantes, les bus sont de plus en plus souvent entièement
numériques. En effet un bruit de 20% ne déteriore pas les
données numériques mais rend quasi inutilisable les données
analogiques.
Retour à la page d'initiation à
l'électronique amateur
Retour au sommaire
Suggestions, commentaires, questions ? mailme!
Page conçue par Boris Kuhlmey, 1997.