This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DP83867E: trying to use BIST with digital internal loopback and then also with external loopback

Part Number: DP83867E

I'm trying to utilize the BIST engine in the DP83867E to generate and analyze the data packets for digital internal loopback (at 1000Base-T) and in a second step with external loopback (at 100Base-T, with loopback plug on RJ45 connector). I think I have the DP83867E set up correctly, but it doesn't seem like the BIST gets kicked off. Am I missing a step? Or am I using some wrong register values?

I have read the LOOPCR and it's value is , so I presume I don't need to actually write that register.

For the internal loopback I'm doing this (Digital loopback for 1000BASE-T operation in RGMII mode, with BIST enabled)

1) Write register 0x001F to 0x8000 to apply a software reset.
2) Write register 0x0000 to 0x4140 to force 1000BASE-T operation.
3) Write register 0x0032 to 0x00D3 to enable RGMII: === NOTE: This requires REGCR/ADDAR access (extended register space)
   a) Write register 0x000D to 0x001F to prepare to load RegAdd 32 into ADDAR
   b) Write register 0x000E to 0x0032 to point to RegAdd 32
   c) Write register 0x000D to 0x401F to prepare to load data for RegAdd 32 into ADDAR
   d) Write register 0x000E to 0x00D3 to enable RGMII
4) Write register 0x0016 to 0xD004 to
   - enable continuous mode,
   - enable PRBS packet generator,
   - enable Packet BIST, and
   - enable digital loopback.
5) Write register 0x001F to 0x4000 to apply a software restart.
6) Check PHYSTS (0x0011) and STS2 register (0x0017h) for BIST status === PHYSTS = 0b1010110000000010, STS2 = 0b0000001001000000
7) Check BICSRx register (0x0071, 0x0072) for number of error bytes === BICSR1 = 0b0000000000000000, BICSR2 = 0b0000000000000000

For the external loopback I'm doing this (External loopback for 100BASE-T operation in RGMII mode, with BIST enabled):

1. Write register 0x001F to 0x8000 to apply a software reset.
2. Write register 0x0000 to 0x6100 to force 100BASE-T operation.
3. Write register 0x0032 to 0x00D3 to enable RGMII
4. Write register 0x0016 to 0xF010 to
   - enable continuous mode,
   - enable PRBS packet generator,
   - set BIST packet size to 64 bytes,
   - enable Packet BIST, and
   - enable external loopback.
5. Write register 0x001F to 0x4000 to apply a software restart.
6. Check PHYSTS (0x0011) and STS2 register (0x0017h) for BIST status ==> PHYSTS = 0b0110100000000010, STS2 = 0b0000001001000000
7. Check BICSRx register (0x0071, 0x0072) for number of error bytes ==> BICSR1 = 0b0000000000000000, BICSR2 = 0b0000000000000000

In both cases I get an indication in the STS2 register that the Packet Generator is busy, PRBS checker has not lost lock, but also PRBS checker is not locked (seems confusing / counter-intuitive). The BICSR2 doesn't indicate any errors, but I think the BIST hasn't actually run properly yet.

Any suggestions?

  • Hi Heiko,

    We are taking a look at this and will get back to you by Wednesday, next week.

    -Regards

    Aniruddha

  • Hi Heiko,

    Whenever loopback are being used, the PRBS generator on the same device should not be activated. PRBS generator is used to send random data out on the cable. Another general recommendation is to not force 1Gbps operation. For link up at 1Gbps, forcing the speed cannot be use. Forcing speed for 100Mbps and 10Mbps is ok.

    For internal loopback, you can activate just the desired internal loopback with register 0x16 without activating the PRBS generator. In this mode, you will need to send data from the MAC to the PHY. The internal loopback will receive data from the MAC and then loop it back to the MAC itself. In this case, the PRBS sync bis not useful as the PRBS is not active.

    For external loopback test, you will need two devices connected to each other via Cat5e cable. Both devices will need to be configured for the desired speed of operation. Then one device will be used as PRBS generator and the other device will we used as Loopback device. The PRBS generator will send random data out on the Cat5e cable to the Loopback device, which will send the data back to the generator. You can then check the PRBS sync and CRC error counters on the PRBS generator. 

    -Regards

    Aniruddha