summaryrefslogtreecommitdiffstats
path: root/simple_gemac
diff options
context:
space:
mode:
authormatt <matt@221aa14e-8319-0410-a670-987f0aec2ac5>2009-04-01 00:41:59 +0000
committermatt <matt@221aa14e-8319-0410-a670-987f0aec2ac5>2009-04-01 00:41:59 +0000
commit6315030c94e7716bbf39a3da13d75ed27599f676 (patch)
treed300df0331354100b576ef3c82c1fa2c2839ea27 /simple_gemac
parent1d42a9f3b19b5a506bf1b16cc5079ddf6f842213 (diff)
downloaduhd-6315030c94e7716bbf39a3da13d75ed27599f676.tar.gz
uhd-6315030c94e7716bbf39a3da13d75ed27599f676.tar.bz2
uhd-6315030c94e7716bbf39a3da13d75ed27599f676.zip
checkpoint
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@10725 221aa14e-8319-0410-a670-987f0aec2ac5
Diffstat (limited to 'simple_gemac')
-rw-r--r--simple_gemac/address_filter.v34
1 files changed, 34 insertions, 0 deletions
diff --git a/simple_gemac/address_filter.v b/simple_gemac/address_filter.v
new file mode 100644
index 000000000..2d2f4df51
--- /dev/null
+++ b/simple_gemac/address_filter.v
@@ -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
+
+