vhdl - Page 2
Répondre à la discussion
Page 2 sur 4 PremièrePremière 2 DernièreDernière
Affichage des résultats 31 à 60 sur 118

vhdl



  1. #31
    pol5700

    Re : vhdl


    ------

    oui j'ai pas encore mis l'entré de validation.

    pour commencer seulement quand validation = 0

    sa serai un truc du genre:

    if valid = '1' then compte ="0"
    if valid = '0' then compte = compte+1

    if compte='159' then raz = '1'

    sa pourrai etre ce genre de truc?

    par contre pour raz='1' sa serai sa mais faut que le raz soi trés court, or la il serai infinie, non?

    -----

  2. #32
    Jack
    Modérateur

    Re : vhdl

    Le mieux, c'est que tu essaies.

  3. #33
    pol5700

    Re : vhdl

    le truc c'est que j'arrive jamais a tester!

    meme avec des prog sur le net testé par les concepteur ne marche pas, ya tjs des erreur de syntaxe dont je ne trouve pas la solution, sa soul a force.

    si j'arrive a tester, sa serai plus simple pour mettre en oeuvre le prog.

  4. #34
    jiherve

    Re : vhdl

    Bonjour
    Il ne faut pas de "signal" devant un "alias"
    donc
    signal compte : ......;
    alias mono : std_logic is compte(8);
    J'ai fait une erreur c'est :
    compte(7 downto 0) <= std_logic_vector(to_unsigned(1 59,8));
    Puisqu'il y a huit bits.
    Il manque la librairie:IEEE.numeric_std.
    JR

  5. #35
    pol5700

    Re : vhdl

    ya plus que une erreur, c'est la library que tu ma indiqué!

    j'ai mis :
    use ieee.numeric_std.all;

    et le mess d'erreur est:
    primary unit "numeric_std" denoded by prefix "ieee" must exist in the library

    la librarie n'est pasla bonne?

  6. #36
    jiherve

    Re : vhdl

    Re
    Avec quoi compiles tu ?
    JR

  7. #37
    Jack
    Modérateur

    Re : vhdl

    Je pense que c'est MAXPLUS+II

  8. #38
    pol5700

    Re : vhdl

    max+plus2 de chez altera

  9. #39
    jiherve

    Re : vhdl

    Bonjour
    Le compilo VHDL MAXPLUS était primitif je vais donc essayer de compiler ce bout de code demain (licence au boulot only) et voir ce que le compilo n'aime pas.
    JR

  10. #40
    pol5700

    Re : vhdl

    c'est la librarie numeric qu'il n'aime pas.

    pourrais tu m'expliquer un peu le programme que je le comprenne bien.

    merci

  11. #41
    jiherve

    Re : vhdl

    Re
    j'avais encore une erreur il faut charger à 158 pour avoir pile poil 160, probleme dit des arbres et des gendarmes.


    If clrn = '0' then-- reset asynchrone à la mise sous tension au moins on sait d'où l'on part
    compte <= (others => '0');
    elsif rising_edge(clk) then -- on fait du synchrone et pas de la zoubida
    if raz = '1' then --détection front descendant on charge le compteur a 512 + 158
    compte(8) <= '1;
    compte(7 downto 0) <= std_logic_vector(to_unsigned(1 59,8));
    elsif donnée = '1' and mono = '1' then--pendant la durée du bit et tant que le bit 8 du compteur reste à 1 on décompte , donc cela décompte de 512+158 à 511 donc 160 periodes
    compte <= std_logic_vector(unsigned(comp te) -1);
    end if;

  12. #42
    pol5700

    Re : vhdl

    pkoi on ne fait pas un compteur de 0 a 159, sa marcherai pas?

    pkoi on par de 512 pour arriver a 511? a cause des 8 bits?

    dans ce prog, ya une entrée de validation? de remise a zéro?

    moi je veu que sa commence a compter quand l'entrée de valid est a 0, tandis que dans ce prog sa part quand raz = 1 , non?

    merci

  13. #43
    jiherve

    Re : vhdl

    Re
    Donc tu écris:
    If clrn = '0' then-- reset asynchrone à la mise sous tension au moins on sait d'où l'on part
    compte <= (others => '0');
    raz <= '1';
    elsif rising_edge(clk) then -- on fait du synchrone et pas de la zoubida
    raz <= valid;-- retard d'un coup d'horloge pour détecter le front descendant, cela suppose que valid est synchrone de l'horloge
    if valid = '0' and raz = '1' then --détection front descendant on charge le compteur a 512 + 158
    compte(8) <= '1;
    compte(7 downto 0) <= std_logic_vector(to_unsigned(1 58,8));
    elsif valid = '0' and mono = '1' then--pendant la durée du bit et tant que le bit 8 du compteur reste à 1 on décompte , donc cela décompte de 512+158 à 511 donc 160 periodes [/B]
    compte <= std_logic_vector(unsignedv(com pte) -1);
    end if;
    si tu veux 160 périodes pendant que valid est à zéro charges à 157 car il y a une période d'horloge qui sert à charger!
    JR

  14. #44
    pol5700

    Re : vhdl

    en fait j'ai mon signal valid qui est un signal rs232.
    donc il est au repos a l'etat haut, vien le bit de start ( etat bas) cela valide mon compteur.
    il compte les 160 impulsion d'horloge puis se remet a zéro.
    ensuite il réattend un nouveau bit de start.

    ce prog fait cela?

    merci

  15. #45
    pol5700

    Re : vhdl

    le 512 vien du fait qu'en binaire c'est 1000000000
    et 511 c'est 111111111

    mais la ya 10 bit!

  16. #46
    jiherve

    Re : vhdl

    Re
    Oui tu as raison c'est 256 qu'il faut lire , sorry c'est dimanche!
    Cela prouve que tu suis !
    JR

  17. #47
    pol5700

    Re : vhdl

    ok je comprend mieu mtn.

    mtn sa fait bien la fonction voulu?

    ya plus que je reussise a simuler pour verifier le fonctionnement.

  18. #48
    pol5700

    Re : vhdl

    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;
    use ieee.std_logic_arith.all;

    entity monostable is
    port
    (
    clk,donnee,clrn: in std_logic;
    mono: out std_logic
    );
    end monostable;

    architecture arch_monostable of monostable is

    signal compte : std_logic_vector(8 downto 0);
    alias monostable : std_logic is compte(8);


    begin
    Process(Clk, clrn)
    If clrn = '0' then-- reset asynchrone à la mise sous tension au moins on sait d'où l'on part
    compte <= (others => '0');
    raz <= '1';
    elsif rising_edge(clk) then -- on fait du synchrone et pas de la zoubida
    raz <= valid;-- retard d'un coup d'horloge pour détecter le front descendant, cela suppose que valid est synchrone de l'horloge
    if valid = '0' and raz = '1' then --détection front descendant on charge le compteur a 256 + 158
    compte(8) <= '1';
    compte(7 downto 0) <= std_logic_vector(to_unsigned(1 58,8));
    elsif valid = '0' and mono = '1' then--pendant la durée du bit et tant que le bit 8 du compteur reste à 1 on décompte , donc cela décompte de 256+158 à 255 donc 160 periodes [/b]
    compte <= std_logic_vector(unsignedv(com pte) -1);
    end if;
    end if;
    end process;

    end arch_monostable;



    voila le prog tout réecrit comme on a dit.

    reste une erreur sur cette ligne:
    If clrn = '0' then

    erreur de syntaxe!

  19. #49
    jiherve

    Re : vhdl

    re
    manque un begin sur la ligne précedente
    process(....)
    begin
    if
    ....
    elsif ...
    ....
    end if;
    end process;
    Décidément il n'y a peut être pas d'heure pour le baton de berger mais pour le VHDL si.
    Oui je pense que cela doit faire ce que tu veux.
    JR

  20. #50
    pol5700

    Re : vhdl

    lol il me soul ce logiciel!!

    mtn il me dit que raz et valid ne sont pas declaré.
    mais quand je les declare dans in ya 30 erreur lol

  21. #51
    jiherve

    Re : vhdl

    re
    évidement qu'ils ne sont pas déclarés!
    entity monostable is
    port
    (
    clk,valid,clrn: in std_logic;
    mono: out std_logic
    );
    end monostable;

    architecture arch_monostable of monostable is

    signal compte : std_logic_vector(8 downto 0);
    signal raz : std_logic;
    alias monostable : std_logic is compte(8);

    begin

    ....

    unsignedv il y a une faute c'est unsigned tout cours
    Fais bien attention à ce que les commentaires soient vu comme tels
    Charges notepad++ c'est gratuit, sélectionnes le mode vhdl et tu auras une coloration syntaxique qui te permettras d'éliminer un max d'erreurs
    http://notepad-plus.sourceforge.net/fr/site.htm
    maintenant cela devrait compiler !
    JR

  22. #52
    pol5700

    Re : vhdl

    la je ne sui plus je les declare dans in et out, ok

    mais dans l'architecture comprend pas!

    ok v voir ton logiciel

  23. #53
    jiherve

    Re : vhdl

    Re
    Valid c'est ton flux de bit donc un in
    raz est modifié dans le process donc ce n'est ni un in ni un out ou alors un inout, mais en as tu besoin ailleurs ?
    là je pense avoir tout corrigé :en rouge
    entity monostable is
    port
    (
    clk,valid,clrn: in std_logic;
    mono,raz: out std_logic
    );
    end monostable;

    architecture arch_monostable of monostable is

    signal compte : std_logic_vector(8 downto 0);
    signal raz_i : std_logic;
    alias mono_i : std_logic is compte(8);


    begin
    Process(Clk, clrn)
    If clrn = '0' then-- reset asynchrone à la mise sous tension au moins on sait d'où l'on part
    compte <= (others => '0');
    raz_i <= '1';
    elsif rising_edge(clk) then -- on fait du synchrone et pas de la zoubida
    raz_i <= valid;-- retard d'un coup d'horloge pour détecter le front descendant, cela suppose que valid est synchrone de l'horloge
    if valid = '0' and raz_i = '1' then --détection front descendant on charge le compteur a 256 + 158
    compte(8) <= '1';
    compte(7 downto 0) <= std_logic_vector(to_unsigned(1 58,8));
    elsif valid = '0' and mono_i = '1' then--pendant la durée du bit et tant que le bit 8 du compteur reste à 1 on décompte , donc cela décompte de 256+158 à 255 donc 160 periodes [/b]
    compte <= std_logic_vector(unsignedv(com pte) -1);
    end if;
    end if;
    end process;
    mono <= mono_i ;
    raz <= raz_i ;
    end arch_monostable;

    c'est sur que le vhdl au debut c'est pénible!
    JR

  24. #54
    pol5700

    Re : vhdl

    reste 2 erreur!

    compte(7 downto 0) <= std_logic_vector(to_unsigned(1 58,8));

    to unsigned has not been declared

    compte <= std_logic_vector(unsigned(comp te) -1);

    can't interpret expression

    sa rend fou un logiciel comme sa!

  25. #55
    jiherve

    Re : vhdl

    Re
    Attends demain que je vérifie au boulot, le compilateur VHDL maxPLUS etait très limité, nous ne l'utilisions jamais!

    JR

  26. #56
    Jack
    Modérateur

    Re : vhdl

    compte(7 downto 0) <= std_logic_vector(to_unsigned(1 58,8));
    Pourquoi garder cet espace dans 158?

    PS: vraiment bien ce notepad++

  27. #57
    jiherve

    Re : vhdl

    Re
    Bonne question, il semble que l'éditeur de message ait une vie propre car j'ai passé mon temps à supprimer des espace s superfétatoires.
    JR

  28. #58
    Jack
    Modérateur

    Re : vhdl

    C'est pour cela que j'ai encouragé précédemment l'usage de la balise "code"

  29. #59
    pol5700

    Re : vhdl

    en fait dans max+plus2 ya pas l'espace mais quand je copie sur le forum, il est la, bizar.

    je n'ai pas trouvé les balise code # max+plus2, sa revien pas au meme que les --?

    les espace entre 2 signae compte comme une faute?

  30. #60
    Jack
    Modérateur

    Re : vhdl

    je n'ai pas trouvé les balise code # max+plus2, sa revien pas au meme que les --?
    Pas dans MAX+PLUSII, mais dans la fenêtre d'édition du forum (le #)

Page 2 sur 4 PremièrePremière 2 DernièreDernière

Discussions similaires

  1. langage vhdl
    Par invite21ed25dc dans le forum Électronique
    Réponses: 1
    Dernier message: 15/12/2007, 07h51
  2. vhdl
    Par invite21ed25dc dans le forum Électronique
    Réponses: 12
    Dernier message: 09/12/2007, 14h29
  3. vhdl
    Par invitedcb8d9bb dans le forum Électronique
    Réponses: 5
    Dernier message: 29/03/2007, 19h52
  4. vhdl
    Par invite4add737e dans le forum Électronique
    Réponses: 0
    Dernier message: 16/11/2006, 23h41
Découvrez nos comparatifs produits sur l'informatique et les technologies.