Changes to implement the delimiter randomization: ------------------------------------------------- For all of the following changes the time index n or n-1 need to be in subscript. Provide editorial license to format the needed changes according to IEEE 802.3 style. P118, L29: Add new variable Syn[4:0] just before Sdn[3:0] as follows: Syn[4:0] The Syn[4:0] bits from the scrambler as defined in 146.3.3.2.2. P119, L9: Change DISPRES function definition: The function DISPRES returns one of the eight possible DISPRESET3 triple ternary symbols (see Table 146–2), depending on the values of Syn[4] and tx_disparity: tx_symb_triplet = tableDISPRESET3(Syn[4], tx_disparity) (with DISPRESET3 in subscript) P119, L14: Add new functions: RND_SSD4 The function RND_SSD4 takes Syn-1[4] as its argument and returns the corresponding tx_symb_triplet as well as the updated tx_disparity. (tx_symb_triplet , tx_disparity) = RND_SSD4(Syn-1[4]) The returned tx_symb_triplet corresponds to one of the two possible SSD4 triple ternary symbols (see Table 146–3), depending on the value of Syn-1[4]: tx_symb_triplet = tableSSD4(Syn-1[4]) (with SSD4 in subscript) The returned tx_disparity also depends on the value of Syn-1[4] as follows: tx_disparity = 2 if Syn-1[4] = 0 = 3 else RND_ESD4 The function RND_ESD4 takes Syn-1[4] as its argument and returns the corresponding tx_symb_triplet as well as the updated tx_disparity. (tx_symb_triplet , tx_disparity) = RND_ESD4(Syn-1[4]) The returned tx_symb_triplet corresponds to one of the two possible ESD4 triple ternary symbols (see Table 146–3), depending on the value of Syn-1[4]: tx_symb_triplet = tableESD4(Syn-1[4]) (with ESD4 in subscript) The returned tx_disparity also depends on the value of Syn-1[4] as follows: tx_disparity = 2 if Syn-1[4] = 0 = 3 else RND_ESD_ERR4 The function RND_ESD_ERR4 takes Syn-1[4] as its argument and returns the corresponding tx_symb_triplet as well as the updated tx_disparity. (tx_symb_triplet , tx_disparity) = RND_ESD_ERR4(Syn-1[4]) The returned tx_symb_triplet corresponds to one of the two possible ESD_ERR4 triple ternary symbols (see Table 146–3), depending on the value of Syn-1[4]: tx_symb_triplet = tableESD_ERR4(Syn-1[4]) (with ESD_ERR4 in subscript) The returned tx_disparity also depends on the value of Syn-1[4] as follows: tx_disparity = 2 if Syn-1[4] = 0 = 3 else P119, L47: Remove definition for constants SSD4, ESD4, ESD_ERR4, as they are replaced by the RND_SSD4, RND_ESD4 and RND_ESD_ERR4 functions. P120, L1: Figure 146-5 PCS transmit state diagram Change all three occurrances of tx_symb_triplet <= DISPRES(tx_disparity) to tx_symb_triplet <= DISPRES(Syn[4], tx_disparity) In state SSD VECTOR replace tx_disparity <= 2, tx_symb_triplet <= SSD4 by {tx_symb_triplet, tx_disparity} <= RND_SSD4(Syn-1[4]). In state ESD VECTOR replace tx_disparity <= 2, tx_symb_triplet <= ESD4 by {tx_symb_triplet, tx_disparity} <= RND_ESD4(Syn-1[4]). In state ERR VECTOR replace tx_disparity <= 2, tx_symb_triplet <= ESD_ERR4 by {tx_symb_triplet, tx_disparity} <= RND_ESD_ERR4(Syn-1[4]). P122, L22: Replace the text in 146.3.3.2.2 by the following text: PCS Transmit encoding rules are based on the generation, at time n, of the five bits Syn[4:0]. The four bits Syn[3:0] are used for de-correlating the MII data word TXD<3:0> during data transmission and for generating the idle symbols. The bit Syn[4] is used to randomize the frame delimiters. These five bits are generated as described below, using the auxiliary generating polynomial, g(x) defined in Equation (146–3): g(x) = x3 ^ x8 (146–3) The five bits Syn[4:0] shall be generated using the bit Scrn[0] and g(x) as in the following equations: Syn[0] = Scrn[0] Syn[1] = g(Scrn[0]) = Scrn[3] ^ Scrn[8] Syn[2] = g2(Scrn[0]) = Scrn[6] ^ Scrn[16] Syn[3] = g3(Scrn[0]) = Scrn[9] ^ Scrn[14] ^ Scrn[19] ^ Scrn[24] Syn[4] = g4(Scrn[0]) = Scrn[12] ^ Scrn[32] By construction, the five bits Syn[4:0] are derived from elements of the same maximum-length shift register sequence of length 2^33–1 as Scrn[0], but shifted in time by varying delays. The associated delays are all large and different so that there is no apparent correlation among the bits. P123, L27: Replace the text of the third and fourth paragraph of 146.3.3.2.4 by the following text: The DISPRESET3 triplet, together with the following fourth symbol group, shall be used to bring back the running disparity to a defined value of either 2 or 3, depending on the value of the bit Syn[4] from the scrambler. The coding shown in Table 146-2 shall be used for the DISPRESET3 symbol triplet. The fourth symbol group (SSD4/ESD4/ESD_ERR4) shall be encoded as shown in Table 146–3. P124, L35: Replace Table 146-2 with the following table: !----------------------------------------------------------------------------! ! DISPRESET3 ! Disparity = 1 ! Disparity = 2 ! Disparity = 3 ! Disparity = 4 ! !----------------------------------------------------------------------------! ! Syn[4] = 0 ! (-1, 0, 1) ! (-1, 0, 0) ! (-1, 0, -1) ! (-1, -1, -1) ! !----------------------------------------------------------------------------! ! Syn[4] = 1 ! (1, 1, 1) ! (1, 0, 1) ! (1, 0, 0) ! (1, 0, -1) ! !----------------------------------------------------------------------------! P124, L54: Replace Table 146-3 with the following table: !-----------!---------------! ! Delimiter ! (TAn,TBn,TCn) ! !--------------!-----------!---------------! ! ! SSD4 ! (1, 1, -1) ! ! Syn-1[4] = 0 ! ESD4 ! (1, -1, 1) ! ! ! ESD_ERR4 ! (-1, 1, 1) ! !--------------!-----------!---------------! ! ! SSD4 ! (-1, -1, 1) ! ! Syn-1[4] = 1 ! ESD4 ! (-1, 1, -1) ! ! ! ESD_ERR4 ! (1, -1, -1) ! !--------------!-----------!---------------! P126, L52: Modify the definition of valid_dispreset function in the following way: valid_dispreset Determines if the rx_symb_triplet is one of the DISPRESET3 triplets as specified in 146.3.3.2.4. It returns a Boolean value indicating whether or not one of the eight possible DISPRESET3 triplets has been received. P127, L3: Add the following new functions: valid_ssd4 Determines if the rx_symb_triplet is one of the SSD4 triplets as specified in 146.3.3.2.4. It returns a Boolean value indicating whether or not one of the two possible SSD4 triplets has been received. valid_esd4 Determines if the rx_symb_triplet is one of the ESD4 triplets as specified in 146.3.3.2.4. It returns a Boolean value indicating whether or not one of the two possible ESD4 triplets has been received. valid_esd_err4 Determines if the rx_symb_triplet is one of the ESD_ERR4 triplets as specified in 146.3.3.2.4. It returns a Boolean value indicating whether or not one of the two possible ESD_ERR4 triplets has been received. P127, L21: Add the following new function: RESET_DISP This function takes as its argument the value of Rxn, corresponding to a valid SSD4 triplet, and returns the updated rx_disparity as follows: rx_disparity = 2 if Rxn = (1, 1, -1) = 3 else P127, L31: Add a new Clause 146.3.4.1.4 Constants Under this new Clause add: COMMA A vector of three ternary symbols in the first or second code-group of any delimiter as specified in 146.3.3.2.4. P128, L1: Apply the following changes to Figure 146-8 PCS receive state diagram (part a) P128, L32: Replace (!valid_dispreset) by (!valid_dispreset(Rxn)) P128, L32: Replace (valid_dispreset) by valid_dispreset(Rxn) P128, L27: Replace rx_disparity <= 2 by rx_disparity <= RESET_DISP(Rxn-4) (see comment i-318 changing index n-5 to index n-4) P128, L38: Replace (Rxn = SSD4) by valid_ssd4(Rxn) P128, L39: Replace (Rxn != SSD4) by (!valid_ssd4(Rxn)) P128, L46: Replace DECODE(Rxn–5, rx_disparity) by {RXD[3:0], rx_disparity} = DECODE(Rxn-4, rx_disparity) (see comment i-318 changing index n-5 to index n-4) P129, L1: Apply the following changes to Figure 146-9 PCS receive state diagram (part b) In Figure 146-9 replace all occurrances of DECODE(Rxn–5, rx_disparity) by {RXD[3:0], rx_disparity} = DECODE(Rxn-4, rx_disparity) (see comment i-318 changing index n-5 to index n-4) P129, L23: Replace (valid_dispreset) by valid_dispreset(Rxn) P129, L23: Replace (!valid_dispreset) by (!valid_dispreset(Rxn)) P129, L33: Replace (Rxn != ESD4) by (!valid_esd4(Rxn)) P129, L34: Replace (Rxn != ESD_ERR4) by (!valid_esd_err4(Rxn)) P129, L35: Replace (Rxn = ESD4) by valid_esd4(Rxn) P129, L42: Replace (Rxn = ESD_ERR4) by valid_esd_err4(Rxn)