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

Subversion Repositories pcie_ds_dma

[/] [pcie_ds_dma/] [trunk/] [core/] [wishbone/] [cross/] [wb_conmax_pri_enc.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dsmv
/////////////////////////////////////////////////////////////////////
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
`timescale 1ns / 10ps
61
 
62
module wb_conmax_pri_enc(
63
                valid,
64
                pri0, pri1, pri2, pri3,
65
                pri4, pri5, pri6, pri7,
66
                pri_out
67
                );
68
 
69
////////////////////////////////////////////////////////////////////
70
//
71
// Module Parameters
72
//
73
 
74
parameter       [1:0]    pri_sel = 2'd0;
75
 
76
////////////////////////////////////////////////////////////////////
77
//
78
// Module IOs
79
//
80
 
81
input   [7:0]    valid;
82
input   [1:0]    pri0, pri1, pri2, pri3;
83
input   [1:0]    pri4, pri5, pri6, pri7;
84
output  [1:0]    pri_out;
85
 
86
////////////////////////////////////////////////////////////////////
87
//
88
// Local Wires
89
//
90
 
91
wire    [3:0]    pri0_out, pri1_out, pri2_out, pri3_out;
92
wire    [3:0]    pri4_out, pri5_out, pri6_out, pri7_out;
93
wire    [3:0]    pri_out_tmp;
94
reg     [1:0]    pri_out0, pri_out1;
95
wire    [1:0]    pri_out;
96
 
97
////////////////////////////////////////////////////////////////////
98
//
99
// Priority Decoders
100
//
101
 
102
wb_conmax_pri_dec #(pri_sel) pd0(
103
                .valid(         valid[0] ),
104
                .pri_in(        pri0            ),
105
                .pri_out(       pri0_out        )
106
                );
107
 
108
 
109
wb_conmax_pri_dec #(pri_sel) pd1(
110
                .valid(         valid[1]        ),
111
                .pri_in(        pri1            ),
112
                .pri_out(       pri1_out        )
113
                );
114
 
115
wb_conmax_pri_dec #(pri_sel) pd2(
116
                .valid(         valid[2]        ),
117
                .pri_in(        pri2            ),
118
                .pri_out(       pri2_out        )
119
                );
120
 
121
wb_conmax_pri_dec #(pri_sel) pd3(
122
                .valid(         valid[3]        ),
123
                .pri_in(        pri3            ),
124
                .pri_out(       pri3_out        )
125
                );
126
 
127
wb_conmax_pri_dec #(pri_sel) pd4(
128
                .valid(         valid[4]        ),
129
                .pri_in(        pri4            ),
130
                .pri_out(       pri4_out        )
131
                );
132
 
133
wb_conmax_pri_dec #(pri_sel) pd5(
134
                .valid(         valid[5]        ),
135
                .pri_in(        pri5            ),
136
                .pri_out(       pri5_out        )
137
                );
138
 
139
wb_conmax_pri_dec #(pri_sel) pd6(
140
                .valid(         valid[6]        ),
141
                .pri_in(        pri6            ),
142
                .pri_out(       pri6_out        )
143
                );
144
 
145
wb_conmax_pri_dec #(pri_sel) pd7(
146
                .valid(         valid[7]        ),
147
                .pri_in(        pri7            ),
148
                .pri_out(       pri7_out        )
149
                );
150
 
151
////////////////////////////////////////////////////////////////////
152
//
153
// Priority Encoding
154
//
155
 
156
assign pri_out_tmp =    pri0_out | pri1_out | pri2_out | pri3_out |
157
                        pri4_out | pri5_out | pri6_out | pri7_out;
158
 
159
// 4 Priority Levels
160
always @(pri_out_tmp)
161
        if(pri_out_tmp[3])      pri_out1 = 2'h3;
162
        else
163
        if(pri_out_tmp[2])      pri_out1 = 2'h2;
164
        else
165
        if(pri_out_tmp[1])      pri_out1 = 2'h1;
166
        else                    pri_out1 = 2'h0;
167
 
168
// 2 Priority Levels
169
always @(pri_out_tmp)
170
        if(pri_out_tmp[1])      pri_out0 = 2'h1;
171
        else                    pri_out0 = 2'h0;
172
 
173
////////////////////////////////////////////////////////////////////
174
//
175
// Final Priority Output
176
//
177
 
178
// Select configured priority
179
 
180
assign pri_out = (pri_sel==2'd0) ? 2'h0 : ( (pri_sel==2'd1) ? pri_out0 : pri_out1 );
181
 
182
endmodule
183
 
184
 

powered by: WebSVN 2.1.0

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