OpenCores
URL https://opencores.org/ocsvn/lxp32/lxp32/trunk

Subversion Repositories lxp32

[/] [lxp32/] [trunk/] [rtl/] [lxp32_decode.vhd] - Diff between revs 9 and 12

Show entire file | Details | Blame | View Log

Rev 9 Rev 12
Line 26... Line 26...
 
 
                interrupt_valid_i: in std_logic;
                interrupt_valid_i: in std_logic;
                interrupt_vector_i: in std_logic_vector(2 downto 0);
                interrupt_vector_i: in std_logic_vector(2 downto 0);
                interrupt_ready_o: out std_logic;
                interrupt_ready_o: out std_logic;
 
 
 
                wakeup_i: in std_logic;
 
 
                sp_raddr1_o: out std_logic_vector(7 downto 0);
                sp_raddr1_o: out std_logic_vector(7 downto 0);
                sp_rdata1_i: in std_logic_vector(31 downto 0);
                sp_rdata1_i: in std_logic_vector(31 downto 0);
                sp_raddr2_o: out std_logic_vector(7 downto 0);
                sp_raddr2_o: out std_logic_vector(7 downto 0);
                sp_rdata2_i: in std_logic_vector(31 downto 0);
                sp_rdata2_i: in std_logic_vector(31 downto 0);
 
 
Line 98... Line 100...
signal rd2_direct: std_logic_vector(31 downto 0);
signal rd2_direct: std_logic_vector(31 downto 0);
 
 
-- Signals related to interrupt handling
-- Signals related to interrupt handling
 
 
signal interrupt_ready: std_logic:='0';
signal interrupt_ready: std_logic:='0';
 
signal wakeup_reg: std_logic:='0';
 
 
begin
begin
 
 
-- Dissect input word
-- Dissect input word
 
 
Line 146... Line 149...
                        rd2_select<='-';
                        rd2_select<='-';
                        rd2_direct<=(others=>'-');
                        rd2_direct<=(others=>'-');
                        op3_o<=(others=>'-');
                        op3_o<=(others=>'-');
                        jump_type_o<=(others=>'-');
                        jump_type_o<=(others=>'-');
                        dst_out<=(others=>'-');
                        dst_out<=(others=>'-');
 
                        wakeup_reg<='0';
                else
                else
                        interrupt_ready<='0';
                        interrupt_ready<='0';
 
                        wakeup_reg<=wakeup_reg or wakeup_i;
                        if jump_valid_i='1' then
                        if jump_valid_i='1' then
                                valid_out<='0';
                                valid_out<='0';
                                self_busy<='0';
                                self_busy<='0';
                                state<=Regular;
                                state<=Regular;
                        elsif downstream_busy='0' then
                        elsif downstream_busy='0' then
Line 255... Line 260...
                                                                self_busy<='0';
                                                                self_busy<='0';
                                                                state<=ContinueLc;
                                                                state<=ContinueLc;
                                                        elsif opcode="000010" then
                                                        elsif opcode="000010" then
                                                                valid_out<='0';
                                                                valid_out<='0';
                                                                self_busy<='1';
                                                                self_busy<='1';
 
                                                                wakeup_reg<='0';
                                                                state<=Halt;
                                                                state<=Halt;
                                                        elsif opcode(5 downto 4)="11" then
                                                        elsif opcode(5 downto 4)="11" then
                                                                valid_out<='1';
                                                                valid_out<='1';
                                                                self_busy<='1';
                                                                self_busy<='1';
                                                                state<=ContinueCjmp;
                                                                state<=ContinueCjmp;
Line 283... Line 289...
                                        self_busy<='0';
                                        self_busy<='0';
                                        state<=Regular;
                                        state<=Regular;
                                when ContinueInterrupt =>
                                when ContinueInterrupt =>
                                        valid_out<='0';
                                        valid_out<='0';
                                when Halt =>
                                when Halt =>
                                        if interrupt_valid_i='1' then
                                        if interrupt_valid_i='1' or wakeup_i='1' or wakeup_reg='1' then
                                                self_busy<='0';
                                                self_busy<='0';
                                                state<=Regular;
                                                state<=Regular;
                                        end if;
                                        end if;
                                end case;
                                end case;
                        end if;
                        end if;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.