connectique spécifique. Du matériel ad-hoc a ainsi été
mis à disposition et interfacé avec les cartes : des
modules Wireless USB CYWUSB6935 de Cypress et des
cartes d’évaluation du composant Maxim MAX19713
(Front-End radio, permettant en particulier de traiter
les signaux IQ du WiFi (802.11b)). La plate-forme
dispose également de nombreux appareils de mesures,
parmi lesquels des oscilloscopes pour l’étude des signaux
analogiques générés et reçus, et des analyseurs de spectre
pour l’étude de l’occupation des fréquences.
C. Solution : architecture du système
Pour répondre au problème, une architecture
matérielle/logicielle à base de blocs logiques semble la
mieux adaptée. Deux niveaux de blocs ont été proposés.
Tout d’abord, des « macro-blocs », correspondant en
fait aux différentes couches du modèle Internet qui nous
intéresse ici : la couche physique, la couche de liaison
de données, et les couches réseaux et applications.
Les couches supérieures étant déjà implémentées, il était
préférable ici de prendre les solutions les plus standards
possible, et il a donc été décidé d’utiliser un noyau
Linux 2.4.26 porté sur la carte XUPV2P. Ce noyau a
l’avantage d’être connu par beaucoup de développeurs,
et permet d’offrir aux utilisateurs un environnement
standard, même si parfois peu familier, pour contrôler la
carte. Ce macrobloc n’est pas découpé en blocs de grain
plus fin. En effet, l’objectif n’est pas d’expérimenter sur
les couches hautes.
Les couches inférieures, dépendantes de la norme
utilisée, sont développées pour répondre à nos besoins.
Pour fonctionner et offrir la modularité nécessaire, il a
fallu de définir correctement les APIs logicielles et les
interfaces matérielles permettant de relier ces différentes
couches. On distingue deux macro-blocs. D’abord, un
macro-bloc liaison de données, plus communément
appelé couche MAC. Ce bloc est divisé en 3 sous
parties : deux blocs d’interface et un bloc de protocole.
Ce macro-bloc est défini plus précisément dans la partie
traitant du logiciel.
Le second macro-bloc correspond à la couche physique.
Ce bloc comporte un bloc d’interface, développé en
logiciel, et une multitude de blocs de traitement, qui,
une fois reliés entre eux, permettent d’obtenir une
chaîne de traitement numérique. Grâce à la définition
d’une interface matérielle unique, chaque bloc est
indépendant, ce qui permet de construire une chaîne par
assemblage. Cette couche est détaillée dans la partie
décrivant le matériel utilisé.
Fig. 1. Architecture : interfaces
D. Communication interne
Une telle architecture en blocs impose des interfaces
entre blocs définies précisément, tant au niveau matériel
qu’au niveau logiciel.
Les interfaces de niveau matériel pour les blocs de
traitement de la couche physique ont été développés
entièrement, et sont présentés dans la partie traitant du
matériel dans le système. Les interfaces entre macro-
blocs, elles, font partie de l’architecture. Deux interfaces
nous intéressent ici : l’interface MAC/Linux et l’interface
MAC/PHY. Chacune de ces interfaces requière une étude
séparée, les besoins n’étant pas les mêmes.
L’interface MAC/PHY, par exemple, a des besoins
temps réel que l’on ne retrouve pas dans l’interface
MAC/Linux. Ces besoins temps-réel nous ont poussé
vers une interface à base de liens rapides de type FIFO,
pour l’interface MAC/PHY.
Le Linux et la couche MAC ont eux besoin de persis-
tance dans les données, une communication à base de
mémoire partagée a été adoptée. Une interface à base de
DMA est envisageable, mais plus complexe à implanter.
Au niveau logiciel, les APIs sont également différentes,
car liées à l’architecture matérielle. Ainsi, l’interface
MAC/Linux utilise des registres/variables partagés, et un
système de signalisation par interruption.
Par contre, l’API MAC/PHY ne peut être implémentée
de la même manière, les contraintes temps réel ne
supportant pas le surcoût occasionné. Un système de
scrutation sur les FIFO et de commandes prédéfinies est
donc mis en place.
Enfin, une interface logicielle est nécessaire pour le
contrôle des blocs matériels de traitement de la couche
PHY. Cette « interface », définie dans les normes IEEE,
s’appellent le PLCP (Physical Layer Convergence Pro-
tocol), et sert en fait à offrir aux couches supérieures
une API indépendante des techniques de transmission