Hi, you need to create some sort of RAM memory, i just ordered DE2 board so I can't help with it yet. but on my spartan 3an i did it that way : created single block memory of about 16k addreses(remember, read first write later) , 14 bit width (ADC on spartan board is just 14 bit, DAC - 12 bit), and then in each clk cycle i did this :
dina <= input(13 downto 0) + ( '0' & douta(13 downto 1) );
addra <= addra + 1;
output <= dina(13 downto 2);
-- addra is addres of RAM row
-- dina is input port of RAM (14 bits)
-- douta is output from RAM
-- input is signal from ADC (14 bit)
-- output is data do DAC (12 bit)
-- input is mixed with RAM data divided by two (to silence echo part)
-- and sended to DAC
Echo works amazingly good, even on ADC\DAC not created for audio processing :)
Any question more, just ask :) When Terasic will send me my DE2 i'll post here more often :) :)