1 |
5 |
parrado |
-- Rom file for twiddle factors
|
2 |
|
|
-- ../../../rtl/vhdl/WISHBONE_FFT/rom4.vhd contains 16 points of 16 width
|
3 |
|
|
-- for a 1024 point fft.
|
4 |
|
|
|
5 |
|
|
LIBRARY ieee;
|
6 |
|
|
USE ieee.std_logic_1164.ALL;
|
7 |
|
|
USE ieee.std_logic_arith.ALL;
|
8 |
|
|
|
9 |
|
|
|
10 |
|
|
ENTITY rom4 IS
|
11 |
|
|
GENERIC(
|
12 |
|
|
data_width : integer :=16;
|
13 |
|
|
address_width : integer :=4
|
14 |
|
|
);
|
15 |
|
|
PORT(
|
16 |
|
|
clk :in std_logic;
|
17 |
|
|
address :in std_logic_vector (3 downto 0);
|
18 |
|
|
datar : OUT std_logic_vector (data_width-1 DOWNTO 0) ;
|
19 |
|
|
datai : OUT std_logic_vector (data_width-1 DOWNTO 0)
|
20 |
|
|
);
|
21 |
|
|
end rom4;
|
22 |
|
|
ARCHITECTURE behavior OF rom4 IS
|
23 |
|
|
|
24 |
|
|
BEGIN
|
25 |
|
|
|
26 |
|
|
process (address,clk)
|
27 |
|
|
begin
|
28 |
|
|
if(rising_edge(clk)) then
|
29 |
|
|
case address is
|
30 |
|
|
when "0000" => datar <= "0111111111111111";datai <= "0000000000000000"; --0
|
31 |
|
|
when "0001" => datar <= "0101101010000010";datai <= "1010010101111110"; --128
|
32 |
|
|
when "0010" => datar <= "0000000000000000";datai <= "1000000000000001"; --256
|
33 |
|
|
when "0011" => datar <= "1010010101111110";datai <= "1010010101111110"; --384
|
34 |
|
|
when "0100" => datar <= "0111111111111111";datai <= "0000000000000000"; --0
|
35 |
|
|
when "0101" => datar <= "0111011001000001";datai <= "1100111100000101"; --64
|
36 |
|
|
when "0110" => datar <= "0101101010000010";datai <= "1010010101111110"; --128
|
37 |
|
|
when "0111" => datar <= "0011000011111011";datai <= "1000100110111111"; --192
|
38 |
|
|
when "1000" => datar <= "0111111111111111";datai <= "0000000000000000"; --0
|
39 |
|
|
when "1001" => datar <= "0011000011111011";datai <= "1000100110111111"; --192
|
40 |
|
|
when "1010" => datar <= "1010010101111110";datai <= "1010010101111110"; --384
|
41 |
|
|
when "1011" => datar <= "1000100110111111";datai <= "0011000011111011"; --576
|
42 |
|
|
when "1100" => datar <= "0111111111111111";datai <= "0000000000000000"; --0
|
43 |
|
|
when "1101" => datar <= "0111111111111111";datai <= "0000000000000000"; --0
|
44 |
|
|
when "1110" => datar <= "0111111111111111";datai <= "0000000000000000"; --0
|
45 |
|
|
when "1111" => datar <= "0111111111111111";datai <= "0000000000000000"; --0
|
46 |
|
|
when others => for i in data_width-1 downto 0 loop
|
47 |
|
|
datar(i)<='0';datai(i)<='0';end loop;
|
48 |
|
|
end case;
|
49 |
|
|
|
50 |
|
|
end if;
|
51 |
|
|
|
52 |
|
|
end process;
|
53 |
|
|
END behavior;
|