-
03/03/2007 - 15h34 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
-
Poursuivez votre recherche
-
03/03/2007 - 17h50 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 à 17h51.
Motif: parenthèses
-
05/03/2007 - 17h28 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.
-
10/08/2007 - 10h44 gabrielkevers 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. -
10/08/2007 - 10h50 Jack
Re : comment faire un retard en vhdl
 Envoyé par gabrielkevers 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+
-
10/08/2007 - 12h30 jiherve
Re : comment faire un retard en vhdl
 Envoyé par Jack 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
-
10/08/2007 - 13h43 Jack
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+
-
15/08/2007 - 01h23 gabrielkevers
Re : comment faire un retard en vhdl
 Envoyé par jiherve 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)
-
15/08/2007 - 09h48 Jack
Re : comment faire un retard en vhdl
soit,
mais comment le retard est-il synthétisé dans ton FPGA?
A+
-
23/08/2007 - 02h36 gabrielkevers
Re : comment faire un retard en vhdl
 Envoyé par Jack 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
-
23/08/2007 - 09h47 Jack
Re : comment faire un retard en vhdl
Soit,
mais je crois que tourist88 nous a abandonné depuis longtemps 
A+
-
05/06/2008 - 10h11 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 | | |