Utilisation à distance d'une WebBoard

(see english version)

       Ce site de TP à distance permet d'accéder par internet à deux types de cartes (webboards) : 5 cartes Labomat3 (conçues à l'EPFL et enrichies à l'ENSEEIHT) et une carte Spartan3 Starter Board (conçue par Digilent). Le FPGA XC6216 de la carte Labomat3 ( carte L3) est totalement programmable via internet tandis que le FPGA Spartan3 de la carte Digilent ( carte S3) reste configuré avec un PIC de synthèse, lui-même programmable via internet. La communication avec une webboard est réalisée grâce à 2 applets java : l'une (calview ou picview selon le type de carte) permet de charger une application sur la carte et d'interagir avec elle, la seconde (camera) permet d'observer la carte et son environnement grâce à une webcam.
Le gros intêret de  ce dispositif est de permettre à un utilisateur distant de tester l'application qu'il aura élaborée sur son propre poste grâce à des outils légers mis à sa disposition.
Dans le cas de la carte L3, l'application devra être écrite en MDL, un langage de description structurel conçu à l'ENSEEIHT. Vous pourrez en trouver une description rapide ici. Vous pourrez trouver les versions adaptées à votre système opératoire de MDLC, le compilateur de ce langage, ainsi que de l'utilitaire MAC2MDL ici.
Dans le cas de la carte S3, l'application devra être écrite en langage d'assemblage PIC16F84. Vous pourrez trouver PICA84, l'assembleur de ce langage ainsi que la Foire Aux Questions  ici.

Dans les 2 cas, on cherche à tirer le maximum de la ressource : d'où le choix d'une description structurelle pour L3 et d'un langage d'assemblage pour S3 (NB: le PIC de synthèse a lui-même été décrit en MDL).

avant toute chose

Il faut d'abord s'assurer que votre navigateur peut exécuter des applets Java. Si l'applet n'est pas signée (l'applet calview est signée), il faut de plus autoriser ces applets à lire une partie de votre disque dur (là où sont les fichiers CAL qui servent à configurer le FPGA ou bien les fichiers HEX et LST qui servent à programmer le PIC de synthèse) et à dialoguer avec un serveur distant. Ces autorisations sont sous le contrôle d'un fichier appelé .java.policy placé au niveau de votre répertoire de login. Pour installer Java et pour définir les autorisations, lire les indications de mise en oeuvre java associées à l'applet XlogicCircuits2.

communication avec une WebBoard

 Cette communication repose sur un modèle client/serveur classique. A la demande du Client (votre machine), l'accès au FPGA ainsi que le pilotage d'une caméra vidéo sont gérés par un Serveur situé à l'ENSEEIHT. A titre d'information, ce Serveur échange avec une WebBoard par une communication série. C'est également le Client (vous) qui demandez au Serveur de configurer le FPGA de L3 avec un bitstream que vous aurez préparé chez vous grâce au compilateur MDLC ou bien de charger le PIC de synthèse avec un fichier HEX préparé avec l'assembleur PICA84. Vous pouvez entrer en communication avec le Serveur et choisir une WebBoard disponible en cliquant ici.

Interactions possibles avec la WebBoard

Nous distinguerons ici deux cas :

Cas d'une carte Labomat3 :
Deux vues sont disponibles : une (applet calview) qui représente l'intérieur du FPGA (4096 cellules disposées en 64 lignes de 64 colonnes) et une (applet camera) issue de la caméra pointée sur la WebBoard.
Initialement, un bitstream par défaut (situé sur le serveur) est chargé. Ce fichier par défaut dépend de la webboard que vous avez choisie : selon le cas, vous trouverez les détails de son fonctionnement ici WB40, WB41, WB42, WB44 et WB46. Lorsque ce fichier a été complètement transféré à la WebBoard (le temps de transfert dépend de la taille du fichier), on peut l'implanter dans le FPGA en activant le bouton 'configure'. Si tout se passe bien, on doit observer l'évolution de l'état des cellules internes. Vous pouvez naviguer dans le FPGA à la souris (bouton gauche enfoncé) avec différents niveaux de grossissement (boutons 'ALL', '+' et '-'). Si aucune évolution interne n'est constatée (et que l'horloge est active), il faut quitter ('Bye' trois fois) et recommencer un peu plus tard!...
Vous pouvez également charger un bitstream que vous aurez élaboré vous-même grâce au compilateur MDLC. Le bouton 'LOAD' permet de récupérer un fichier CAL sur votre disque dur puis de l'envoyer à la Web Board. NB: Avant de charger votre propre design, attendez d'abord que le design par defaut ait été chargé puis configuré.
Concernant Calview, vous pouvez:
1) Charger un fichier CAL (bitstream) sur le Serveur (la structure du circuit apparaît alors dans Calview)
2) Configurer le FPGA avec le fichier précédemment envoyé (il faut attendre que le bouton 'configure' devienne actif)
Vous pouvez alors observer une évolution de l'état interne du FPGA. Notez toutefois que les horloges globales (GCLK ou bien G1) étant à 25 MHz, vous ne pourrez observer de façon significative que des états évoluant à basse fréquence. Pour observer en détail l'évolution, vous pouvez suspendre G1 et commander cette horloge en pas à pas (bouton 'Step').
NB : 1) Seuls les états d'une même colonne sont isochrones (32 bits d'états lus en une fois). Les états des colonnes étant lus à des instants différents et l'horloge n'étant pas arrêtée, il faut éviter de comparer les états correspondants à des colonnes différentes
        2) les bascules commandées par des horloges locales ne sont pas directement observables de façon fiable (cf. documentation du XC6216)
 Vous pouvez également éteindre puis remettre sous tension la WebBoard au moyen du bouton 'Bye' (3 appuis consécutifs). D'autre part, la WebBoard est mise hors tension après plus d'une minute de déconnexion.
Concernant la caméra, vous pouvez
* Changer le point de vue, par exemple en focalisant sur le mini afficheur LCD (qui reproduit l'état interne effectif du FPGA) ou bien sur un micro-moteur.
* zoomer (in et out)
* mettre au point manuellement (si l'autofocus ne donne pas satisfaction)


Cas d'une carte Spartan3 :
Deux vues sont disponibles : une (applet picview) qui représente le programme chargé dans le PIC et indique la position du compteur ordinal et une (applet camera) issue de la caméra pointée sur la WebBoard et sur l'écran VGA associé.
Initialement, un fichier MUSIK.HEX par défaut (situé sur le serveur) est chargé dans la partie RAM de la mémoire programme du PIC de synthèse. Lorsque le transfert est terminé, le contrôle est donné à ce programme. Un second fichier (MUSIK.LST) visualise le code source correspondant et la position courante du compteur ordinal (PC).
Concernant picview, vous pouvez
1) Stopper l'horloge et exécuter le programme en pas à pas (bouton 'Step'). Relancer avec 'Run'
2) Charger un nouveau fichier HEX dans le PIC (avec le bouton 'Load') : le code source du programme (si le .LST existe) apparaît alors dans picview et vous permet de suivre l'exécution.

Concernant la caméra, vous pouvez
* Changer le point de vue, par exemple en focalisant sur l'afficheur VGA (qui reproduit l'état interne du PIC de synthèse : état des files et contenu de la RAM programme)
* zoomer (in et out)
* mettre au point manuellement (si l'autofocus ne donne pas satisfaction)
  

  Jean Conter (conter@enseeiht.fr), Septembre 2009