Tom's Guide > Forum > Programmation > Problème VHDL dans QUARTUS II

Problème VHDL dans QUARTUS II

Forum Programmation : Problème VHDL dans QUARTUS II

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour à tous.

Je ne sais pas vraiment si je suis dans le bon forum. Peut-être que "Hardware" conviendrait mieux ...

J'ai un petit problème : je suis en train de programmer un FPGA avec Quartus II et pour cela j'aurais besoin d'utiliser l'instruction "wait for x ns" de vhdl. Malheureusement, à chaque fois que j'essaie, le compilateur râle et me sort un message d'erreur (comme pour "wait on" d'ailleurs) :-(
Est-ce que quelqu'un sait si quartus reconnaît le 'wait for" ? Et si ce n'est pas le cas que peut-on utiliser à la place ?
Voilà, merci d'avance pour vos réponses !

(s) : un débutant un peu pommé ... :-?

P.S. : voici mon code et l'erreur qui va avec :


LIBRARY ieee;
USE ieee.std_logic_1164.all;


-- Entity Declaration

ENTITY CONTROLEUR IS
-- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!
PORT
(
DATA : IN STD_LOGIC_VECTOR (5 downto 0);
RXF : IN STD_LOGIC ;
LED : OUT STD_LOGIC_VECTOR (5 downto 0);
RD : OUT STD_LOGIC
);

-- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!

END CONTROLEUR;


-- Architecture Body

ARCHITECTURE CONTROLEUR_architecture OF CONTROLEUR IS

BEGIN

transfert : PROCESS
BEGIN
IF (RXF ='0')THEN
wait for 30 ns;
LED <= DATA;
wait for 20 ns;
RD <= '0';
wait for 50 ns;
RD <= '1';
END IF;
END process;

END CONTROLEUR_architecture;



messages d'erreur à la compilation :

Error (10533): VHDL Wait Statement error at CONTROLEUR.vhd(53): Wait Statement must contain condition clause with UNTIL keyword


Error (10442): VHDL Process Statement error at CONTROLEUR.vhd(50): Process Statement must contain either a sensitivity list or a Wait Statement

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

tu as raison, en fait quartus effectue une implantation sur une cible, il modélise les temps de traversé de toute les porte et détermine le temps critique. Je pense que tu devrait cadencé ton contrôleur par une horloge (10 ns), un reset et utilisé une machine d'état pour faire ce que tu veux faire. description rapide de la machine
Excuse moi j'ai pas trop le temps alors j'ecris vite, il ya beaucoup d'ereur dans le code qui suis mais la philosophie est la.

Bon courage

if reset etatnext <= init:
else
switch etatcurrent
case init:
LED <= '0';
RD <= '0';
IF (RXF ='0')THEN
etatnext <= etat1;
else
etatnext <= Init;
case attente30:
RD <= '0';
if(compteur >= 3) then -- incrémenté le compteur si etat = attente30 ou attente 20 ou attente 50 sinon reset le compteur
etatnext <= etat1;
else
etatnext <= attente30;
end if:
case etat1:
LED <= data
etatnext <= attente20;
case attente20:
if(compteur >= 2then -- incrémenté le compteur si etat = attente30 ou attente 20 ou attente 50 sinon reset le compteur
etatnext <= etat2
else
etatnext <= attente2;
end if:
case etat2:
RD <= '0';
...
when others:
end case;

Répondre à janiaut

Tu ne peux pas utiliser les instructions wait for et wait until dans du code synthétisable.

Ces instructions sont réservées pour le test (utilisées dans le testbench), où le code est juste interprété par l'outil de simulation.

------------------------------ J'ai révé d'un monde où les femmes étaient nues et muettes ...
Répondre à bobstar

salut,moi aussi je suis débutante en vhdl.
peux tu me dire comment t'as fé pour envoyer cette question (démarches sue le site). merci

Répondre à solande
Tom's Guide > Forum > Programmation > Problème VHDL dans QUARTUS II
Aller à :

Il y a 2644 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens