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

Subversion Repositories altor32

[/] [altor32/] [trunk/] [rtl/] [peripheral/] [intr_periph.v] - Diff between revs 27 and 32

Show entire file | Details | Blame | View Log

Rev 27 Rev 32
Line 63... Line 63...
 
 
    // Peripheral bus
    // Peripheral bus
    addr_i,
    addr_i,
    data_o,
    data_o,
    data_i,
    data_i,
    wr_i,
    we_i,
    rd_i
    stb_i
);
);
 
 
//-----------------------------------------------------------------
//-----------------------------------------------------------------
// Params
// Params
//-----------------------------------------------------------------
//-----------------------------------------------------------------
Line 92... Line 92...
input               intr7_i /*verilator public*/;
input               intr7_i /*verilator public*/;
input [(EXTERNAL_INTERRUPTS - 1):0] intr_ext_i /*verilator public*/;
input [(EXTERNAL_INTERRUPTS - 1):0] intr_ext_i /*verilator public*/;
input [7:0]         addr_i /*verilator public*/;
input [7:0]         addr_i /*verilator public*/;
output [31:0]       data_o /*verilator public*/;
output [31:0]       data_o /*verilator public*/;
input [31:0]        data_i /*verilator public*/;
input [31:0]        data_i /*verilator public*/;
input [3:0]         wr_i /*verilator public*/;
input               we_i /*verilator public*/;
input               rd_i /*verilator public*/;
input               stb_i /*verilator public*/;
 
 
//-----------------------------------------------------------------
//-----------------------------------------------------------------
// Registers / Wires
// Registers / Wires
//-----------------------------------------------------------------
//-----------------------------------------------------------------
reg [31:0]                  data_o;
reg [31:0]                  data_o;
Line 173... Line 173...
 
 
       // Generate interrupt based on masked status
       // Generate interrupt based on masked status
       intr_o <= ((v_irq_status & irq_mask) != {(INTERRUPT_COUNT){1'b0}}) ? 1'b1 : 1'b0;
       intr_o <= ((v_irq_status & irq_mask) != {(INTERRUPT_COUNT){1'b0}}) ? 1'b1 : 1'b0;
 
 
       // Write Cycle
       // Write Cycle
       if (wr_i != 4'b0000)
       if (we_i & stb_i)
       begin
       begin
           case (addr_i)
           case (addr_i)
 
 
           `IRQ_MASK_SET :
           `IRQ_MASK_SET :
                irq_mask    <= (irq_mask | data_i[INTERRUPT_COUNT-1:0]);
                irq_mask    <= (irq_mask | data_i[INTERRUPT_COUNT-1:0]);
Line 196... Line 196...
end
end
 
 
//-----------------------------------------------------------------
//-----------------------------------------------------------------
// Peripheral Register Read
// Peripheral Register Read
//-----------------------------------------------------------------
//-----------------------------------------------------------------
always @ (posedge rst_i or posedge clk_i )
always @ *
begin
 
   if (rst_i == 1'b1)
 
   begin
 
       data_o       <= 32'h00000000;
 
   end
 
   else
 
   begin
 
       // Read cycle?
 
       if (rd_i == 1'b1)
 
       begin
       begin
           case (addr_i[7:0])
           case (addr_i[7:0])
 
 
           `IRQ_MASK_SET :
           `IRQ_MASK_SET :
                data_o <= {{(32-INTERRUPT_COUNT){1'b0}}, irq_mask};
        data_o = {{(32-INTERRUPT_COUNT){1'b0}}, irq_mask};
 
 
           `IRQ_MASK_CLR :
           `IRQ_MASK_CLR :
                data_o <= {{(32-INTERRUPT_COUNT){1'b0}}, irq_mask};
        data_o = {{(32-INTERRUPT_COUNT){1'b0}}, irq_mask};
 
 
           `IRQ_STATUS :
           `IRQ_STATUS :
                data_o <= {{(32-INTERRUPT_COUNT){1'b0}}, irq_status};
        data_o = {{(32-INTERRUPT_COUNT){1'b0}}, irq_status};
 
 
           default :
           default :
                data_o <= 32'h00000000;
        data_o = 32'h00000000;
           endcase
           endcase
        end
        end
   end
 
end
 
 
 
endmodule
endmodule
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

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