Line 63... |
Line 63... |
|
|
--! LOAD_INSTRUCTION: Estado en el que se espera que en la cola de instrucciones haya una instrucción para ejecutar.
|
--! LOAD_INSTRUCTION: Estado en el que se espera que en la cola de instrucciones haya una instrucción para ejecutar.
|
--! EXECUTE_INSTRUCTION: Estado en el que se ejecuta la instrucción de la cola de instrucciones.
|
--! EXECUTE_INSTRUCTION: Estado en el que se ejecuta la instrucción de la cola de instrucciones.
|
--! FLUSH_ARITH_PIPELINE: Estado en el que se espera un número específico de ciclos de reloj, para que se desocupe el pipeline aritmético.
|
--! FLUSH_ARITH_PIPELINE: Estado en el que se espera un número específico de ciclos de reloj, para que se desocupe el pipeline aritmético.
|
|
|
|
--!TBXSTART:STATE
|
signal s_state : macState;
|
signal s_state : macState;
|
|
--!TBXEND
|
|
|
|
|
|
--!TBXSTART:INS_BLKS
|
signal s_instr_uca: std_logic_vector(2 downto 0);
|
|
signal s_dpc_uca: std_logic_vector(2 downto 0);
|
signal s_dpc_uca: std_logic_vector(2 downto 0);
|
|
signal s_instr_uca : std_logic_vector(2 downto 0);
|
signal s_block_start_a: std_logic_vector(4 downto 0);
|
signal s_block_start_a: std_logic_vector(4 downto 0);
|
signal s_block_start_b: std_logic_vector(4 downto 0);
|
signal s_block_start_b: std_logic_vector(4 downto 0);
|
signal s_block_end_a: std_logic_vector(4 downto 0);
|
signal s_block_end_a: std_logic_vector(4 downto 0);
|
signal s_block_end_b: std_logic_vector(4 downto 0);
|
signal s_block_end_b: std_logic_vector(4 downto 0);
|
signal s_combinatory: std_logic;
|
signal s_combinatory: std_logic;
|
signal s_delay_field: std_logic_vector(7 downto 0);
|
signal s_delay_field: std_logic_vector(7 downto 0);
|
|
--!TBXEND
|
|
|
|
--!TBXEND:CNT_SIGNLS
|
signal s_set_b: std_logic; --! Señal para colocar un valor arbitrario en el contador B.
|
signal s_set_b: std_logic; --! Señal para colocar un valor arbitrario en el contador B.
|
signal s_set_a: std_logic;
|
signal s_set_a: std_logic;
|
signal s_set_dly: std_logic;
|
signal s_set_dly: std_logic;
|
signal s_go_b: std_logic; --! Salida para controlar la pausa(0) o marcha(1) del contador de direcciones del operando B/D.
|
signal s_go_b: std_logic; --! Salida para controlar la pausa(0) o marcha(1) del contador de direcciones del operando B/D.
|
signal s_go_a: std_logic; --! Salida para controlar la pausa(0) o marcha(1) del contador de direcciones del operando A/C.
|
signal s_go_a: std_logic; --! Salida para controlar la pausa(0) o marcha(1) del contador de direcciones del operando A/C.
|
signal s_go_delay: std_logic; --! Salida para controlar la pausa(0) o marcha(1) del contador de delay, para el flush del pipeline aritmético.
|
signal s_go_delay: std_logic; --! Salida para controlar la pausa(0) o marcha(1) del contador de delay, para el flush del pipeline aritmético.
|
signal s_zeroFlag_delay:std_logic; --! Bandera de cero del contador delay.
|
signal s_zeroFlag_delay:std_logic; --! Bandera de cero del contador delay.
|
signal s_eq_b,s_eq_a: std_logic; --! Indica cuando se está leyendo el último bloque de memoria con operandos de entrada de a y de b respectivamente.
|
signal s_eq_b,s_eq_a: std_logic; --! Indica cuando se está leyendo el último bloque de memoria con operandos de entrada de a y de b respectivamente.
|
signal s_eb_b,s_eb_a: std_logic; --! Indica que se está leyendo en memoria el último operando del bloque actual, b o a, respectivamente.
|
signal s_eb_b,s_eb_a: std_logic; --! Indica que se está leyendo en memoria el último operando del bloque actual, b o a, respectivamente.
|
|
--!TBXEND
|
begin
|
begin
|
|
|
state <= s_state;
|
state <= s_state;
|
|
|
--! Código UCA, pero en la etapa DPC: La diferencia es que UCA en la etapa DPC, decodifica el datapath dentro del pipeline aritmético.
|
--! Código UCA, pero en la etapa DPC: La diferencia es que UCA en la etapa DPC, decodifica el datapath dentro del pipeline aritmético.
|
dpc_uca <= s_dpc_uca;
|
dpc_uca <= s_dpc_uca;
|
|
|
|
|
--! Bloques asignados en la instrucci´øn
|
--! Bloques asignados en la instrucción
|
s_block_start_a <= instrQq(floatwidth-4 downto floatwidth-8);
|
s_block_start_a <= instrQq(floatwidth-4 downto floatwidth-8);
|
s_block_end_a <= instrQq(floatwidth-9 downto floatwidth-13);
|
s_block_end_a <= instrQq(floatwidth-9 downto floatwidth-13);
|
|
|
s_block_start_b <= instrQq(floatwidth-14 downto floatwidth-18);
|
s_block_start_b <= instrQq(floatwidth-14 downto floatwidth-18);
|
s_block_end_b <= instrQq(floatwidth-19 downto floatwidth-23);
|
s_block_end_b <= instrQq(floatwidth-19 downto floatwidth-23);
|