Votre question

Problème VHDL dans QUARTUS II

Tags :
  • Matériel
  • Programmation
Dernière réponse : dans Programmation
13 Juillet 2006 14:45:35

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

Autres pages sur : probleme vhdl quartus

12 Septembre 2006 09:18:18

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;
21 Novembre 2006 14:50:00

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.
17 Janvier 2007 11:26:54

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
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS