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.
It’s not a “mixed media” switch.
It’s an Ethernet switch with I2C/UART/etc gateway/encapsulation.
It certainly doesn’t switch anything other than Ethernet.
What is the advantage over an uC with ethernet interface?
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.
I2C, UART or SPI with gigabit speed rates ? Tell me more !
It’s about the bandwidth, not speed. This would allow for standard ethernet to be used as a bus for hundreds of devices with space to spare.
omg cat
omg cat
I’ve never played around with wifi on the RPi Pico, but it could theoretically link all these protocols together. Am I missing something?
Not really, but the target audience for this, cube sats in space, will not use wifi. Ethernet is a very fast standard and quite cheap, so I see the atraction.
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
That would also be an interesting project too. Also with regular router SBC based on some think like Rockchip SoC (with just a matter of software from people who wanna try it).
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.
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.
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?
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?