LIBRARY ieee; USE ieee.std_logic_1164.ALL; LIBRARY lpp; USE lpp.lpp_memory.ALL; USE lpp.iir_filter.ALL; USE lpp.spectral_matrix_package.ALL; USE lpp.lpp_dma_pkg.ALL; USE lpp.lpp_Header.ALL; USE lpp.lpp_matrix.ALL; USE lpp.lpp_matrix.ALL; USE lpp.lpp_lfr_pkg.ALL; USE lpp.lpp_fft.ALL; USE lpp.fft_components.ALL; USE lpp.window_function_pkg.ALL; ENTITY lpp_lfr_ms_FFT IS GENERIC ( WINDOWS_HAANNING_PARAM_SIZE : INTEGER := 15 ); PORT ( clk : IN STD_LOGIC; rstn : IN STD_LOGIC; -- IN sample_valid : IN STD_LOGIC; fft_read : IN STD_LOGIC; sample_data : IN STD_LOGIC_VECTOR(15 DOWNTO 0); sample_load : OUT STD_LOGIC; --OUT fft_pong : OUT STD_LOGIC; fft_data_im : OUT STD_LOGIC_VECTOR(15 DOWNTO 0); fft_data_re : OUT STD_LOGIC_VECTOR(15 DOWNTO 0); fft_data_valid : OUT STD_LOGIC; fft_ready : OUT STD_LOGIC ); END; ARCHITECTURE Behavioral OF lpp_lfr_ms_FFT IS SIGNAL data_win : STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL data_win_valid : STD_LOGIC; SIGNAL data_in_reg : STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL data_in_reg_valid : STD_LOGIC; BEGIN PROCESS (clk, rstn) BEGIN -- PROCESS IF rstn = '0' THEN -- asynchronous reset (active low) data_in_reg <= (OTHERS => '0'); data_in_reg_valid <= '0'; ELSIF clk'event AND clk = '1' THEN -- rising clock edge data_in_reg <= sample_data; data_in_reg_valid <= sample_valid; END IF; END PROCESS; window_hanning: window_function GENERIC MAP ( SIZE_DATA => 16, SIZE_PARAM => WINDOWS_HAANNING_PARAM_SIZE, NB_POINT_BY_WINDOW => 256) PORT MAP ( clk => clk, rstn => rstn, restart_window => '0', data_in => data_in_reg, data_in_valid => data_in_reg_valid, data_out => data_win, data_out_valid => data_win_valid); ----------------------------------------------------------------------------- -- FFT ----------------------------------------------------------------------------- CoreFFT_1 : CoreFFT GENERIC MAP ( LOGPTS => gLOGPTS, LOGLOGPTS => gLOGLOGPTS, WSIZE => gWSIZE, TWIDTH => gTWIDTH, DWIDTH => gDWIDTH, TDWIDTH => gTDWIDTH, RND_MODE => gRND_MODE, SCALE_MODE => gSCALE_MODE, PTS => gPTS, HALFPTS => gHALFPTS, inBuf_RWDLY => gInBuf_RWDLY) PORT MAP ( clk => clk, ifiStart => '0', -- '1' ifiNreset => rstn, ifiD_valid => data_win_valid, -- IN ifiRead_y => fft_read, ifiD_im => (OTHERS => '0'), -- IN ifiD_re => data_win, -- IN ifoLoad => sample_load, -- IN ifoPong => fft_pong, ifoY_im => fft_data_im, ifoY_re => fft_data_re, ifoY_valid => fft_data_valid, ifoY_rdy => fft_ready); ----------------------------------------------------------------------------- END Behavioral;