|
@@ -13,15 +13,15 @@ ENTITY poly_fir_tb IS |
|
|
GENERIC (
|
|
|
GENERIC (
|
|
|
demi_periode : time := 5 ns;
|
|
|
demi_periode : time := 5 ns;
|
|
|
-- duree de la demi periode des horloges
|
|
|
-- duree de la demi periode des horloges
|
|
|
test_e : string := "D:\Stage\ALMA_OPFB\simu\polyphase_fir\tb_txts_files\input.txt";
|
|
|
|
|
|
|
|
|
test_e : string := "D:\Stage\ALMA_OPFB\simu\polyphase_fir - v0.2\tb_txts_files\input.txt";
|
|
|
-- fichier test contenant les echantillons d'entree
|
|
|
-- fichier test contenant les echantillons d'entree
|
|
|
|
|
|
|
|
|
test_s : string := "D:\Stage\ALMA_OPFB\simu\polyphase_fir\tb_txts_files\output.txt"
|
|
|
|
|
|
|
|
|
test_s : string := "D:\Stage\ALMA_OPFB\simu\polyphase_fir - v0.2\tb_txts_files\output.txt"
|
|
|
-- fichier contenant les echantillons de sortie
|
|
|
-- fichier contenant les echantillons de sortie
|
|
|
|
|
|
|
|
|
--fir_addr : std_logic_vector(band5a_w_fc-1 DOWNTO 0) := std_logic_vector(unsigned(band5a_fc_index, band5a_w_fc))
|
|
|
--fir_addr : std_logic_vector(band5a_w_fc-1 DOWNTO 0) := std_logic_vector(unsigned(band5a_fc_index, band5a_w_fc))
|
|
|
|
|
|
|
|
|
|
|
|
-- coeff de décimation
|
|
|
);
|
|
|
);
|
|
|
|
|
|
|
|
|
END poly_fir_tb;
|
|
|
END poly_fir_tb;
|
|
@@ -39,6 +39,7 @@ ARCHITECTURE beh OF poly_fir_tb IS |
|
|
SIGNAL sortie_fir_sim : matrix_fir_data_out := (OTHERS => (OTHERS => (OTHERS => '0')));
|
|
|
SIGNAL sortie_fir_sim : matrix_fir_data_out := (OTHERS => (OTHERS => (OTHERS => '0')));
|
|
|
--SIGNAL coeffs_fir : vect_fir_coeffs_in := ;
|
|
|
--SIGNAL coeffs_fir : vect_fir_coeffs_in := ;
|
|
|
SIGNAL sortie_fir_sim_vect : vect_from_matrix_fir_data_out := (OTHERS => (OTHERS => '0'));
|
|
|
SIGNAL sortie_fir_sim_vect : vect_from_matrix_fir_data_out := (OTHERS => (OTHERS => '0'));
|
|
|
|
|
|
SIGNAL verif : donnee_sortie;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BEGIN -- ARCHITECTURE beh
|
|
|
BEGIN -- ARCHITECTURE beh
|
|
@@ -48,11 +49,11 @@ BEGIN -- ARCHITECTURE beh |
|
|
horloge_entree : horloge(h, demi_periode, demi_periode);
|
|
|
horloge_entree : horloge(h, demi_periode, demi_periode);
|
|
|
|
|
|
|
|
|
sortie_fir_sim_process : PROCESS(sortie_fir_sim)
|
|
|
sortie_fir_sim_process : PROCESS(sortie_fir_sim)
|
|
|
VARIABLE mots_lignes : natural := 10;
|
|
|
|
|
|
|
|
|
VARIABLE mots_lignes : natural := cst_nb_parallel_firs;
|
|
|
BEGIN
|
|
|
BEGIN
|
|
|
FOR k IN 0 TO mots_lignes-1 LOOP
|
|
|
FOR k IN 0 TO mots_lignes-1 LOOP
|
|
|
FOR j IN 0 TO cst_nb_subfilters-1 LOOP
|
|
|
FOR j IN 0 TO cst_nb_subfilters-1 LOOP
|
|
|
sortie_fir_sim_vect(k*mots_lignes+j) <= sortie_fir_sim(j)(k);
|
|
|
|
|
|
|
|
|
sortie_fir_sim_vect(k*cst_nb_subfilters+j) <= sortie_fir_sim(j)(k);
|
|
|
END LOOP;
|
|
|
END LOOP;
|
|
|
END LOOP;
|
|
|
END LOOP;
|
|
|
END PROCESS;
|
|
|
END PROCESS;
|
|
@@ -100,12 +101,12 @@ BEGIN -- ARCHITECTURE beh |
|
|
test : PROCESS
|
|
|
test : PROCESS
|
|
|
CONSTANT header : natural := 1; -- nombre de ligne d'en tête
|
|
|
CONSTANT header : natural := 1; -- nombre de ligne d'en tête
|
|
|
CONSTANT nbr_ech : natural := 2000000; --nombre d'echantillons d'entree dans le fichier test
|
|
|
CONSTANT nbr_ech : natural := 2000000; --nombre d'echantillons d'entree dans le fichier test
|
|
|
CONSTANT mots_ligne : natural := 100; -- nombre de mots par ligne dans le ficher
|
|
|
|
|
|
|
|
|
CONSTANT mots_ligne : natural := 200; -- nombre de mots par ligne dans le ficher
|
|
|
VARIABLE nbr_ligne : natural := 10000; -- nombre de lignes restant à lire dans le fichier
|
|
|
VARIABLE nbr_ligne : natural := 10000; -- nombre de lignes restant à lire dans le fichier
|
|
|
VARIABLE i : natural;
|
|
|
VARIABLE i : natural;
|
|
|
VARIABLE donnee : donnee_sortie;
|
|
|
VARIABLE donnee : donnee_sortie;
|
|
|
VARIABLE ligne : line;
|
|
|
VARIABLE ligne : line;
|
|
|
VARIABLE tempo : natural := 5;
|
|
|
|
|
|
|
|
|
VARIABLE tempo : natural := 8;
|
|
|
VARIABLE sortie : integer;
|
|
|
VARIABLE sortie : integer;
|
|
|
VARIABLE head : boolean := false;
|
|
|
VARIABLE head : boolean := false;
|
|
|
BEGIN -- PROCESS test
|
|
|
BEGIN -- PROCESS test
|
|
@@ -125,7 +126,8 @@ BEGIN -- ARCHITECTURE beh |
|
|
read(ligne, donnee(k));
|
|
|
read(ligne, donnee(k));
|
|
|
sortie := to_integer(signed(sortie_fir_sim_vect(k)));
|
|
|
sortie := to_integer(signed(sortie_fir_sim_vect(k)));
|
|
|
sortie_fir(k) <= std_logic_vector(to_signed(donnee(k), cst_w_out));
|
|
|
sortie_fir(k) <= std_logic_vector(to_signed(donnee(k), cst_w_out));
|
|
|
ASSERT sortie = donnee(k) REPORT "Valeur fir FAUSSE"
|
|
|
|
|
|
|
|
|
verif(k) <= sortie - donnee(k);
|
|
|
|
|
|
ASSERT verif(k) = 0 REPORT "Valeur fir FAUSSE"
|
|
|
SEVERITY error;
|
|
|
SEVERITY error;
|
|
|
--ASSERT sortie /= donnee(k) REPORT "OK"
|
|
|
--ASSERT sortie /= donnee(k) REPORT "OK"
|
|
|
-- SEVERITY note;
|
|
|
-- SEVERITY note;
|
|
|