##// END OF EJS Templates
LFR EQM2
LFR EQM2

File last commit:

r619:b515d4c55e1d simu_with_Leon3
r620:c6d218df80ba simu_with_Leon3
Show More
lpp_lfr_ms_FFT.vhd
114 lines | 3.2 KiB | text/x-vhdl | VhdlLexer
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;