IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VHDL Discussion :

clock'event ne se synthétise pas (error xst:797)


Sujet :

VHDL

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 10
    Points : 9
    Points
    9
    Par défaut clock'event ne se synthétise pas (error xst:797)
    Bonsoir,

    J'ai dans mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (clk'event) then
                   cpt <= cpt+1; 
              end if;
    et lors de synthèse xst ce qui m'affiche c'est : ERROR:Xst:797 : unsupported Clock statement.
    J'ai essayé de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (clk'event and clk='1') or (clk'event and clk='0')
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    case clk is
    when '1' | '0' => cpt<= cpt+1;
    end case;
    Mais toujours ça n'aboutit pas aux résultats voulues :////
    De l'aide s'il vous plait !

  2. #2
    Membre expérimenté

    Homme Profil pro
    Collégien
    Inscrit en
    Juillet 2010
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Juillet 2010
    Messages : 545
    Points : 1 431
    Points
    1 431
    Par défaut
    Tu essaie de faire des choses sur le front montant et descendant de l'horloge.
    C'est possible (C'est comment çà que fonctionnent les memoire DDR), mais ISE n'est pas assez "intelligent" pour synthétiser du code DDR (Dual Data Rate) de écrit un si haut niveaux.

    Tape dans google HDL library "le nom de ton FPGA", télécharge le pdf, et regarde les composants de type IDDR ou ODDR

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Merci infiniment
    En fait je suis en train de coder un multiplexeur de 3 (codeur convolutif 1/3).
    Lors de ma recherche j'ai trouvé que Spartan 6 supporte DDR alors le synthèse XST a bien fonctionné mais quand je fais la simulation comportementale de mon module ça marche bien alors que pour le test Bench non ça ne me retourne pas le bon résultat.
    Et moi j'ai besoin de faire apres une simulation post route donc j'ai besoin que le test bench fonctionne

    Voici mon module vhdl:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    library IEEE;
    use IEEE.STD_LOGIC_1164.ALL;
    use IEEE.STD_LOGIC_ARITH.ALL;
     
    entity mult_neww is
        Port ( clk : in  STD_LOGIC;
               rst : in  STD_LOGIC;
    			  data_in : in STD_LOGIC;
               data_out : inout  STD_LOGIC;
               Q_registres : inout  STD_LOGIC_VECTOR (0 to 4);
               vect_polynomes : inout  STD_LOGIC_VECTOR (0 to 2)
     
    			 );
    end mult_neww;
     
    architecture Behavioral of mult_neww is
    signal cpt : integer range 0 to 2:=0;
    begin
    vect_polynomes(0) <=  Q_registres(0) xor Q_registres(1) xor Q_registres(3) xor Q_registres(4);
    vect_polynomes(1) <=  Q_registres(0) xor Q_registres(2) xor Q_registres(4);
    vect_polynomes(2) <=  Q_registres(0) xor Q_registres(1) xor Q_registres(2) xor Q_registres(3) xor Q_registres(4);
     
      process(clk,rst,vect_polynomes,data_in)
      variable i : integer range 0 to 2:=0;
     
         begin
     
        if rst='1' then 
         Q_registres(0 to 4) <= "00000";
        elsif (clk'event and clk='1') or (clk'event and clk='0') then
        cpt <= cpt+1;
      end if;
        if rst='0' then 
     
               if (cpt = 3) then cpt <=1; end if;
               if (i = 3) then i := 0;  end if;
             case clk is
                when '1' | '0' => if (cpt = 0) or (cpt = 3) then
                                Q_registres(1 to 4) <= Q_registres(0 to 3); 
                                Q_registres(0)<= data_in ; 
                                i:=2;
                            end if;        
     
                when others => NULL;
             end case;
                        data_out <= vect_polynomes(i);
     		                i := i+1; 
        end if;          
       end process;	 
     
    end Behavioral;
    et voila mon test Bench :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    LIBRARY ieee;
    USE ieee.std_logic_1164.ALL;
     
    ENTITY test_bench_mult IS
    END test_bench_mult;
     
    ARCHITECTURE behavior OF test_bench_mult IS 
     
        -- Component Declaration for the Unit Under Test (UUT)
     
        COMPONENT mult_neww
        PORT(
             clk : IN  std_logic;
             rst : IN  std_logic;
             data_in : IN  std_logic;
             data_out : INOUT  std_logic;
             Q_registres : INOUT  std_logic_vector(0 to 4);
             vect_polynomes : INOUT  std_logic_vector(0 to 2)
     
            );
        END COMPONENT;
     
     
       --Inputs
       signal clk : std_logic := '0';
       signal rst : std_logic := '0';
       signal data_in : std_logic := '0';
     
    	--BiDirs
       signal data_out : std_logic;
       signal Q_registres : std_logic_vector(0 to 4);
       signal vect_polynomes : std_logic_vector(0 to 2);
     
       -- Clock period definitions
       constant clk_period : time := 10 ns;
     
    BEGIN
     
    	-- Instantiate the Unit Under Test (UUT)
       uut: mult_neww PORT MAP (
              clk => clk,
              rst => rst,
              data_in => data_in,
              data_out => data_out,
              Q_registres => Q_registres,
              vect_polynomes => vect_polynomes
     
            );
     
       -- Clock process definitions
       clk_process :process
       begin
    		clk <= '0';
    		wait for clk_period/2;
    		clk <= '1';
    		wait for clk_period/2;
       end process;
     
     
       -- Stimulus process
       stim_proc: process
       begin		
     
          -- insert stimulus here 
     
          data_in <= '1';wait for clk_period;
    		data_in <= '1';wait for clk_period;
    		data_in <= '1';wait for clk_period;
     
       end process;
     
    END;

  4. #4
    Membre expérimenté

    Homme Profil pro
    Collégien
    Inscrit en
    Juillet 2010
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Juillet 2010
    Messages : 545
    Points : 1 431
    Points
    1 431
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    vect_polynomes(0) <=  Q_registres(0) xor Q_registres(1) xor Q_registres(3) xor Q_registres(4); --OK LOGIC COMBINATOIRE
    vect_polynomes(1) <=  Q_registres(0) xor Q_registres(2) xor Q_registres(4); --OK LOGIC COMBINATOIRE
    vect_polynomes(2) <=  Q_registres(0) xor Q_registres(1) xor Q_registres(2) xor Q_registres(3) xor Q_registres(4);   --OK LOGIC COMBINATOIRE
     
     
     
    mon_process : process(RST,CLK)--NE RIEN METTRE D AUTRE QUE RST ET CLK DANS LE PROCESS
        --Declaration des variabel et des constantes
        variable i : integer range 0 to 2:=0;
    begin
        --NE RIEN ECRIRE ICI
        if RST ='1' then
            --DESCIRPTION DES EVENEMENTS LORS D UN RESET ASYNCHRONNE
            Q_registres(0 to 4) <= "00000";
        elsif (rising_edge(CLK))then
            --DESCRIPTION DES EVENEMENTS LORS D UN CYCLE HORLOGE
            cpt <= cpt+1;
            -- if rst='0' then --RST VAUT NECESSAIREMENT '0' PUISQU4iL NE VAUT PAS '1'
     
               -- if (cpt = 3) then cpt <=1; end if;
               -- if (i = 3) then i := 0;  end if;
             -- case clk is ---OUFF!!!!!!!!BEURk!!!!!!!!!!!!! NON SYNTHETISABLE
                -- when '1' | '0' => if (cpt = 0) or (cpt = 3) then
                                -- Q_registres(1 to 4) <= Q_registres(0 to 3); 
                                -- Q_registres(0)<= data_in ; 
                                -- i:=2;
                            -- end if;        
     
                -- when others => NULL;
             -- end case;
                        -- data_out <= vect_polynomes(i);
                        -- i := i+1;       
        end if;
        --NE RIEN ECRIRE ICI!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    end process mon_process;

Discussions similaires

  1. Click Event ne se déclenche pas dans UserControl
    Par riric85 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 12/04/2008, 15h22
  2. [POO] Event marche sous IE, pas FF
    Par gloubi dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/02/2008, 13h43
  3. [asp.net C#] Event onclick ne fonctionne pas
    Par vin100H dans le forum ASP.NET
    Réponses: 3
    Dernier message: 10/08/2007, 10h35
  4. event.observe ne fonctionne pas sous IE
    Par mikees dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/06/2007, 18h48
  5. Startx ne démarre pas error 104
    Par grinder59 dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 13/03/2006, 17h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo