updated wiki url
[debian/gnuradio] / usrp2 / fpga / simple_gemac / address_filter.v
1
2
3 module address_filter
4   (input clk,
5    input reset,
6    input go,
7    input [7:0] data,
8    input [47:0] address,
9    output match,
10    output done);
11
12    reg [2:0] af_state;
13
14    always @(posedge clk)
15      if(reset)
16        af_state     <= 0;
17      else
18        if(go)
19          af_state <= (data == address[47:40]) ? 1 : 7;
20        else
21          case(af_state)
22            1 : af_state <= (data == address[39:32]) ? 2 : 7;
23            2 : af_state <= (data == address[31:24]) ? 3 : 7;
24            3 : af_state <= (data == address[23:16]) ? 4 : 7;
25            4 : af_state <= (data == address[15:8])  ? 5 : 7;
26            5 : af_state <= (data == address[7:0]) ? 6 : 7;
27            6, 7 : af_state <= 0;
28          endcase // case (af_state)
29
30    assign match  = (af_state==6);
31    assign done   = (af_state==6)|(af_state==7);
32    
33 endmodule // address_filter
34
35