178 lines
5.7 KiB
Markdown
178 lines
5.7 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
|
||
|
||
> Note :
|
||
> Dans notre modèle, la seule opération sur le milieu (cable/bus) est l'interruption du signal actuel partagé.
|
||
> i.e. écrire 0 sur un signal qui est par défaut à 1.
|
||
|
||
### 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
|
||
```
|
||
|
||
- DLC : Description des données utiles.
|
||
- checksum / CRC : Code de vérification d'un message.
|
||
- ACK : Aquitement d'un message.
|
||
|
||
## Synchronisation STUFF
|
||
|
||
Un bit est envoyé tout les N bits pour éviter des mots interdits (exemple : 11 × 0 / 11 × 1 ).
|
||
Cette responsabilité est celle de l'émetteur et du récepteur.
|
||
|
||
STUFF-ing à 4 bits :
|
||
|
||
```
|
||
donnée actuelle : 0100.0000.0111
|
||
donnée écrite sur le bus : 01001000010001
|
||
donnée dé-stuffé : 0100.0000.0111
|
||
^\___^\____ bits STUFF-é
|
||
```
|
||
|
||
Selon le protocol, il est également possible d'avoir des bits de 'stuffing' alternant.
|
||
|
||
> Note :
|
||
> Le 'stuffing' peut servir de synchronisation d'horloge car il assure une alternance dans le signal.
|