summaryrefslogtreecommitdiff
path: root/usrp2/fpga/simple_gemac/flow_ctrl_tx.v
diff options
context:
space:
mode:
authormatt2009-03-31 18:03:20 +0000
committermatt2009-03-31 18:03:20 +0000
commit0933dbae83a375ea3cf99304fcb722172c7768fb (patch)
tree3be3e8f73d77226ca0334d840248d0348b17e493 /usrp2/fpga/simple_gemac/flow_ctrl_tx.v
parentd5c01c74cce7d5fdc469fee7ecc51f2c6a3837e3 (diff)
downloadgnuradio-0933dbae83a375ea3cf99304fcb722172c7768fb.tar.gz
gnuradio-0933dbae83a375ea3cf99304fcb722172c7768fb.tar.bz2
gnuradio-0933dbae83a375ea3cf99304fcb722172c7768fb.zip
we now inhibit our own sending when a received pause frame comes. _rx.v is currently only a skeleton for testing pause
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@10721 221aa14e-8319-0410-a670-987f0aec2ac5
Diffstat (limited to 'usrp2/fpga/simple_gemac/flow_ctrl_tx.v')
-rw-r--r--usrp2/fpga/simple_gemac/flow_ctrl_tx.v11
1 files changed, 7 insertions, 4 deletions
diff --git a/usrp2/fpga/simple_gemac/flow_ctrl_tx.v b/usrp2/fpga/simple_gemac/flow_ctrl_tx.v
index 9f7556de4..f80f5a76d 100644
--- a/usrp2/fpga/simple_gemac/flow_ctrl_tx.v
+++ b/usrp2/fpga/simple_gemac/flow_ctrl_tx.v
@@ -11,13 +11,16 @@ module flow_ctrl_tx
input pause_quanta_val,
// MAC_tx_ctrl
output pause_apply,
- input pause_quanta_sub);
+ input paused);
// ******************************************************************************
// Inhibit our TX from transmitting because they sent us a PAUSE frame
// ******************************************************************************
- reg [15:0] pause_quanta_counter;
+ // Pauses are in units of 512 bit times, or 64 bytes/clock cycles, and can be
+ // as big as 16 bits, so 22 bits are needed for the counter
+
+ reg [15+6:0] pause_quanta_counter;
reg pqval_d1, pqval_d2;
always @(posedge tx_clk) pqval_d1 <= pause_quanta_val;
@@ -27,8 +30,8 @@ module flow_ctrl_tx
if (rst)
pause_quanta_counter <= 0;
else if (pqval_d1 & ~pqval_d2)
- pause_quanta_counter <= pause_quanta;
- else if((pause_quanta_counter!=0) & pause_quanta_sub)
+ pause_quanta_counter <= {pause_quanta, 6'b0};
+ else if((pause_quanta_counter!=0) & paused)
pause_quanta_counter <= pause_quanta_counter - 1;
assign pause_apply = tx_pause_en & (pause_quanta_counter != 0);