2. Le modem

  Les modems ont beaucoup évolué et gagné en puissance depuis quelques années. Les processeurs qui se trouvaient il y a peu au cœur de nos ordinateurs sont maintenant intégrés dans les modems (cf. illustration en TP avec expositions de différentes générations de modems). On y distingue toujours un relais de prise de ligne et une bobine d'induction pour assurer l'isolation galvanique, et la plupart du temps un haut parleur pour signaler une sonnerie, ou pour pouvoir écouter ce qui se passe sur la ligne téléphonique. L'architecture fonctionnelle d'un modem est grossièrement la suivante :  

Architecture du modem
Figure 2 : Architecture d'un modem

2.1 L'UART

  L'UART (Universal Asynchronous Receiver / Transmitter, terminologie Intel) est un gestionnaire de liaison RS-232. Il effectue principalement les conversions de série « parallèle entre la RS-232 (série) et le bus (parallèle sur au moins 8 bits). Il sera étudié plus en détail lorsque l'on verra l'architecture du  PC.

2.2 Le microprocesseur

  Il effectue tout le traitement lié au protocole : il contrôle la liaison RS-232 au travers de l'UART et la liaison RTC au travers du DSP. Il effectue la compression / décompression des données. Il traite l'empaquetage / dépaquetage des blocs. Il effectue des contrôles d'erreurs et retransmet éventuellement les paquets mal reçus. Il gère le contrôle de flux sur les liaisons. De plus, son comportement est programmable et il est capable de répondre à un certain nombre de commandes.

2.3 La RAM

  Elle stocke les données temporaires, dont les principales sont les blocs en cours de transmission, de compression, ou d'empaquetage et les variables de fonctionnement du modem.

2.4 La ROM

  Elle contient les programmes et les données fixes (celles inhérentes aux protocoles normalisés). Elle est de plus en plus remplacée par une EPROM, puis par une EEPROM, plus coûteuse, mais réinscriptible, afin de pouvoir mettre à jour (upgrade) les modems avec de nouveaux protocoles postérieurs à la conception du modem.

2.5 Le DSP

  Le DSP (Digital Signal Processor) est un composant dont la fonction première est la transformation numérique « analogique pour adapter le signal numérique au RTC. Il existe plusieurs moyens de réaliser cette transformation. La première d'entre elle a été la Modulation d'Amplitude :  

La modulation d'amplitude
Figure 3 : La modulation d'amplitude

  Un signal à une fréquence f est transmis pendant une certaine durée pour émettre un 1, alors que rien n'est transmis pour un 0. Cette technique a un gros défaut : si le signal est trop atténué, tous les bits sont considérés comme des 0. D'autre part, une perturbation électromagnétique importante sur la ligne peut faire prendre un 0 pour un 1. Une autre technique, la modulation de fréquence a alors été utilisée :

La modulation de fréquence
Figure 4 : La modulation de fréquence

  Cette technique est maintenant de plus en plus remplacée par la modulation et le saut de phase, mais la complexité de la théorie sous jacente dépasserait grandement le cadre de cet exposé. Nous raisonnerons donc sur la modulation de fréquence, qui suffira pour introduire les idées fondamentales. On utilise donc deux fréquences, l'une f0 pour transmettre un 0, l'autre f1 pour transmettre un 1, les deux signaux étant émis à des amplitudes identiques. De son côté, le récepteur utilise un autre jeu de fréquences (g0, g1) pour transmettre ses informations. Ceci permet d'utiliser le full-duplex proposé par le RTC, puisque un modem émettra sur (f0, f1) et écoutera sur (g0, g1), alors que son correspondant émettra sur (g0, g1) pour écouter sur (f0, f1). Le choix du jeu de fréquences utilisé pour émettre et recevoir est décidé d'office par le protocole : l'initiateur de l'appel téléphonique a un jeu réservé, et le modem appelé en a un autre. Il y a donc, dans ce système, toujours deux fréquences sur quatre présentes sur la ligne. Cependant, on est pas obligé de se limiter à deux fréquences pour chacun des partis. En utilisant un second jeu de fréquences, que l'on notera (f'0, f'1), l'initiateur peut émettre deux bits à la fois. De la même manière, en utilisant un couple de fréquences différentes des autres (g'0, g'1), l'appelé peut lui aussi émettre deux bits simultanément. On a donc réussi à paralléliser la communication sur le RTC. Il n'y à priori pas de raison de s'arrêter en si bon chemin : pourquoi ne pas utiliser en plus deux autres jeux de fréquences, (f"0, f"1) et (g"0, g"1) pour transmettre trois bits à la fois ? On émet à tout instant ainsi non plus un bit, mais un symbole. Le nombre de symbole par secondes s'exprime dans une unité spécifique : le baud. C'est à dire que si des modems fonctionnent à 9600 bauds, avec un protocole faisant contenir 3 bits par symbole, on obtient une vitesse de transmission de 9.600 x 3 = 28.800 b/s. L'ensemble des symboles possibles pouvant être émis d'après un protocole est appelé la constellation du protocole.

Constellation à deux bits par dymbole
Figure 5 : Constellation à deux bits par symbole.

  Où ce groupement des bits dans les symboles peut-il s'arrêter ? Il y a finalement une infinité de fréquences entre 300 et 4000Hz… En fait, ce n'est pas si simple que cela. Il y a tout d'abord le problème de la précision. Si les deux modems n'ont pas des horloges internes strictement identiques, le récepteur risque de prendre par exemple la fréquence de 1000Hz émise par l'appelant pour du 1000,01Hz, qui représente probablement un autre bit… d'où catastrophe ! De plus, on a sans doute pas de détecteurs de fréquences suffisamment précis pour qu'une fréquence soit différenciée d'une autre aussi proche assez vite : pour qu'il y ait une période de différence entre le 1000HZ et le 1000,01Hz, il faut laisser passer… 100 secondes, soit plus d'une minute et demie. S'il fallait tout ce temps là pour détecter correctement un symbole, les informations seraient longues, très longues à transmettre, ce qui perturberait grandement l'interactivité de la liaison. Il y a donc un compromis à réaliser. En ce moment, la plupart des protocoles utilisent en moyenne une constellation à 3 bits par symbole.

  Le principal travail du DSP est donc de générer des sinus à une fréquence commandée par le microprocesseur et de détecter la présence de sinusoïdes à certaines fréquences prédéfinies. La détection se fait à partir de la numérisation du signal et du traitement de ce dernier par FFT (Fast Fourier Transformation). Les détails de cette opération sortent largement du cadre de ce TP. La génération des sinusoïdes est, par contre, beaucoup plus simple. Elle se faisait, il y a peu, avec des VCO (Voltage Controlled Oscillators) qui avaient le désagrément d'être fort peu précis et peu stables dans le temps (très sensibles au vieillissement des composants). En cette ère du tout-numérique, les sinus sont générés de façon numérique, puis transformés en signal analogique par un simple DAC (Digital to Analog Converter) situé en bout de chaîne. Les sinus numériques sont particulièrement simples à générer à partir d'une table de sinus :

Fonctionnement de  la table de sinus
Figure 6 : Fonctionnement de la table de sinus

  Le fonctionnement en est très simple : on parcourt la table (considérée comme cyclique) avec un pas proportionnel à la fréquence, et on émet un régulièrement (à chaque 'top' d'horloge) un échantillon lu dans la table, avant d'incrémenter une fois de plus le pointeur. En effet, la sinusoïde bleue est générée avec le curseur bleu : à chaque top d'horloge, ce curseur se déplace d'un échantillon, alors que le curseur rouge, qui définit la sinusoïde rouge, se déplace de deux échantillons entre chaque top d'horloge. On a donc bien le résultat voulu : la sinusoïde rouge a une fréquence double de la sinusoïde bleue. Naturellement, dans les véritables DSP, il n'y a pas que 8 échantillons, mais plus près d'un millier de valeurs de sinus pour des valeurs d'angle comprises entre 0 et p/2. Une règle de calcul polynomial simple permet d'inférer des approximations suffisamment précises des valeurs intermédiaires (comprises entre deux échantillons présents dans la table).

2.6 Aperçu du langage Hayes

  La quasi-totalité des modems sont configurables, et surtout les plus récents, qui reconnaissent un grand nombre de protocoles. La configuration de ces modems peut se faire de bien des manières différentes : par changement d'une EPROM sur support ZIF, par jumpers, par positionnement de signaux électriques spécifiques ou au travers d'un canal de communication « normal »  reconnu par le modem. C'est cette dernière solution qui est actuellement la plus utilisée. Le possesseur du modem se trouvant, dans le schéma utilisé en standard, de l'autre côté de la liaison RS-232, c'est au travers de cette dernière que se fera la configuration du modem. La RS-232 est avant tout faite pour transmettre des caractères, et, du point de vue l'utilisateur, les caractères sont le plus simplement organisés en lignes. C'est donc au travers de lignes de commandes que le plus répandu des langages de configuration de modem, le langage Hayes (d'après le nom du constructeur qui l'a introduit) transmettra ses commandes au modem. Tous les modems ne reconnaissent pas ce langage, contrairement à ce que beaucoup semblent croire, cependant, il est vrai que c'est le cas pour l'immense majorité. Du point de vue du modem, il y a alors deux modes :

Mode commande, mode connecté
Figure 7 : Mode commande, mode connecté

  Les commandes Hayes sont donc organisées en lignes et sont entrées en mode commande (c'est le mode par défaut lorsque le modem est allumé). Elles ont un point commun : toutes (à l'exception d'une seule) commencent par la suite de lettres 'AT' et se terminent par un retour chariot (fin de ligne). Les lettres A et T peuvent être écrites dans n'importe quelle casse (majuscule ou minuscule), mais forcément dans la même. Après ces deux lettres, un certain nombre de commandes peuvent être juxtaposées. Si vous vous trompez, vous pouvez utiliser backspace (effacement arrière) pour corriger les commandes erronées, mais vous ne pouvez pas corriger AT. Le modem, après traitement de la commande, renvoie un message indiquant soit que tout s'est bien déroulé ('OK'), soit signaler une erreur ('ERROR'). Beaucoup de modems renvoient par défaut l'écho des commandes qui leur sont transmises, mais la plupart d'entre eux ne ne font que si la ligne tapée commence effectivement par les lettres 'AT'. Attention : tout ce qui est tapé après 'AT' est considéré par le modem comme une commande ; n'y mettez donc pas n'importe quoi : vous avez de sérieux risques de mal programmer votre modem et d'obtenir de sa part un comportement  plutôt déroutant :-)

  Liste sommaire des commandes Hayes (aussi appelées commandes 'AT')

  Pour plus de détails sur les commandes Hayes, surfez - il y a des dizaines de pages qui les décrivent, entre autres chez les constructeurs de modems (exemple…).

  Les autres commandes doivent être précédées de 'AT' et se finir par un retour chariot.

Pour repasser du mode connecté au mode commande, alors que le modem n'interprète plus aucune commande, il y a plusieurs fonctionnalités qui peuvent ou non être présentes, suivant les types de matériels ; elles sont en général validées et invalidées par des commandes AT émises au modem. La première consiste à émettre un break court au modem. C'est la méthode la plus sûre et la plus rapide. La seconde consiste en une séquence d'échappement, qui comprend 1 seconde de « silence », c'est à dire pendant laquelle le PC n'émet rien, puis trois caractères identiques (en général, c'est le caractère '+') émis en moins d'une seconde, et enfin une nouvelle pause de 1 seconde. Le modem met alors en attente son correspondant et retourne en mode commande. L'utilisateur peut donc programmer à nouveau son modem, puis lui demander soit de revenir à l'ancienne connexion (ATO), soit de raccrocher (ATH).

Le Réseau Téléphonique Commuté   Retour à l'index   La liaison RS-232


Copyright (c) 1998 by Igx, the dreaming drummer…