![]() |
|
|
|||||||
![]() |
VHDL - FFT in VHDL (or Verilog) Tutorial |
|
|
Thread Tools | Search this Thread |
|
|
#1 |
|
Hello,
Can someone point me to simple implementation of FFT in VHDL(or Verilog) with testbench and good step-by-step description. I have implementation from Xilinx (which I will eventually use for hardware implementation), but I find it rather confusing (lack of vhdl experience). Algorithm used, # of points, Radix#, bit precision do not matter, as I'm looking for tutorial-like implementation. The best example of what I'm looking for is (found using google) http://www.opencores.org/projects.cg...f_fft/overview http://www.opencores.org/cvsweb.shtml/fft/ Thanks. Student (confused) |
|
|
|
|
#2 |
|
Posts: n/a
|
Tell me from which university and departmant you are, and also your name, then I can answer your question. Of course for free Student (confused) schrieb: > Hello, > > Can someone point me to simple implementation of FFT in VHDL(or > Verilog) with testbench and good step-by-step description. I have > implementation from Xilinx (which I will eventually use for hardware > implementation), but I find it rather confusing (lack of vhdl > experience). Algorithm used, # of points, Radix#, bit precision do not > matter, as I'm looking for tutorial-like implementation. > The best example of what I'm looking for is (found using google) > http://www.opencores.org/projects.cg...f_fft/overview > http://www.opencores.org/cvsweb.shtml/fft/ > > Thanks. |
|
|
|
#3 |
|
Junior Member
Join Date: Jul 2006
Posts: 9
|
Hi,
my name is Yassir Boukhriss. You can use the core generator available in ISE foundation, and instantiate that in your top level code. Yassir Boukhriss |
|
|
|
|
|
#4 |
|
Junior Member
Join Date: Dec 2008
Posts: 3
|
Hello guys,
I'm new to vhdl, and I tried to use xilinx fft core, but when I try to simulate it in test bench using ise simulator, I get zero results. here is what I do: 1- from core generator I choose fft core and create .vhd & .vho & .xco files. 2- I add the .xco & .vhd files to my project. 3- I create a new vhdl source as a wrapper to the core and add the code from the .vho files where it exactly says, and take the ports of the component and add it to the entity of the wrapper file. I'd appreciate if some one could help me with this, I'd be so grateful indeed. another question, in case I couldn't use the fft core I created an algorithm for a radix-2 and tried to write it in vhdl, but I'm not sure if I am going in the right way, following is the uncomplete code I'd appreciate if some one can tell me if it worth to complete the code like this or not; LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; USE IEEE.numeric_std.ALL; PACKAGE untitled_pkg IS TYPE vector_of_std_logic_vector16 IS ARRAY (NATURAL RANGE <>) OF INTEGER; END untitled_pkg; library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; USE work.untitled_pkg.ALL; ---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity Hussain is generic(N:integer:=8; log:integer:=3); port(x:in vector_of_std_logic_vector16(0 TO 7); clk:in std_logic; y end Hussain; architecture Behavioral of Hussain is begin top: process(clk) variable b,s,k,h,temp3,temp4:integer; variable temp:vector_of_std_logic_vector16(0 TO 7); variable temp1,temp2,w:integer; begin If rising_edge(clk)then temp:=x; loop1: for l in 1 to log loop b:=N/(2**l); s:=N/(2*b); loop2: for R in 1 to s loop h:=0; k:=0; loop3: for n in 0 to (b-1) loop wRom: case k is when 0 => w := 2; when 1 => w := 3; when 2 => w := 4; when 3 => w := 5; when others => null; end case; temp1:=temp(n+h)+temp(n+h+(b/2)); temp2:=w*(temp(n+h)-temp(n+h+(b/2))); temp(n+h):=temp1; temp(n+h+(b/2)):=temp2; temp3:=k+s; k:=temp3; End loop; temp4:=h+(2*b); h:=temp4; End loop; End loop; End IF; Y<=temp; End process; end Behavioral; and thanks in advance; Hussain |
|
|
|