Jon Jacky, August 2004
RequirementsRequirements
We are evaluating signal processing and control frameworks for our project to build an MRFM molecular imager.
Different MRFM subsystems work a very different speeds, so different technologies might be appropriate for each. Vacuum and cryo are quite slow (a few Hz). Scanning (piezo control and interferometric sensing) go up to audio frequencies. Cantilever sensing and control (interferometry and RF coil) go up to radio frequencies.
It appears that none of the existing frameworks is designed for closed loop control at radio frequencies.
Back to top.
Features
A DSP framework provides a way to program networks by connecting independently programmed signal processing blocks. Many variations and additional features are possible.
MRFM requires a framework with these features:
Back to top.
Here are some open source or academic systems.
Here are some commercial systems.
Back to top.
Other resources
Paper on BLOSIM, apparently an early ancestory of Ptolemy,
on the internals of a DSP framework.
http://www.eecs.berkeley.edu/~messer/PAPERS/IEEE/Jan84-1.pdf
Papers from a company formed to commercialize the
MIT SpectrumWare work on software radio.
http://www.vanu.com/techpubs.html
Back to top.
Comparison table
DIY means Do It Yourself, must be programmed by the user without support from the framework.
Feature\Framework | GNU Radio | PSpectra |
VuSystem (also here) |
EPICS |
Ptolemy (also here) |
Labview Realtime |
Matlab Realtime |
Application | Software radio | Software radio | Multimedia (Video/audio) |
Accelerator control (large distributed control systems) |
Electronics CAD | Laboratory data acquistion | control systems |
Real time OS | Linux (not RT-Linux etc.) also Mac OS X, others |
Linux | Unix (not really real time) |
VxWorks RTEMS (open source) |
N/A | Labview Real-Time | |
Real time hardware |
PC with cable modem tuner and PCI ADC or USRP board for RF ADC/DDC/DUC/DAC with FPGA |
PC with external tuner and custom PCI I/O card |
Workstation with audio/video Sun 10/512 DEC 3000/400 |
VME (many boards) PC (not usually) |
N/A | NI CPU NI PXI crate |
|
Real time development platform |
Linux etc. (self-hosted) | Linux (self-hosted) | Unix (self-hosted) | Tornado/Sun Tornado/Windows DIY script/Linux RTEMS/Linux (can self-host on PC) |
N/A | Labview on Windows, Mac, (Unix/Linux?) | |
Real time sampling frequency | 64 MS/s, 12-bit AD on USRP |
N/A | N/A | ? | |||
Short latency | Probably not on this hardware | Probably not | No | Yes (on some hardware) | N/A | ? | |
Real time latency | 48 msec in one
experiment (probably could do much better) |
N/A | ? | ||||
Simulator | N/A (self-hosted) | N/A (self-hosted) | N/A (self-hosted) | (can self-host on PC) | That's all it is | (maybe with stubs to simulate PXI side) | |
DSP language | C++ | C++ | C++ | C, C++ | C++ | Labview (also C in CINs?) | Matlab Simulink |
DSP library |
signal sources 29 signal sinks 6 FIR filters 6 (data types) FIR filters w/freq shift 6 type conversion 1 |
yes | > 50 blocks | DIY (not EPICS emphasis) |
? | ||
GUI host | Linux etc. | Linux | Unix | Windows Unix, Linux (no Mac sightings) |
(same as DSP) | Windows, Mac, (Unix/Linux?) | |
GUI protocol | (in memory) | (in memory) | (in memory) | CA on TCP/IP | (in memory) | dstp on TCP/IP | |
GUI language | Python (also here) | ? | Tcl/Xt | Custom GUI tools | Tcl/Tk | Labview | |
GUI library |
About 30 Python files (see screenshots) |
? | > 50 scripts | Huge (for their tools) | Huge | ||
Scripting language | Python | ? | Tcl |
Several custom languages (some graphical) VxWorks Windshell (not usually) |
Labview | ||
Interactive | Looks possible | ? | Yes | (not usually) | (can you add/revise VIs without reboot PXI side?) | ||
Supervisory control | DIY looks possible | ? | Yes | DIY (using their tools) | DIY | ||
Documentation |
Linux Journal articles Web pages generated from code by doxygen PSpectra literature | Academic papers, especially JSAC98 | Academic papers, especially JSAC96 | Lots, but mostly opaque Training through APS |
Academic papers Agilent documentation |
NI documentation |
Mathworks documentation |
Open source | Yes | Yes (but unavailable) |
Yes | Yes | ? | No | No |
Status | Active | Inactive (lives on in GNU Radio) |
Inactive (influenced PSpectra) |
Active | ? | Active (commercial product) |
Active (commercial product) |
Back to top.