Line 31... |
Line 31... |
|
|
entity ap_n_dpc is
|
entity ap_n_dpc is
|
|
|
port (
|
port (
|
|
|
|
p0,p1,p2 : out std_logic_vector(31 downto 0);
|
|
|
|
|
clk : in std_logic;
|
clk : in std_logic;
|
rst : in std_logic;
|
rst : in std_logic;
|
|
|
ax : in std_logic_vector(31 downto 0);
|
ax : in std_logic_vector(31 downto 0);
|
ay : in std_logic_vector(31 downto 0);
|
ay : in std_logic_vector(31 downto 0);
|
Line 70... |
Line 73... |
constant ssync_chain_max : integer :=27;
|
constant ssync_chain_max : integer :=27;
|
constant ssync_chain_min : integer :=2;
|
constant ssync_chain_min : integer :=2;
|
|
|
--! Tunnning delay
|
--! Tunnning delay
|
constant adder2_delay: integer := 1;
|
constant adder2_delay: integer := 1;
|
constant prod3_delay : integer := 2;
|
constant adder1_delay : integer := 1;
|
|
|
--!TBXSTART:FACTORS_N_ADDENDS
|
--!TBXSTART:FACTORS_N_ADDENDS
|
signal sfactor0 : std_logic_vector(31 downto 0);
|
signal sfactor0 : std_logic_vector(31 downto 0);
|
signal sfactor1 : std_logic_vector(31 downto 0);
|
signal sfactor1 : std_logic_vector(31 downto 0);
|
signal sfactor2 : std_logic_vector(31 downto 0);
|
signal sfactor2 : std_logic_vector(31 downto 0);
|
Line 273... |
Line 276... |
process(clk,rst,sync_chain_1)
|
process(clk,rst,sync_chain_1)
|
begin
|
begin
|
if rst=rstMasterValue then
|
if rst=rstMasterValue then
|
ssync_chain(ssync_chain_max downto ssync_chain_min) <= (others => '0');
|
ssync_chain(ssync_chain_max downto ssync_chain_min) <= (others => '0');
|
|
|
|
p0 <= (others => '0');
|
|
p1 <= (others => '0');
|
|
p2 <= (others => '0');
|
|
|
elsif clk'event and clk='1' then
|
elsif clk'event and clk='1' then
|
for i in ssync_chain_max downto ssync_chain_min+1 loop
|
for i in ssync_chain_max downto ssync_chain_min+1 loop
|
ssync_chain(i) <= ssync_chain(i-1);
|
ssync_chain(i) <= ssync_chain(i-1);
|
end loop;
|
end loop;
|
ssync_chain(ssync_chain_min) <= sync_chain_1;
|
ssync_chain(ssync_chain_min) <= sync_chain_1;
|
|
|
|
--! Salida de los multiplicadores p0 p1 p2
|
|
if ssync_chain(21)='1' then
|
|
p0 <= sa0; -- El resultado quedara consignado en VZ1=BASE+1
|
|
elsif ssync_chain(22)='1' then
|
|
p1 <= sa0; -- El resutlado quedara consignado en VY1=BASE+2
|
|
elsif ssync_chain(23)='1' then
|
|
p2 <= sa0; -- El resultado quedara consignado en VX1=BASE+3
|
|
end if;
|
|
|
end if;
|
end if;
|
end process sync_chain_proc;
|
end process sync_chain_proc;
|
|
|
|
|
|
|
Line 400... |
Line 417... |
ssumando4 <= az;
|
ssumando4 <= az;
|
ssumando5 <= bz;
|
ssumando5 <= bz;
|
|
|
if dcs(1)='1' then
|
if dcs(1)='1' then
|
sq2_d <= ssq32;
|
sq2_d <= ssq32;
|
sq2_w <= ssync_chain(22);
|
sq2_w <= ssync_chain(22+adder1_delay);
|
else
|
else
|
sq2_d <= sa1;
|
sq2_d <= sa1;
|
sq2_w <= ssync_chain(21);
|
sq2_w <= ssync_chain(21+adder1_delay);
|
end if;
|
end if;
|
|
|
sqr_dx <= sp3;
|
sqr_dx <= sp3;
|
sqr_dy <= sp4;
|
sqr_dy <= sp4;
|
sqr_dz <= sp5;
|
sqr_dz <= sp5;
|
Line 467... |
Line 484... |
)
|
)
|
port map (
|
port map (
|
sclr => '0',
|
sclr => '0',
|
clock => clk,
|
clock => clk,
|
rdreq => ssync_chain(13),
|
rdreq => ssync_chain(13),
|
wrreq => ssync_chain(5+adder2_delay),
|
wrreq => ssync_chain(5),
|
data => sp2,
|
data => sp2,
|
q => sq0_q
|
q => sq0_q
|
);
|
);
|
--! Colas internas de producto punto, ubicada en el pipe line aritméco. Paralelo a los sumadores a0 y a2.
|
--! Colas internas de producto punto, ubicada en el pipe line aritméco. Paralelo a los sumadores a0 y a2.
|
q2 : scfifo --! Debe ir registrada la salida.
|
q2 : scfifo --! Debe ir registrada la salida.
|