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

projet VHDL



  1. #1
    hilamine

    Exclamation projet VHDL

    slt les amis,
    dans le cadre d'un mini-projet en electronique numérique,je dois trouver une solution et donner le codage vhdl d'une machine, qui va commander 4 sorties en fonction de la position angulaire d'un disque en rotation.A chaque tour du disque, un dispositif opto-electronique envoie une impulsion sur l'entrée E de notre dispositif, ce signal d'entrée aura une fréquence comprise entre 10 hz et 100 khz avec un rapport cyclique :5%.
    cette fréquence va nous permettre de déterminer la fréquence de rotation du disque (trs/min).
    la fréquence étant déterminée,il est alors possible de commander les différentes sorties en fonction de la position angulaire du disque.
    la sortie 1 doit passer à un quand l'angle de commutation vaut 0.

    la sortie 2 doit passer à un quand l'angle de commutation vaut 90.

    la sortie 3 doit passer à un quand l'angle de commutation vaut 180.

    la sortie 4 doit passer à un quand l'angle de commutation vaut 270.

    les sorties doivent rester à un jusqu'à la fin du tour.
    donc pour conclure notre machine aura une entrée E, un reset, 4 sorties, un signal d'horloge de 4 mhz.

    si vous avez des idées qui peuvent m'aider n'hesitez pas à me répondre le plus vite possible.
    merci d'avance.


    Bonjour hilamine et tout le groupe

    Bienvenue sur le forum.

    Comme le prouvent les réactions légitimes des intervenants, la notion d'urgence n'a pas lieu d'être sur un forum, qui n'est pas un chat, et où il n'y a pas obligation de résultat. Les participations sont bénévoles.

    En outre, cette notion est mal vécue et le plus souvent contre productive. Pour ces diverses raisons, elle a été supprimée.

    .

    -----

    Dernière modification par gienas ; 22/01/2011 à 13h48. Motif: Modification du titre

  2. Publicité
  3. #2
    ftorama

    Re : projet VHDL "urgent"

    Pour les urgences, c'est le 112.

    La notion d'urgence n'a pas lieu d'être sur un forum....

  4. #3
    hilamine

    Re : projet VHDL "urgent"

    Citation Envoyé par ftorama Voir le message
    Pour les urgences, c'est le 112.

    La notion d'urgence n'a pas lieu d'être sur un forum....
    ok! je vais l'enlever!
    sinon, est ce que vous pouvez m'aider; je suis vraiment perdu!
    merci d'avance

  5. #4
    erff

    Re : projet VHDL "urgent"

    Bonjour,

    L'idée de base, c'est de compter les coups d'horloge entre 2 impulsions successives (de faire un reset entre chaque) afin de déduire la fréquence de rotation. En supposant que cette fréquence ne varie que très peu entre 2 tours successifs, la valeur de ce compteur te dira si tu es à 90°, 180°, 270° etc... (en regardant à quel moment on est au quart, à la moitié, aux 3/4 du compteur de coups d'horloge).

    À toi de coder tout ça maintenant

    - Moi je créerais un "component" comparateur qui prend 2 entrées (l'entrée à comparer, et le seuil) que j'utiliserais 3 fois et pas 4 (car je ne vois pas l'intérêt de mettre à 1 lorsqu'on est à 0° car du coup ta sortie reste tout le temps à 1)
    - Dans un Process(clk) on gère l'incrémentation du compteur. Son reset est géré en dehors du process, à chaque impulsion d'entrée.

    ...

  6. #5
    hilamine

    Re : projet VHDL "urgent"

    Citation Envoyé par erff Voir le message
    Bonjour,

    L'idée de base, c'est de compter les coups d'horloge entre 2 impulsions successives (de faire un reset entre chaque) afin de déduire la fréquence de rotation. En supposant que cette fréquence ne varie que très peu entre 2 tours successifs, la valeur de ce compteur te dira si tu es à 90°, 180°, 270° etc... (en regardant à quel moment on est au quart, à la moitié, aux 3/4 du compteur de coups d'horloge).

    À toi de coder tout ça maintenant

    - Moi je créerais un "component" comparateur qui prend 2 entrées (l'entrée à comparer, et le seuil) que j'utiliserais 3 fois et pas 4 (car je ne vois pas l'intérêt de mettre à 1 lorsqu'on est à 0° car du coup ta sortie reste tout le temps à 1)
    - Dans un Process(clk) on gère l'incrémentation du compteur. Son reset est géré en dehors du process, à chaque impulsion d'entrée.

    ...
    slt,
    mercii bcp pour ta reponse;je voudrais juste te signaler que pour ce projet je dois faire les simulations pour 2 vitesses de rotation que je choisirai.donc je pense que la fréquence de rotation doit etre fixé au debut non?
    mercii d'avance.

  7. A voir en vidéo sur Futura
  8. #6
    hilamine

    Re : projet VHDL "urgent"

    excusez-moi ,j'ai pas compris pour quoi on doit faire un reset entre chaque coup?
    merci d'avance!!

  9. Publicité
  10. #7
    erff

    Re : projet VHDL "urgent"

    Tes sorties, et le compteur de coups d'horloge doivent être remis à 0 dés qu'on a terminé un tour, pour recommencer le processus.

  11. #8
    hilamine

    Re : projet VHDL "urgent"

    Citation Envoyé par erff Voir le message
    Tes sorties, et le compteur de coups d'horloge doivent être remis à 0 dés qu'on a terminé un tour, pour recommencer le processus.
    excuse-moi encore une fois; le compteur aura donc combien d'entrées et de sorties? et pour le comparateur ,le seuil sert à quoi?

  12. #9
    erff

    Re : projet VHDL

    Re !

    et pour le comparateur ,le seuil sert à quoi?
    À faire passer la sortie du comparateur de 0 à 1 lorsque entrée dépasse seuil (c'est un comparateur quoi ! on compare 2 nombres, l'un qui est fixement variable (le seuil), dans le sens où il change à chaque tour, et l'autre qui varie au rythme de l'horloge)

    le compteur aura donc combien d'entrées et de sorties
    Le compteur c'est juste un nombre entier codé sur N bits (je te laisse calculer N) que tu incrémentes à chaque coup d'horloge, ce n'est pas un "component", et que tu remets à 0 lorsqu'une impulsion de tour est détectée en entrée du système.

  13. #10
    hilamine

    Re : projet VHDL "urgent"

    merci beaucoup!!

  14. #11
    hilamine

    Re : projet VHDL "urgent"

    slt,
    j'ai codé diviseur d'horloge qui va nous permettre d'avoir la frequence du signal d'entrée la frequence du signal d'entrée divisé par 4,par 2 mais j'arrive pas à codé celui du 3/4.
    est ce que tu pourra m'aider stp.
    merci d'avance.

  15. #12
    erff

    Re : projet VHDL

    Bonjour,

    Mais pourquoi as-tu besoin d'un diviseur ???
    Pour moi la seule façon d'évaluer la position de l'arbre en rotation, c'est de se fier au nombre de coup d'horloge qui se sont écoulés durant le tour précédent, et de faire comme si la vitesse avait peu varié d'un tour à l'autre...
    Par exemple,
    Si tu as compté 400000 (sachant que tu as une clock à 4MHz) donc ton tour fait 0.1s. Alors au tour suivant, ton compteur va compter, et une fois arrivé à 100000 tu sauras que tu es aux 1/4, à 200000 tu sauras que tu es au 1/2 etc....tu vois l'idée ?
    Une fois ton tour terminé, tu récupères la valeur finale du compteur, qui remplacera le 40000, et tu refais le même procédé...

  16. Publicité
  17. #13
    hilamine

    Re : projet VHDL

    slt,
    oui je suis d'accord avec toi,mais vu que moi je suis debutant ,donc je ne sais pas comment traduire ça en vhdl.
    dc c'est pr ça que je te demande de m'aider au moins juste pour le comparateur.
    merci d'avance

  18. #14
    erff

    Re : projet VHDL

    Pour le comparateur, demande toi combien d'entrée il prend, combien de sortie il a, et comment la sortie varie en fonction des entrées.

    Pour ton projet global, je te conseille de décomposer le tout en blocs élémentaires dont chacun réalise une fonction basique. Pour chaque bloc tu définis le nombre d'entrées, de sorties, leurs type.
    Ensuite tu fais un schéma qui relie les entrées et les sorties entre elles, afin de remplir la fonction globale que tu recherches.

    Une fois que tu as ton schéma, rien de + simple pour coder, il suffit de décrire ce que tu as devant toi.

    PS : je ne rentrerai pas dans les détails du code VHDL, tout d'abord parce que j'en ai pas fait depuis 2 ans, que ce n'est pas du tout la branche que j'étudie, et que donc je ne me souviens absolument plus de la syntaxe (mais seulement des méthodes). En + de cela ça ne serait pas pédagogique je pense.

  19. #15
    hilamine

    Re : projet VHDL

    slt,
    je ne vois pas qu'est ce que je vais comparer E c'est un signal et la sortie du compteur c'est un mot binaire.donc qu'est ce que je dois comparer et pr le E est ce qu'il sera l'entrée du comparateur ou quoi?
    merci

  20. #16
    erff

    Re : projet VHDL

    Bon...Tu es en train de me prouver que tu n'as pas compris mon post #4...

    L'idée du comparateur n'était qu'une proposition, il n'y a pas de façon unique de résoudre un pb d'élec.
    - Déjà est-ce que tu as compris la stratégie générale : càd est-ce que tu vois comment tu vas décider que tu es au quart, à la moitié ou aux 3/4 d'un tour ? sachant que tu ne disposes que d'une horloge, et d'un capteur basique qui te dit que tu es en fin de tour
    (juste avec des mots, sans entrer dans les détails du VHDL).
    - Ensuite la 2è étape, après avoir bien cerner ton objectif principal, c'est de décomposer cette fonction "complexe" en plusieurs sous-fonctions faciles à coder, et qui du coup seront faciles à "debugger". Ensuite, il faut organiser les sous fonctions entre elles, pour réaliser la fonction principale
    - Ensuite, tu codes chaque sous fonction en VHDL, tu les testes une par une, puis tu codes ta fonction principales (qui n'est rien d'autre que ton schéma issu de la 2e étape, décrit en langage VHDL ni + ni -)

  21. #17
    hilamine

    Re : projet VHDL

    j'ai compris l'idée
    et pr le code du compteur voici ce que j'ai fait


    entity compteur is
    Port ( H : in STD_LOGIC;
    reset : in STD_LOGIC;
    Q : out STD_LOGIC_VECTOR(8 downto 0));
    end compteur;


    Architecture behavioral of compteur is

    signal cmp : std_logic_vector(8 downto 0);

    begin

    process ( H )

    begin
    if ( H'event and H = '1' ) then
    if reset = '1' then
    cmp <= "000000000" ;
    else
    cmp <= cmp + 1 ;
    end if ;
    end if ;

    end process ;

    Q <= cmp ;

    end behavioral ;




    il y a 400 front d'horloge pr un signal d'horloge de 4 mhz et un signal E de 10 khz
    Dernière modification par hilamine ; 25/01/2011 à 11h03. Motif: erreur

  22. #18
    erff

    Re : projet VHDL

    - Le signal compteur n'a pas assez de bits : imagine que ta roue tourne à 10 Hz...
    - Je ne suis pas sûr que l'addition soit définie sur des std_logic_vector (mais je peux me tromper), moi j'aurais directement déclaré le signal comme un "unsigned integer" pour bénéficier de la loi d'addition.

    Dans un premier temps, le mieux serait peut être de réfléchir à l'agencement des fonctions élémentaires, en faisant un schéma, avant de regarder le code VHDL qui décrit précisément ces fonctions, car au moins tu saurais où tu vas, et tu saurais pourquoi tu le fais.

  23. Publicité
  24. #19
    hilamine

    Re : projet VHDL

    mais la frequence du disque ne change pas on doit la fixé des le debut ,donc moi j'ai pris 10 khz

  25. #20
    erff

    Re : projet VHDL

    Je ne comprends plus :
    Tu disais en #1
    ce signal d'entrée aura une fréquence comprise entre 10 hz et 100 khz avec un rapport cyclique :5%.
    Là tu dis :
    mais la frequence du disque ne change pas on doit la fixé des le debut ,donc moi j'ai pris 10 khz
    Si la fréquence est fixe et connue, alors les seuils de comparaisons seront des vraies constantes, inutiles de les régénérer à chaque tour...ça simplifie un peu le truc, mais pas énormément.

    Toujours est-il que la méthode reste la même (la méthode qu'on m'a apprise, peut-être que certains arrivent à coder tout d'un trait sans se planter) : il faut d'abord définir la fonction recherchée comme une imbrication de plusieurs fonctions élémentaires, puis coder/tester les fonctions élémentaires.

Sur le même thème :

Discussions similaires

  1. "fondamentales", "dures", "molles" ... : comment classer les sciences ?
    Par Arvirik dans le forum Epistémologie et Logique
    Réponses: 13
    Dernier message: 22/04/2017, 22h41
  2. vhdl corrigé de l'erreur "unexpected PORT, expecting SEMICOLON"
    Par kaoutar14 dans le forum Électronique
    Réponses: 5
    Dernier message: 04/11/2012, 16h21