Line 47... |
Line 47... |
add32blki : out std_logic_vector ((08*width)-1 downto 0); --! Entrada de los 8 sumandos del bloque de 4 sumadores.
|
add32blki : out std_logic_vector ((08*width)-1 downto 0); --! Entrada de los 8 sumandos del bloque de 4 sumadores.
|
resw : out std_logic_vector (4 downto 0); --! Salidas de escritura y lectura en las colas de resultados.
|
resw : out std_logic_vector (4 downto 0); --! Salidas de escritura y lectura en las colas de resultados.
|
fifo32x09_w : out std_logic;
|
fifo32x09_w : out std_logic;
|
fifo32x23_w,fifo32x09_r : out std_logic;
|
fifo32x23_w,fifo32x09_r : out std_logic;
|
fifo32x23_r : out std_logic;
|
fifo32x23_r : out std_logic;
|
res567f,res13f : in std_logic; --! Entradas de la señal de full de las colas de resultados.
|
resf_vector : in std_logic_vector (3 downto 0); --! Entradas de la señal de full de las colas de resultados.
|
res2f,res0f : in std_logic;
|
resf_event : out std_logic; --! Salida decodificada que indica que la cola de resultados de la operación que está en curso.
|
resf : out std_logic; --! Salida decodificada que indica que la cola de resultados de la operación que está en curso.
|
|
resultoutput : out std_logic_vector ((08*width)-1 downto 0) --! 8 salidas de resultados, pues lo máximo que podrá calcularse por cada clock son 2 vectores.
|
resultoutput : out std_logic_vector ((08*width)-1 downto 0) --! 8 salidas de resultados, pues lo máximo que podrá calcularse por cada clock son 2 vectores.
|
);
|
);
|
end dpc;
|
end dpc;
|
|
|
architecture dpc_arch of dpc is
|
architecture dpc_arch of dpc is
|
Line 90... |
Line 89... |
signal ssqr32blk,sinv32blk : std_logic_vector(width-1 downto 0);
|
signal ssqr32blk,sinv32blk : std_logic_vector(width-1 downto 0);
|
signal ssync_chain : std_logic_vector(28 downto 0);
|
signal ssync_chain : std_logic_vector(28 downto 0);
|
signal ssync_chain_d : std_logic;
|
signal ssync_chain_d : std_logic;
|
signal sres567w,sres123w,sres2w : std_logic;
|
signal sres567w,sres123w,sres2w : std_logic;
|
signal sres0w,sres4w : std_logic;
|
signal sres0w,sres4w : std_logic;
|
|
signal sres567f,sres123f : std_logic; --! Entradas de la señal de full de las colas de resultados.
|
|
signal sres24f,sres0f : std_logic;
|
|
|
|
|
constant rstMasterValue : std_logic := '0';
|
constant rstMasterValue : std_logic := '0';
|
|
|
begin
|
begin
|
Line 228... |
Line 229... |
--! Conectar las entradas del sumador a, a la salida
|
--! Conectar las entradas del sumador a, a la salida
|
ssumando(s6) <= sadd32blk(a2);
|
ssumando(s6) <= sadd32blk(a2);
|
ssumando(s7) <= sdpfifo_q(dpfifocd);
|
ssumando(s7) <= sdpfifo_q(dpfifocd);
|
|
|
--!El siguiente proceso conecta la señal de cola "casi llena", de la cola que corresponde al resultado de la operación indicada por los bit UCA (Unary, Crossprod, Addsub).
|
--!El siguiente proceso conecta la señal de cola "casi llena", de la cola que corresponde al resultado de la operación indicada por los bit UCA (Unary, Crossprod, Addsub).
|
fullQ:process(res0f,res13f,res2f,res567f,unary,crossprod,addsub)
|
sres0f <= resf_vector(0);
|
|
sres123f <= resf_vector(1);
|
|
sres24f <= resf_vector(2);
|
|
sres567f <= resf_vector(3);
|
|
fullQ:process(sres0f,sres123f,sres24f,sres567f,unary,crossprod,addsub,eoi_int)
|
begin
|
begin
|
if unary='0' then
|
if unary='0' then
|
if crossprod='1' or addsub='1' then
|
if crossprod='1' or addsub='1' then
|
eoi_demuxed_int <= "00"&eoi_int&'0';
|
eoi_demuxed_int <= "00"&eoi_int&'0';
|
resf <= res13f;
|
resf_event <= sres123f;
|
else
|
else
|
eoi_demuxed_int <= '0'&eoi_int&"00";
|
eoi_demuxed_int <= '0'&eoi_int&"00";
|
resf <= res2f;
|
resf_event <= sres24f;
|
end if;
|
end if;
|
elsif crossprod='1' or addsub='1' then
|
elsif crossprod='1' or addsub='1' then
|
eoi_demuxed_int <= eoi_int&"000";
|
eoi_demuxed_int <= eoi_int&"000";
|
resf <= res567f;
|
resf_event <= sres567f;
|
else
|
else
|
eoi_demuxed_int <= "000"&eoi_int;
|
eoi_demuxed_int <= "000"&eoi_int;
|
resf <= res0f;
|
resf_event <= sres0f;
|
end if;
|
end if;
|
end process;
|
end process;
|
|
|
--! Decodificación del Datapath.
|
--! Decodificación del Datapath.
|
mul:process(unary,addsub,crossprod,sparaminput,sinv32blk,sprd32blk,sadd32blk,sdpfifo_q,snormfifo_q)
|
mul:process(unary,addsub,crossprod,sparaminput,sinv32blk,sprd32blk,sadd32blk,sdpfifo_q,snormfifo_q)
|