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

comment faire un retard en vhdl



  1. #1
    tourist88

    comment faire un retard en vhdl


    ------

    Donc voila mon probleme, je suis en licence et pour mon projet tutoré, je doit créer une chambre a echo.
    Ce projet doit etre réalisé avec un fpga cyclone II de chez ALTERA.
    Ce fpga est implanter sur une carte fonctionnnel fabriqué par TERASIC où celle-ci permet de faire pas mal de chose au niveau audio ou traitement d'image.
    voici un lien qui présente cette dit carte si vous etes intéréssé:
    [url]

    http://www.rennes.supelec.fr/ren/fi/elec/fpga/altera/de2_kit/de2_kit.html

    je reviens à mes moutons ,donc je doit réaliser un echo a partir d'une source audio et donc je doit dans le programme faire un système de retard (en vhdl ou verilog) qui va permet de faire cette echo a la sortie. Et je n'est aucune idée de comment faire se retard.
    Voilà en gros mon probleme ,j'espère que quelqu'un pourra me venir en aide et que ses un peu pres claire .MERCI

    -----

  2. Publicité
  3. #2
    jiherve

    Re : comment faire un retard en vhdl

    Bonjour
    En supposant que ton signal audio à été numérisé un retard s'obtient au moyen d'un registre à décalage fonctionnant bien sur à la fréquence d'échantillonnage.
    Pour faire ce registre tu peux:
    1 :déclarer une array 0 to taille array-1 de std_logic_vector (taille_mot-1 downt o 0) et faire:
    Delay :Process(CK, CLR)
    if CLR = '1' then
    array <= (others=>(others=> '0');
    elsif rising_edge ck then
    array(0) <= INPUT;
    Array(taille_array-1 downto 1) <= Array(taille_array-2 downto 0);
    End if;
    End process delay;
    la sortie est à prendre entre array(0) et array(taille-1).

    2: dans le megawizard altera il y a une fonction shift register qui fait ça

    3: tu peux aussi utiliser une fonction de type fifo (Megawizard aussi) et piloter de façon habile les signaux de lecture et d'écriture au moyen d'un compteur par exemple; j'explique au reset ton compteur vaux zéro tu démarre l'ecriture lorsque celui_ci vaut N et la lecture lorsqu'il atteint M >N ton retard est alors M-N c'est très facile à modifier pour obtenir des retards variables.

    4: variante avec de la mémoire double port mais cela revient à faire une FIFO à la mano

    Si c'est de l'audio échantillonné dans les 40KHZ il faut un registre d'au moins 4K étages pour obtenir un effet audible (100ms) cela ne fait que qqs blocs M4k mais condamne un peu ma première solution si Quartus n'instancie pas de la RAM pour la réaliser!
    JR
    Dernière modification par jiherve ; 03/03/2007 à 16h51. Motif: parenthèses

  4. #3
    tourist88

    Re : comment faire un retard en vhdl

    merci pour la reponse ,mais pourrai tu me donner un exemple de schema utilisant une pile fifo ,car je ne voit pas comment cabler une pile fifo et encore moin avec des compteurs.
    ou simplement de rentrer plus ds les details. Sachant que moi je doit rentrer sur la carte un signale audio numerique (music,voix...).
    merci.

  5. #4
    gabrielkevers

    Thumbs up Re : comment faire un retard en vhdl

    salut,
    en VHDL, pour délayer un signal:

    ex:

    LIBRARY ieee;
    USE ieee.std_logic_1164.all;
    ENTITY nor2 IS

    PORT (
    a,b : IN std_logic;
    z : OUT std_logic
    );
    END nor2;

    ARCHITECTURE behavior OF nor2 IS
    BEGIN
    dly0: PROCESS(a,b)
    BEGIN
    z <= a NOR b AFTER 30 ns; -- temps de propagation est de 30ns
    END PROCESS dly0;
    END behavior;
    j'adore VHDL.

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

    Re : comment faire un retard en vhdl

    Citation Envoyé par gabrielkevers Voir le message
    salut,
    en VHDL, pour délayer un signal:

    ex:

    LIBRARY ieee;
    USE ieee.std_logic_1164.all;
    ENTITY nor2 IS

    PORT (
    a,b : IN std_logic;
    z : OUT std_logic
    );
    END nor2;

    ARCHITECTURE behavior OF nor2 IS
    BEGIN
    dly0: PROCESS(a,b)
    BEGIN
    z <= a NOR b AFTER 30 ns; -- temps de propagation est de 30ns
    END PROCESS dly0;
    END behavior;
    j'adore VHDL.
    Est-ce que c'est synthétisable?

    A+

  8. #6
    jiherve

    Re : comment faire un retard en vhdl

    Citation Envoyé par Jack Voir le message
    Est-ce que c'est synthétisable?

    A+
    La question dite de la mort subite !
    Jack tu devrais postuler pour présenter le maillon faible.
    JR
    PS : gabrielkevers: expliciter le sens de behavior

  9. Publicité
  10. #7
    Jack
    Modérateur

    Re : comment faire un retard en vhdl

    Jack tu devrais postuler pour présenter le maillon faible.
    Je n'ai pas (encore) le tour de taille requis.

    A+

  11. #8
    gabrielkevers

    Re : comment faire un retard en vhdl

    Citation Envoyé par jiherve Voir le message
    La question dite de la mort subite !
    Jack tu devrais postuler pour présenter le maillon faible.
    JR
    PS : gabrielkevers: expliciter le sens de behavior
    Salut,
    Oui c’est synthétisable.
    Behavior pour comportement, comportement de l’entité nor2.
    @+

    Ps : j’utilise les FPGA de la société ACTEL (un vrai bonheur)

  12. #9
    Jack
    Modérateur

    Re : comment faire un retard en vhdl

    soit,

    mais comment le retard est-il synthétisé dans ton FPGA?

    A+

  13. #10
    gabrielkevers

    Re : comment faire un retard en vhdl

    Citation Envoyé par Jack Voir le message
    soit,

    mais comment le retard est-il synthétisé dans ton FPGA?

    A+
    Avec les macros suivantes:
    BUFD (version de BUFF avec délais)
    INVD (version de INV avec délais)
    Dans le cas d'écrit, BUFD est mis en série sur le résultat de la porte.
    En espérant avoir répondu à ta question
    @+
    Kevers Gabriel

  14. #11
    Jack
    Modérateur

    Re : comment faire un retard en vhdl

    Soit,

    mais je crois que tourist88 nous a abandonné depuis longtemps

    A+

  15. #12
    ISIMEN

    Re : comment faire un retard en vhdl "SYNTHETISABLE

    salut
    je cherche la reponse a ma question meme s'il est classique.
    j ai besoin de faire un retard dans mon process ( VHDL), car la reception des données se fait a chaque cycle mais mon traitement dure 3 cycle.
    merci de répondre s'il y a quelqun qui peut m aider

  16. Publicité

Discussions similaires

  1. comment réaliser une temporisation avec retard à l'enclenchement?
    Par Paillasse25 dans le forum Électronique
    Réponses: 3
    Dernier message: 23/03/2010, 10h01
  2. Comment bien utiliser son insert ? Comment faire un bon feu ?
    Par anigel dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 140
    Dernier message: 07/11/2008, 08h49
  3. Comment faire?
    Par annece dans le forum Électronique
    Réponses: 6
    Dernier message: 24/06/2005, 20h23
  4. comment faire ?
    Par melili52 dans le forum Orientation après le BAC
    Réponses: 2
    Dernier message: 02/09/2004, 09h31
Découvrez nos comparatifs produits sur l'informatique et les technologies.