mercredi 5 juin 2013

Communication PC => Carte FPGA via port RS232

Schéma synoptique du fonctionnement globale



Tout ce qui est en gris reste à programmer.


Détails sur le protocole de communication

La communication du PC vers la carte est pour l'instant assez simple, il suffit d'entrer un premier message, le drapeau ou trame de début pour amorcer l'acquisition des coordonnées à 4 chiffres et une trame de fin.

 


Les trames de début et de fin sont définies sur 8 bits, dans la vidéo que j'ai présenté, il s'agit respectivement du caractère "A" et "retour à la ligne" en codage ASCII. Pour les données utiles, seul les 4 premiers bits sont nécessaires pour chacun des chiffres. Ces valeurs sont ensuite comparées à la position du chariot (voir codeur optique) dans un comparateur pour piloter le moteur dans un sens ou dans l'autre.


La machine à états




Ce diagramme décrit le processus d'acquisition des données. Les étapes pour les dizaine et unité ne sont pas mentionnées par souci de taille de l'image, c'est le même principe que les centaines et milliers .Notons que la mémoire n'est pas vraiment utile pour l'instant, je ne m'en suis pas vraiment servi dans ce programme, mais ce qui m'intéressait avant tout c'est la façon de transférer les données dans le bloque mémoire M4K de la puce. Je ne prétends pas que c'est la meilleur façon de procéder, je ne suis pas un expert en VHDL. Toutes autres solutions seraient bienvenue.

Dans la première étape, le système attend que la donnée data_in issu de l'uart RS232 correspond à la lettre "A" en ASCII avant de passer à l'étape d'acquisition du chiffre des milliers, data_done est un signal qui permet de valider la transmission complète de la trame du port série. Avant chaque écriture dans la mémoire grâce au signal d'horloge memory_clock, on incrémente l'adresse mémoire pour ne pas écraser la donnée précédente. L'étape task permet d'activer le moteur en fin de trame en attendant que le déplacement se termine avant de retourner à l'état initial.

Programme VHDL

en construction...

1 commentaire:

  1. Bonjour, je souhaiterais transférer des données de ma carte FPGA sur une carte arduino via le rs232 ? j'ai aucune idée sur une base de programmation en vhdl pour transférer ces données.
    Merci d'avance

    RépondreSupprimer