Subversion Repositories ngs

Rev

Rev 93 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 93 Rev 102
Line 35... Line 35...
35
        reg [2:0] req;
35
        reg [2:0] req;
36
 
36
 
37
        reg [2:0] pri_req;
37
        reg [2:0] pri_req;
38
 
38
 
39
 
39
 
-
 
40
        wire [2:0] enareq;
-
 
41
 
40
 
42
 
41
 
43
 
42
        // M1 signal beginning
44
        // M1 signal beginning
43
        always @(posedge clk)
45
        always @(posedge clk)
44
                {m1_rr, m1_r} <= {m1_r, m1_n};
46
                {m1_rr, m1_r} <= {m1_r, m1_n};
Line 88... Line 90...
88
        // readback requests
90
        // readback requests
89
        assign req_rd = { 5'd0, req[2:0] };
91
        assign req_rd = { 5'd0, req[2:0] };
90
 
92
 
91
 
93
 
92
 
94
 
-
 
95
        assign enareq = req & ena;
-
 
96
 
-
 
97
 
93
        // make prioritized request position
98
        // make prioritized request position
94
        always @(posedge clk)
99
        always @(posedge clk)
95
        if( m1_beg )
100
        if( m1_beg )
96
        begin
101
        begin
97
                pri_req[0] <=  req[0] ;
102
                pri_req[0] <=  enareq[0] ;
98
                pri_req[1] <= !req[0] &&  req[1] ;
103
                pri_req[1] <= !enareq[0] &&  enareq[1] ;
99
                pri_req[2] <= !req[0] && !req[1] && req[2];
104
                pri_req[2] <= !enareq[0] && !enareq[1] && enareq[2];
100
        end
105
        end
101
        //
106
        //
102
        assign int_vector = { 1'b1, ~pri_req[2], ~pri_req[1] }; // for 3 requests only
107
        assign int_vector = { 1'b1, ~pri_req[2], ~pri_req[1] }; // for 3 requests only
103
 
108
 
104
 
109
 
105
        // gen interrupt
110
        // gen interrupt
106
        always @(posedge clk)
111
        always @(posedge clk)
107
                int_n <= !( req & ena );
112
                int_n <= !enareq;
108
 
113
 
109
 
114
 
110
endmodule
115
endmodule
111
 
116