bonjour,
j'ai finalement décidé d'utiliser un uart pour envoyer les données du FPGA sur le port série(parce que je l'avais jamais fait surtout).
C'est plus complexe que je le pensais car il faut piloter l'uart, en fait un duart avec 8 octet de FIFO ici, de chez philips, dont voici la datasheet:
http://www.chipcatalog.com/Philips/SC26C92.htm
j'ai un petit souci avec mon code VHDL:
j'ai ces messages d'erreures lorsque je compile l'ensemble:
Error: Can't resolve multiple constant drivers for net "DATA_OUT_S[7]" at bus_rs232.vhd(274)
Error: Constant driver at bus_rs232.vhd(242)
ces erreures viennent peut-être de ma façon de définir mon bus de données et de l'utiliser, mais je ne vois pas ou : j'ai défini mon bus de la façon uivante:
DATA_out: inout std_logic_vector(7 downto 0);
j'ai défini deus signaux DATA_in_S, et DATA_out_S comme std_logic_vector(7 downto 0);
j'utilise DATA_in_S pour lui affecter la data reçue et l'utiliser ensuite:
ex pour la lecture du SRA(donc lecture d'adresses) ou la lecture des données...
DATA_in_S<=DATA_out;
j'utilise DATA_out_S pour les datas que j'écris dans les différents process: ex: gestion du MBR(donc envoie d'adresses) ou envoie de données
et que j'assigne ensuite ainsi
DATA_out<=DATA_out_S;
Est-ce une bonne façon de procéder?
quelqu'un a t'il déjà fait ce genre de choses?
merci
vhdl et duart
Modérateur : Modérateur
vhdl et duart: question conçernant la synchronisation
Bonjour,
J'ai l'intention d'utiliser le port série avec une vitesse de 19200 bauds.
J'imagine que cela veut dire que chaque fois que j'enverrai un octet dans la FIFO, ou que j'en lirais un, je dois au préalabble me synchroniser avec une fréquence de 19200hz. c'est bien ça?
Mais lorsque j'adresse le Mode Register et que j'envoie les 3 octets MR0,MR1,MR2 ou que je lis le Status Register( qui permet entre autre de détecter si la FIFO est prète à être chargée ou à être lue), je peux le faire avec n'importe quelle horloge???
ou je dois aussi me synchroniser avant de faire l'adressage requis: MR, SR, FIFO???
Merci d'y répondre, j'ai un gros doute là.
sabord
J'ai l'intention d'utiliser le port série avec une vitesse de 19200 bauds.
J'imagine que cela veut dire que chaque fois que j'enverrai un octet dans la FIFO, ou que j'en lirais un, je dois au préalabble me synchroniser avec une fréquence de 19200hz. c'est bien ça?
Mais lorsque j'adresse le Mode Register et que j'envoie les 3 octets MR0,MR1,MR2 ou que je lis le Status Register( qui permet entre autre de détecter si la FIFO est prète à être chargée ou à être lue), je peux le faire avec n'importe quelle horloge???
ou je dois aussi me synchroniser avant de faire l'adressage requis: MR, SR, FIFO???
Merci d'y répondre, j'ai un gros doute là.
sabord
-
- Administrateur
- Messages : 2323
- Inscription : 23 sept. 2003 18:14
- Localisation : Strasbourg
- Contact :
Salut sabord,
Donc tu as juste à te préoccuper de ces interruptions, le débit c'est l'uart qui s'en charge.
J'ai peut être mal compris ta question aussi ?
a+
JP
Je n'ai pas regardé le datasheet (pas trop de temps en ce moment) mais je suppose que la gestion de la transmission et entièrement gérée par l'uart (ça sert à ça) Donc je suppose que tu dois avoir des sorties sur ton uart qui t'indiques quand il est près à charger une nouvelle valeur à envoyer et quand une nouvelle valeur a été reçue.J'imagine que cela veut dire que chaque fois que j'enverrai un octet dans la FIFO, ou que j'en lirais un, je dois au préalabble me synchroniser avec une fréquence de 19200hz. c'est bien ça?
Donc tu as juste à te préoccuper de ces interruptions, le débit c'est l'uart qui s'en charge.
J'ai peut être mal compris ta question aussi ?
Si tu as x trames qui arrivent à 19200bauds, elles vont être chargées dans la FIFO donc il faut juste que tu lises les données de la fifo avant qu'elle ne "déborde" sinon des données non lues seront écrasées.Mais lorsque j'adresse le Mode Register et que j'envoie les 3 octets MR0,MR1,MR2 ou que je lis le Status Register( qui permet entre autre de détecter si la FIFO est prète à être chargée ou à être lue), je peux le faire avec n'importe quelle horloge???
ou je dois aussi me synchroniser avant de faire l'adressage requis: MR, SR, FIFO???
a+
JP
ok, j'ai un peu craqué en posant ma question:
en effet l'un des bits du status register (SR), permet de savoir si la FIFO est prète à débordée ou non...et un autre bit permet de savoir si on peut la charger.(en fait je m'en sers déjà)
je cherchais un peu plus compliqué:donc en fait, je n'ai pas de modifications à apporter à ce que j'avais fait au départ.(avant de chercher à gérer la synchro), et il me suffit de fournir la bonne horloge à l'uart.
bon c cool.
en effet l'un des bits du status register (SR), permet de savoir si la FIFO est prète à débordée ou non...et un autre bit permet de savoir si on peut la charger.(en fait je m'en sers déjà)
je cherchais un peu plus compliqué:donc en fait, je n'ai pas de modifications à apporter à ce que j'avais fait au départ.(avant de chercher à gérer la synchro), et il me suffit de fournir la bonne horloge à l'uart.
bon c cool.