Changeset 9103
- Timestamp:
- 07/31/08 20:33:30
- Files:
-
- usrp2/trunk/fpga/serdes/serdes_fc_tx.v (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
usrp2/trunk/fpga/serdes/serdes_fc_tx.v
r8007 r9103 3 3 module serdes_fc_tx 4 4 (input clk, input rst, 5 input ser_rx_clk, inputxon_rcvd, input xoff_rcvd, output reg inhibit_tx);5 input xon_rcvd, input xoff_rcvd, output reg inhibit_tx); 6 6 7 7 // XOFF means stop sending, XON means start sending 8 9 reg xon_d1, xon_d2, xoff_d1, xoff_d2; 10 reg xon_ret, xon_ret_d1, xoff_ret, xoff_ret_d1; 8 // clock domain stuff happens elsewhere, everything here is on main clk 11 9 12 // Make delayed copies in its own clock domain13 always @(posedge ser_rx_clk)14 begin15 xon_d1 <= xon_rcvd;16 xon_d2 <= xon_d1;17 xoff_d1 <= xoff_rcvd;18 xoff_d2 <= xoff_d1;19 end20 21 // Transfer copies to our clock domain, flop once for metastability purposes22 always @(posedge clk)23 begin24 xon_ret <= xon_rcvd | xon_d1 | xon_d2;25 xoff_ret <= xoff_rcvd | xoff_d1 | xoff_d2;26 xon_ret_d1 <= xon_ret;27 xoff_ret_d1 <= xoff_ret;28 end29 30 10 reg [15:0] state; 31 11 always @(posedge clk) 32 12 if(rst) 33 13 state <= 0; 34 else if(xoff_r et_d1)14 else if(xoff_rcvd) 35 15 state <= 255; 36 else if(xon_r et_d1)16 else if(xon_rcvd) 37 17 state <= 0; 38 18 else if(state !=0)
