##// END OF EJS Templates
LFR Keypoint Save Temp
LFR Keypoint Save Temp

File last commit:

r631:df7b3a51dab6 simu_with_Leon3
r631:df7b3a51dab6 simu_with_Leon3
Show More
twiddle.vhd
171 lines | 11.8 KiB | text/x-vhdl | VhdlLexer
--------------------------------------------------------------------------------
-- Copyright 2007 Actel Corporation. All rights reserved.
-- ANY USE OR REDISTRIBUTION IN PART OR IN WHOLE MUST BE HANDLED IN
-- ACCORDANCE WITH THE ACTEL LICENSE AGREEMENT AND MUST BE APPROVED
-- IN ADVANCE IN WRITING.
-- Revision 3.0 April 30, 2007 : v3.0 CoreFFT Release
-- File: twiddle.v
--
-- Description: CoreFFT
-- Twiddle factor table
--
-- Rev: 0.1 5/10/2005 8:36AM VD : Pre Production
-- History: 5/10/2005 8:36AM - created
--
--------------------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
USE work.fft_components.all;
ENTITY twiddle IS
PORT (
A : IN std_logic_vector(gLOGPTS-2 DOWNTO 0);
T : OUT std_logic_vector(gTDWIDTH-1 DOWNTO 0));
END ENTITY twiddle;
ARCHITECTURE translated OF twiddle IS
SIGNAL T_int : std_logic_vector(gTDWIDTH-1 DOWNTO 0);
BEGIN
T <= T_int;
PROCESS (A)
VARIABLE T_int1 : std_logic_vector(gTDWIDTH-1 DOWNTO 0);
BEGIN
CASE A IS -- synopsys parallel_case
WHEN "0000000" => T_int1 := "00000000000000000111111111111111"; -- X0000 X7fff
WHEN "0000001" => T_int1 := "00000011001001000111111111110101"; -- X0324 X7ff5
WHEN "0000010" => T_int1 := "00000110010010000111111111011000"; -- X0648 X7fd8
WHEN "0000011" => T_int1 := "00001001011010100111111110100110"; -- X096a X7fa6
WHEN "0000100" => T_int1 := "00001100100011000111111101100001"; -- X0c8c X7f61
WHEN "0000101" => T_int1 := "00001111101010110111111100001001"; -- X0fab X7f09
WHEN "0000110" => T_int1 := "00010010110010000111111010011100"; -- X12c8 X7e9c
WHEN "0000111" => T_int1 := "00010101111000100111111000011101"; -- X15e2 X7e1d
WHEN "0001000" => T_int1 := "00011000111110010111110110001001"; -- X18f9 X7d89
WHEN "0001001" => T_int1 := "00011100000010110111110011100011"; -- X1c0b X7ce3
WHEN "0001010" => T_int1 := "00011111000110100111110000101001"; -- X1f1a X7c29
WHEN "0001011" => T_int1 := "00100010001000110111101101011100"; -- X2223 X7b5c
WHEN "0001100" => T_int1 := "00100101001010000111101001111100"; -- X2528 X7a7c
WHEN "0001101" => T_int1 := "00101000001001100111100110001001"; -- X2826 X7989
WHEN "0001110" => T_int1 := "00101011000111110111100010000100"; -- X2b1f X7884
WHEN "0001111" => T_int1 := "00101110000100010111011101101011"; -- X2e11 X776b
WHEN "0010000" => T_int1 := "00110000111110110111011001000001"; -- X30fb X7641
WHEN "0010001" => T_int1 := "00110011110111110111010100000100"; -- X33df X7504
WHEN "0010010" => T_int1 := "00110110101110100111001110110101"; -- X36ba X73b5
WHEN "0010011" => T_int1 := "00111001100011000111001001010100"; -- X398c X7254
WHEN "0010100" => T_int1 := "00111100010101100111000011100010"; -- X3c56 X70e2
WHEN "0010101" => T_int1 := "00111111000101110110111101011110"; -- X3f17 X6f5e
WHEN "0010110" => T_int1 := "01000001110011100110110111001001"; -- X41ce X6dc9
WHEN "0010111" => T_int1 := "01000100011110100110110000100011"; -- X447a X6c23
WHEN "0011000" => T_int1 := "01000111000111000110101001101101"; -- X471c X6a6d
WHEN "0011001" => T_int1 := "01001001101101000110100010100110"; -- X49b4 X68a6
WHEN "0011010" => T_int1 := "01001100001111110110011011001111"; -- X4c3f X66cf
WHEN "0011011" => T_int1 := "01001110101111110110010011101000"; -- X4ebf X64e8
WHEN "0011100" => T_int1 := "01010001001100110110001011110001"; -- X5133 X62f1
WHEN "0011101" => T_int1 := "01010011100110110110000011101011"; -- X539b X60eb
WHEN "0011110" => T_int1 := "01010101111101010101111011010111"; -- X55f5 X5ed7
WHEN "0011111" => T_int1 := "01011000010000100101110010110011"; -- X5842 X5cb3
WHEN "0100000" => T_int1 := "01011010100000100101101010000010"; -- X5a82 X5a82
WHEN "0100001" => T_int1 := "01011100101100110101100001000010"; -- X5cb3 X5842
WHEN "0100010" => T_int1 := "01011110110101110101010111110101"; -- X5ed7 X55f5
WHEN "0100011" => T_int1 := "01100000111010110101001110011011"; -- X60eb X539b
WHEN "0100100" => T_int1 := "01100010111100010101000100110011"; -- X62f1 X5133
WHEN "0100101" => T_int1 := "01100100111010000100111010111111"; -- X64e8 X4ebf
WHEN "0100110" => T_int1 := "01100110110011110100110000111111"; -- X66cf X4c3f
WHEN "0100111" => T_int1 := "01101000101001100100100110110100"; -- X68a6 X49b4
WHEN "0101000" => T_int1 := "01101010011011010100011100011100"; -- X6a6d X471c
WHEN "0101001" => T_int1 := "01101100001000110100010001111010"; -- X6c23 X447a
WHEN "0101010" => T_int1 := "01101101110010010100000111001110"; -- X6dc9 X41ce
WHEN "0101011" => T_int1 := "01101111010111100011111100010111"; -- X6f5e X3f17
WHEN "0101100" => T_int1 := "01110000111000100011110001010110"; -- X70e2 X3c56
WHEN "0101101" => T_int1 := "01110010010101000011100110001100"; -- X7254 X398c
WHEN "0101110" => T_int1 := "01110011101101010011011010111010"; -- X73b5 X36ba
WHEN "0101111" => T_int1 := "01110101000001000011001111011111"; -- X7504 X33df
WHEN "0110000" => T_int1 := "01110110010000010011000011111011"; -- X7641 X30fb
WHEN "0110001" => T_int1 := "01110111011010110010111000010001"; -- X776b X2e11
WHEN "0110010" => T_int1 := "01111000100001000010101100011111"; -- X7884 X2b1f
WHEN "0110011" => T_int1 := "01111001100010010010100000100110"; -- X7989 X2826
WHEN "0110100" => T_int1 := "01111010011111000010010100101000"; -- X7a7c X2528
WHEN "0110101" => T_int1 := "01111011010111000010001000100011"; -- X7b5c X2223
WHEN "0110110" => T_int1 := "01111100001010010001111100011010"; -- X7c29 X1f1a
WHEN "0110111" => T_int1 := "01111100111000110001110000001011"; -- X7ce3 X1c0b
WHEN "0111000" => T_int1 := "01111101100010010001100011111001"; -- X7d89 X18f9
WHEN "0111001" => T_int1 := "01111110000111010001010111100010"; -- X7e1d X15e2
WHEN "0111010" => T_int1 := "01111110100111000001001011001000"; -- X7e9c X12c8
WHEN "0111011" => T_int1 := "01111111000010010000111110101011"; -- X7f09 X0fab
WHEN "0111100" => T_int1 := "01111111011000010000110010001100"; -- X7f61 X0c8c
WHEN "0111101" => T_int1 := "01111111101001100000100101101010"; -- X7fa6 X096a
WHEN "0111110" => T_int1 := "01111111110110000000011001001000"; -- X7fd8 X0648
WHEN "0111111" => T_int1 := "01111111111101010000001100100100"; -- X7ff5 X0324
WHEN "1000000" => T_int1 := "01111111111111110000000000000000"; -- X7fff X0000
WHEN "1000001" => T_int1 := "01111111111101011111110011011100"; -- X7ff5 Xfcdc
WHEN "1000010" => T_int1 := "01111111110110001111100110111000"; -- X7fd8 Xf9b8
WHEN "1000011" => T_int1 := "01111111101001101111011010010110"; -- X7fa6 Xf696
WHEN "1000100" => T_int1 := "01111111011000011111001101110100"; -- X7f61 Xf374
WHEN "1000101" => T_int1 := "01111111000010011111000001010101"; -- X7f09 Xf055
WHEN "1000110" => T_int1 := "01111110100111001110110100111000"; -- X7e9c Xed38
WHEN "1000111" => T_int1 := "01111110000111011110101000011110"; -- X7e1d Xea1e
WHEN "1001000" => T_int1 := "01111101100010011110011100000111"; -- X7d89 Xe707
WHEN "1001001" => T_int1 := "01111100111000111110001111110101"; -- X7ce3 Xe3f5
WHEN "1001010" => T_int1 := "01111100001010011110000011100110"; -- X7c29 Xe0e6
WHEN "1001011" => T_int1 := "01111011010111001101110111011101"; -- X7b5c Xdddd
WHEN "1001100" => T_int1 := "01111010011111001101101011011000"; -- X7a7c Xdad8
WHEN "1001101" => T_int1 := "01111001100010011101011111011010"; -- X7989 Xd7da
WHEN "1001110" => T_int1 := "01111000100001001101010011100001"; -- X7884 Xd4e1
WHEN "1001111" => T_int1 := "01110111011010111101000111101111"; -- X776b Xd1ef
WHEN "1010000" => T_int1 := "01110110010000011100111100000101"; -- X7641 Xcf05
WHEN "1010001" => T_int1 := "01110101000001001100110000100001"; -- X7504 Xcc21
WHEN "1010010" => T_int1 := "01110011101101011100100101000110"; -- X73b5 Xc946
WHEN "1010011" => T_int1 := "01110010010101001100011001110100"; -- X7254 Xc674
WHEN "1010100" => T_int1 := "01110000111000101100001110101010"; -- X70e2 Xc3aa
WHEN "1010101" => T_int1 := "01101111010111101100000011101001"; -- X6f5e Xc0e9
WHEN "1010110" => T_int1 := "01101101110010011011111000110010"; -- X6dc9 Xbe32
WHEN "1010111" => T_int1 := "01101100001000111011101110000110"; -- X6c23 Xbb86
WHEN "1011000" => T_int1 := "01101010011011011011100011100100"; -- X6a6d Xb8e4
WHEN "1011001" => T_int1 := "01101000101001101011011001001100"; -- X68a6 Xb64c
WHEN "1011010" => T_int1 := "01100110110011111011001111000001"; -- X66cf Xb3c1
WHEN "1011011" => T_int1 := "01100100111010001011000101000001"; -- X64e8 Xb141
WHEN "1011100" => T_int1 := "01100010111100011010111011001101"; -- X62f1 Xaecd
WHEN "1011101" => T_int1 := "01100000111010111010110001100101"; -- X60eb Xac65
WHEN "1011110" => T_int1 := "01011110110101111010101000001011"; -- X5ed7 Xaa0b
WHEN "1011111" => T_int1 := "01011100101100111010011110111110"; -- X5cb3 Xa7be
WHEN "1100000" => T_int1 := "01011010100000101010010101111110"; -- X5a82 Xa57e
WHEN "1100001" => T_int1 := "01011000010000101010001101001101"; -- X5842 Xa34d
WHEN "1100010" => T_int1 := "01010101111101011010000100101001"; -- X55f5 Xa129
WHEN "1100011" => T_int1 := "01010011100110111001111100010101"; -- X539b X9f15
WHEN "1100100" => T_int1 := "01010001001100111001110100001111"; -- X5133 X9d0f
WHEN "1100101" => T_int1 := "01001110101111111001101100011000"; -- X4ebf X9b18
WHEN "1100110" => T_int1 := "01001100001111111001100100110001"; -- X4c3f X9931
WHEN "1100111" => T_int1 := "01001001101101001001011101011010"; -- X49b4 X975a
WHEN "1101000" => T_int1 := "01000111000111001001010110010011"; -- X471c X9593
WHEN "1101001" => T_int1 := "01000100011110101001001111011101"; -- X447a X93dd
WHEN "1101010" => T_int1 := "01000001110011101001001000110111"; -- X41ce X9237
WHEN "1101011" => T_int1 := "00111111000101111001000010100010"; -- X3f17 X90a2
WHEN "1101100" => T_int1 := "00111100010101101000111100011110"; -- X3c56 X8f1e
WHEN "1101101" => T_int1 := "00111001100011001000110110101100"; -- X398c X8dac
WHEN "1101110" => T_int1 := "00110110101110101000110001001011"; -- X36ba X8c4b
WHEN "1101111" => T_int1 := "00110011110111111000101011111100"; -- X33df X8afc
WHEN "1110000" => T_int1 := "00110000111110111000100110111111"; -- X30fb X89bf
WHEN "1110001" => T_int1 := "00101110000100011000100010010101"; -- X2e11 X8895
WHEN "1110010" => T_int1 := "00101011000111111000011101111100"; -- X2b1f X877c
WHEN "1110011" => T_int1 := "00101000001001101000011001110111"; -- X2826 X8677
WHEN "1110100" => T_int1 := "00100101001010001000010110000100"; -- X2528 X8584
WHEN "1110101" => T_int1 := "00100010001000111000010010100100"; -- X2223 X84a4
WHEN "1110110" => T_int1 := "00011111000110101000001111010111"; -- X1f1a X83d7
WHEN "1110111" => T_int1 := "00011100000010111000001100011101"; -- X1c0b X831d
WHEN "1111000" => T_int1 := "00011000111110011000001001110111"; -- X18f9 X8277
WHEN "1111001" => T_int1 := "00010101111000101000000111100011"; -- X15e2 X81e3
WHEN "1111010" => T_int1 := "00010010110010001000000101100100"; -- X12c8 X8164
WHEN "1111011" => T_int1 := "00001111101010111000000011110111"; -- X0fab X80f7
WHEN "1111100" => T_int1 := "00001100100011001000000010011111"; -- X0c8c X809f
WHEN "1111101" => T_int1 := "00001001011010101000000001011010"; -- X096a X805a
WHEN "1111110" => T_int1 := "00000110010010001000000000101000"; -- X0648 X8028
WHEN "1111111" => T_int1 := "00000011001001001000000000001011"; -- X0324 X800b
WHEN OTHERS => NULL;
END CASE;
T_int <= T_int1;
END PROCESS;
END ARCHITECTURE translated;