vhdl et duart

Electronique numérique / Circuits logiques programmables EPLD, CPLD, FPGA d'Altera ou de Xilinx VHDL, Verilog ou SystemC

Modérateur : Modérateur

sabord
PONCTUEL
PONCTUEL
Messages : 18
Inscription : 16 mai 2005 8:02

vhdl et duart

Message par sabord »

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

JP
Administrateur
Administrateur
Messages : 2323
Inscription : 23 sept. 2003 18:14
Localisation : Strasbourg
Contact :

Message par JP »

Hello,

Le code complet c'est possible ?
Et plus particulièrement au tour de la ligne 242 et 274

a+
JP

McGyver
NOUVEAU
NOUVEAU
Messages : 1
Inscription : 02 juin 2005 22:30

Message par McGyver »

Oui le code complet serait une bonne idée.....
McGyver

sab

Message par sab »

ayé, j'ai réglé mon problème!

ça venait de ce qu'il faut pas modifier un même signal dans dx process à la fois....

sabord
PONCTUEL
PONCTUEL
Messages : 18
Inscription : 16 mai 2005 8:02

vhdl et duart: question conçernant la synchronisation

Message par sabord »

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

JP
Administrateur
Administrateur
Messages : 2323
Inscription : 23 sept. 2003 18:14
Localisation : Strasbourg
Contact :

Message par JP »

Salut sabord,
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?
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.
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 ?
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???
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.

a+
JP

sab

Message par sab »

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.

Répondre