Reconfigurable Embedded Communication System
August 2008 - October 2009

Embedded system generally includes several radio communication peripherals associated with a processor. Communication functions are buried in silicon and cannot be modified. Proposed alternate architecture associates minimal analog front-end, reconfigurable components (FPGA) and processor. As digital signal processing is performed inside FPGAs, major changes of the communication function can be done near instantaneously by instantiation of virtual peripherals.

Applications include upgrade to new standards, cognitive radio, support of heterogeneous communication environment, R&D prototyping, test & measurement operations.

Hardware and software environment

RECOMS project aim is the development of an hardware platform and a Virtual Peripheral Framework - FPGA interfacing blockset and software - designed for supporting quick and efficient virtual peripheral developments.

The hardware platform is composed of a board including an ARM9 processor and a Xilinx Virtex-5 FPGA - and supporting analog front-end radio modules. The virtual peripheral framework includes a library of FPGA interface blocks, a Linux FPGA driver, and a C API library.

Automatic FPGA/processor Interface Generation

FPGA signal processing circuits are assumed to be developed by using Matlab Simulink. A library of blocks (RECOMS blockset) provides a complete interfacing between FPGA and processor - including controls, data transfers, probes, AD/DA and clock management. When RECOMS blocks are dragged and dropped in a Simulink signal processing diagram, interface glue and communication ports are automatically generated for instanciating up to 4096 data channels that support almost any data type, format and rate. Thanks to a virtual file system, the Linux driver is then dynamically configured.

An API provides a set of functions - aware of the FPGA design - for transfering data to/from interfaces blocks with implicite casting. User would have only to develop high-level applications or services in Linux User Space - using C, C++, script or QT languages. Switching between virtual peripherals is performed with an API function by fast reconfiguration of FPGA, driver and API parameters. Thanks to the high abstraction level of the Virtual Peripheral Framework, the complexity of the Hw/Sw co-design is masked to the developer while providing a high data rate path between the signal processing hardware and the upper software layers.