OpenCores
URL https://opencores.org/ocsvn/fpga-median/fpga-median/trunk

Subversion Repositories fpga-median

[/] [fpga-median/] [trunk/] [rtl/] [pixel_network.v] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 joaocarlos
// +----------------------------------------------------------------------------
2
// Universidade Federal da Bahia
3
//------------------------------------------------------------------------------
4
// PROJECT: FPGA Median Filter
5
//------------------------------------------------------------------------------
6
// FILE NAME            : pixel_network.v
7
// AUTHOR               : João Carlos Bittencourt
8
// AUTHOR'S E-MAIL      : joaocarlos@ieee.org
9
// -----------------------------------------------------------------------------
10
// RELEASE HISTORY
11
// VERSION  DATE        AUTHOR        DESCRIPTION
12
// 1.0      2013-08-13  joao.nunes    initial version
13
// -----------------------------------------------------------------------------
14
// KEYWORDS: comparator, low, hight, median
15
// -----------------------------------------------------------------------------
16
// PURPOSE: Obtain the Median of a 3x3 mask.
17
// -----------------------------------------------------------------------------
18
module pixel_network
19
#(
20
    parameter DATA_WIDTH = 8
21
)(
22
    input [DATA_WIDTH-1:0] c3h,
23
    input [DATA_WIDTH-1:0] c3m,
24
    input [DATA_WIDTH-1:0] c3l,
25
    input [DATA_WIDTH-1:0] c2h,
26
    input [DATA_WIDTH-1:0] c2m,
27
    input [DATA_WIDTH-1:0] c2l,
28
    input [DATA_WIDTH-1:0] c1h,
29
    input [DATA_WIDTH-1:0] c1m,
30
    input [DATA_WIDTH-1:0] c1l,
31
 
32
    output [DATA_WIDTH-1:0] median
33
);
34
 
35
    wire [DATA_WIDTH-1:0] node_u0_lo;
36
    wire [DATA_WIDTH-1:0] node_u1_hi;
37
    wire [DATA_WIDTH-1:0] node_u1_lo;
38
    wire [DATA_WIDTH-1:0] node_u2_hi;
39
    wire [DATA_WIDTH-1:0] node_u3_lo;
40
    wire [DATA_WIDTH-1:0] node_u4_hi;
41
    wire [DATA_WIDTH-1:0] node_u5_hi;
42
    wire [DATA_WIDTH-1:0] node_u6_lo;
43
    wire [DATA_WIDTH-1:0] node_u7_hi;
44
    wire [DATA_WIDTH-1:0] node_u7_lo;
45
    wire [DATA_WIDTH-1:0] node_u8_hi;
46
 
47
    node
48
    #(
49
        .DATA_WIDTH(DATA_WIDTH),
50
        .LOW_MUX(1), // disable low output
51
        .HI_MUX(0) // disable hight output
52
    ) node_u0 (
53
        .data_a(c3h),
54
        .data_b(c2h),
55
 
56
        // .data_hi(),
57
        .data_lo(node_u0_lo)
58
    );
59
 
60
    node
61
    #(
62
        .DATA_WIDTH(DATA_WIDTH),
63
        .LOW_MUX(1), // disable low output
64
        .HI_MUX(1) // disable hight output
65
    ) node_u1 (
66
        .data_a(c3m),
67
        .data_b(c2m),
68
 
69
        .data_hi(node_u1_hi),
70
        .data_lo(node_u1_lo)
71
    );
72
 
73
    node
74
    #(
75
        .DATA_WIDTH(DATA_WIDTH),
76
        .LOW_MUX(0), // disable low output
77
        .HI_MUX(1) // disable hight output
78
    ) node_u2 (
79
        .data_a(c2l),
80
        .data_b(c1l),
81
 
82
        .data_hi(node_u2_hi)
83
        // .data_lo()
84
    );
85
 
86
    node
87
    #(
88
        .DATA_WIDTH(DATA_WIDTH),
89
        .LOW_MUX(1), // disable low output
90
        .HI_MUX(0) // disable hight output
91
    ) node_u3 (
92
        .data_a(node_u0_lo),
93
        .data_b(c1h),
94
 
95
        // .data_hi(),
96
        .data_lo(node_u3_lo)
97
    );
98
    node
99
    #(
100
        .DATA_WIDTH(DATA_WIDTH),
101
        .LOW_MUX(0), // disable low output
102
        .HI_MUX(1) // disable hight output
103
    ) node_u4 (
104
        .data_a(node_u1_lo),
105
        .data_b(c1m),
106
 
107
        .data_hi(node_u4_hi)
108
        // .data_lo()
109
    );
110
    node
111
    #(
112
        .DATA_WIDTH(DATA_WIDTH),
113
        .LOW_MUX(0), // disable low output
114
        .HI_MUX(1) // disable hight output
115
    ) node_u5 (
116
        .data_a(c3l),
117
        .data_b(node_u2_hi),
118
 
119
        .data_hi(node_u5_hi)
120
        // .data_lo()
121
    );
122
 
123
    node
124
    #(
125
        .DATA_WIDTH(DATA_WIDTH),
126
        .LOW_MUX(1), // disable low output
127
        .HI_MUX(0) // disable hight output
128
    ) node_u6 (
129
        .data_a(node_u1_hi),
130
        .data_b(node_u4_hi),
131
 
132
        // .data_hi(),
133
        .data_lo(node_u6_lo)
134
    );
135
 
136
    node
137
    #(
138
        .DATA_WIDTH(DATA_WIDTH),
139
        .LOW_MUX(1), // disable low output
140
        .HI_MUX(1) // disable hight output
141
    ) node_u7 (
142
        .data_a(node_u3_lo),
143
        .data_b(node_u6_lo),
144
 
145
        .data_hi(node_u7_hi),
146
        .data_lo(node_u7_lo)
147
    );
148
 
149
    node
150
    #(
151
        .DATA_WIDTH(DATA_WIDTH),
152
        .LOW_MUX(0), // disable low output
153
        .HI_MUX(1) // disable hight output
154
    ) node_u8 (
155
        .data_a(node_u7_lo),
156
        .data_b(node_u5_hi),
157
 
158
        .data_hi(node_u8_hi)
159
        // .data_lo()
160
    );
161
 
162
    node
163
    #(
164
        .DATA_WIDTH(DATA_WIDTH),
165
        .LOW_MUX(1), // disable low output
166
        .HI_MUX(0) // disable hight output
167
    ) node_u9 (
168
        .data_a(node_u7_hi),
169
        .data_b(node_u8_hi),
170
 
171
        // .data_hi(),
172
        .data_lo(median)
173
    );
174
 
175
endmodule

powered by: WebSVN 2.1.0

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