260 likes | 348 Views
Details of PHY OAM in 1000BASE-X R0-4 June25-2002 Ben Brown. TX Requirements. Pipeline for “OAM Preamble Only” insertion Pipeline depth is 20 octets Alignment to TX_EVEN at SOP Preamble replacement with “OAM Preamble Normal Frame” Idle replacement with “OAM Preamble Only”.
E N D
Details of PHY OAM in 1000BASE-XR0-4June25-2002Ben Brown IEEE802.3ah EFM Task Force June 2002
TX Requirements • Pipeline for “OAM Preamble Only” insertion • Pipeline depth is 20 octets • Alignment to TX_EVEN at SOP • Preamble replacement with “OAM Preamble Normal Frame” • Idle replacement with “OAM Preamble Only” IEEE802.3ah EFM Task Force June 2002
Alignment to TX_EVEN at SOP • Use a Deficit Idle Count concept as in 46.3.1.4, option 2, with the modification of limiting the maximum value to 1 rather than 3. • First byte of packet (preamble) is written to pipeline when TX_EVEN=FALSE. IEEE802.3ah EFM Task Force June 2002
TX Pipeline Structure IPG GMII 0 1 GTX_CLK GTX_CLK TA_HOLD TX OAM State Machine 1 0 GTX_CLK 20-OCTET PIPELINE TX ORDERED_SET STATE MACHINE IEEE802.3ah EFM Task Force June 2002
TX OAM State Machine Features • Monitor the GMII for SOP (Rising edge of TX_EN) • Monitor alignment of SOP and TX_EVEN to control the Deficit Idle Count • Control the pipeline input and DIC octet • Monitor the contents of the pipeline • Monitor the request to insert an OAM Message • Replace Preamble or IPG with OAM Message • Forward PHY ID in EPON mode • Control data to TX Ordered_Set state machine IEEE802.3ah EFM Task Force June 2002
Preamble replacement with“OAM Preamble Normal Frame” • Replace the 8 bytes of Preamble at the end of the pipeline under the following conditions: • An OAM Message is available • The entire pipeline is full of DATA • The PCS transmit ordered_set state machine is in the XMIT_DATA state • Forward PHY ID in EPON mode IEEE802.3ah EFM Task Force June 2002
Idle replacement with“OAM Preamble Only” • Replace the 8 bytes of IPG at the end of the pipeline under the following conditions: • An OAM Message is available • The entire pipeline is full of IPG • The PCS transmit ordered_set state machine is in the XMIT_DATA state • The last 12 bytes out of the pipeline were IPG • TX_EVEN = FALSE IEEE802.3ah EFM Task Force June 2002
RX Requirements • Pipeline for “OAM Preamble Only” removal • Pipeline depth is 2 bytes • “OAM Preamble Normal Frame” replacement with Preamble • “OAM Preamble Only” replacement with Idle • Forward of errors • Set RX_ER on SFD if CRC8 is bad in EPON mode only IEEE802.3ah EFM Task Force June 2002
RX Pipeline Structure GMII RX_CLK RX_CLK 2-OCTET PIPELINE RX OAM State Machine RX STATE MACHINE IEEE802.3ah EFM Task Force June 2002
RX OAM State Machine Features • Monitor the contents of the pipeline • Monitor the OAM byte for Preamble/Frame type • Replace “OAM Preamble Only” with IDLE • Replace “OAM Preamble Normal Frame” with Preamble/SFD • Forward PHY ID in EPON mode • Extract OAM Message • Force RX_ER on SFD for bad CRC8 in EPON mode only • Control data to GMII IEEE802.3ah EFM Task Force June 2002
State Machines,Variable & Functions IEEE802.3ah EFM Task Force June 2002
TX_EVEN AlignmentState Machine power_on=TRUE + mr_main_reset=FALSE Note: All transitions synchronous to GTX_CLK IDLE_0 IDLE_1 ta_hold <= normal inter_frame tpi <= {TX_EN,TXD} ta_hold <= {TX_EN,TXD} tpi <= ta_hold TX_EN=TRUE * tx_even=TRUE TX_EN=FALSE TX_EN=FALSE TX_EN=TRUE * tx_even=TRUE TX_EN=TRUE * tx_even=FALSE TX_EN=TRUE * tx_even=FALSE DATA_0 DATA_1 ta_hold <= normal inter_frame tpi <= {TX_EN,TXD} ta_hold <= {TX_EN,TXD} tpi <= ta_hold TX_EN=FALSE TX_EN=FALSE IEEE802.3ah EFM Task Force June 2002
TX OAM Variables • ta_hold - Transmit Alignment Hold register • A 9-bit vector for storing TX_EN & TXD<7:0> when aligning data to TX_EVEN. • Needs to reflect that this is a storage element • tpi - TX Pipeline Input • A 9-bit vector used as input to the TX OAM pipeline. It either reflects the current contents of the TX_EN & TXD<7:0> or the contents of the TA_HOLD register. • Needs to reflect that this is NOT a storage element IEEE802.3ah EFM Task Force June 2002
TX OAM State Machine(page 1) power_on=TRUE + mr_main_reset=FALSE (from CRC state on next page) Note: All transitions synchronous to GTX_CLK IDLE tsmi <= tpipe(20) tx_msg_rdy=TRUE * ((PIPE_ALL_DATA=TRUE * TOS=XMIT_DATA) + ( PIPE_ALL_IDLE=TRUE * PIPE_LAST_12_IDLE=TRUE * tx_even=FALSE)) ELSE SOP tsmi <= tpipe(20) UCT OAM tsmi <= tx_msg(OAM) UCT RSVD1 tsmi <= tx_msg(RSVD1) UCT (to next page) IEEE802.3ah EFM Task Force June 2002
TX OAM State Machine(page 2) RSVD2 tsmi <= tx_msg(RSVD2) UCT RSVD3 tsmi <= tx_msg(RSVD3) p2mp_mode=FALSE + tpipe(20)=IDLE p2mp_mode=TRUE *tpipe(20)=DATA RSVD4 PHYID1 tsmi <= tx_msg(RSVD4) tsmi <= tpipe(20) UCT UCT RSVD5 PHYID2 tsmi <= tx_msg(RSVD5) tsmi <= tpipe(20) UCT UCT CRC tsmi <= tx_msg(CRC) UCT (to IDLE state on previous page) IEEE802.3ah EFM Task Force June 2002
TX OAM Variables • tsmi - Transmit Ordered_Set State Machine Input • A 9-bit vector used as input to the transmit ordered_set state machine. This vector is only used when Transmit OAM is enabled. Otherwise, the GMII is the direct input to the state machine. • Needs to reflect that this is NOT a storage element • tpipe(#) - TX Pipeline Stage # • A 9-bit vector that reflects the contents of a particular stage of the transmit pipeline. #=1..20 where 1 is the first stage of the transmit pipeline and 20 is the last. When enabled and on every GTX_CLK rising edge, tpipe(1) takes the value tpi, tpipe(n+1) takes the value tpipe(n) for all n>1. The reset value of tpipe(#) is normal inter_frame. IEEE802.3ah EFM Task Force June 2002
TX OAM Variables • tx_msg(x) - TX OAM Message • x consists of OAM, RSVD1, RSVD2, RSVD3, RSVD4, RSVD5, CRC • Contains the TX OAM message to be inserted in the place of a packet’s preamble or inserted into the IDLE stream. • OAM - OAM byte from (insert reference here) • RSVDx - RSVD bytes from (insert reference here) • CRC - CRC8 of TX OAM message from (insert reference here) IEEE802.3ah EFM Task Force June 2002
TX OAM Functions • PIPE_ALL_DATA • This is an indication that all 20 stages of the TX OAM pipeline contain DATA octets. That is, for each stage, the TX_EN bit is TRUE. • PIPE_ALL_IDLE • This is an indication that all 20 stages of the TX OAM pipeline contain IDLE octets. That is, for each stage, the TX_EN bit is FALSE. • PIPE_LAST_12_IDLE • This is an indication that the last 12 octets transferred from the TX OAM pipeline to the transmit ordered_set state machine were IDLE octets. • tx_msg_rdy • A boolean indicating that a TX OAM message is available and ready to be inserted by the TX OAM state machine. IEEE802.3ah EFM Task Force June 2002
RX OAM State Machine(page 1) power_on=TRUE + mr_main_reset=FALSE Note: All transitions synchronous to RX_CLK (from states on next pages) RX_EN=FALSE RX_EN=FALSE IDLE rpipe(2) <= rpipe(1) rpipe(1) <= rsmo RX_EN=TRUE SOP rpipe(2) <= rpipe(1) rpipe(1) <= rsmo ELSE RX_EN=TRUE * RXD<7:6>=00 RX_EN=TRUE * RXD<7:6>=10 OAM_NF OAM_PO rpipe(2) <= rpipe(1) rpipe(1) <= normal preamble rx_msg(OAM) <= RXD rpipe(2) <= normal inter_frame rpipe(1) <= normal inter_frame rx_msg(OAM) <= RXD RX_EN=TRUE IEEE802.3ah EFM Task Force June 2002
RX OAM State Machine(page 2) RSVD3 RSVD1 rpipe(2) <= rpipe(1) if (rx_msg(OAM)<7:6>=10) rpipe(1) <= normal inter_frame else rpipe(1) <= normal preamble rx_msg(RSVD3) <= RXD rpipe(2) <= rpipe(1) if (rx_msg(OAM)<7:6>=10) rpipe(1) <= normal inter_frame else rpipe(1) <= normal preamble rx_msg(RSVD1) <= RXD RX_EN=TRUE RX_EN=FALSE RX_EN=FALSE RX_EN=TRUE PHYID1 RSVD2 rpipe(2) <= rpipe(1) if (rx_msg(OAM)<7:6>=10) rpipe(1) <= normal inter_frame else if (p2mp_mode) rpipe(1) <= rsmo else rpipe(1) <= normal preamble rx_msg(RSVD4) <= RXD rpipe(2) <= rpipe(1) if (rx_msg(OAM)<7:6>=10) rpipe(1) <= normal inter_frame else rpipe(1) <= normal preamble rx_msg(RSVD2) <= RXD RX_EN=FALSE RX_EN=TRUE RX_EN=TRUE RX_EN=FALSE IEEE802.3ah EFM Task Force June 2002
RX OAM State Machine(page 3) PHYID2 CRC rpipe(2) <= rpipe(1) if (rx_msg(OAM)<7:6>=10) rpipe(1) <= normal inter_frame else if (p2mp_mode) rpipe(1) <= rsmo else rpipe(1) <= normal preamble rx_msg(RSVD5) <= RXD rpipe(2) <= rpipe(1) if (rx_msg(OAM)<7:6>=10) rpipe(1) <= normal inter_frame else if (rx_msg(CRC)=RXD) rpipe(1) <= normal SFD else if (p2mp_mode) rpipe(1) <= error SFD else rpipe(1) <= normal SFD if (rx_msg(CRC)=RXD) capture_rx_msg <= TRUE RX_EN=FALSE RX_EN=TRUE UCT IEEE802.3ah EFM Task Force June 2002
RX OAM Variables • rsmo - Receive State Machine Output • The 10-bit vector output from the Receive State Machine and used by the RX OAM state machine. When Receive OAM is not enabled, rsmo is the source of RX_ER, RX_EN & RXD<7:0>. • rpipe(#) - RX Pipeline Stage # • A 10-bit vector that reflects the contents of a particular stage of the receive pipeline. #=1 & 2 where 1 is the first stage of the transmit pipeline and 2 is the last. Both stages are directly controlled by the RX OAM state machine. The reset value of rpipe(#) is normal inter_frame. • When Receive OAM is enabled, rpipe(2) is the source of RX_ER, RX_EN & RXD<7:0>. IEEE802.3ah EFM Task Force June 2002
RX OAM Variables • rx_msg(x) - RX OAM Message • x consists of OAM, RSVD1, RSVD2, RSVD3, RSVD4, RSVD5, CRC • Contains the RX OAM message to be inserted in the place of a packet’s preamble or inserted into the IDLE stream. • OAM - OAM byte from (insert reference here) • RSVDx - RSVD bytes from (insert reference here) • CRC - CRC8 of RX OAM message from (insert reference here) • The CRC parameter is expected to be continuously calculated so after all other parameters have been written, the CRC parameter can be used to determine if the received CRC is valid. • capture_rx_msg • Indication to the Message Handler that an OAM message is available in rx_msg and should be captured. IEEE802.3ah EFM Task Force June 2002
Backup Slides IEEE802.3ah EFM Task Force June 2002
PCS TX State Machine Alignment GTX_CLK TX_EN I I I P0 P1 P2 P3 P4 P5 P6 TXD tx_even K28.5 D16.2 K28.5 D16.2 S P1 P2 P3 P4 P5 tx_code-group TX_EN I I P0 P1 P2 P3 P4 P5 P6 P7 TXD tx_even K28.5 D16.2 K28.5 D16.2 S P2 P3 P4 P5 P6 tx_code-group IEEE802.3ah EFM Task Force June 2002
GMII to tx_code-group Mapping OAM Preamble Only TX_EN GMII TXD I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I TX_EN PIPELINE TXD I I I I I I I I I I I I S O D D D P P C I I I I I I I I I I I I I I tx_code-group I 2 I 2 I 2 I 2 I 2 I 2 S O D D D P P C T R I 2 I 2 I 2 I 2 I 2 S - SPD C - CRC8 O - OAM I or I2 - IDLE D - Data (Reserved) T - Terminate P - PHY ID (if used) R - Carrier_Extend IEEE802.3ah EFM Task Force June 2002