diff options
author | matt | 2009-03-31 18:03:20 +0000 |
---|---|---|
committer | matt | 2009-03-31 18:03:20 +0000 |
commit | 0933dbae83a375ea3cf99304fcb722172c7768fb (patch) | |
tree | 3be3e8f73d77226ca0334d840248d0348b17e493 /usrp2/fpga/simple_gemac/flow_ctrl_tx.v | |
parent | d5c01c74cce7d5fdc469fee7ecc51f2c6a3837e3 (diff) | |
download | gnuradio-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.v | 11 |
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);
|