Page 1 sur 1

Problème de simulation avec Xilinx

Publié : 02 juin 2006 9:36
par stefou
Bonjour à tous,

je suis novice en VHDL et je me heurte à un problème auquel je n'ai toujours pas compris.

Je me suis amusé à créer un diviseur de fréquence en VHDL, dont le code est le suivant:

Code : Tout sélectionner

library IEEE;
library UNISIM;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use UNISIM.VComponents.all;


entity diviseur is
    Port ( clk : in  STD_LOGIC;
             frequency : out STD_LOGIC);
end diviseur;

architecture Behavioral of diviseur is

signal counter: STD_LOGIC_VECTOR(3 downto 0):="0000";
constant n: integer := 10-1;

begin

compteur: process(clk,counter)	-- diviseur de fréquence
begin

 if clk'event and clk='1' then
  if counter >= n then
   counter <= "0000";	-- réinitialisation du compteur lorsque n est atteint
  else
   counter <= counter + 1;
  end if;		
 end if;
	
 if counter >= 5 then	-- rapport cyclique de 1/2
  frequency <= '0';
 else frequency <= '1';
 end if;
	
end process compteur;

end Behavioral;

Lorsque je le compile avec Xilinx ISE, je n'obtiens aucune erreur, un point d'exclamation apparaît juste à côté de "Synthesize" mais aucun warning n'apparaît nul part.
Je crée un fichier testbench waveform pour simuler mon code avec ISE Simulator, le simulateur intégré de Xilinx ISE.

Et là il se passe quelque chose d'étrange: parfois ça marche, parfois ça marche pas...

Y a-t-il un hic dans mon code ? Xilinx ISE ou du moins le simulateur est-il capricieux ?

Merci d'avance !

Publié : 03 juin 2006 16:56
par marsu
Counter est un std_logic_vector donc il ne faudrait pas que tu mette 5 mais "0101".
Quartus fait la différence.
Sinon je pense qu'il est plus simple de faire des diviseur de puissance de 2.
Mais apres cela depend de l'application...

Publié : 05 juil. 2006 16:27
par topix
il y a le test post simulation si tu le connais, je te propose de continuer jusqu'à voir le RTL de ton bloc. et regarde bien tout les log window(les imprimés bien attendu) car je pense que tu dois simplement ajouter des contraites pour certains signaux afin que les conditions dans la simulation soit plus indiquées

Publié : 12 août 2006 15:22
par NNCORE
essaye de faire la simulation avec modelsim ou modelsim deseigner :-D