Receiving and transmitting raw RMII buffers to/from PHY

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Receiving and transmitting raw RMII buffers to/from PHY

262 Views
robleitner
Contributor II

Hi all,

I am investigating the use of the iMX RT family to replace a legacy FPGA-based solution.

Currently we have an FDDI-based proprietary communication system that uses off the shelf 100Base-FX physical layer (100Base-FX PHY with SC-connector fiber RX/TX module). Our existing FPGA-based solution interfaces over RMII to the PHY, but everything above the physical layer is custom. The PHY handles 4b:5b, and clock+data recovery for us, and our FPGA handles the rest of the encoding/decoding.

However this FPGA is going EOL and our FPGA engineer has long since retired. We have therefore been thinking of trying to access this raw RMII data and process it myself on the ARM core(s), given that we were already looking at the RT series for embedded UI.

We have been looking through the RT 1060 and 1170 reference manuals have come up with 3 potential options, and would like to know what the NXP community / applications engineers think before we commit to laying out a basic test PCB.

  1. Connect the 100Base-FX PHY to one of the RMII interfaces and use the RCR (Receive Control Register), TCR (Transmit Control Register) and Receive and Transmit Accelerator Function Config Registers (RACC and TACC) to disable all of the MAC functions and operate use the MAC FIFOs as if we were working with normal Ethernet.
  2. Set up DMA to copy the ENET TX and RX buffers from/to somewhere else for processing and ignore the rest of the MAC.
  3. Use FlexIO to emulate RMII ourselves, which would also allow us to do some masking/sync word detection more efficiently.

I am quite unfamiliar with Ethernet above the physical layer and I am not sure that in scenario 1 whether we can sufficiently disable functionality of the MAC that the FIFO data exactly matches what is transmitted to / received from the PHY and that nothing will be padded/discarded/checksummed etc.

With scenario 2 I am still not sure if it's possible to directly access the RMII TX / RX buffers and if they are unmodified by the MAC.

I am most comfortable with the idea of using 3 because I have used FlexIO before, but it is also potentially a lot more work if we can indeed just disable / ignore the MAC, and it uses up FlexIO buffers which we also want to use for communication with another proprietary device.

Many thanks in advance

Rob

 

Tags (4)
0 Kudos
0 Replies