VHDL implementation of a polyphase filter bank with polyphase filter and 5ndft
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
- LIBRARY ieee;
- USE ieee.std_logic_1164.ALL;
- USE ieee.numeric_std.ALL;
- USE work.POLY_FIR_PKG.ALL;
-
- ENTITY MULT_BLK IS
- PORT(i_clk : IN std_logic;
- i_data : IN vect_fir_data_in;
- i_coeffs : IN vect_fir_coeffs_in;
- o_data : OUT vect_mult_data_out := (OTHERS => (OTHERS =>'0'))
- );
- END MULT_BLK;
-
- ARCHITECTURE Mult_Path OF MULT_BLK IS
-
- SIGNAL data_mult_signed : vect_mult_data_out_signed := (OTHERS => (OTHERS => '0'));
- SIGNAL coeffs_signed : vect_mult_coeffs_signed := (OTHERS => (OTHERS => '0'));
- SIGNAL data_signed : vect_data_mult_in_signed := (OTHERS => (OTHERS => '0'));
-
-
- BEGIN
-
- -- purpose: wiring: cast the i_data and i_coeffs into signed
- cast : FOR i IN 0 TO cst_nb_coeffs_subfilter_in-1 GENERATE
- data_signed(i) <= signed(i_data(i));
- coeffs_signed(i) <= signed(i_coeffs(i));
- END GENERATE cast;
-
-
-
- -- purpose: calculate and send cast result to output
- mult : PROCESS(i_clk)
- BEGIN
- IF rising_edge(i_clk) THEN
- FOR i IN 0 TO cst_nb_coeffs_subfilter_in-1 LOOP
- data_mult_signed(i) <= data_signed(i) * coeffs_signed(i);
- END LOOP;
- END IF;
- END PROCESS;
-
- o_data_wiring: FOR i IN 0 TO cst_nb_coeffs_subfilter_in-1 GENERATE
- o_data(i) <= std_logic_vector(unsigned(data_mult_signed(i)));
- END GENERATE o_data_wiring;
-
- END Mult_Path;
|