notes-ing2/bus/02_multiplexage.md

151 lines
4.8 KiB
Markdown

# multiplexage
## pourquoi ?
- Pour rendre la quantité de connection linéaire par rapport au nombre de périphérique.
- Rendre le système extensible.
- Acheminer l'information le plus rapidement possible.
## Principes
- intégration : retrouper plusieurs fonctions dans un seul boitier plus intelligent
- gestion moteur : injection, allumage, dépollution, refroidissement
- spécialiser les boitiers
- passer par un réseau
- transmettre les données
- structurer les trames
- synchronisation
- arbitrage
### Modèle général
```
+-- Boitier intelligent --+
+----------+ +----------+ | +---------------------+ | +----------+ +-------------+
| capteurs |-| étage d' |->-| | unité de traitement | |->-| étage de |-| actionneurs |
+----------+ | entrée | | | microprocesseur | | | sortie | +-------------+
+----------+ | +---------------------+ | +----------+
| | |
| +--------------+ |
| | interface de | |
| | multiplexage | |
| +--------------+ |
+------------|------------+
|
---------------------- bus -----------------------
```
## Tramme
```
+----+---------+
| id | données |
+----+---------+
```
## Architecture
### Maître-esclave
```
+--------+ +---------+ +---------+ +---------+
| maitre | | esclave | | esclave | | esclave |
+--------+ +---------+ +---------+ +---------+
| | | |
-----+----------+-----------+-----------+-----
```
### Multi-Maître
```
+----------+ +----------+ +----------+ +----------+
| services | | services | | services | | services |
+----------+ +----------+ +----------+ +----------+
| maitre | | maitre | | maitre | | maitre |
+----------+ +----------+ +----------+ +----------+
| | | |
-----+------------+------------+-------------+-----
```
## Protocole de communication
### Arbitrage
L'arbitrage CSMA se fait en organisant des temps pour que les composants puissent déclarer vouloir envoyer un message.
Ils procèdent en écrivant leur ID sur le bus :
- Les ID se retrouvent confondus par et logique sur les bits.
- Un des composants détecte avoir envoyé l'ID le plus faible car l'ID résultant est le sien.
- Ce composant a la priorité pour écrire le message suivant.
```
. . .
Noeud x : #_____##########________
. . .
Noeud y : #####___________________
. . .
Noeud z : #_____#__________######_
. . .
Bus : _####__#########__#####_
----------------------------------
^\ ^\ ^\_ bus disponible, début message z, id de moindre priorité
\ \___________ bus disponible, début de message x, id_x < id_z
\________________ bus disponible, début de message y, id_y < id_x
```
### Forme d'une trame
```
+-------+--------+-----------+-----+
| ZEROs | Header | Data | UNs |
+-------+--------+-----------+-----+
| | | \_ mot entier de 1
| | \_____________ donnée spécialisée du message
| \______________________ entête standard du message
\______________________________ mot entier de 0
```
> Note :
> Le format du Header et de la Data doit prendre en compte
> qu'il ne peut pas contenir un mot entier de 1 ou bien de 0.
### Arbitrage des bits
Lors d'une mise en commun des bits de messages attendant d'être envoyé se fait par fusion des bits sur le bus :
```
Id message A : .....01001.......
Id message B : .....010001001000
Id message C : .....0100010011..
sur le bus : 11111010001001000
--------------------------------
^^^^^\^^^^\ ^^\_ padding de ZEROs
\ \_______ ET logique des IDs
\___________ mot UNs du dernier message / maintient d'un état IDLE
```
### Synchronisation
Le signial de synchronisation peut être porté par le signal de donnée dans le cas de certains codages.
- ex : NRZ / Manchester
### Topologies
Les topologies usuelles sont appliquables.
- étoile
- anneau
- maillé
- bus : idéal
- moins couteux
- extensible
### Exemple : Trames CAN
```
+---+----+---+---+---+---+------+--------+---+---+---+---+---+---
champ |SOF| ID |RTR|IDE| r |DLC| DATA |checksum|DEL|ACK|DEL|EOF|ITM| /
+---+----+---+---+---+---+------+--------+---+---+---+---+---+---
taile | 1 | 11 | 1 | 1 | 1 | 4 | 0~64 | 15 | 1 | 1 | 1 | 7 | 3 | /
+---+----+---+---+---+---+------+--------+---+---+---+---+---+---
nature |arbitration | control | data | check | aquit.| protocole
```