Recently, there has been significant interest in the Internet of
Things (IoT), particularly in relation to data centers and FPGAs.
The IoT (where the S stands for security) consists of a large
number of physical devices, commonly outfitted with various types
of sensors, connected to a network for communication and control.
Interfacing with and managing a large number of IoT devices and
collecting and processing data from the sensors can require a
significant amount of compute and storage on the back end. The
capabilities of Corundum are a good match for the IoT ecosystem -
high-performance PCIe interface to a host computer, high-bandwidth
network connectivity, ability to implement custom applications in
hardware, and the ability to directly interface with other
hardware components.
Today, I am pleased to announce the release of an IoT example application for Corundum that implements HTCPCP and HTCPCP-TEA. HTCPCP is defined in RFC2324 [1], and the extension HTCPCP-TEA is defined in RFC 7168 [2]. The example application is entirely self-contained, implementing not only protocol support in hardware for IP, TCP, HTTP, HTCPCP, and HTCPCP-TEA, but also an integrated heat source consisting of long shift register chains and closed-loop control via internal temperature measurement via the XADC. As a result, no external equipment is required, although the design is also capable of interfacing with external equipment via GPIO pins, if available on the target board. The application also supports cascading control to additional FPGAs via both Ethernet and P2P DMA over PCIe.
Note that the Accept-Additions header field is only supported
when appropriate external equipment is connected; in a fully
self-contained setup the design will result in the error code 406
Not Acceptable (see HTCPCP/1.0 section 2.2.2.1 and section
2.3.1). If the design is not configured with HTCPCP-TEA, then any
request to brew tea will result in the error code 418 I'm a teapot
(see see HTCPCP/1.0 section 2.3.2).
To use the application, first build the design for your favorite Corundum-supported FPGA board. When operating standalone, FPGA boards with larger devices and particularly beefy Vccint power supplies are recommended, such as a VCU1525, Alveo AU200, Alveo AU250, or Alveo AU280. Although when using HTCPCP-TEA, a short and stout board may be preferred. You may need to do a couple of test synthesis runs, adjusting the parameters in config.tcl appropriately to size the shift register chains for optimal resource utilization, while also ensuring that the board's Vccint supply capacity is not exceeded. Once the design has been successfully built, load it on to the board with mqnic-fw.
Then, some modifications of the board may be required for the application to work correctly. Specifically, the application requires that the board be installed horizontally with the heat sink removed to facilitate a proper thermal interface. The design does not require external memory, so any DDR memory modules can be removed, which may be necessary to prevent mechanical interference. See figure below for an example configuration.
Finally, use the design to ensure a consistent supply of your
favorite caffinated (or decaffinated) beverage. It is recommended
to use a cron job or similar to schedule issuing BREW commands via
HTCPCP to the card at appropriate times. Additionally, the design
is capable of scheduling operations internally with nanosecond
resolution, provided it is time-synchronized via IEEE 1588 PTP.
1: https://datatracker.ietf.org/doc/html/rfc2324
2: https://datatracker.ietf.org/doc/html/rfc7168
-- Alex Forencich