1 //////////////////////////////////////////////////////////////////////
\r
3 //// Broadcast_filter.v ////
\r
5 //// This file is part of the Ethernet IP core project ////
\r
6 //// http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////
\r
9 //// - Jon Gao (gaojon@yahoo.com) ////
\r
12 //////////////////////////////////////////////////////////////////////
\r
14 //// Copyright (C) 2001 Authors ////
\r
16 //// This source file may be used and distributed without ////
\r
17 //// restriction provided that this copyright statement is not ////
\r
18 //// removed from the file and that any derivative work contains ////
\r
19 //// the original copyright notice and the associated disclaimer. ////
\r
21 //// This source file is free software; you can redistribute it ////
\r
22 //// and/or modify it under the terms of the GNU Lesser General ////
\r
23 //// Public License as published by the Free Software Foundation; ////
\r
24 //// either version 2.1 of the License, or (at your option) any ////
\r
25 //// later version. ////
\r
27 //// This source is distributed in the hope that it will be ////
\r
28 //// useful, but WITHOUT ANY WARRANTY; without even the implied ////
\r
29 //// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ////
\r
30 //// PURPOSE. See the GNU Lesser General Public License for more ////
\r
33 //// You should have received a copy of the GNU Lesser General ////
\r
34 //// Public License along with this source; if not, download it ////
\r
35 //// from http://www.opencores.org/lgpl.shtml ////
\r
37 //////////////////////////////////////////////////////////////////////
\r
39 // CVS Revision History
\r
41 // $Log: Broadcast_filter.v,v $
\r
42 // Revision 1.3 2006/01/19 14:07:54 maverickist
\r
43 // verification is complete.
\r
45 // Revision 1.2 2005/12/16 06:44:16 Administrator
\r
46 // replaced tab with space.
\r
47 // passed 9.6k length frame test.
\r
49 // Revision 1.1.1.1 2005/12/13 01:51:45 Administrator
\r
53 module Broadcast_filter (
\r
60 broadcast_filter_en ,
\r
61 broadcast_bucket_depth ,
\r
62 broadcast_bucket_interval
\r
67 input broadcast_ptr ;
\r
68 output broadcast_drop ;
\r
70 input broadcast_filter_en ;
\r
71 input [15:0] broadcast_bucket_depth ;
\r
72 input [15:0] broadcast_bucket_interval ;
\r
74 //******************************************************************************
\r
76 //******************************************************************************
\r
77 reg [15:0] time_counter ;
\r
78 reg [15:0] broadcast_counter ;
\r
79 reg broadcast_drop ;
\r
80 //******************************************************************************
\r
82 //******************************************************************************
\r
83 always @ (posedge Clk or posedge Reset)
\r
86 else if (time_counter==broadcast_bucket_interval)
\r
89 time_counter <=time_counter+1;
\r
91 always @ (posedge Clk or posedge Reset)
\r
93 broadcast_counter <=0;
\r
94 else if (time_counter==broadcast_bucket_interval)
\r
95 broadcast_counter <=0;
\r
96 else if (broadcast_ptr&&broadcast_counter!=broadcast_bucket_depth)
\r
97 broadcast_counter <=broadcast_counter+1;
\r
99 always @ (posedge Clk or posedge Reset)
\r
101 broadcast_drop <=0;
\r
102 else if(broadcast_filter_en&&broadcast_counter==broadcast_bucket_depth)
\r
103 broadcast_drop <=1;
\r
105 broadcast_drop <=0;
\r