A simple vhdl fir description.
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.

41 lines
1.3KB

  1. LIBRARY ieee;
  2. USE ieee.std_logic_1164.ALL;
  3. USE work.GENERAL_INCLUDES.ALL;
  4. ENTITY TREE_FIR IS
  5. PORT( i_clk : IN std_logic;
  6. i_coeffs : IN vect_fir_coeffs_in;
  7. i_data : IN vect_adc_data_out;
  8. o_data : OUT vect_fir_data_out
  9. );
  10. END TREE_FIR;
  11. ARCHITECTURE Shift_Reg_Fir OF TREE_FIR IS
  12. SIGNAL matrix_data_reg_out_mult_in : matrix_reg_data_out := (OTHERS => (OTHERS => (OTHERS => '0')));
  13. SIGNAL partial_fir_out : vect_fir_adder_data_out := (OTHERS => (OTHERS => '0'));
  14. BEGIN
  15. shift_reg_inst : ENTITY work.SHIFT_REG(Fill_Matrix)
  16. GENERIC MAP(nb_samples_temp => cst_nb_samples_shiftreg_temp_in,
  17. nb_samples_line_matrix => cst_nb_coeffs_subfilter_in
  18. )
  19. PORT MAP( i_clk => i_clk,
  20. i_data => i_data,
  21. o_data => matrix_data_reg_out_mult_in
  22. );
  23. partial_fir_for : FOR i IN 0 TO cst_nb_samples_adc_in-1 GENERATE
  24. partial_fir_inst : ENTITY work.PARTIAL_FIR(Adder_Tree)
  25. PORT MAP( i_clk => i_clk,
  26. i_coeffs => i_coeffs,
  27. i_data => matrix_data_reg_out_mult_in(i),
  28. o_data => partial_fir_out(i)
  29. );
  30. o_data(i)<= partial_fir_out(i)(cst_w_fir_adder_out-1 DOWNTO cst_w_fir_adder_out-cst_w_out);
  31. END GENERATE partial_fir_for;
  32. END Shift_Reg_Fir;