La communication sérielle
Généralités
Communication série La communication série consiste en l’envoie, à un moment donnée, d’un seul bit par l’intermédiaire d’une seule ligne. La chaîne de bits envoyée est codée électriquement selon une méthode particulière appelée « protocole ». S’oppose à la communication parallèle qui consiste à envoyer un groupe de plusieurs bits simultanément.
Communication asynchrone L’émetteur et le récepteur ont des horloges séparées qui ne sont pas synchronisées avec le temps. Cela implique que les horloges internes des ports de communications soient configurés à la même fréquence. Mais même avec une configuration identique, les horloges peuvent se décaler l’une par rapport à l’autre durant la transmission. T1 T2 T2
Communication synchrone Les 2 systèmes sont synchronisés. Le signal de synchronisation peut être envoyé: Sur une ligne séparée; Exemple: le SCK du SPI. Codé avec les données. T1 T2 T2 Horloge Maître Esclave
Codage de Manchester On mélange l’horloge avec le signal à transmettre. Donnée : 0 0 1 1 Horloge: 0 1 0 1 Signal : 0 1 1 0
Communication en « simplex » L’émetteur et le récepteur sont toujours les mêmes. Donc un seul fil est nécessaire pour transmettre les données. (plus un second pour la masse). E R
Communication en « half duplex » L’émetteur et le récepteur peuvent changer. Un seul fil est utilisé pour transmettre les données. (plus un second pour la masse). Il faut qu’un seul des deux ordinateurs soit l’émetteur à un temps T. E/R E/R
Communication en « full duplex » L’émetteur et le récepteur peuvent changer. Deux fils sont utilisés pour transmettre les données. (plus un troisième pour la masse). Les deux ordinateurs peuvent être l’émetteur et le récepteur simultanément. E/R E/R
Réseau multipoint E/R E/R E/R E/R Plusieurs périphériques sont connectés au réseau. La figure est une topologie en bus, mais on retrouve aussi des topologies en étoile, en anneau, en arbre, … E/R E/R E/R E/R
Réseau multipoint Plusieurs équipements étant connectés au réseau, il faut trouver un moyen de s’assurer de la fonctionnalité du réseau. L’accès au réseau peut être fait par: Polling: Un équipement est le maitre du réseau et il consulte les équipements esclaves pour vérifier s’ils ont un message à transmettre. Une panne du maitre entraine la paralysie du réseau. Les esclaves doivent passer par le maitre pour communiquer entre eux. Exemple: Profibus.
Réseau multipoint TDMA – Time Division Multiple Access: Un équipement est le maitre du réseau et il émet un signal de synchronisation. Ensuite, chaque équipement se voit alloué un temps précis et peut transmettre une quantité de données de taille fixe. Cette approche est plus efficace que le polling (moins de messages échangés). Exemple: Bluetooth
Réseau multipoint Token Ring (Réseau à partage de jeton) : La topologie du réseau peut être en anneau, mais ce n’est pas obligatoire. Circulation d’un jeton entre les équipements quand il n’y a pas de messages échangés. L’ équipement désirant envoyer un message garde le jeton, émet son message et passe le jeton au suivant. C’est une connexion déterminisme, car chaque équipement à accès au jeton. Problèmes si le jeton est perdu ou dupliqué. Exemple: Fiber Distributed Data Interface (FDDI)
Réseau multipoint CSMA/CD (Carrier Sense Multiple Access/Collision Detection): Les périphériques surveillent le réseau et attendent un blanc avant d’émettre. Si un seul équipement prend le contrôle, tout va bien, sinon il y aura une collision de données. Cela se produit car plusieurs équipements peuvent accéder au réseau. Lors d’une collision, chaque équipement impliqué génère une durée d’attente aléatoire Cela fait en sorte que ce réseau n’est pas déterministe. Si le réseau est chargé, il peut y avoir des problèmes. Exemple: Ethernet IP
Réseau multipoint CSMA/CA (Carrier Sense Multiple Access/Collision Avoidance): Les périphériques surveillent le réseau et attendent un blanc avant d’émettre. Un équipement désirant émettre envoie un signal RTS (Request to Send) indiquant le volume de données à transmettre. Un récepteur répond par un CLS (Clear to Send), et l’émetteur commence l’émission de son message, les autres émetteurs se mettant en attente. La fin d’une transaction est signalée par un ACK (Acknowledge) par le récepteur. Lors d’une collision, chaque équipement impliqué génère une durée d’attente aléatoire Exemple: LON : Local Operating Network
Réseau multipoint Binary Countdown (Accès par dominance de bit): Les périphériques surveillent le réseau et attendent un blanc avant d’émettre. Chaque message possède un identificateur (soit type de message, soit adresse de l’émetteur). Utilise la notion de bit dominant et de bit récessif. Un bit dominant gagne contre un bit récessif. L’identificateur du message introduit une priorité. En cas de collision, l’émetteur ayant des bits récessifs cesse d’émettre dès qu’il détecte un bit déterminant alors qu’il émet un bit récessif. Cette approche est très efficace, mais elle entraine une limite sur la taille du réseau. Exemple: CAN
Le modèle OSI à 7 couches Le modèle OSI (Open Systems Interconnection) comporte 7 couches et décrit les fonctionnalités d’un réseau informatique et des équipements qui y sont connectés.
Le modèle OSI à 7 couches Les 4 couches inférieures sont en charge d’assurer un transport optimal des données. Les 3 couches du haut sont en charge du traitement des données: cryptage, représentation, …
La couche physique. Elle gère la représentation du bit (codage, timing, synchronisation). Elle définit les niveaux électriques, optiques,... des signaux ainsi que le support de transmission.
La couche liaison. Elle fournit les moyens fonctionnels nécessaires à l'établissement, au maintien et à la libération des connexions entres les entités du réseau. Elle force la structuration des données sous forme de trames. Elle est en charge de la détection et correction (par retransmission) des erreurs détectées et non corrigées par le niveau physique (utilisation de codes détecteur/correcteur d’erreur CRC pour erreur trame).
La couche réseau. La couche réseau doit permettre d'acheminer correctement les paquets d'informations jusqu'à l'utilisateur final. Elle assure le contrôle des flux (pour tenir des temps de réponse acceptables), le routage des paquets, et l'adressage (pour l'ensemble des machines du monde !).
La couche transport. La couche transport est en charge de la gestion du dialogue entre deux nœuds actifs. Elle doit optimiser la qualité de la transmission, notamment avec des outils de détection d'erreurs et des algorithmes de renvoi des messages perdus.
La couche session. La couche de session permet aux différents éléments du réseau de structurer leur dialogue. Il faut s'assurer qu'un récepteur est là avant d’émettre de l'information. Dans cette couche, il y a un masquage total des problèmes de transmission.
La couche présentation. Cette couche se charge de la représentation des données manipulées par les deux applications communicantes (format, compression, cryptage...).
La couche application. C'est la dernière couche du modèle OSI. Elle donne aux applications le moyen d'accéder aux couches inférieures. Elle détermine comment différentes applications vont pouvoir coexister et utiliser des modules communs. De très nombreuses normes ont été définies sur cette base.
RS-232
Trame de transmission – RS232 Le RS232 est un protocole de transmission sériel asynchrone:
Trame de transmission – RS232 Format de transmission (trame): Nombre de bits transmis: de 7 à 9 bits 1 bit de départ 1 ou 2 bits d ’arrêt Le bit de parité Temps de repos (idle time) Application: Imprimante, terminal, ... Système externe lent.
Le CAN (Controller Area Network)
Historique En 1983, un projet interne de Bosch est lancé et son but est de développer un réseau pour les véhicules. En collaboration avec l’Université de Karlsruhe. En 1986, lancement du protocole CAN En 1991, publication des spécifications du CAN 2.0 par Bosch. En 1992, CiA : CAN in Automation En 1992, Premières voitures équipées avec du CAN (Mercedes Benz) En 1993, le CAN devient le standard ISO 11898.
Historique En 1993, le CAN devient le standard ISO 11898. En 1994, Allen Bradley introduit le DeviceNet. En 1995, introduction du protocole CANopen.
Exemple de réseau CAN.
http://www.talktomycar.co.uk/can.htm
http://www. mcafee. com/us/resources/reports/rp-caution-malware-ahead http://www.mcafee.com/us/resources/reports/rp-caution-malware-ahead.pdf
http://www. compu terworld http://www.compu terworld.com/s/ar ticle/9176778/Car _hackers_can_kill _brakes_engine_a nd_more
http://www. thei nquirer http://www.thei nquirer.net/inqu irer/blog- post/1727747/b offins-hack-car- speed
http://www.technology review.com/hack/42040 1/taking-over-a-car/
Revenons au bus CAN…
Le bus CAN et le modèle OSI
Bits dominants vs bits récessifs Bien que la norme CAN puisse être implantée sur différents supports: Filaire; Fibre optique; Infrarouge; Radio fréquence. … elle doit obligatoirement respecter le principe des bits dominants et récessifs. Le bit dominant correspond au niveau logique 0. Le bit récessif correspond au niveau logique 1.
Bits dominants vs bits récessifs Si deux nœuds du réseau CAN présentent deux bits de niveaux différents, le bit dominant est celui qui va s’imposer. Source de l’image: http://www.esd-electronics- usa.com/Images/Online%20Seminars/PDF/CAN%20Seminar%20Youtube.pdf
Arbitrage pour l’accès au bus L’utilisation de bits récessifs et dominant permet de pouvoir faire un arbitrage non destructif. L’arbitrage non destructif permet de laisser passer le message le plus prioritaire. Dans la norme CAN, on utilise l’approche CSMA/CD (Carrier Sense, Multiple Access with Collision Detection). Un message CAN commence toujours par un identificateur qui identifie la nature du message et sa priorité.
Arbitrage du bus CAN Exemple
Arbitrage du bus CAN Exemple L’équipement #2 vient de perdre l’arbitrage
Arbitrage du bus CAN Exemple L’équipement #2 cesse toute activité et maintient son signal à 1.
Arbitrage du bus CAN Ainsi, l’équipement #1 envoie un message important qui possède un identifiant lui donnant la priorité poursuit la transmission du message et l’équipement #2 qui envoie un message moins prioritaire cesse sa transmission et reçoit le message au cas où il est le destinataire. L’équipement #2, tentera de retransmettre son message lorsque le message envoyé par l’équipement #1 sera terminé (en autant qu’il gagne la prochaine phase d’arbitrage, à moins qu’il soit le seul à transmettre).
Arbitrage - Identifiant En CAN, il y a 11 bits utilisés pour l’identifiant. Plus l’identifiant est petit, plus l’équipement est prioritaire, car un bit à un niveau 0 est dominant. L’identifiant indique la nature du message, pas l’adresse de l’expéditeur, ni l’adresse du destinataire. Les équipements recevant les messages, vérifient l’identifiant du message pour déterminer si ce message est d’intérêt ou pas.
Format d’une trame de données Voici l’allure d’une trame de données:
Format d’une trame de données Voici l’allure d’une trame de données: Début de trame (SOF): Un seul bit dominant; Début du message; Envoyé que si le bus est libre; Les autres équipements se synchronisent sur ce signal.
Format d’une trame de données Voici l’allure d’une trame de données:
Format d’une trame de données Voici l’allure d’une trame de données: Identificateur du type de message et de sa priorité. Data Frame : bit dominant Remote Frame : bit récessif
Format d’une trame de données Voici l’allure d’une trame de données: Nombre d’octets du message: entre 0 et 8.
Format d’une trame de données Voici l’allure d’une trame de données: Données transmises
Format d’une trame de données Voici l’allure d’une trame de données: Code pour vérifier l’intégrité des données transmises Bit récessif
Code CRC : Code de détection d’erreur Une méthode de détection d’erreurs souvent utilisée est la « somme de vérification » ou checksum. Exemple: Données à transférer: 0h4F1C32C5. Si checksum de 8 bits Checksum = 4F + 1C + 32 + C5 = 162 donc on garde 62. On transmet: 0h4F1C32C562 Si on reçoit: 0h4E1C30C263 (erreurs de transmission) Checksum = 4E + 1C + 30+ C2 = 15C : 5C n’égale pas 63. Erreurs de transmission détectées.
Code CRC : Code de détection d’erreur Exemple #2 : Données à transférer: 0h4F1C32C5. Si checksum de 8 bits Checksum = 4F + 1C + 32 + C5 = 162 donc on garde 62. On transmet: 0h4F1C32C562 Si on reçoit: 0h4F1C33C462 (erreurs de transmission) Checksum = 4F + 1C + 33+ C4 = 162 : 62 égale 62. Erreurs de transmission non détectées.
Code CRC : Code de détection d’erreur Le code CRC est basé sur une approche polynomiale. On considère les bits d’entrées comme un polynôme. Exemple: le code binaire : 0b0011 0011 1001 0111 peut être interprété comme étant le polynôme suivant: x13+x12+x9+x8+x7+x4+x2+x+1 Supposons que le code CRC (4 bits) est représenté par le polynôme x3+x+1. Le code sera le reste de la division entre les deux polynômes.
Code CRC : Code de détection d’erreur x13+x12+x9+x8+x7+x4+x2+x+1 x3+x+1. x13+x11+x10 x10+x9+x8+x6+x3+1 x12+x11+x10+x9+x8+x7+x4+x2+x+1 x12+x10+x9 x11+x8+x7+x4+x2+x+1 x11+x9+x8 x9+x7+x4+x2+x+1 x9+x7+x6 x6+x4+x2+x+1 x6+x4+x3 x3+x2+x+1 x3+x+1 x2
Code CRC - Détection d’erreur Entrée : 0b0011 0011 1001 0111 x2 x1 + x0 + 0 0 + 0 0 0 0 + 0 1 0 0 + 1 1 0 1 + 1 0 1 1 + 0 0 1 1 + 1 1 1 0 + 0 1 0 1 + 0 1 1 0 + 1 0 0 0 + 1 0 0 0 + 1 1 0 1 + 1 1 1 1 + 1 1 1 0 + 0
Code CRC - Détection d’erreur Une erreur change le polynôme et entraine un changement du reste de la division des deux polynômes. Dans le cas du CAN, le polynôme diviseur est: x15 + x14 + x10 + x8 + x7 + x4 + x3 + x0 .
Format d’une trame de données Voici l’allure d’une trame de données: Acknowledge field 1er bit – bit récessif généré par l’émetteur Pendant ce but les récepteurs mettent un bit dominant. L’apparition de ce bit confirme la réception. 2e bit – bit récessif.
Format d’une trame de données Voici l’allure d’une trame de données: Fin de trame: 7 bits récessifs.
« Bit stuffing » Dans la trame de donnée, entre le SOF et le CRC, si on rencontre une séquence de 5 bits de même valeur on en insère une de valeur opposée. Le but de cette manœuvre est de maintenir la synchronisation entre les points de communication.
Types de transfert Transfert de données: Envoie d’un message au bus CAN. Transfert de requêtes (Remote frame): Demande la transmission d’un message. Trame d’erreur:
Trame de donnée détaillée
Trame allongée de donnée détaillée
Trame « Remote »
Trame d’erreur active
Erreurs de transmission/réception
Relation taux de transfert vs longueur Limitation de vitesse à cause de l’observation du signal.
Message broadcasting Le nœud A envoie un message au réseau. Les autres nœuds reçoivent le message, mais seul B et D s’y intéressent.
Lire la bonne valeur Dans une communication synchrone, on peut transmettre l’horloge sur un fil supplémentaire en plus de celui transmettant les données. C’est ce qui est fait avec le SPI. Dans ce cas comme l’horloge est synchronisée avec les données on peut s’assurer que la donnée est correctement interprétée. Horloge E Signal
Lire la bonne valeur Dans une communication synchrone, on peut transmettre l’horloge sur un fil supplémentaire en plus de celui transmettant les données. C’est ce qui est fait avec le SPI. Dans ce cas comme l’horloge est synchronisée avec les données on peut s’assurer que la donnée est correctement interprétée. Horloge E Signal
Lire la bonne valeur Dans une communication synchrone, on peut transmettre l’horloge codée avec les données. Dans ce cas comme l’horloge du récepteur essaye de se synchroniser avec les données. Mais, cette synchronisation peut ne pas être parfaite. Horloge E Signal Horloge R
Lire la bonne valeur En pratique l’horloge au récepteur à une fréquence N fois plus élevée que la fréquence générant le signal. Cette horloge divisée par N génère l’horloge du récepteur que l’on tente de synchroniser avec le signal. Puisque l’horloge de base est N fois plus rapide, il se produit N cycles durant un cycle de l’horloge récepteur. On peut ainsi se baser sur cette horloge plus rapide pour fixer le moment de l’échantillonnage. Par exemple à N/2 cycles après le changement d’état.
Dans le CAN On utilise la notion du « Nominal bit time ». Cela représente la durée de vie du bit sur le bus CAN. Si la transmission est de 1 Mbits/s, alors la durée nominale d’un bit est de 1 microseconde.
Nominal bit time Le « Nominal bit time » est divisé en quatre parties: Le segment de synchronisation: La transition des données de 0 à 1 ou de 1 à 0 doit se produire dans cet intervalle de temps. Cela permet un resynchronisation des horloges des équipements en réception.
Nominal bit time Le « Nominal bit time » est divisé en quatre parties: Le segment de propagation: La propagation du signal sur le bus n’est pas instantanée. Les drivers, comparateurs et le bus contribuent à générer un retard. La durée de propagation programmée pour « Prop_Seg » doit être le double de la durée de ce retard question de se protéger des problèmes. Cela explique aussi les limites quant aux vitesses de transmission qui dépendent de la taille du réseau.
Nominal bit time Le « Nominal bit time » est divisé en quatre parties: Les deux segments de phase « buffer » #1 et #2: Utilisés pour compenser les erreurs de phase que l’on détecte lors des transitions du signal sur le bus. L’échantillonnage du signal se produit entre ces deux segments.
Time Quantum La base de temps utilisée pour générer le signal est la période de l’horloge du transmetteur. Elle est désignée sous le nom de « Time Quantum ». Comme la fréquence de l’horloge du transmetteur est une fraction de l’horloge de l’oscillateur, sa période est un multiple de la période de l’horloge de l’oscillateur. Time Quantum = N * Minimum Time Quantum. Minimum Time Quantum est la période de l’horloge de l’oscillateur.
Chronogramme
Time Quantum Exemple: Si l’oscillateur est de 100 MHz, alors le Minimum Time Quantum sera de 0.01 microseconde. Avec N = 10, l’horloge de transmission sera de 10 MHz et la période ou Time Quantum sera de 0.1 microseconde. La durée des quatre parties du Nominal Bit Time est: 1 Time Quanta pour la partie synchronisation 1 à 8 Time Quanta pour la partie propagation 1 à 8 Time Quanta pour le segment « buffer phase » #1 1 à 8 Time Quanta pour le segment « buffer phase » #2
Time Quantum Ainsi, le Nominal Bit Time peut être de 4 à 25 Time Quanta. Exemple: Si les durées en Time Quanta sont de 3, sauf pour la synchronisation qui est de 1, le Nominal Bit Time sera de 10 Time Quanta. Si un Time Quanta représente 0.1 microseconde (voir acétate précédente), alors le Nominal Bit Time sera de 1 microseconde. Ainsi la cadence de transmission sur le bus sera de 1Mbits par seconde.
Propagation du signal