Nada
This commit is contained in:
78
FiltroHDL/filter_pkg.vhd
Normal file
78
FiltroHDL/filter_pkg.vhd
Normal file
@@ -0,0 +1,78 @@
|
||||
library IEEE;
|
||||
use IEEE.STD_LOGIC_1164.ALL;
|
||||
use IEEE.NUMERIC_STD.ALL;
|
||||
|
||||
package filter_pkg is
|
||||
constant MAX_RANGE : integer := 511;
|
||||
|
||||
type array_of_integers is array(integer range <>) of integer range -MAX_RANGE to MAX_RANGE;
|
||||
|
||||
function array_sum ( K : in array_of_integers )
|
||||
return integer;
|
||||
function reorder_array ( K : in array_of_integers ; simetric : in boolean )
|
||||
return array_of_integers;
|
||||
|
||||
|
||||
component Filter is
|
||||
|
||||
generic (
|
||||
CLK_FREQ : integer := 200e6;
|
||||
DATA_RATE: integer := 250e3;
|
||||
|
||||
|
||||
SIMETRIC : boolean := TRUE;
|
||||
CONSTANTS : array_of_integers := (-4,-3,-2,-1,0,1,2,3,4,5)
|
||||
|
||||
);
|
||||
port (
|
||||
clk_i : in std_logic;
|
||||
enable: in std_logic;
|
||||
reset: in std_logic;
|
||||
|
||||
d_i : in std_logic;
|
||||
d_o : out std_logic;
|
||||
p_o : out std_logic_vector(9 downto 0)
|
||||
);
|
||||
end component;
|
||||
|
||||
end package;
|
||||
|
||||
package body filter_pkg is
|
||||
|
||||
function array_sum ( K : in array_of_integers ) return integer is
|
||||
variable sum : integer := 0;
|
||||
begin
|
||||
for i in 0 to K'length-1 loop
|
||||
sum := sum + K(K'left + i);
|
||||
end loop;
|
||||
|
||||
return sum;
|
||||
end array_sum;
|
||||
|
||||
|
||||
function reorder_array ( K : in array_of_integers ; simetric : in boolean )
|
||||
return array_of_integers is
|
||||
constant M : integer := 1 + 2*((K'length)-1);
|
||||
constant N : integer := K'length;
|
||||
variable arr_s : array_of_integers( 0 to M-1 );
|
||||
variable arr_a : array_of_integers( 0 to N-1 );
|
||||
|
||||
begin
|
||||
if ( simetric ) then
|
||||
for i in 0 to N-1 loop
|
||||
arr_s( i ) := K( K'left + i );
|
||||
end loop;
|
||||
|
||||
for i in 1 to N-1 loop
|
||||
arr_s( n + i - 1 ) := K( K'right - i );
|
||||
end loop;
|
||||
return arr_s;
|
||||
else
|
||||
for i in 0 to N-1 loop
|
||||
arr_a( i ) := K( K'left + i );
|
||||
end loop;
|
||||
return arr_a;
|
||||
end if;
|
||||
end reorder_array;
|
||||
|
||||
end filter_pkg;
|
||||
Reference in New Issue
Block a user