We are developing an ARMv8 processor based SoC which doesn't have ethernet IP inside. Now it's in FPGA form.

Currently I'm using SD card interface to load Linux and file system. But during the development, it would be convenient to have a network interface. For external interface, the final SoC will have some GPIO pins.

Is there any well known method of connecting Ethernet chip to those GPIO pins to use Ethernet network? If it is possible I could mount a network file system and let the software people use the environment.

  • \$\begingroup\$ What's the FPGA platform, and if applicable, the FPGA board you're developing this one? This makes a difference, because typcially, you get Ethernet MAC IP that you can directly wire up to a set of GPIO pads to connect to a PHY IC, from the FPGA vendor – typically even for free (at least for "old" ethernet standards like fast and gigabit ethernet and the RMII and RGMII interface standards) \$\endgroup\$ Jan 18, 2023 at 8:54
  • \$\begingroup\$ We are using proFPGA board, but we want to keep the logic inside the FPGA as exactly the same to the final SOC as possible. \$\endgroup\$
    – Chan Kim
    Jan 18, 2023 at 9:57
  • 1
    \$\begingroup\$ Lantronix or Moxa Serial-Ethernet module? Or an ESP8266 WiFi-Serial module? \$\endgroup\$
    – tomnexus
    Jan 18, 2023 at 15:25

2 Answers 2


RMII or RGMII are standard interfaces to PHY devices. Microchip and others offer these PHYs. You should be able to source appropriate AXI or AHB/APB MAC IP blocks for your FPGA to support them. (You will also need the MII interface for PHY control.)

SDIO is a possibility, but is more hassle than RMII/RGMII with fewer PHY choices.

SPI is another option, but slower.

  • 1
    \$\begingroup\$ Hi, having RMII or RGMII in our SoC means we have the MAC and high level circuit inside our SoC, doesn't it? We cannot include Ethernet circuits inside our SoC. We have SD card interface (4 line with clock and command) but I'm not sure it is the same as what's called SDIO. Having said it, if we had SDIO, maybe we could just connect the Ethernet card which has SDIO interface. and yes we have 3 SPI (now all for NOR flash) but could use one for Ethernet maybe. I think but R(G)MII is not an option in our case. \$\endgroup\$
    – Chan Kim
    Jan 18, 2023 at 9:36
  • \$\begingroup\$ @ChanKim why can't you have a MAC inside your SoC? What do you think would be better than that? The MAC functionality has to sit somewhere, and you would need another communication controller to talk to an external MAC, which would probably be more complex, space-using and expensive than just putting the MAC inside your SoC... \$\endgroup\$ Jan 18, 2023 at 10:57
  • \$\begingroup\$ @MarcusMüller because the question is how to attach Ethernet to a microcontroller without putting an Ethernet MAC in the microcontroller... \$\endgroup\$ Jan 18, 2023 at 13:21
  • \$\begingroup\$ @user253751 I get that, but it makes little sense; there's very few buses over which you would want to attach anything "networky" that would need a smaller interface controller; as you can see in the comments to jpa's excellent answer, what you want to do instead would depend on why you are choosing to design your SoC the way you design it. So, that's why I'm asking. Does it hurt you to tell us why you don't want to have an Ethernet MAC on your SoC, specifically? Maybe we can address a few of the troubles you have! \$\endgroup\$ Jan 18, 2023 at 13:24
  • \$\begingroup\$ @MarcusMüller notice that the point is to prototype an SoC which has no built-in Ethernet but needs a connection for prototyping. Don't ask me about the time I tunneled IP in hex-encoded packets via a router's serial console port. \$\endgroup\$ Jan 18, 2023 at 13:26

Some more options, assuming you want minimal modifications and this only for development use:

  • USB port + USB to Ethernet adapter. Well supported by Linux.
  • SPI port: Linux has support for ENC424J600 chip, for which breakout boards are easy to find. The transfer rate will be limited to around 1 Mbyte/s, but probably usable for development & testing purposes.
  • USART: You can pipe network from your PC through a serial port, using pppd.
  • \$\begingroup\$ SLIP is apparently more common on microcontrollers than PPP, due to lower overhead or something. \$\endgroup\$ Jan 18, 2023 at 13:20
  • \$\begingroup\$ Uff, not sure you could get an USB 2.0 HiSpeed port smaller than a Fast Ethernet MAC; I have a rough rule of thumb of ca 600 flipflops for an ethernet MAC, and about twice as much for a barebone USB 2.0 HS controller, in my head. I think USB would make your problem harder, not easier. About the other two: agreed, SPI and UART are "basically free", but very slow. \$\endgroup\$ Jan 18, 2023 at 13:20
  • 1
    \$\begingroup\$ Yeah, USB makes sense mostly if there happens to already be USB on the SoC. \$\endgroup\$
    – jpa
    Jan 18, 2023 at 13:21
  • \$\begingroup\$ @jpa yeah, then it's a nice choice (downside: you really need a working operating system to boot before you can then use the USB network interface; simple MACs are often supported at a very early stage, even by the bootloader) \$\endgroup\$ Jan 18, 2023 at 13:22
  • \$\begingroup\$ yes, we don't have a USB port. The SoC is not for a standalone application but will be connected to another CPU turhgou PCIe, so not many interfaces. Thank you for the info and comments. \$\endgroup\$
    – Chan Kim
    Jan 18, 2023 at 14:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.