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 work.GENERAL_INCLUDES.ALL;
-
- ENTITY SHIFT_REG IS
- GENERIC(nb_samples_temp : natural := cst_nb_samples_shiftreg_temp_in;
- nb_samples_line_matrix : natural := cst_nb_coeffs_subfilter_in
- );
- PORT(i_clk : IN std_logic;
- i_data : IN vect_adc_data_out;
- o_data : OUT matrix_reg_data_out
- );
- END SHIFT_REG;
-
- ARCHITECTURE Fill_Matrix OF SHIFT_REG IS
-
- SIGNAL data_matrix : matrix_reg_data_out;
- SIGNAL data_clk : vect_reg_data;
-
- BEGIN
-
- PROCESS(i_clk) IS
- BEGIN
- IF(rising_edge(i_clk)) THEN
- data_clk(0 TO nb_samples_temp-cst_nb_samples_adc_in-1) <= data_clk(cst_nb_samples_adc_in TO nb_samples_temp-1);
- FOR i IN 0 TO cst_nb_samples_adc_in-1 LOOP
- data_clk(nb_samples_temp-cst_nb_samples_adc_in+i) <= i_data(i);
- END LOOP; -- i
- FOR lines IN 0 TO cst_nb_samples_adc_in-1 LOOP
- -- the smaller line, the older samples
- FOR samples IN 0 TO nb_samples_line_matrix-1 LOOP
- data_matrix(lines)(samples) <= data_clk(lines+samples);
- END LOOP;
-
- END LOOP;
- ELSE
- data_clk <= data_clk;
- END IF;
- o_data <= data_matrix;
- END PROCESS;
-
- END Fill_Matrix;
|