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

Subversion Repositories fluid_core_2

[/] [fluid_core_2/] [trunk/] [xilinx14.5 project/] [interrupt_unit.v] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 azmathmoos
`timescale 1ns / 1ps
2
`include "Configuration.v"
3
 
4
module interrupt_unit(
5
        input Clk,
6
        input [0:`intr_msb] intr_req,
7
        input [0:log2(`intr_msb)] intr_inx,
8
        input [0:`pc_w] new_vector,
9
        input write, return_back,
10
        output intr,
11
        output [0:`pc_w] vector
12
    );
13
 
14
        reg [0:`pc_w] isr_vectors [0:`intr_msb+1];
15
        reg [0:`intr_msb] masks;
16
        reg temp_unblock;
17
        reg [0:log2(`intr_msb)-1] vctr_inx;
18
 
19
        integer i;
20
        always@(*) begin
21
        for ( i = `intr_msb; (i >= 0); i = i - 1) begin
22
                if (intr_req[i] == 1) begin
23
                vctr_inx <= i;
24
                end
25
        end
26
        end
27
        initial begin
28
                temp_unblock <= 1;
29
        end
30
        assign intr = |(masks & intr_req ) & temp_unblock; //(~(vctr_inx == 0)&&(masks[vctr_inx]));
31
        assign vector = intr ? isr_vectors[vctr_inx]:'bz;
32
 
33
        always@(posedge Clk) begin
34
                if (write) begin//write
35
                        if (intr_inx == 0) masks <= new_vector; //(aligned by MSB)
36
                        else begin
37
                        isr_vectors[intr_inx] <= new_vector;
38
                        end
39
                end
40
                if (intr) temp_unblock <= 0;
41
                else if (return_back) temp_unblock <= 1;
42
        end
43
 
44
 
45
        //--- Constant Function ----//
46
        function integer log2;
47
          input integer value;
48
          begin
49
                 value = value-1;
50
                 for (log2=0; value>0; log2=log2+1)
51
                        value = value>>1;
52
          end
53
        endfunction
54
endmodule

powered by: WebSVN 2.1.0

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