Cet article est organisé comme suit : dans la
section 2, un bref aperçu sur le protocole de
communication RS232 est donné. En section 3,
nous présentons la description de cet UART. La
section 4 présente le cycle de conception et les
résultats obtenus de l’implémentation.
II. LE PROTOCOLE RS232 ET LA LIAISON DE
COMMUNICATION FPGA-DB9
La liaison RS232 est de type série
asynchrone, c’est à dire qu’elle ne nécessite pas
de signal d’horloge pour la synchronisation de
deux systèmes en communication [5]. Il est donc
nécessaire que ces derniers soient configurés de
la même manière. Il est à noter que sur la carte de
prototypage V2MB1000, seulement trois pins du
port série sont utilisés. Les pins en question
sont [1]:
La pin 2 : c’est la pin par laquelle la carte
envoie des données.
La pin 3 : c’est la pin par laquelle la carte
reçoit des données.
La pin 5 : masse commune.
Pour assurer une meilleure synchronisation entre
les deux systèmes, leurs configurations doivent
être identiques. Cette configuration est basée sur:
le débit du transfert, la taille de la donnée et
quelques bits de contrôle. Les débits de
transmission les plus courants sont : 300, 600,
1200, 4800, 9600,19200, 38400, 57600 et
115200 bps (bits par second). Le transfert de
l’extérieur vers la carte ou vice-versa se fait par
l’envoi d’un paquet de 5, 6, 7 ou 8 bits en série et
auxquels sont rajoutés quelques bits de contrôle.
La totalité de ces bits constituent une trame de
donnée. Au repos, la ligne de transmission est
mise à l’état haut. Lorsque l’un des deux
systèmes veut commencer à communiquer, il
prévient l’autre par un premier bit à zéro : c’est le
bit start. Viennent ensuite les bits de données. Un
second bit de contrôle peut être rajouté, il s’agit
du bit de parité. Après le bit de parité, suivent un
ou deux bits stop qui, à travers lesquels,
l’émetteur indique au récepteur que la trame est
terminée. Dans ce travail, le bit stop est
représenté avec un seul bit. Un schéma
significatif d’une trame est montré sur la figure
1.
Fig.1 : Trame de donnée
III. DESCRIPTION DE L’UART
L’UART est constitué principalement de
deux modules, à savoir :
Un émetteur de données qui reçoit ces
dernières en parallèle et les transmet en série
vers l’extérieur. L’émetteur est souvent
connecté au bus d’une architecture interne.
Un récepteur qui n’est autre qu’un
convertisseur série–parallèle.
L’émetteur et le récepteur partagent une même
horloge globale fclk, délivrée par un quartz de la
carte V2MB1000. Par ailleurs, pour atteindre un
des débits que nous avons cité auparavant et qui
va correspondre aux horloges de transmission et
de réception, nommées respectivement txclk et
rxclk, la fréquence fclk du quartz doit passer par
deux diviseurs de fréquence.
Le premier est caractérisé par une constante C ;
celle-ci nous permet de passer de la fréquence
fclk à une fréquence d’une horloge intermédiaire
nommée mxclk. Cette dernière, considérée
comme étant une horloge globale du système, est
introduite dans le but de concevoir un UART
normalisé [1], [2], [6]. Le second diviseur est
défini par une autre constante égale à 16. Cette
dernière correspond au passage de l’horloge
mxclk aux horloges rxclk et txclk. De ce fait,
l’expression correspondante au débit de l’UART
est donnée par la formule suivante [7]:
BR = fclk / (C x 16) bps.
Pour un débit de 115200 bps et pour une
fréquence du quartz de 100 Mhz, le calcul de la
constante C se fait comme suit :
C = fclk / (BR x 16) = 100 x 106/(115200 x 16) =
54,253.
Celle-ci peut être approximée à C= 54. D’après
la valeur finale de C, le débit de l’UART ne
correspond pas directement à la valeur du débit
réel, mais avec une certaine erreur. L’influence
de cette erreur sur le temps d’exécution d’une
trame peut être décrit comme suit :
Pour C=54, le débit de l’UART est de :
BR = 100 x 106/ (54 x 16)= 115740,74 bps.
Il en résulte une période de 8,64 s. Ainsi, le
délai d’une trame sera de : 11 bits x 8,64 = 95, 04
s (11 bits correspond à la taille d’une trame
avec un bit stop).
De ce fait, le délai des 11 bits associé au débit
réel est : 11 bits x 8,68 = 95, 48 s. Soit une
erreur de 0,44 s. Cette dernière n’affectera en
aucun cas les 8 bits de données puisque c’est le
bit stop qui sera perturbé.