Newer
Older
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_misc.and_reduce;
use ieee.std_logic_misc.or_reduce;
use work.pkg_corr_matrix.all;
entity lvl_threshold is
generic(
G_N_BTH : natural
);
port(
clk : in std_logic;
rst_n : in std_logic;
s_axis_tdata_cor : in std_logic_vector(C_W_COR-1 downto 0);
s_axis_tvalid : in std_logic;
enable_thresh : in std_logic;
rst_thresh : in std_logic;
thresh_reached : out std_logic
);
end entity lvl_threshold;
architecture rtl of lvl_threshold is
signal sign : std_logic;
signal thresh_and : std_logic;
signal thresh_nor : std_logic;
begin
sign <= s_axis_tdata_cor(C_W_COR-1);
thresh_and <= and_reduce(s_axis_tdata_cor(C_W_COR-2 downto C_W_COR-G_N_BTH-1));
thresh_nor <= not or_reduce(s_axis_tdata_cor(C_W_COR-2 downto C_W_COR-G_N_BTH-1));
p_main:process(clk, rst_n)
begin
if rst_n = '0' then
thresh_reached <= '0';
elsif rising_edge(clk) then
if rst_thresh = '1' then
thresh_reached <= '0';
else
if s_axis_tvalid = '1' and enable_thresh = '1' then
if sign = '1'then
-- negative