diff options
author | matt <matt@221aa14e-8319-0410-a670-987f0aec2ac5> | 2009-03-31 18:03:20 +0000 |
---|---|---|
committer | matt <matt@221aa14e-8319-0410-a670-987f0aec2ac5> | 2009-03-31 18:03:20 +0000 |
commit | 1d42a9f3b19b5a506bf1b16cc5079ddf6f842213 (patch) | |
tree | 6f4372579c1853f29ad493b4773f579796edebb0 /simple_gemac/flow_ctrl_tx.v | |
parent | 541facc9474da424ad8e36e407a2a55301c52b77 (diff) | |
download | uhd-1d42a9f3b19b5a506bf1b16cc5079ddf6f842213.tar.gz uhd-1d42a9f3b19b5a506bf1b16cc5079ddf6f842213.tar.bz2 uhd-1d42a9f3b19b5a506bf1b16cc5079ddf6f842213.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 'simple_gemac/flow_ctrl_tx.v')
-rw-r--r-- | simple_gemac/flow_ctrl_tx.v | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/simple_gemac/flow_ctrl_tx.v b/simple_gemac/flow_ctrl_tx.v index 9f7556de4..f80f5a76d 100644 --- a/simple_gemac/flow_ctrl_tx.v +++ b/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);
|