Corundum IoT example application: HTCPCP (RFC 2324) and HTCPCP-TEA (RFC 7168)

127 views
Skip to first unread message

Alex Forencich

unread,
Apr 1, 2022, 7:24:20 PM4/1/22
to corund...@googlegroups.com

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
Reply all
Reply to author
Forward
0 new messages