checkpoint
authormatt <matt@221aa14e-8319-0410-a670-987f0aec2ac5>
Wed, 1 Apr 2009 00:41:59 +0000 (00:41 +0000)
committermatt <matt@221aa14e-8319-0410-a670-987f0aec2ac5>
Wed, 1 Apr 2009 00:41:59 +0000 (00:41 +0000)
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@10725 221aa14e-8319-0410-a670-987f0aec2ac5

usrp2/fpga/simple_gemac/address_filter.v [new file with mode: 0644]

diff --git a/usrp2/fpga/simple_gemac/address_filter.v b/usrp2/fpga/simple_gemac/address_filter.v
new file mode 100644 (file)
index 0000000..2d2f4df
--- /dev/null
@@ -0,0 +1,34 @@
+
+
+module address_filter
+  (input clk,
+   input reset,
+   input go,
+   input [7:0] data,
+   input [47:0] address,
+   output match,
+   output done);
+
+   reg [2:0] af_state;
+
+   always @(posedge clk)
+     if(reset)
+       af_state     <= 0;
+     else
+       if(go)
+        af_state <= (data == address[47:40]) ? 1 : 7;
+       else
+        case(af_state)
+          1 : af_state <= (data == address[39:32]) ? 2 : 7;
+          2 : af_state <= (data == address[31:24]) ? 3 : 7;
+          3 : af_state <= (data == address[23:16]) ? 4 : 7;
+          4 : af_state <= (data == address[15:8])  ? 5 : 7;
+          5 : af_state <= (data == address[7:0]) ? 6 : 7;
+        endcase // case (af_state)
+
+   assign match  = (af_state==6);
+   assign done          = (af_state==6)|(af_state==7);
+   
+endmodule // address_filter
+
+