SatCat5: UART, SPI And I2C Via Ethernet With FPGA-Based Design

Arty A7-based prototype of SatCat5 with custom switch I/O board. (Credit: The Aerospace Corporation)
Arty A7-based prototype of SatCat5 with custom switch I/O board. (Credit: The Aerospace Corporation)

To the average microcontroller, Ethernet networks are quite a step up from the basic I2C, SPI and UART interfaces, requiring either a built-in Ethernet MAC or SPI-based MAC, with tedious translation between Ethernet and those other interfaces. Yet what if this translation could be done automatically and transparently?  This is what the SatCat5 FPGA-based project by [The Aerospace Corporation] aims to provide: a gateway akin to an unmanaged Ethernet switch that also supports those non-Ethernet links. Recently they answered a range of questions about the project on Hacker News.

The project name comes from the primary target audience: smallsat and cubesat developers, which is an area where being able to route more traffic over a common Ethernet-based bus is a major boon. The provided Xilinx Artix-7-based reference design (pictured) gives a good idea of how it can be used: it combines an Arty A7 development board with a custom PCB containing an Ethernet switch IC (SJA1105), TJA1100 transceiver, two RJ45 jacks and four PMOD connectors, here connected to two UARTs for bidirectional communication between them. Ethernet frame encapsulation is provided using the standard Serial Line Internet Protocol (SLIP), with more details covered in the FAQ. At a minimum an FPGA like a Lattice iCE40 is required, with an MCU capable of using the provided C++ libraries, or a custom implementation.

Thanks to [STR-Alorman] for the tip.

15 thoughts on “SatCat5: UART, SPI And I2C Via Ethernet With FPGA-Based Design

    1. The goal is I2C etc. over a common (ethernet) bus, with gigabit speed rates.
      Chances are, your uC can’t pump out data that fast – leaving bandwidth for other devices to use.

  1. Pardon my ignorance, but shouldn’t it be possible to do this without an added fpga?
    Assuming the SoC of the router itself (I’m thinking specifically of Cisco Yeti and similar ICs) has UART/I2C/etc pins, couldn’t it be used to communicate with MCUs?
    I know that would entail identifying the pin-out and some tricky soldering, but it’s not like hackaday is a stranger to reverse engineering ICs without publically available data sheets or insane soldering skills.
    Either way interesting project/article

    1. That was my immediate thought too. The main advantage to this would be encapsulation of a massive number of connections with the available bandwidth. But for single devices there’s not much point.

  2. That is not an Digilent Arty A7 FPGA board. That is a Xilinx Artix 7 FPGA based development board from Xilinx. There is a big cost and functional difference between the two. IIRC the Arty A7 100 is about $299 while the Xilinx board (pictured) is more like $1700.

    This is easily achievable with almost any processor that has a high speed interface, like USB or Ethernet and is a valuable tool for any FPGA developer to have. It can be sone significantly cheaper using something like a Teenay or PI Pico. The only real justification for doing it like this would be a completly custom rolled interface that can’t be realised with a SW and HW stack.

    I have developed similar platforms on Actel/Microsemi/Microchip and Xilinx FPGAs and use it for hardware-in-the-loop testing and vaildation.

  3. If you don’t need Video I don’t see the Point of Gigabit.

    For I2C or UART Sensors 100 MBps is plenty for most Controlloops / Applications.

    Whats the Advantage over a MCU+W5500+Switch
    (in terms of Cost / Ease of Use ~ 5-15$ per Node)

    or

    XMC4300 / Lan9255
    (Cortex M4 + Ethercat Slave – Low Jitter Realtime Ethernet – No Switch Required ~ 25$ Node )

    Is there something I am missing?

  4. I don’t understand the use case – if you need to convert serial to ethernet, you won’t need gigabit – in a satellite smallest and lowest power is desired.

    I’ve been using pusr modules like usr-tcp232-t2 (bare module, 15€) or usr-tcp232-302 (in a box with power supply, maybe 20€). Small and compact, not much can go wrong with them. I think some of them can also speak i2c and spi?

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.