[Programmation] VHDL compteur
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

VHDL compteur



  1. #1
    stabiloboss12

    VHDL compteur


    ------

    Bonjour,

    J'aimerai faire un code avec 2 signaux internes, dans lequel j'aimerai faire des incrémentations par +1 et des décrémentations par 2, avec un sélectionneur "Sel" qui permet de choisir :

    Code:
    ---méthode asynchrone
    
    ENTITY stabiloboss12 is 
    port( clk : in std_logic;
    raz : in std_logic;
    sel : in std_logic_vector(1 downto 0));
    
    END stabiloboss12
    
    ---méthode asynchrone
    architecture compteur of stabiloboss12 is
    signal q1 : std_logic_vector(7 downto 0)
    signal q2 : std_logic_vector (7 downto 0)
    begin 
    
    PROCESS(clk,raz) BEGIN
    IF raz='1' THEN
    q1 <='0';
    q2 <='0';
    cnt8_q1 <=(others=>'0');
    cnt8_q2 <=(others=>'0');
          q<=(OTHERS=>'0'); -- ou q <= "0000";
      ELSIF clk'event and clk='1' THEN
    if (Sel ='00') then
         q1 <= q1 + 1;
    elsif((Sel ='01') then
         q2 <= q2 - 2;
    
      END IF;
    END PROCESS;
    Est-ce que mon code est bon ? Merci d'avance.

    -----
    Dernière modification par Antoane ; 29/08/2016 à 07h15. Motif: Ajout balises code

  2. #2
    jiherve

    Re : VHDL compteur

    bonsoir,
    non il est incorrect!
    Code:
    ENTITY stabiloboss12 is
    port( clk : in std_logic;
    raz : in std_logic;
    sel : in std_logic_vector(1 downto 0));
    
    END stabiloboss12;
    
    ---méthode asynchrone
    architecture compteur of stabiloboss12 is
    signal q1 : std_logic_vector(7 downto 0)
    signal q2 : std_logic_vector (7 downto 0)
    begin
    
    PROCESS(clk,raz) 
    BEGIN
      IF raz='1' THEN
       q1 <=(others=>'0')'; -- c'est un std_logic_vector
       q2 <=(others=>'0')';-- c'est un std_logic_vector
    --cnt8_q1 <=(others=>'0'); inconnu au bataillon
    --cnt8_q2 <=(others=>'0'); inconnu au bataillon
    ---q<=(OTHERS=>'0'); -- ou q <= "0000"; inconnu au bataillon
      ELSIF clk'event and clk='1' THEN
        if (Sel ='00') then
          q1 <= std_logic_vector (unsigned(q1) + 1);
        elsif((Sel ='01') then
          q2 <= std_logic_vector (unsigned(q2) - 2);
        end if;
     END IF;
    END PROCESS;
    END;
    la prochaine fois utilises la balise code (en mode avancé le #) et indentes !!!
    il n'y a pas de sortie à ton entité, et le code ne correspond pas à ce que tu souhaites du moins ce que j'en comprends.
    à plus tard
    JR
    Dernière modification par jiherve ; 28/08/2016 à 20h00.
    l'électronique c'est pas du vaudou!

Discussions similaires

  1. description vhdl et compteur
    Par mathy11 dans le forum Électronique
    Réponses: 10
    Dernier message: 14/06/2012, 18h14
  2. compteur/decomteur en VHDL
    Par cherwam07 dans le forum Électronique
    Réponses: 20
    Dernier message: 28/01/2009, 08h24
  3. Aide pour compteur en VHDL
    Par inviteca665004 dans le forum Électronique
    Réponses: 12
    Dernier message: 10/03/2008, 21h32
  4. [VHDL] Compteur Modulo N
    Par invitef9e6be50 dans le forum Électronique
    Réponses: 3
    Dernier message: 26/01/2007, 19h53
  5. compteur vhdl
    Par inviteacb3e291 dans le forum Électronique
    Réponses: 1
    Dernier message: 15/11/2006, 10h31
Découvrez nos comparatifs produits sur l'informatique et les technologies.