OpenCores
URL https://opencores.org/ocsvn/wdsp/wdsp/trunk

Subversion Repositories wdsp

[/] [wdsp/] [trunk/] [rtl/] [vhdl/] [WISHBONE_FFT/] [stage_I.vhd] - Blame information for rev 5

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 parrado
--Component for Stages using BF2I (first and every odd stage) 
2
--Doesn't handle last stage 
3
--Input is a standard logic vector of       data_width-add_g 
4
--data_width - width of the internal busses 
5
--add_g - Add growth variable - if 1, data      _width grows by   1, if 0 then 0 
6
-- t_stages number of shift -shif  register stages 
7
 
8
library IEEE;
9
use IEEE.std_logic_1164.all;
10
use ieee.std_logic_arith.all;
11
 
12
entity stage_I is
13
generic  (
14
                data_width : INTEGER :=13;
15
                add_g : INTEGER := 1;
16
                shift_stages : INTEGER := 32
17
  );
18
port  (
19
                prvs_r :in std_logic_vector(data_width-1-add_g downto 0);
20
                prvs_i :in std_logic_vector(data_width-1-add_g downto 0);
21
                s :in std_logic;
22
                clock : in std_logic;
23
                resetn : in std_logic;
24
                enable          : in std_logic;
25
                tonext_r :out std_logic_vector(data_width-1 downto 0);
26
                tonext_i :out std_logic_vector(data_width-1 downto 0)
27
  );
28
end stage_I;
29
 
30
architecture structure of stage_I is
31
 
32
signal toreg_r : std_logic_vector(data_width-1 downto 0);
33
signal toreg_i : std_logic_vector(data_width-1 downto 0);
34
signal fromreg_r : std_logic_vector(data_width-1 downto 0);
35
signal fromreg_i : std_logic_vector(data_width-1 downto 0);
36
 
37
signal tonext_r_aux : std_logic_vector(data_width-1 downto 0);
38
signal tonext_i_aux : std_logic_vector(data_width-1 downto 0);
39
 
40
component shiftregN
41
  generic (
42
                data_width : integer;
43
                n : integer
44
                );
45
  port  (
46
                clock : IN std_logic;
47
                enable          : in std_logic;
48
          read_data  : OUT    std_logic_vector (data_width-1 DOWNTO 0);
49
          write_data : IN     std_logic_vector (data_width-1 DOWNTO 0 );
50
          resetn     : IN     std_logic
51
         );
52
end component;
53
 
54
component shiftreg1
55
  generic (
56
                data_width : integer
57
);
58
  port (
59
                clock : IN std_logic;
60
                enable: in std_logic;
61
                clear: in std_logic;
62
        read_data  : OUT    std_logic_vector (data_width-1 DOWNTO 0);
63
        write_data : IN     std_logic_vector (data_width-1 DOWNTO 0);
64
                resetn     : IN     std_logic
65
                );
66
end component;
67
 
68
 
69
component BF2I
70
  generic (
71
        data_width : INTEGER;
72
        add_g: INTEGER
73
        );
74
  port    (
75
        fromreg_r :in std_logic_vector(data_width-1 downto 0);
76
        fromreg_i :in std_logic_vector(data_width-1 downto 0);
77
        prvs_r :in std_logic_vector(data_width-add_g-1 downto 0  );
78
        prvs_i :in std_logic_vector(data_width-add_g-1 downto 0);
79
    s : in std_logic;
80
    toreg_r :out std_logic_vector(data_width-1 downto 0);
81
    toreg_i :out std_logic_vector(data_width-1 downto 0);
82
        tonext_r :out std_logic_vector(data_width-1 downto 0);
83
    tonext_i :out std_logic_vector(data_width-1 downto 0)
84
    );
85
end component;
86
 
87
begin
88
regr : shiftregN
89
  generic map (
90
        data_width=>data_width,
91
        n=>shift_stages
92
        )
93
  port map (
94
clock=>clock,
95
enable=>enable,
96
read_data=>fromreg_r,
97
write_data=>toreg_r,
98
resetn=>resetn
99
);
100
 
101
regi : shiftregN
102
  generic map (
103
        data_width=>data_width,
104
        n=>shift_stages
105
        )
106
port map (
107
        clock=>clock,
108
        enable=>enable,
109
        read_data=>fromreg_i,
110
        write_data=>toreg_i,
111
        resetn=>resetn
112
        );
113
 
114
btrfly : BF2I
115
  generic map (
116
        data_width=>data_width,
117
        add_g=>add_g
118
        )
119
  port map (
120
        fromreg_r=>fromreg_r,
121
        fromreg_i=>fromreg_i,
122
    prvs_r=>prvs_r,
123
        prvs_i=>prvs_i,
124
    s=>s,
125
    toreg_r=>toreg_r,
126
        toreg_i=>toreg_i,
127
    tonext_r=>tonext_r_aux,
128
        tonext_i=>tonext_i_aux
129
        );
130
 
131
 
132
regsegr : shiftreg1
133
  generic map (
134
        data_width=>data_width
135
 
136
        )
137
port map (
138
        clock=>clock,
139
        enable=>'1',
140
        clear=>'0',
141
        read_data=>tonext_r,
142
        write_data=>tonext_r_aux,
143
        resetn=>resetn
144
        );
145
 
146
regsegi : shiftreg1
147
  generic map (
148
        data_width=>data_width
149
 
150
        )
151
port map (
152
        clock=>clock,
153
        enable=>'1',
154
        clear=>'0',
155
        read_data=>tonext_i,
156
        write_data=>tonext_i_aux,
157
        resetn=>resetn
158
        );
159
 
160
 
161
end;
162
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.