|
SatCat5
|
SatCat5 is FPGA gateware that implements a low-power, mixed-media Ethernet switch. It also includes embedded software libraries to help microcontrollers interact with Ethernet networks.
A SatCat5 switch is functionally equivalent to commercially available, unmanaged Ethernet switches for home use. However, it also supports lower-speed connections to the same network using I2C, SPI, or UART. These lower-rate data links (commonly used in simple, low-cost, low-power microcontrollers) allow nearly any device to participate in the same local communication network, regardless of its capability level.
Like any Ethernet switch, this one has multiple ports; each port is a point-to-point link from the switch to a network device, which could be a PC, a microcontroller, or even another switch. Power draw required for the switch itself is well under 1 watt.
The main expected users of this project are cubesat and smallsat developers. By encouraging everyone to use this technology, we create a mutually-compatible ecosystem that will make it easier to develop new small-satellite payloads, and simultaneously make it easier to integrate those payloads into vehicles. For more information on SatCat5 and cubesats, refer to our SmallSat 2020 publication. However, we think the same technology might be useful to other embedded systems, including Internet-of-Things systems that want to integrate microcontrollers onto a full-featured LAN.
A major goal of the SatCat5 project is to support a variety of endpoints, from simple microcontrollers to a full-fledged PC, all connected to the same Ethernet network.
A complete listing of supported interfaces is available here. The list includes the usual 10/100/1000 Mbps "Media Independent Interfaces" (RMII, RGMII, SGMII) as well as media and physical-layer options that aren't usually used with Ethernet (I2C, SPI, UART). The latter options are typically lower speed (1-10 Mbps), but use physical layer protocols that are more amenable to use with simple microcontrollers. All interfaces transmit and receive standard Ethernet Frames.
Switch operation can be designed in an HDL-only environment - however, many designs use soft-core embedded processors to provide higher level functionality such as handling of ARP, ICMP, IP, and UDP messages, along with switch or attached device configuration.
This project is effectively a set of building blocks, ready to be used to build and connect to your own custom Ethernet switch. The switch can be optimized to your needs, tailored to your preferred platform, port count, interface types, etc.
In addition to these building blocks, we include several reference designs that showcase many of the available features. The easiest way to get started is with the Digilent Arty A7, a low-cost FPGA development board. We've included a reference design and companion documentation that specifically targets this board. PMOD connector pinouts are chosen to be directly compatible with off-the-shelf USB-UART adapters.
Other reference designs include the prototype that we built to develop, test, and demonstrate the SatCat5 switch. It is intended to run on many off-the-shelf FPGA development boards, using an FMC port to attached to a custom PCB. The custom PCB includes Ethernet transceivers, PMOD connectors, and other I/O.
SatCat5 also includes software libraries targeting both baremetal and POSIX systems for:
A simple memory-mapped interface for configuration registers called ConfigBus was designed and can be found in the majority of designs. It is much lighter weight than AXI4-Lite as it is designed for small control registers. More information, including Microblaze libraries, control over Ethernet, and user register setup can be found in its documentation.
If you'd like to build the Arty example design, you'll need the Vivado Design Suite. We've tested with version 2015.4, 2016.3, and 2019.1, but it should work as-is with most other versions as well. Once it's installed, simply run "make arty_35t" in the root folder. (Or follow the equivalent steps under Windows.)
If you'd like to build your own design, create a new top-level VHDL file and add the following:
Another option for user designs on Xilinx platforms is the Vivado IP Integrator. SatCat5 natively supports this block-diagram based flow and offers wrappers for the vast majority of compatible blocks. The drag-and-drop nature and single-wire bus interface connections make this a good choice for complex designs.
Once started and familiar with the basics of SatCat5, it is highly recommended to read through the Frequently Asked Questions (FAQs). This contains a huge swath of tips, guidance, clarifications, and potential issues.
Advice and tips on good development operations (DevOps) practices, including automated and hardware-in-the-loop testig, can also be found in the DevOps documentation
We encourage you to contribute to SatCat5! Please check out the guidelines here for information on how to submit bug reports and code changes.
A log of major changes per SatCat5 release can be found in the Change Log.
Portions of SatCat5 are patented or patent-pending, e.g., US20210173806A1 and US20240204788A1.
In accordance with SatCat5's open-source license agreement, we grant a royalty-free license for use of these technologies. Refer to section 7 of the CERN-OHL-W v2 license for details.
Copyright 2019-2025 The Aerospace Corporation.
This file is a part of SatCat5, licensed under CERN-OHL-W v2 or later.
You may redistribute and modify SatCat5 and make products using it under the weakly reciprocal variant of the CERN Open Hardware License, version 2 or (at your option) any later weakly reciprocal version.
SatCat5 is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY, AND FITNESS FOR A PARTICULAR PURPOSE. Please see (https://cern.ch/cern-ohl) for applicable conditions.