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

Subversion Repositories wdsp

[/] [wdsp/] [trunk/] [rtl/] [verilog/] [minsoc/] [wb_conmax/] [tags/] [start/] [rtl/] [verilog/] [wb_conmax_pri_enc.v] - Blame information for rev 7

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 7 parrado
/////////////////////////////////////////////////////////////////////
2
////                                                             ////
3
////  WISHBONE Connection Matrix Priority Encoder                ////
4
////                                                             ////
5
////                                                             ////
6
////  Author: Rudolf Usselmann                                   ////
7
////          rudi@asics.ws                                      ////
8
////                                                             ////
9
////                                                             ////
10
////  Downloaded from: http://www.opencores.org/cores/wb_conmax/ ////
11
////                                                             ////
12
/////////////////////////////////////////////////////////////////////
13
////                                                             ////
14
//// Copyright (C) 2001 Rudolf Usselmann                         ////
15
////                    rudi@asics.ws                            ////
16
////                                                             ////
17
//// This source file may be used and distributed without        ////
18
//// restriction provided that this copyright statement is not   ////
19
//// removed from the file and that any derivative work contains ////
20
//// the original copyright notice and the associated disclaimer.////
21
////                                                             ////
22
////     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     ////
23
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   ////
24
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   ////
25
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      ////
26
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         ////
27
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    ////
28
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   ////
29
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        ////
30
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  ////
31
//// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  ////
32
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  ////
33
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         ////
34
//// POSSIBILITY OF SUCH DAMAGE.                                 ////
35
////                                                             ////
36
/////////////////////////////////////////////////////////////////////
37
 
38
//  CVS Log
39
//
40
//  $Id: wb_conmax_pri_enc.v,v 1.1.1.1 2001-10-19 11:01:41 rudi Exp $
41
//
42
//  $Date: 2001-10-19 11:01:41 $
43
//  $Revision: 1.1.1.1 $
44
//  $Author: rudi $
45
//  $Locker:  $
46
//  $State: Exp $
47
//
48
// Change History:
49
//               $Log: not supported by cvs2svn $
50
//
51
//
52
//
53
//
54
 
55
`include "wb_conmax_defines.v"
56
 
57
module wb_conmax_pri_enc(
58
                valid,
59
                pri0, pri1, pri2, pri3,
60
                pri4, pri5, pri6, pri7,
61
                pri_out
62
                );
63
 
64
////////////////////////////////////////////////////////////////////
65
//
66
// Module Parameters
67
//
68
 
69
parameter       [1:0]    pri_sel = 2'd0;
70
 
71
////////////////////////////////////////////////////////////////////
72
//
73
// Module IOs
74
//
75
 
76
input   [7:0]    valid;
77
input   [1:0]    pri0, pri1, pri2, pri3;
78
input   [1:0]    pri4, pri5, pri6, pri7;
79
output  [1:0]    pri_out;
80
 
81
////////////////////////////////////////////////////////////////////
82
//
83
// Local Wires
84
//
85
 
86
wire    [3:0]    pri0_out, pri1_out, pri2_out, pri3_out;
87
wire    [3:0]    pri4_out, pri5_out, pri6_out, pri7_out;
88
wire    [3:0]    pri_out_tmp;
89
reg     [1:0]    pri_out0, pri_out1;
90
wire    [1:0]    pri_out;
91
 
92
////////////////////////////////////////////////////////////////////
93
//
94
// Priority Decoders
95
//
96
 
97
wb_conmax_pri_dec #(pri_sel) pd0(
98
                .valid(         valid[0] ),
99
                .pri_in(        pri0            ),
100
                .pri_out(       pri0_out        )
101
                );
102
 
103
 
104
wb_conmax_pri_dec #(pri_sel) pd1(
105
                .valid(         valid[1]        ),
106
                .pri_in(        pri1            ),
107
                .pri_out(       pri1_out        )
108
                );
109
 
110
wb_conmax_pri_dec #(pri_sel) pd2(
111
                .valid(         valid[2]        ),
112
                .pri_in(        pri2            ),
113
                .pri_out(       pri2_out        )
114
                );
115
 
116
wb_conmax_pri_dec #(pri_sel) pd3(
117
                .valid(         valid[3]        ),
118
                .pri_in(        pri3            ),
119
                .pri_out(       pri3_out        )
120
                );
121
 
122
wb_conmax_pri_dec #(pri_sel) pd4(
123
                .valid(         valid[4]        ),
124
                .pri_in(        pri4            ),
125
                .pri_out(       pri4_out        )
126
                );
127
 
128
wb_conmax_pri_dec #(pri_sel) pd5(
129
                .valid(         valid[5]        ),
130
                .pri_in(        pri5            ),
131
                .pri_out(       pri5_out        )
132
                );
133
 
134
wb_conmax_pri_dec #(pri_sel) pd6(
135
                .valid(         valid[6]        ),
136
                .pri_in(        pri6            ),
137
                .pri_out(       pri6_out        )
138
                );
139
 
140
wb_conmax_pri_dec #(pri_sel) pd7(
141
                .valid(         valid[7]        ),
142
                .pri_in(        pri7            ),
143
                .pri_out(       pri7_out        )
144
                );
145
 
146
////////////////////////////////////////////////////////////////////
147
//
148
// Priority Encoding
149
//
150
 
151
assign pri_out_tmp =    pri0_out | pri1_out | pri2_out | pri3_out |
152
                        pri4_out | pri5_out | pri6_out | pri7_out;
153
 
154
// 4 Priority Levels
155
always @(pri_out_tmp)
156
        if(pri_out_tmp[3])      pri_out1 = 2'h3;
157
        else
158
        if(pri_out_tmp[2])      pri_out1 = 2'h2;
159
        else
160
        if(pri_out_tmp[1])      pri_out1 = 2'h1;
161
        else                    pri_out1 = 2'h0;
162
 
163
// 2 Priority Levels
164
always @(pri_out_tmp)
165
        if(pri_out_tmp[1])      pri_out0 = 2'h1;
166
        else                    pri_out0 = 2'h0;
167
 
168
////////////////////////////////////////////////////////////////////
169
//
170
// Final Priority Output
171
//
172
 
173
// Select configured priority
174
 
175
assign pri_out = (pri_sel==2'd0) ? 2'h0 : ( (pri_sel==2'd1) ? pri_out0 : pri_out1 );
176
 
177
endmodule
178
 
179
 

powered by: WebSVN 2.1.0

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