Sérialisateur
pour port parallèle
d'ordinateur

Le dispositif décrit
ci-dessous est un sérialisateur qui assure la liaison entre le
port parallèle d'un ordinateur de type PC et l'émetteur
radio numérique 2 Mbit/s QPSK décrit
dans un article précédent . Il permet à l'émetteur
radio de transmettre à la vitesse de 2 Mbit/s de longs messages
binaires préenregistrés sur le disque dur d'un ordinateur.
Ces messages pourront par exemple représenter des données
quelconques ou bien des séquences d'images animées codées
à la norme de télévision numérique DVB-S.
Pour des raisons de facilité de réalisation et de mise
au point, le sérialisateur fait appel à un CPLD (Complex
Programmable Logic Device).
Fonctions remplies par
le sérialisateur
Le
sérialisateur reçoit les données de l'ordinateur.
Il est connecté sur la sortie d'une carte parallèle pour
bus PCI et reçoit naturellement sur 8 fils les octets en provenance
de l'ordinateur. Un fil supplémentaire est utilisé entre
le port parallèle et le sérialisateur pour permettre à
ce dernier d'assurer le contrôle du flux de données
entrant.
Le
sérialisateur émet les données sérialisées
vers l'émetteur numérique. Deux fils sont nécessaires
pour définir en binaire un état de phase parmi quatre dans
l'émetteur numérique. Un troisième fil véhicule
le signal d'horloge qui assure de manière synchrone la validation
des données à des instants précis. La sérialisation
consiste en la transmission de chaque octet en provenance de l'ordinateur,
sous forme de quatre groupes de deux bits successifs en direction de l'émetteur.
Le
sérialisateur contient l'horloge maître définissant
le débit binaire de 2,048 Mbit/s transmis par l'émetteur.
Enfin,
le sérialisateur assure la transformation des signaux de type TTL
en provenance de la logique CPLD en signaux symétriques RS-422
pour transmission sur paire torsadée (câble informatique
catégorie 5). Par ce moyen, les contraintes de localisation des
équipements s'assouplissent. L'ordinateur peut être éloigné
jusqu'à une dizaine de mètres de l'émetteur radio.

Synoptique et fonctionnement
Le
principe de fonctionnement du sérialisateur est relativement simple.
Le sérialisateur est composé de deux registres de 8 bits,
A et B, qui assurent la mémorisation des données entrantes
issues du port parallèle du PC. Le registre A puis le registre
B sont sollicités alternativement toutes les 4 µs pour accueillir
les octets entrants. Lors de l'écriture du registre B, on procède
à la lecture du registre A, deux bits par deux bits, toutes les
1 µs. Lorsque le registre A est totalement lu, on poursuit
par la lecture du registre B, et on commande simultanément l'écriture
de l'octet suivant dans le registre A.

Le port
parallèle du PC est conservé dans son mode de base, le mode
SPP. Un circuit d'horloge à 8192 kHz, fournit les différents
signaux de positionnement des commutateurs, de contrôle de flux
côté entrée, et de validation des données côté
sortie.
On notera
que la cadence d'extraction des données côté carte
parallèle PC est de 256 ko/s, et que la cadence d'émission
des données vers l'émetteur radio est de 1024 kdibit/s.
(Un dibit = un groupe de deux bits).
Réalisation matérielle
La réalisation
de la fonction décrite ci-dessus pourrait s'envisager au moyen
de circuits logiques traditionnels mais. Cependant, pour des raisons de
compacité et de souplesse de mise au point, nous ferons appel à
un CPLD d'entrée de gamme à faible coût EPM7064SLC44-10,
fabriqué par Altera.
Préalablement
à l'établissement du schéma électrique, il
est nécéssaire d'établir le schéma fonctionnel
détaillé au moyen du logiciel MAXplus+II fourni par le fabricant
du CPLD. Ce logiciel nous servira également ensuite à la
programmation du composant par l'intermédiaire d'une interface
JTAG et d'un petit programmateur ByteBlasterMV déjà
décrit par ailleurs.
- schéma
fonctionnel détaillé :

(cliquer
pour agrandir)
télécharger
l'ensemble des fichiers descriptifs produits par le logiciel MAXplus+II
(50 ko zippés)
- schéma
électrique :
Le schéma
électrique n'appelle pas beaucoup de commentaires : un oscillateur
à 8192 kHz fournit le signal d'horloge au circuit CPLD Altera EPM7064SLC44-10,
un circuit DS26C31 assure la transformation des niveaux logiques issus
du CPLD en signaux symétriques RS 422 pour l'attaque du câble
de liaison à l'émetteur. Deux broches "test" sont
disposées pour des essais lors de la mise au point ou bien pour
couvrir des besoins futurs. Un connecteur à broches normalisé
JTAG permet la programmation in-situ du CPLD.

(cliquer pour agrandir)
- circuit
imprimé :
Le
circuit imprimé est dessiné à l'aide du logiciel
Eagle, dont la version limitée (mais suffisante) est disponible
gratuitement en téléchargement. Pour des raisons de routage,
on fera appel à du circuit imprimé double face, une face
jouant simplement le rôle de plan de masse. De ce fait, les liaisons
entre le CPLD et le câble de liaison du connecteur DB25 seront
réalisées au moyen de conducteurs de faible diamètre.
Les CPLD sont des composants rapides : une grande vigilance doit être
observée dans l'établissement des découplages d'alimentation.

télécharger
les fichiers du circuit imprimé aux formats Eagle .brd et .gif
(55 ko zippés)
NB
: Pour une qualité optimale, il est recommandé de réaliser
le circuit imprimé à partir de son fichier source .brd,
plutôt que du fichier .gif fourni.
(cliquer pour
agrandir)
Configuration du CPLD
Le fichier
de configuration ne sera pas obtenu à partir d'un fichier source
VHDL, mais plus simplement, comme vu plus haut, en utilisant l'outil graphique
fourni gratuitement par Altera avec le logiciel MAXplus+II.
Les
fichiers utiles ont été fournis plus haut, le processus
de programmation déjà
décrit est simple et très rapide.
Le protocole de contrôle
de flux PC-sérialisateur
Le débit
binaire transmis par l'émetteur est fixé par l'horloge à
quartz de 8192 kHz du sérialisateur. Le protocole assurant le contrôle
de flux, c'est à dire l'extraction des données du PC au
rythme de 2048 kbit/s très exactement, est réduit à
sa plus simple expression : Le sérialisateur délivre un
signal logique rectangulaire de rapport cyclique 50/50 sur la broche nAck
de la carte parallèle (broche n°10 du connecteur DB25). La
durée de chaque état est fixée à exactement
3,906 µs par le quartz d'horloge du sérialisateur. Ce temps
correspond à la durée de transmission d'un octet (8 bits)
à la vitesse de 2,048 Mbit/s.
Le logiciel
du PC vient lire par polling l'état de la broche nAck de son port
parallèle en examinant le contenu de son "Status Register".
Lorsqu'un changement d'état est détecté, le logiciel
du PC présente immédiatement un nouvel octet sur le port
parallèle par l'écriture d'une valeur dans le "Data
Register" correspondant.
Au moyen
de ce protocole très simple on peut atteindre en sortie un débit
binaire voisin de 400 ko/s à 500 ko/s avec un flux parfaitement
contrôlé. Pour parvenir à ce résultat, plusieurs
conditions complémentaires doivent cependant être strictement
respectées :
-
travailler sous DOS : le DOS 7.1, dernier DOS livré de série
avec Windows 98, convient parfaitement à cet usage,
-
complèter le DOS par un "DOS extender" pour accèder
à l'espace mémoire situé au dessus des 640 ko gérés
normalement par le DOS,
-
extraire les données depuis la mémoire vive de l'ordinateur
(RAM). En effet, les accès disque produisent des irrégularités
fatales dans le flux de données,
-
programmer dans un langage compilé rapide. Le compilateur doit
être du type 32 bits pour accèder directement à
un espace mémoire important,
-
interdire les interruptions matérielles du PC lors de la transmission,
-
au niveau matériel, utiliser une carte parallèle connectée
sur le bus PCI (proscrire les cartes ISA).
Logiciel PC
Comme
on vient de le voir, l'ordinateur de type PC dans lequel se trouvent les
données à transmettre doit être pourvu d'un logiciel
destiné à présenter les données sur le port
parallèle et à assurer contrôle de flux avec le CPLD
du sérialisateur.
Les
fonctions à réaliser par ce logiciel seront :
-
de charger en RAM le fichier, présent sur le disque dur, des
données à émettre,
-
d'interdire les interruptions matérielles,
-
de présenter, à chaque changement d'état de la
broche nAck, les octets successifs sur le port parallèle désigné,
-
à la fin de la lecture du fichier, d'arrêter le processus
ou bien de le reboucler éventuellement sur son début pour
obtenir une séquence infinie.
Pour
des raisons de rapidité, le logiciel sera écrit en langage
C au moyen du compilateur C 32 bits DJGPP
disponible gratuitement par téléchargement. L'interface
RHIDE qui est fournie, présente une ergonomie très proche
du célèbre Borland TURBOC. Il existe une page guide, appelée
zip-picker,
pour aider l'utilisateur dans le choix des fichiers à télécharger
pour l'acquisition du logiciel
télécharger
le programme source du logiciel READ_PSK.C ( 4 ko zippés)
On observera
deux entorses aux bonnes pratiques :
-
dans le cas où l'on active une boucle infinie, l'arrêt
du PC ne pourra être obtenu que par une coupure de son alimentation
! Ceci est la conséquence de l'interdiction de toute interruption,
mais à l'usage, du fait d'un travail sous DOS, cet inconvénient
se révèle sans graves conséquences.
-
ce logiciel très simple n'est pas portable : pour une configuration
donnée, l'adresse effective du port parallèle (ici 78C0)
doit être notée lors de la première intialisation
du PC, puis reportée dans le programme source READ_PSK.C.
La
taille maximum du message enregistré en RAM, limitée par
le DOS Microsoft à 32 Mo, permet deux minutes de transmission
au rythme de 2 Mbit/s. Une durée quelconque de transmission peut
cependant être obtenue en bouclant logiciellement, autant de fois
que souhaité, la fin du fichier sur son début.
A titre
d'information, les contenus des fichiers autoxec.bat et config.sys sont
également fournis.
Conclusion
Le sérialisateur
décrit ci-dessus est simple à construire et fait appel à
un nombre réduit de composants. Avec ce dispositif qui complète
l'émetteur numérique précédemment décrit,
on dispose du moyen de transmettre à l'antenne, à un rythme
de 2,048 Mbit/s, de longs messages binaires préenregistrés
sur le disque dur d'un ordinateur de type PC. Ce petit montage ouvre la
porte à la transmission de signaux de télévision
numérique amateur.
allumons nos fers à souder !