Répondre à la discussion
Affichage des résultats 1 à 21 sur 21

compteur/decomteur en VHDL



  1. #1
    cherwam07

    compteur/decomteur en VHDL


    ------

    Bonjour

    J'essai depuis quelque jours de réaliser un compteur/decompteur 8 bits en VHDL.

    1 sortie : un bus 8 bits

    3 entrées :
    - BP1 pour incrementer la sortie sur un front montant
    - BP2 pour decrementer la sortie sur un front montant
    - RAZ, pour mettre la sortie à 0

    J'arrive bien à creer un simple compteur, ou un simple decompteur, mais pas moyen de mixer les deux
    Soit c'est des erreurs dues au fait que j'ai deux fronts dans le meme process (je pense), ou alors des variables qui soit disant ne sont pas synthétisables, blabla

    Est-ce que quelqu'un qui maitrise pourrait me proposer un bout de code qui fait ca s'il vous plait ?
    Merci d'avance

    -----

  2. Publicité
  3. #2
    Jack
    Modérateur

    Re : compteur/decomteur en VHDL

    tu veux le synthétiser dans quel circuit?

    En général les PAL ou GAL n'ont en effet qu'une horloge.

    Tu peux résoudre le problème en n'utilisant qu'une horloge, mais en mettant une entrée UP/DOWN sur ton circuit.

    A+

  4. #3
    cherwam07

    Re : compteur/decomteur en VHDL

    Je veux synthetiser dans un FPGA Spartan3 de Xilinx.

  5. #4
    cherwam07

    Re : compteur/decomteur en VHDL

    Quelqu'un peut-il m'aider ??

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

    Re : compteur/decomteur en VHDL

    Je veux synthetiser dans un FPGA Spartan3 de Xilinx.
    Aujourd'hui 16h03
    Je ne connais pas les produits de XILINX, mais je suppose que leurs FPGA doivent possèder plusieurs clocks.

    N'empêche, je reste sur mon conseil précédent: une clock et une entrée U/D.

    A+

  8. #6
    cherwam07

    Re : compteur/decomteur en VHDL

    euh... qu'est-ce qu'une entrée UP/DOWN please ?

  9. Publicité
  10. #7
    cherwam07

    Re : compteur/decomteur en VHDL

    euh... qu'est-ce qu'une entrée UP/DOWN please ?
    J'ai repondu a cette question c'est bon

    Mais moi je veux incrementer ou decrementer sur front d'un des deux boutons, ca ne résoud pas mon problème, si ?
    Dernière modification par cherwam07 ; 06/02/2007 à 20h24.

  11. #8
    preston

    Re : compteur/decomteur en VHDL

    Salut,

    Si tu veux faire un compteur/decompteur de manière générique tu dois avoir une entrée de commande et une entrée qui te donne ta valeur, bon ici toi c'est sur 8 bits ca nous simplifie la vie.

    Donc en gros ton entité devrait être qqchose du genre

    entity compteur is
    port
    (
    commande : in std_ulogic;
    clock : in std_ulogic;
    reset : in std_ulogic;
    sortie : out std_ulogic_vector(2 downto 0) -- sur 3 bits
    );
    end entity;

    architecture bhv of compteur is
    signal temp : std_ulogic_vector (sortie'range) := "000";
    begin
    process(clock)
    begin
    -- ici on fait un reset synchrone
    if clock = '1' and clock'event then
    if reset = '1' then sortie <= (others => '0');
    else
    if commande = '1' then
    if temp = "111" then temp <= (others => '0');
    else temp <= temp + 1;
    end if;
    else
    if temp = "000" then temp <= (others => '1');
    else temp <= temp - 1;
    end if;
    end if;

    end process;
    end architecture;

  12. #9
    preston

    Re : compteur/decomteur en VHDL

    Ah oui ...

    tu peux pas faire un process a deux clock différentes

    typiquement

    process(clock1, clock2) --> ca ne peut fonctionner ...

    pq : car quand tu ecris qqchose du genre

    process(clock)
    begin
    if clock = '1' and clock'event then
    ....
    end process

    tu génères au niveau de ta synthèse un flip-flop, or si tu mets deux horloges dans ton process tu essayes de faire un flip-flop a deux entrées d'horloge ce qui n'existe pas dans ta librairie de porte.

    par contre ce que tu peux tenter ss rien te promettre c est de tester le front montant et descendant
    du style :

    if clock = '1' and clock'event then
    temp <= temp + 1;
    elsif clock = '0' and clock'event then
    temp <= temp -1;

    seulement j ai aucune idée si il te fait correctement un double edge flip flop, ce qui m etonnerait assez bien

  13. #10
    cherwam07

    Re : compteur/decomteur en VHDL

    Je vois je vois.....
    Je vais essayer de mettre le compteur/decompteur à une clock et d'ajouter du contexte pour regler mon problème de fronts.

    En tout cas je te remercie beaucoup, et JACK aussi, pour ces reponses

  14. #11
    Jack
    Modérateur

    Re : compteur/decomteur en VHDL

    dans le même ordre d'idée, tu as essayé d'utiliser 2 process: un pour chaque BP?

    Je trouve qu'il n'est vraiment pas raisonnable de bouffer 2 horloges pour un bête compteur.

    C'est de la logique synchrone: une seule horloge est normalement suffisante pour ton compteur.

    Enfin bon, si on te demande 2 horloges ...

    A+

  15. #12
    cherwam07

    Re : compteur/decomteur en VHDL

    Ah non non non, on ne me demande rien du tout, c'est moi qui me suis fixé cet objectif :

    J'ai 8 leds sur lesquelles j'écris des mots de 8 bits.
    quand j'appui sur BP1 ca incremente
    quand j'appui sur BP2 ca decremente
    sur RAZ ca raz

  16. Publicité
  17. #13
    Jack
    Modérateur

    Re : compteur/decomteur en VHDL

    Les circuits programmables sont faits pour fonctionner de manière synchrone avec une horloge.

    Il possèdent néanmoins la possibilité de reset asynchrone.

    Mais je te recommande vraiment de n'utiliser qu'une horloge.

    Tu trouveras des exemples qui correspondent à ton problème ici:

    http://perso.orange.fr/xcotton/electron/coursetdocs.htm

    A+

  18. #14
    preston

    Re : compteur/decomteur en VHDL

    Tu peux mettre ton reset asynchrone c'est meme pas un grand soucis ...

    Pour ton soucis de led mon premier code devrait fonctionner, fait correctement le map avec tes leds et verifie aussi que ton horloge est pas trop rapide sinon tu verras que dal mais ca tu devais deja le savoir ...

  19. #15
    preston

    Re : compteur/decomteur en VHDL

    Ca marche le double edge flip flop ?

  20. #16
    huntershiva

    Re : compteur/decomteur en VHDL

    Bonjour,
    j'ai un petit problème a réaliser un compteur 10bits....
    qui me permettrais de réaliser une rampe qui va de 0 à 1023

    Nom : Sans titre 2.jpg
Affichages : 72
Taille : 32,9 Ko

    *sa donne sa comme allure*
    j'ai un petit soucis sur les compatibilités des variables....

    Alors j'ai bien commencé un bout de programme sans la librairie
    *toujours la même*


    entity compteur is port (
    H, RAZ : in integer range 0 to 1023; -- signal d'horloge et du reset
    rampe : buffer std_logic_vector (9downto 0) -- signal en sortie du générateur de rampe
    );
    end compteur;


    architecture compt_arch of compteur is
    begin
    process(H,RAZ)
    begin
    if H'event and H='1' then
    if RAZ='1' then
    rampe <= 0;
    else
    rampe <= rampe+1;
    end if;
    end if;
    end process;
    end compt_arch;

    Voila si quelqu'un peut m'aider a y comprendre quelque chose a ce VHDL
    *Merci*

  21. #17
    mich35

    Re : compteur/decomteur en VHDL

    Citation Envoyé par cherwam07 Voir le message
    Bonjour
    3 entrées :
    - BP1 pour incrementer la sortie sur un front montant
    - BP2 pour decrementer la sortie sur un front montant
    - RAZ, pour mettre la sortie à 0
    Merci d'avance
    Est-ce que tu a un signal d'horloge en plus?
    Est-ce que BP1 et BP2 sont synchrones de ce signal d'horloge?

  22. #18
    cherwam07

    Re : compteur/decomteur en VHDL

    Citation Envoyé par mich35 Voir le message
    Est-ce que tu a un signal d'horloge en plus?
    Est-ce que BP1 et BP2 sont synchrones de ce signal d'horloge?
    Oh ca ira je te remercie, si tu regardes la date, ca fait 2 ans, depuis je me suis décuplé !!
    Il vaut mieux plutot aider le monsieur juste au dessus.

  23. Publicité
  24. #19
    Musti95

    Re : compteur/decomteur en VHDL

    Citation Envoyé par huntershiva Voir le message
    Bonjour,
    j'ai un petit problème a réaliser un compteur 10bits....
    qui me permettrais de réaliser une rampe qui va de 0 à 1023

    Pièce jointe 67821

    *sa donne sa comme allure*
    j'ai un petit soucis sur les compatibilités des variables....

    Alors j'ai bien commencé un bout de programme sans la librairie
    *toujours la même*


    entity compteur is port (
    H, RAZ : in integer range 0 to 1023; -- signal d'horloge et du reset
    rampe : buffer std_logic_vector (9downto 0) -- signal en sortie du générateur de rampe
    );
    end compteur;


    architecture compt_arch of compteur is
    begin
    process(H,RAZ)
    begin
    if H'event and H='1' then
    if RAZ='1' then
    rampe <= 0;
    else
    rampe <= rampe+1;
    end if;
    end if;
    end process;
    end compt_arch;

    Voila si quelqu'un peut m'aider a y comprendre quelque chose a ce VHDL
    *Merci*
    Bonjour
    Il y'a un probleme dans
    H, RAZ : in integer range 0 to 1023; -- signal d'horloge et du reset
    H (l'horloge) et RAZ donc 1 bit chacun : in std_ulogic;
    et tu crées une autre variable de 10 bits pour la sortie.

  25. #20
    stefjm

    Re : compteur/decomteur en VHDL

    Bonsoir,
    Avec les bibliothèques qui vont bien, ça devrait aller mieux.

    Code:
    library ieee;
    use ieee.std_logic_1164.all; -- pour type std_logic
    Use ieee.numeric_std.all; -- pour surcharge de +
    entity compteur is
       port (
          StClk      : in std_logic, -- signal d'horloge
          StRaz      : in std_logic, -- reset
          stv10Rampe : buffer std_logic_vector (9 downto 0) -- signal en sortie du générateur de rampe
       );
    end compteur;
    
    architecture compt_arch of compteur is
    begin
        process(StClk) -- seule la clock dans la liste de sensibilité
        begin
            if (StClk'event and  StClk='1') then --test de la liste de sensibilité
                if (stRaz='1') then
                    stv10Rampe <= 0;
                else
                    stv10Rampe <= stv10Rampe+1;
                end if;
            end if;
        end process;
    end compt_arch;
    Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».

  26. #21
    mich35

    Re : compteur/decomteur en VHDL

    En effet, desolé, j'avais pas regardé la date en haut. Penibles ces gens qui se racrochent a un topic au lieu d'en créer un nouveau.

Discussions similaires

  1. vhdl
    Par pol5700 dans le forum Électronique
    Réponses: 117
    Dernier message: 30/03/2007, 00h29
  2. vhdl
    Par eagle_75 dans le forum Électronique
    Réponses: 5
    Dernier message: 29/03/2007, 20h52
  3. [VHDL] Compteur Modulo N
    Par tekken dans le forum Électronique
    Réponses: 3
    Dernier message: 26/01/2007, 20h53
  4. compteur vhdl
    Par annece dans le forum Électronique
    Réponses: 1
    Dernier message: 15/11/2006, 11h31
Découvrez nos comparatifs produits sur l'informatique et les technologies.