Introduction
FrontPanel is a software platform designed to make FPGA integration easier, more productive, more powerful, and more configurable. Most importantly, FrontPanel provides the basic functionality required to configure and interface to the hardware including the FPGA and peripherals on-board. After FPGA configuration, the host interface (USB or PCI Express) switches from a high-speed download port to active communication with FrontPanel allowing you to interface and control your FPGA design from within a single application. By virtualizing many common controls found on typical evaluation (or prototyping) boards, FrontPanel enables far greater flexibility and capability than pure hardware-based approaches.
The FrontPanel SDK (Software Development Kit) is a flexible API (Application Programmer’s Interface) providing all the benefits of FrontPanel to your own custom application. These benefits include:
- Device discovery and enumeration
- FPGA configuration
- FPGA communication using wires, triggers, pipes
- Abstraction to a common development platform for both USB and PCI Express devices
Terminology
Collectively, “FrontPanel” describes several components that make up the FrontPanel environment:
- FrontPanel SDK – Refers to the software development kit – the HDL, API, and documentation collectively.
- FrontPanel HDL – HDL modules you design into your FPGA hardware that makes your design “FrontPanel Enabled” and allows it to communicate with the PC.
- FrontPanel Firmware – Firmware running on the module’s microcontroller that provides the conduit for FPGA/PC communication.
- FrontPanel API – A complete programmer’s interface allowing you to design custom PC applications that communicate with your FrontPanel Enabled hardware.
- FrontPanel Application – A flexible software application providing virtual instrumentation to your hardware such as LEDs, hex displays, numeric entry, pushbuttons, and so on.
Basic Functionality
FrontPanel is, most importantly, support software for Opal Kelly’s FPGA integration modules. In that role, FrontPanel allows you to quickly and easily download FPGA configuration files via USB or PCI Express to a target device. Once the configuration file is downloaded, the device now takes on that design’s personality and is ready for use. If desired, FrontPanel’s role is now complete.
Peripheral Configuration
Opal Kelly XEM devices contain additional peripherals to integrate FPGAs into your projects. PLLs, audio CODECs, Flash memory, and other peripherals can benefit from the simple, single-source configuration that FrontPanel offers. PLL outputs are independently configurable through easy-to-use setup dialogs. Flash memory can be programmed, cleared, and reprogrammed in a variety of ways and audio CODECs can be setup for different configurations.
Flexibility Outside the Design
FPGAs and other programmable logic devices have allowed engineers the unique opportunity to construct complete hardware designs within the confines of a logic device. Unfortunately, this means that many of the tools engineers typically employ to debug such designs such as oscilloscopes, LEDs, switches, and buttons are limited to viewing signals brought out to the external pins of the device. FrontPanel takes these ideas closer to the realm of flexible logic devices and makes them likewise flexible. In the end, however, FrontPanel provides controllability and observability to your designs, reducing development time and putting a new face on your prototypes.
Controllability
Any prototype or experiment invariably requires some level of control. Typically, devices such as pushbuttons, DIP switches, rotary devices, or keypads are used. With most prototype systems, however, what is provided is nearly never enough; you can always use one more button or switch to select a different mode. Typically, the problem is solved by rebuilding the design with a different mode or multiplexing the use of the available inputs.
FrontPanel offers another solution. With a simple change in a couple files, new virtual buttons and switches can be added quickly and connected to the proper points in your design.
Observability
Prototypes also require some level of observability, usually offered in the form of LEDs, hexadecimal displays, and LCDs or sampled externally by oscilloscopes and logic analyzers. Again, however, there is the problem of limited resources in the typical prototype system. Only so many LEDs and displays are present on an I/O board, so the problem is remedied by adding more I/O boards or multiplexing the use of the current lot.
FrontPanel’s flexibility means you can display all sorts of information, in real-time, about the state of any number of signals in your design. It’s like having an I/O board that allows you to add and remove components at will without taking up valuable pins on the FPGA.
XML and FrontPanel Components
XML is the eXtensible Markup Language used in the latest generation of software applications and other forms of markup (such as XHTML). It is simply a way to describe data that can be manipulated by any XML-supporting editor and in a platform-agnostic way. At its core, XML is just a text file containing tags which correspond to nodes of a tree. Each node can have properties and values.
FrontPanel interfaces are described using XML tags so they can be read and written with any standard text editor. This means that adding components to your virtual “I/O board” is as easy as adding a few lines to a text file. It also means that as FrontPanel grows in its capabilities, the interface descriptions will be forward (and backward) compatible. As additional functionality is added to FrontPanel, you will be able to take advantage of it by simply adding to your current projects.
HDL Endpoints
On the FPGA side of the interface, “Endpoints” are used to connect FrontPanel components to signals in your design. These endpoints work just like any external pin. You simply connect the signals you want to control or observe to the endpoint ports. Then, connect the endpoint modules to a shared bus and place a Host Interface module on that same shared bus. The Host Interface along with FrontPanel software and drivers take care of the rest. Signals within the FPGA are immediately visible within FrontPanel and FrontPanel can now control any input endpoints you’ve connected.
Additional endpoints can be added at any time simply by instantiating additional endpoint modules. The modules are designed to consume very little FPGA resources so the effect on your design is minimal.
Application Programmer’s Interface (API)
Beyond the relatively basic instruments available within the FrontPanel Application, programmers can communicate with their HDL endpoints from their own software. In addition to the wires and triggers that populate a FrontPanel XML user interface, your custom applications can easily send and retrieve bulk data at HighSpeed USB or PCI Express throughput. This functionality broadens the application base of Opal Kelly integration modules to areas such as image capture, data acquisition, FPGA co-processing, signal generation and many others.
The majority of Opal Kelly integration applications involve the use of the API in some form. Customers use the API on Windows, Linux, and Apple (Mac) platforms. Some customers use our DLL directly within their C or C++ application. Some use our pre-built wrappers for C#, Python, Java, and Ruby. Others build wrappers for their own languages such as VisualBasic. Still others use our DLL from within third-party application software such as Matlab or LabVIEW.