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 9

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 9 joaocarlos
/* --------------------------------------------------------------------------------
2
 This file is part of FPGA Median Filter.
3
 
4
    FPGA Median Filter is free software: you can redistribute it and/or modify
5
    it under the terms of the GNU General Public License as published by
6
    the Free Software Foundation, either version 3 of the License, or
7
    (at your option) any later version.
8
 
9
    FPGA Median Filter is distributed in the hope that it will be useful,
10
    but WITHOUT ANY WARRANTY; without even the implied warranty of
11
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
    GNU General Public License for more details.
13
 
14
    You should have received a copy of the GNU General Public License
15
    along with FPGA Median Filter.  If not, see <http://www.gnu.org/licenses/>.
16
-------------------------------------------------------------------------------- */
17
/* +----------------------------------------------------------------------------
18
   Universidade Federal da Bahia
19
  ------------------------------------------------------------------------------
20
   PROJECT: FPGA Median Filter
21
  ------------------------------------------------------------------------------
22
   FILE NAME            : pixel_network.v
23
   AUTHOR               : João Carlos Bittencourt
24
   AUTHOR'S E-MAIL      : joaocarlos@ieee.org
25
   -----------------------------------------------------------------------------
26
   RELEASE HISTORY
27
   VERSION  DATE        AUTHOR        DESCRIPTION
28
   1.0      2013-08-13  joao.nunes    initial version
29
   -----------------------------------------------------------------------------
30
   KEYWORDS: comparator, low, hight, median
31
   -----------------------------------------------------------------------------
32
   PURPOSE: Obtain the Median of a 3x3 mask.
33
   ----------------------------------------------------------------------------- */
34 2 joaocarlos
module pixel_network
35
#(
36
    parameter DATA_WIDTH = 8
37
)(
38
    input [DATA_WIDTH-1:0] c3h,
39
    input [DATA_WIDTH-1:0] c3m,
40
    input [DATA_WIDTH-1:0] c3l,
41
    input [DATA_WIDTH-1:0] c2h,
42
    input [DATA_WIDTH-1:0] c2m,
43
    input [DATA_WIDTH-1:0] c2l,
44
    input [DATA_WIDTH-1:0] c1h,
45
    input [DATA_WIDTH-1:0] c1m,
46
    input [DATA_WIDTH-1:0] c1l,
47
 
48
    output [DATA_WIDTH-1:0] median
49
);
50
 
51
    wire [DATA_WIDTH-1:0] node_u0_lo;
52
    wire [DATA_WIDTH-1:0] node_u1_hi;
53
    wire [DATA_WIDTH-1:0] node_u1_lo;
54
    wire [DATA_WIDTH-1:0] node_u2_hi;
55
    wire [DATA_WIDTH-1:0] node_u3_lo;
56
    wire [DATA_WIDTH-1:0] node_u4_hi;
57
    wire [DATA_WIDTH-1:0] node_u5_hi;
58
    wire [DATA_WIDTH-1:0] node_u6_lo;
59
    wire [DATA_WIDTH-1:0] node_u7_hi;
60
    wire [DATA_WIDTH-1:0] node_u7_lo;
61
    wire [DATA_WIDTH-1:0] node_u8_hi;
62
 
63
    node
64
    #(
65
        .DATA_WIDTH(DATA_WIDTH),
66
        .LOW_MUX(1), // disable low output
67
        .HI_MUX(0) // disable hight output
68
    ) node_u0 (
69
        .data_a(c3h),
70
        .data_b(c2h),
71
 
72
        // .data_hi(),
73
        .data_lo(node_u0_lo)
74
    );
75
 
76
    node
77
    #(
78
        .DATA_WIDTH(DATA_WIDTH),
79
        .LOW_MUX(1), // disable low output
80
        .HI_MUX(1) // disable hight output
81
    ) node_u1 (
82
        .data_a(c3m),
83
        .data_b(c2m),
84
 
85
        .data_hi(node_u1_hi),
86
        .data_lo(node_u1_lo)
87
    );
88
 
89
    node
90
    #(
91
        .DATA_WIDTH(DATA_WIDTH),
92
        .LOW_MUX(0), // disable low output
93
        .HI_MUX(1) // disable hight output
94
    ) node_u2 (
95
        .data_a(c2l),
96
        .data_b(c1l),
97
 
98
        .data_hi(node_u2_hi)
99
        // .data_lo()
100
    );
101
 
102
    node
103
    #(
104
        .DATA_WIDTH(DATA_WIDTH),
105
        .LOW_MUX(1), // disable low output
106
        .HI_MUX(0) // disable hight output
107
    ) node_u3 (
108
        .data_a(node_u0_lo),
109
        .data_b(c1h),
110
 
111
        // .data_hi(),
112
        .data_lo(node_u3_lo)
113
    );
114
    node
115
    #(
116
        .DATA_WIDTH(DATA_WIDTH),
117
        .LOW_MUX(0), // disable low output
118
        .HI_MUX(1) // disable hight output
119
    ) node_u4 (
120
        .data_a(node_u1_lo),
121
        .data_b(c1m),
122
 
123
        .data_hi(node_u4_hi)
124
        // .data_lo()
125
    );
126
    node
127
    #(
128
        .DATA_WIDTH(DATA_WIDTH),
129
        .LOW_MUX(0), // disable low output
130
        .HI_MUX(1) // disable hight output
131
    ) node_u5 (
132
        .data_a(c3l),
133
        .data_b(node_u2_hi),
134
 
135
        .data_hi(node_u5_hi)
136
        // .data_lo()
137
    );
138
 
139
    node
140
    #(
141
        .DATA_WIDTH(DATA_WIDTH),
142
        .LOW_MUX(1), // disable low output
143
        .HI_MUX(0) // disable hight output
144
    ) node_u6 (
145
        .data_a(node_u1_hi),
146
        .data_b(node_u4_hi),
147
 
148
        // .data_hi(),
149
        .data_lo(node_u6_lo)
150
    );
151
 
152
    node
153
    #(
154
        .DATA_WIDTH(DATA_WIDTH),
155
        .LOW_MUX(1), // disable low output
156
        .HI_MUX(1) // disable hight output
157
    ) node_u7 (
158
        .data_a(node_u3_lo),
159
        .data_b(node_u6_lo),
160
 
161
        .data_hi(node_u7_hi),
162
        .data_lo(node_u7_lo)
163
    );
164
 
165
    node
166
    #(
167
        .DATA_WIDTH(DATA_WIDTH),
168
        .LOW_MUX(0), // disable low output
169
        .HI_MUX(1) // disable hight output
170
    ) node_u8 (
171
        .data_a(node_u7_lo),
172
        .data_b(node_u5_hi),
173
 
174
        .data_hi(node_u8_hi)
175
        // .data_lo()
176
    );
177
 
178
    node
179
    #(
180
        .DATA_WIDTH(DATA_WIDTH),
181
        .LOW_MUX(1), // disable low output
182
        .HI_MUX(0) // disable hight output
183
    ) node_u9 (
184
        .data_a(node_u7_hi),
185
        .data_b(node_u8_hi),
186
 
187
        // .data_hi(),
188
        .data_lo(median)
189
    );
190
 
191
endmodule

powered by: WebSVN 2.1.0

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