Xilinx iFFT liefert ein FFT Ergebnis

Gast #3616333
Lesenswert?

Liebe Kollegen!

Ich versuche mich an einer IFFT (Xilinx IP Core).
Bei der Simulation lege ich einen Impuls beim Index 0 an. Das Ergebnis 
der inversen FFT sollte ein Sinus sein.
Im Simulator bekomme ich den konstanten Wert von 128. Für mich sieht das 
so aus als würde ich nur eine FFT machen und nicht die inverse.
Ich kann verstellen was ich will es kommt immer ein konstanter Wert 
heraus!?

HELP

DANKE
Sandy
1
-- TestBench Template 
2

3
  LIBRARY ieee;
4
  USE ieee.std_logic_1164.ALL;
5
  USE ieee.numeric_std.ALL;
6
  use std.textio.all;
7
  use ieee.std_logic_textio.all;
8

9
  ENTITY testbench IS
10
  END testbench;
11

12
  ARCHITECTURE behavior OF testbench IS 
13

14
  -- Component Declaration
15
          COMPONENT FFT_1
16
  PORT (
17
    clk : IN STD_LOGIC;
18
    start : IN STD_LOGIC;
19
    xn_re : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
20
    xn_im : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
21
    fwd_inv : IN STD_LOGIC;
22
    fwd_inv_we : IN STD_LOGIC;
23
    scale_sch : IN STD_LOGIC_VECTOR(9 DOWNTO 0);
24
    scale_sch_we : IN STD_LOGIC;
25
    rfd : OUT STD_LOGIC;
26
    xn_index : OUT STD_LOGIC_VECTOR(9 DOWNTO 0);
27
    busy : OUT STD_LOGIC;
28
    edone : OUT STD_LOGIC;
29
    done : OUT STD_LOGIC;
30
    dv : OUT STD_LOGIC;
31
    xk_index : OUT STD_LOGIC_VECTOR(9 DOWNTO 0);
32
    xk_re : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
33
    xk_im : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)
34
  );
35
END COMPONENT;
36

37
signal s_clk :  STD_LOGIC := '1';
38
signal s_xn_re :  STD_LOGIC_VECTOR(15 DOWNTO 0) := (others => '0');
39
signal s_xn_index :  STD_LOGIC_VECTOR(9 DOWNTO 0) := (others => '0');
40
signal s_xk_re :  STD_LOGIC_VECTOR(15 DOWNTO 0) := (others => '0');
41
signal s_xk_im :  STD_LOGIC_VECTOR(15 DOWNTO 0) := (others => '0');
42
 
43
FILE test_out_data: TEXT open WRITE_MODE is "E:\Doblinger\FFT\output_iFFT_tb.txt";
44
 
45

46
  BEGIN
47

48
s_clk <= not s_clk after 10 ns;
49

50
  -- Component Instantiation
51
uut : FFT_1
52
  PORT MAP (
53
    clk => s_clk,
54
    start => '1',
55
    xn_re => s_xn_re,
56
    xn_im => "0000000000000000",
57
   fwd_inv => '0',
58
    fwd_inv_we => '1',
59
    scale_sch => "000001010",
60
    scale_sch_we => '1',
61
    rfd => open,
62
    xn_index => s_xn_index,
63
    busy => open,
64
    edone => open,
65
    done => open,
66
    dv => open,
67
    xk_index => open,
68
    xk_re => s_xk_re,
69
    xk_im => s_xk_im
70
  );
71

72
     tb : PROCESS
73
     variable L1              : LINE;
74
    BEGIN
75
    --if s_clk 'event and s_clk = '1' then
76
      wait for 2 ns;
77
      write(L1, s_xk_re);
78
      writeline(test_out_data, L1);
79
      if s_xn_index = "0000000000" then
80
        s_xn_re <= "0010000000000000";
81
      else
82
        s_xn_re <= "0000000000000000";
83
      end if;
84
    --end if;
85
     END PROCESS tb;
86
    --End Test Bench 
87

88
  END;

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren