### Our advanced DSP group moves technology from the lab to the world.

Our goal is to understand the complex advantages and disadvantages of algorithms and DSP platforms (including manycore, FPGAs, and heterogeneous systems, among others) to maximize the performance (speed, throughput, and/or power) of current and future hardware and implement new technologies. We've done things such as implement a 60GHz modem with a custom radio waveform, convert a research matlab implementation of DPD that assumed unbounded resources and time into a compact, real-time implementation on an FPGA as well as a manycore processor, and developed methods and architectures for integrating heterogeneous systems (such as manycore with an FPGA) in an efficient, user-friendly way.

### From Matlab to hardware

Working with researchers who have developed an algorithm on a theoretical level and implemented a proof-of-concept version in a high-level program such as Matlab, we convert the alogithm to implementation in real-time hardware systems. Often researchers produce algorithms that are run offline and have access to all data, plenty of time to compute, and essentially infinite resources. Real-time systems are often highly constrained in the amount of data available, the amount or time to compute, and/or the amount of processing resources. This means that the algorithms developed by researchers must often be highly redesigned to perform similar math or yield similar results with a much more streamlined method. The first step is often to make the algorithm time-aware. This means to convert the algorithm from processing all of its data and producing all of its results to handling arbitrarily long streams of data in and results out. The next step is to get a deep understanding of the math that is occuring and identifying the hardware that should be used for implementation. After the hardware is selected, inefficient or impractical computations are replaced with efficient methods or novel alternatives to ensure high performance. Finally, the modified algorithm is implemented on the target hardware and tested as a real time system. In this manner, we bring the promises of research to practical implementation to enhance or enable technology.

### Integrating Heterogeneous Systems

Processing platforms form a spectrum from easy to program and highly flexible, to high performance but single-function. In order to meet the most extreme demands, engineers often mix the highly flexible general purpose processors or manycore processorts with the high performance, but fixed process, FPGAs or ASICs. While such systems can make an otherwise infeasible tasks possible, integration of the heterogeneous systems becomes a challenging hurdle. Borrowing concepts from the scalable manycore processors, we've designed a system that treats all computing resources as tiles on a virtual mesh. This provides a unified view of resources and allows developers to implement designs where communication within a specific part of the hetereogeneous system is the same as communicating across heterogeneous boundaries. Reducing the costs of development for heterogeneous systems makes their use more practical when performance requirements are pushing hardware to the limits.