question vhdl
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

question vhdl



  1. #1
    invite54847131

    question vhdl


    ------

    bonjour,
    si on veut ecrire en vhdl, un compteur constitué de 10 bascules D, comment éviter d'écrire dans le programme chaque bascule D ?
    merci.

    -----

  2. #2
    invite54847131

    Re : question vhdl

    on a par exemple (compteur constitué de 10 bascules):
    entity compteur_10 IS
    port (clock,reset : in std_logic;
    q, qb : out std_logic_vector(9 downto 0));
    end entity compteur_10;

    puis pour l'architecture qui débute par :
    architecture struct of compteur_10 is
    est-ce qu'il faut forcément écrire chaque bascule D dans la suite du programme ?

    merci.

  3. #3
    Jack
    Modérateur

    Re : question vhdl

    non, heureusement et c'est bien là l'avantage des HDL.

    Voilà un exemple de compteur 4 bits que tu pourras adapter:
    Code:
    Library ieee;
    Use ieee.std_logic_1164.all;
    Use ieee.numeric_std.all;
    Use ieee.std_logic_unsigned.all;
    
    entity CMP4BITS is
    PORT (
         CLOCK : in std_logic;
         Q : inout std_logic_vector(3 downto 0));
    end CMP4BITS;
    
    architecture DESCRIPTION of CMP4BITS is
    begin
         process (CLOCK)
         begin
              if (CLOCK ='1' and CLOCK'event) then
                    Q <= Q + 1;
              end if;
         end process;
    end DESCRIPTION;
    Note la simplicité du "Q <= Q + 1;" pour faire compter ce compteur.

    A+

  4. #4
    invite54847131

    Re : question vhdl

    Citation Envoyé par Jack Voir le message
    Code:
    Library ieee;
    Use ieee.std_logic_1164.all;
    Use ieee.numeric_std.all;
    Use ieee.std_logic_unsigned.all;
    
    entity CMP4BITS is
    PORT (
         CLOCK : in std_logic;
         Q : inout std_logic_vector(3 downto 0));
    end CMP4BITS;
    
    architecture DESCRIPTION of CMP4BITS is
    begin
         process (CLOCK)
         begin
              if (CLOCK ='1' and CLOCK'event) then
                    Q <= Q + 1;
              end if;
         end process;
    end DESCRIPTION;
    dans ce programme, il n'y a que le clock qui est en entrée ?
    quand j'essaie de simuler ce programme, cela ne marche pas, quel pourrait être le probleme ?
    merci.

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : question vhdl

    quand j'essaie de simuler ce programme, cela ne marche pas, quel pourrait être le probleme ?
    merci.
    J'ai perdu ma boule cristal

    Sérieusement, comment veux-tu que je sache. Apparemment la compilation s'est bien passée. Que se passe-t-il d'incorrect à la simulation? Tu es sur de bien avoir affecté tes signaux?

    A+

  7. #6
    invite54847131

    Re : question vhdl

    les signaux sont q et clock, j'affecte à clock, un signal périodique, est-ce qu'il faut donner une valeur à q alors que c'est une valeur de sortie ?
    merci.

  8. #7
    Jack
    Modérateur

    Re : question vhdl

    st-ce qu'il faut donner une valeur à q alors que c'est une valeur de sortie ?
    Bien sur que non.

    Il te faudra surement ajouter un reset. En effet, le simulateur ne peut décider de la valeur initiale du compteur.

    A+

  9. #8
    invite54847131

    Re : question vhdl

    avec un reset, j'écris :
    Code:
    Library ieee;
    Use ieee.std_logic_1164.all;
    Use ieee.numeric_std.all;
    Use ieee.std_logic_unsigned.all;
    
    entity compteur is port (
    CK, RES: in std_logic;
    Q: out std_logic_vector(1 downto 0));
    end compteur;
    
    use work.std_arith.all; 
    architecture a_compteur of compteur is
    begin
    process(CK)
    begin
    if CK'event and CK = '1' then
    if RES = '1' then Q <= "00";
    else Q <= Q + 1;
    end if;
    end if;
    end process;
    end a_compteur;
    mais le problème, c'est que la compilation me détecte une erreur, mais je ne vois pas où cela peut être ?
    merci.

  10. #9
    Jack
    Modérateur

    Re : question vhdl

    Essaie-voir çà, j'ai mis les modifs en majuscules:
    Code:
    Library ieee;
    Use ieee.std_logic_1164.all;
    Use ieee.numeric_std.all;
    Use ieee.std_logic_unsigned.all;
    
    entity compteur is port (
    CK, RES: in std_logic;
    Q: out std_logic_vector(1 downto 0));
    end compteur;
    
    use work.std_arith.all; 
    architecture a_compteur of compteur is
    begin
      PROCESS (RES, CK)
      BEGIN
        IF (RES = '1') THEN Q <= "00";
        ELSIF (CK='0' AND CK'event) THEN
           Q <= Q + 1;
        END IF;
      END PROCESS;
    end a_compteur;

  11. #10
    invite54847131

    Re : question vhdl

    le compilateur me detecte toujours une erreur, je crois que c'est la ligne
    avec use work.std_arith.all; comment la corriger ?
    merci.

  12. #11
    Jack
    Modérateur

    Re : question vhdl

    Vire-la ou mets-la en commentaire.

Discussions similaires

  1. vhdl
    Par invite21ed25dc dans le forum Électronique
    Réponses: 12
    Dernier message: 09/12/2007, 15h29
  2. vhdl
    Par invitedcb8d9bb dans le forum Électronique
    Réponses: 5
    Dernier message: 29/03/2007, 20h52
  3. question vhdl
    Par invitef4609854 dans le forum Électronique
    Réponses: 2
    Dernier message: 28/03/2007, 20h28
  4. vhdl
    Par invite4add737e dans le forum Électronique
    Réponses: 0
    Dernier message: 17/11/2006, 00h41
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...