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.
|
- LIBRARY ieee;
- USE ieee.std_logic_1164.ALL;
- USE ieee.numeric_std.ALL;
- USE work.general_includes.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
- );
- END MULT_BLK;
-
- ARCHITECTURE Mult_Path OF MULT_BLK IS
-
- SIGNAL data_mult_signed : vect_mult_data_out_signed;
- SIGNAL coeffs_signed : vect_mult_coeffs_signed;
- SIGNAL data_signed : vect_data_mult_in_signed;
-
-
- BEGIN
- 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;
-
-
- 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;
- ELSE
- data_mult_signed <= data_mult_signed;
- END IF;
- cast2: FOR i IN 0 TO cst_nb_coeffs_subfilter_in-1 LOOP
- o_data(i) <= std_logic_vector(unsigned(data_mult_signed(i)));
- END LOOP cast2;
-
- END PROCESS;
-
- END Mult_Path;
|