Software Engineering

Our software engineering department has a wide range of experience with development tools typically found in the signal processing arena. We utilize the most popular development packages and In-Circuit Emulation (ICE) devices available. In many cases the client can avoid making these costly investments in tools and software to get their products developed.

We use:

  • Microsoft Visual C++ MFC-based Object-oriented GUI development tools for Windows- based software.
  • The MATLAB Algorithm development environment for rapid prototyping and powerful graphical display capability.
  • Verilog and Xilinx FPGA Design Tools for programmable hardware.
  • OrCad and PADS Schematic and PCB Circuit layout tools.

..and a host of DSP development packages (listed below).

Whether it's streaming data from a USB 2.0 connection to a MATLAB application, or processing signal data on an embedded platform, DSP Tools has the experience and the tools to get your input 'visualized.'

Development Tools

  • Visual C++
  • LabView
  • Orcad (Schematic Capture)
  • Xilinx (Verilog FPGA Development)
  • PADS (PCB Layout)
  • CodeWarrior (Motorola ColdFire)
  • Code Composer Studio (Texas Instruments)
  • VisualDSP++ (Analog Devices SHARC)
  • Microsoft DDK/SDK Device Driver Development
  • Visual Studio.NET (Web-based Application Development)
  • Embedded Visual C++ (PDA, Windows CE)
  • InstallShield (Software Distribution Setup package)

Graphical User Interface for Radio Control and Signal Display

One of the things that DSP Tools does well is Graphical User Interfaces for receivers. The following figure shows the GUI for the dual tuner receiver described above. Notice that the lower two displays (spectrum and falling raster) show a 15 MHz segment of the HF band. The operator can click on a signal seen in the wideband displays and the narrow band receiver tunes to that signal and begins demodulating it. In the top two spectrum displays a single sideband signal is tuned and its audio is sent out the PC speaker and out the audio circuitry on the SDR board to the stereo headphone and line level output connectors.

Moving Surface Plot Displaying Spectrum of 15 MHz Section of Bandwidth

This GUI is written in compiled MATLAB which make it very easy to provide interesting displays like this moving 3D surface plot showing 15 MHz of spectrum versus time. It can be viewed from any position using the azimuth and elevation slider controls. The color slider on the right side changes the signal level to color mapping. This type of display is very useful for finding a small, narrowband signal hiding near a large wideband signal like a broadcast TV channel.

Scope, Spectrum Analyzer and Logic Analyzer in the GUI for Debug

The signal flow in an FPGA based Software Defined Radio passes through many functional blocks. Since they are all inside the FPGA it isn't possible to probe the circuitry with a scope or spectrum analyzer. To facilitate design debug DSP Tools added signal capture circuitry into its FPGA design and provided a PC based program as part of the normal GUI to allow every block's input and output to be probed and displayed as a scope or spectrum plot. The following screen capture shows the debug screen for the HF radio. Notice that it has all the usual scope controls such as vertical gain, position, trigger position, trigger level. It also has the trigger modes engineers are used to such as Automatic trigger/normal trigger, Positive/negative slope and continuous retrigger (run) and single trigger. The radio buttons in the upper left select the display type: Scope, Logic analyzer, Spectrum, Falling raster or surface plot. The listbox in the lower right selects one of 32 places in the signal flow for the narrowband and wideband signal paths. The edit boxes and buttons in the upper right let the engineer inspect and change any of the many control registers in the FPGA design.

Communication Signal Analysis Software Tool

One of our software projects was "DSP Tool" a communication signal analysis tool written for a government customer as a sub to Rockwell Collins. It included various spectrum displays, software demodulation types, automatic signal identification code. It includes ALE, Sitor, RTTY and even Morse code decoding to text. The language menu selected different tables to map the teletype and Morse code to text in a variety of languages. Right to left languages such as Arabic and foreign character sets were handled using Microsoft Word to display Unicode characters. This figure shows a capture of ALE:

The following figure shows a captured portion of the aircraft band. Using the mouse, one transmission has been selected. DSP Tool numerically filters and tunes that area and demodulates it so that the transmission can be heard on the PC speakers. The context menus in the figure show the wide variety of modulation types and analysis that the program can do.

Signal Analysis and SIGINT GUI using MATLAB

DSP Tools developed a real-time data interface that streamed data from a DSP board over 100BaseT Ethernet using TCP/IP to a PC application. From the PC we used a DLL to pass the data stream to our MATLAB program, using the high-powered mathematical environment for signal analysis, demodulation, protocol analysis, protocol decoding and data visualization.

The MATLAB GUI provided the user with the tools needed to determine the modulation parameters of each intercepted signal. It used MATLAB's powerful 2D and 3D surface plotting features to allow the operator to visualize the underlying signal characteristics. We used MATLAB's extensive library of numerical functions to determine the modulation type and parameters. The resulting values were used to select and configure one of our software demodulators to extract the symbol stream. Included in the demodulators were the usual symbol timing and carrier recovery loops.

Using autocorrelation and other numerical techniques, we determined the framing pattern of the data to select the proper protocol decode algorithm. Among the protocol algorithms implemented were Automatic Link Establishment, SITOR, and the three television standards.

By interfacing MATLAB to Microsoft Word using another DLL, we were able to use Unicode to display decoded text that used foreign character sets, including right to left reading scripts such as Arabic.