Go Back   Velocity Reviews > Newsgroups > VHDL
User Name
Password
Register FAQ Members List Calendar Search Today's Posts Mark Forums Read

Reply

VHDL - FFT in VHDL (or Verilog) Tutorial

 
Thread Tools Search this Thread
Old 11-14-2006, 05:16 PM   #1
Default FFT in VHDL (or Verilog) Tutorial


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)
  Reply With Quote
Old 11-18-2006, 03:30 AM   #2
=?iso-8859-1?B?VXRrdSDWemNhbg==?=
 
Posts: n/a
Default Re: FFT in VHDL (or Verilog) Tutorial


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.


  Reply With Quote
Old 12-02-2006, 12:07 AM   #3
boysr2003
Junior Member
 
Join Date: Jul 2006
Posts: 9
Default FFT in VHDL

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
boysr2003 is offline   Reply With Quote
Old 12-04-2008, 01:11 AM   #4
hussain.elsaid
Junior Member
 
Join Date: Dec 2008
Posts: 3
Post xilinx fft core

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;
yut vector_of_std_logic_vector16(0 TO 7));
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
hussain.elsaid is offline   Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump