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

Subversion Repositories wdsp

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

powered by: WebSVN 2.1.0

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