Contrôle de matrice leds, 2011/2012, TD2
Réalisé par MABROUK Ilyas et XING Shitao
En premier lieu, on a répartie le travail, Shitao s'est occupé de la partie électronique et Ilyas de celle informatique.
Analyse le sujet et modélisation.
Fonctionnement: Le système doit recevoir 8 octets et les afficher sur la matrice de LEDs.La bascule D nous permet de stocker un octet.Le problème est comment je peux stocker les 8 octets de données dans 8 bascules D et les renvoyer dans l'ordre en cohérent avec les bits de contrôles.Chaque bit de contrôle gère une colonne de LEDs.
On a commencé par comprendre le programme de gestion du port série et le modifier pour pouvoir tester l'exemple d’envoi d'un octet. On a ensuite envoyé une suite de huit octets choisis aléatoirement pour comprendre comment se fait l'affichage d'un octet.
On utilise le Démultiplexeur qui est relié au bit de contrôle de bascule D. en entrée on a un compteur lié à un bouton poussoir.Chaque fois le bouton poussoir est poussé,le compteur s'incrémente , puis un seule bit sera fixé à 1.C'est la bascule D correspondante qui stocke les données et le reste ne change pas.Pour renvoyer un seul octet du bascule D à la matrice.On choisit un multiplexeur et un démultiplexeur contrôlé par un même compteur.Le compteur est relié avec le horloge du FPGA.Le multiplexeur Pour contrôler les données en sortie.Le démultiplexeur détermine quelle colonne choisie .Après tout ça ,on teste le FPGA avec l'oscilloscope,en principal, le système fonctionne,mais ,à partir du 4ième bits, il y a un retard.Le système n'est pas synchronisé.Pour synchroniser le système,on synchronise les compteurs avec l'horloge.Le problème est réglé.
Cette séance était entièrement consacrée à la conception de l'interface web 2.0. Au début, on testé l'exemple fournie pour l'affichage d'une ligne de quatre LEDs. Après, on a modifié la page HTML en page dynamique PHP pour pouvoir afficher les 64 LEDs grâce aux deux boucles suivantes:
<?php
$table="";
$val = 0;
for($i=0; $i < 8; $i++){
$table .= "<tr>";
for($j=0; $j < 8; $j++){
$val = $i*10 + $j ;
$table .= "<td>";
$table .= "<img id=$val src='/cercle.php?couleur=vert' onclick='javascript:changeCouleur($val)'";
$table .= "</td>";
}
$table .= "</tr>";
}
echo $table;
?>
Au début, le montage ne marchait pas à cause d'un mauvais choix de la résistance. Après, le système fonctionne correctement.
Pendant cette séance on a ajouté des fonctions java-script afin de récupérer les données nécessaires pour le script cgi-bin. Pour cela, on a ajouté deux fonctions: verifier(), unit(), et on a remplacé la fonction changeCouleur(identifiant) par envoyer(identifiant):
unit(): initialise toutes les LEDs en couleur verte.
envoyer(identifiant): change la couleur de la LEDs numéro: identifiant en cliquant dessus et mets la variable allumer=1 si elle est en rouge ou allumer=0 le cas contraire.
verifier(): envoie les numéros de ligne (i) et de colonne (j) des LEDs allumées au script cgi-bin grâce à une requête Ajax sous la forme d'une chaîne de caractère de la forme "_ij_ij_....".
[[Le