Line 32... |
Line 32... |
generic ( W : integer := 32 );
|
generic ( W : integer := 32 );
|
port (
|
port (
|
clk,rst : in std_logic;
|
clk,rst : in std_logic;
|
|
|
nxtSphere : in std_logic; -- Controls when the sphere goes to the next Row.
|
nxtSphere : in std_logic; -- Controls when the sphere goes to the next Row.
|
|
pipeOn : in std_logic; -- Enables / Disable the upwarding flow.
|
kinput : in std_logic_vector (W-1 downto 0);
|
kinput : in std_logic_vector (W-1 downto 0);
|
koutput : out std_logic_vector (W-1 downto 0);
|
koutput : out std_logic_vector (W-1 downto 0);
|
|
|
vdinput : in std_logic_vector (W-1 downto 0); -- V.D input.
|
vdinput : in std_logic_vector (W-1 downto 0); -- V.D input.
|
vdoutput : out std_logic_vector (W-1 downto 0) -- Selected dot product.
|
vdoutput : out std_logic_vector (W-1 downto 0) -- Selected dot product.
|
Line 57... |
Line 58... |
datab => kinput,
|
datab => kinput,
|
AgeB => ssge32
|
AgeB => ssge32
|
);
|
);
|
|
|
-- When ssge32 (greater or equal signal) is set then V.D > kte, therefore intersection is confirmed and V.D is to be shifted to the distance comparison grid.
|
-- When ssge32 (greater or equal signal) is set then V.D > kte, therefore intersection is confirmed and V.D is to be shifted to the distance comparison grid.
|
selector : process (rst,clk,ssg32)
|
selector : process (rst,clk,ssg32,pipeOn)
|
begin
|
begin
|
|
|
if rst='0' then
|
if rst='0' then
|
|
|
-- At the beginning set the Maximum over Maximum distance.
|
-- At the beginning set the Maximum over Maximum distance.
|
vdoutput <= '0' & (others =>'1');
|
vdoutput <= '0' & (others =>'1');
|
|
|
elsif rising_edge(clk) then
|
elsif rising_edge(clk) and pipeOn ='1' then
|
|
|
if ssge32 = '1' then -- If VD ids grater or equal than K .....
|
if ssge32 = '1' then -- If VD ids grater or equal than K .....
|
vdoutput <= vdinput;
|
vdoutput <= vdinput;
|
else
|
else
|
vdoutput <= '0' & (others =>'1');
|
vdoutput <= '0' & (others =>'1');
|