[Numérique] erreurs language vhdl fichier fsm
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

erreurs language vhdl fichier fsm



  1. #1
    invite21bf1be3

    erreurs language vhdl fichier fsm


    ------

    Bonjour, j'ai besoin de votre aide pour des erreurs en vhdl que je n'arrive pas à corriger voici le code que j'ai écrit :

    Code:
    entity circuit is
      port ( ck,reset, vdd, vss,press_kbd,jour,O : in bit;
             i : std_logic_vector(3 downto 0);
    
             porte ,alarm: out bit
           );
    end circuit;
    
    architecture MOORE of circuit is
    
      type ETAT_TYPE is (Idle, E1, E2, E3, E4,Fail,Success);
      signal EF, EP : ETAT_TYPE;
    
    -- pragma CURRENT_STATE EP
      -- pragma NEXT_STATE EF
      -- pragma CLOCK CK
    
    begin 
       process(EP,reset,jour,press_kbd,O)
       begin 
    
       if(reset = '1') then 
         EF <= Idle;
       else
        case EP
          when Idle =>
          if (jour = '1') then 
            if (O = '0') then 
             EF <= Success;
            end if;
          else if (jour = '0') then
            if (press_kbd = '1') then
             if(i= "0101") then EF<=E1;
             else
               EF<=Fail;
             end if;
            end if;
          end if;
           
           when E1 => 
           
            if(i= "0011") then EF<=E2;
            else 
              EF<=Fail;
            end if; 
    
            when E2 =>
            
            if(i= "1010") then EF<=E3;
            else 
              EF<=Fail;
            end if;
    
            when E3 =>
            
            if(i= "0001") then EF<=E4;
            else 
              EF<=Fail;
              end if;
            
            when E4 =>
            if(i= "0111") then EF<=E5;
            else 
              EF<=Fail;
            end if;
    
               when others => assert (’1’)
              report "etat illegal";
          end case;
        end if;
    
           case EP is 
            when Idle =>
            porte<='0'; alarm<='0';
            when E1 =>
            porte<='0'; alarm<= '0';
            when E2 =>
            porte<='0'; alarm<='0';
            when E3 =>
            porte<='0'; alarm<='0';
            when E4 =>
            porte<='0'; alarm<='0';
            when Success =>
            porte<='1'; alarm<='0';
            when Fail => 
            porte<='0'; alarm<='1';
    
            when others => assert (’1’)
              report "etat illegal";
            end case;
    
       end process;
    
     process( ck )
      begin
        if (ck=’1’ and not ck’stable) then
          EP <= EF;
        end if;
      end process;
    
    end MOORE;
    voici les erreurs qu'on m'affiche :

    --> Compile FSM file digicode
    Error line 26 : syntax error
    fbl_bcomp_y.y.1190: Error 18 line 29 :illegal concurrent statement
    Error line 30 : syntax error
    fbl_bcomp_y.y.799: Error 8 line 30 :bad architecture declaration
    fbl_bcomp_y.y.378: Error 40 line 67 :signal `ep` never assigned
    fvhparse.136 Unable to parse file "digicode"

    SI quelqu'un arrive à identifier les erreurs je serai vraiment reconnaissante sinon je suis désolée car je n'ai pas écrit mon code sous forme codeblock c'est car ma connexion actuellement est pourrie.

    -----
    Dernière modification par Antoane ; 31/10/2016 à 20h26. Motif: Ajout balise code et réparation UTF8

  2. #2
    jiherve

    Re : erreurs language vhdl fichier fsm

    Bonsoir,
    Il manque déjà les déclarations des librairies ce qui fait que std_logic_vector est inconnu et ton compilo perd les eaux.
    Ensuite il y a plein d'erreurs de typo ou syntaxe:
    ex i c'est quoi son sexe ?
    derrière case toto il faut un "is"
    elsif et pas else if
    l'assert utilisent des caractères interdits sans doute des voyelles accentuées
    E5 pas declaré
    if (ck=’1’ and not ck’stable)
    ???????????????????
    etc etc
    Tu devrais charger la version web des outils Altera il vient avec une version gratuite de Modelsim qui est amha le meilleurs compilo VHDL/Verilog du marché.
    çà cela compile mais est ce fonctionnel c'est une autre histoire
    je te laisse faire le jeu des 7 erreurs!
    Code:
    library ieee;
    use ieee.std_logic_1164.all; 
    use ieee.numeric_std.all;
      entity circuit is
    
      port ( ck,reset, vdd, vss,press_kbd,jour,O : in bit;
             i : IN std_logic_vector(3 downto 0);
    
             porte ,alarm: out bit
           );
    end circuit;
    
    architecture MOORE of circuit is
    
      type ETAT_TYPE is (Idle, E1, E2, E3, E4,E5,Fail,Success);
      signal EF, EP : ETAT_TYPE;
    
    -- pragma CURRENT_STATE EP
      -- pragma NEXT_STATE EF
      -- pragma CLOCK CK
    
    begin 
       process(EP,reset,jour,press_kbd,O)
       begin 
    
       if(reset = '1') then 
         EF <= Idle;
       else
        case EP IS
          when Idle =>
          if (jour = '1') then 
            if (O = '0') then 
             EF <= Success;
            end if;
          elsif (jour = '0') then
            if (press_kbd = '1') then
             if(i= "0101") then EF<=E1;
             else
               EF<=Fail;
             end if;
            end if;
          end if;
           
           when E1 => 
           
            if(i= "0011") then EF<=E2;
            else 
              EF<=Fail;
            end if; 
    
            when E2 =>
            
            if(i= "1010") then EF<=E3;
            else 
              EF<=Fail;
            end if;
    
            when E3 =>
            
            if(i= "0001") then EF<=E4;
            else 
              EF<=Fail;
              end if;
            
            when E4 =>
            if(i= "0111") then EF<=E5;
            else 
              EF<=Fail;
            end if;
    
               when others => assert (true)
              report "etat illegal";
          end case;
        end if;
    
           case EP is 
            when Idle =>
            porte<='0'; alarm<='0';
            when E1 =>
            porte<='0'; alarm<= '0';
            when E2 =>
            porte<='0'; alarm<='0';
            when E3 =>
            porte<='0'; alarm<='0';
            when E4 =>
            porte<='0'; alarm<='0';
            when Success =>
            porte<='1'; alarm<='0';
            when Fail => 
            porte<='0'; alarm<='1';
    
            when others => assert (true)
              report "etat illegal";
            end case;
    
       end process;
    
     process( ck )
      begin
        if (ck='1' and  ck'event) then
          EP <= EF;
        end if;
      end process;
    
    end MOORE;
    JR
    l'électronique c'est pas du vaudou!

Discussions similaires

  1. aide sur programme en language VHDL
    Par inviteeab0141b dans le forum Électronique
    Réponses: 3
    Dernier message: 22/05/2010, 13h46
  2. Comment convertir un fichier matlab (m-file) en VHDL?
    Par invitec4af4119 dans le forum Électronique
    Réponses: 9
    Dernier message: 20/08/2009, 22h49
  3. VHDL - erreurs dans code RTL
    Par invitebf051ef0 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 07/11/2008, 11h35
  4. Partage de déclaration entre plusieurs fichier VHDL
    Par WhiteBird dans le forum Électronique
    Réponses: 2
    Dernier message: 04/12/2006, 21h29
  5. fichier xml avec language R?????
    Par invitebc019baf dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 04/07/2006, 10h35
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...