diff options
| author | matt <matt@221aa14e-8319-0410-a670-987f0aec2ac5> | 2009-04-02 23:35:12 +0000 | 
|---|---|---|
| committer | matt <matt@221aa14e-8319-0410-a670-987f0aec2ac5> | 2009-04-02 23:35:12 +0000 | 
| commit | 054841c4bc1f596d646733613766993f56be1ad6 (patch) | |
| tree | f9f405808036cc5008c977fa88b905ee5585e994 | |
| parent | f67baf74dbbba737b04eeae8fd48201008805894 (diff) | |
| download | uhd-054841c4bc1f596d646733613766993f56be1ad6.tar.gz uhd-054841c4bc1f596d646733613766993f56be1ad6.tar.bz2 uhd-054841c4bc1f596d646733613766993f56be1ad6.zip | |
Properly signals an error and drops the remainder of the packet if there is an overrun.  ERROR_2 changed to ERROR2.
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@10751 221aa14e-8319-0410-a670-987f0aec2ac5
| -rw-r--r-- | simple_gemac/rxmac_to_ll8.v | 18 | 
1 files changed, 12 insertions, 6 deletions
| diff --git a/simple_gemac/rxmac_to_ll8.v b/simple_gemac/rxmac_to_ll8.v index 80a489914..d4015716e 100644 --- a/simple_gemac/rxmac_to_ll8.v +++ b/simple_gemac/rxmac_to_ll8.v @@ -7,16 +7,19 @@ module rxmac_to_ll8     reg [2:0] xfer_state;     assign ll_data 	    = rx_data; -   assign ll_src_rdy 	    = rx_valid | (xfer_state == XFER_ERROR); +   assign ll_src_rdy 	    = ((rx_valid & (xfer_state != XFER_OVERRUN2) ) +			       | (xfer_state == XFER_ERROR)  +			       | (xfer_state == XFER_OVERRUN));     assign ll_sof 	    = ((xfer_state==XFER_IDLE)|(xfer_state==XFER_ERROR)|(xfer_state==XFER_OVERRUN));     assign ll_eof 	    = (rx_ack | (xfer_state==XFER_ERROR) | (xfer_state==XFER_OVERRUN)); -   assign ll_error 	    = (xfer_state == XFER_ERROR); +   assign ll_error 	    = (xfer_state == XFER_ERROR)|(xfer_state==XFER_OVERRUN);     localparam XFER_IDLE     = 0;     localparam XFER_ACTIVE   = 1;     localparam XFER_ERROR    = 2; -   localparam XFER_ERROR_2  = 3; +   localparam XFER_ERROR2   = 3;     localparam XFER_OVERRUN  = 4; +   localparam XFER_OVERRUN2 = 5;     always @(posedge clk)       if(reset | clear) @@ -35,12 +38,15 @@ module rxmac_to_ll8  	     xfer_state <= XFER_OVERRUN;  	 XFER_ERROR :  	   if(ll_dst_rdy) -	     xfer_state <= XFER_ERROR_2; -	 XFER_ERROR_2 : +	     xfer_state <= XFER_ERROR2; +	 XFER_ERROR2 :  	   if(~rx_error)  	     xfer_state <= XFER_IDLE;  	 XFER_OVERRUN : -	   if(ll_dst_rdy & ~rx_valid) +	   if(ll_dst_rdy) +	     xfer_state <= XFER_OVERRUN2; +	 XFER_OVERRUN2 : +	   if(~rx_valid)  	     xfer_state <= XFER_IDLE;         endcase // case (xfer_state) | 
