The PnP Project
Plug and Play Programming.
What is PnP?
PnP is an extension of OOBP, which stands for Object Oriented Block Programming.
OOBP is a programming paradigm developped at TCTS Lab since 1994. It is defined as
Object Oriented Programming around processes and combines OOP and block descriptions.
Plug and Play Software extends OOBP by defining input and output
data as abstract streams.
This research is done in collaboration with AT&T Labs - Research.
See our latest paper, "Plug and Play Software for Designing High-Level Speech Processing Software".
See also our Journal paper on OOBP: "The Object Oriented Block Programming (OOBP) paradigm : a VHDL-like object oriented approach toward developing efficient DSP software libraries"
PnP originates from the following facts :
Digital Signal Processing scientists are increasingly involved
in programming, whether for simulation and research, for software
development (mainly for Digital Signal Processors), or
even for hardware development (ASIC's are now being programmed and
simulated with the VHDL language [IEEE 87] [Airiau et al 90]).
Object Oriented Programming (OOP) techniques are now widely used in
general software engineering, where the high level abstractions they
allow are turned into account to develop libraries of virtual objects
(i.e. objects that are not completely specified at the time of their
compilation). In contrast, very few OOP software libraries for Digital Signal Processing
have been reported.
As a result, it is worth considering, at least for a moment, the form
of our programs rather than their content.
Considering well-known programming quality criteria, namely
programming speed , error correction speed, computation speed,
readability and portability, and the importance of a hierarchical
description of systems (as opposed to algorithms), we examined currently
existing programming paradigms (mainly structured
and object oriented ones) for developing Signal Processing software libraries,
and the superiority of Object Oriented
Programming methods clearly appeared (OOP compilers for DSP platforms are
now beginning to appear, to turn it into account).
In parallel, we reviewed a number of programming environments for Digital Signal Processing
(whether object oriented or not), from LabView (National
Instruments), often presented as an "alternative to cumbersome text-based
programming", to the Visual Engineering Environment of HP [Beethe 92],
through the Signal Processing Worksystem of Comdisco, the French Mustig
environment [Lienard 87], or the Silage language [Genin et al 90].
They all describe processes as hierarchical blocks, an old concept
([Goldberg & Rader 69], [Covington et al. 87], [Zissman & O'Leary 87])
that naturally accounts for the modularity of signal processing systems.
We then found an important distinction between the concept of Object Oriented Signal
Programming (OOSP), i.e. OOP defined around data, which has been imagined
and developed since the eighties (with systems like SPLICE [Myers 86]
and QuickSig [Karjalainen 90]), and Object Oriented Block Programming (OOBP),
i.e. OOP defined around processes, which combines OOP and block descriptions.
We then developped our original Object Oriented Block Programming (OOBP)
paradigm for DSP software development,
i.e. OOP defined around processes, which combines OOP and block descriptions,
[Dutoit et al 93], [Dutoit & Fontaine 95]. The use of encapsulation, inheritance, and polymorphism by its VHDL-like
three descriptive levels (namely entity specifications, architectures,
and configurations) naturally fulfills the aforementioned criteria, without the need to
incorporate complex kernels to control data flows.
We even extended it for graphic operating systems (Windows,
XWindows, ...), which provide programmers with optional monitoring facilities,
like error tracing and process viewing. In contrast with most other
programming environments, however, processing and monitoring are described
separately in OOBP, i.e. in methods which do not call one another,
so that monitoring facilities do not decrease computational speed when
Beyond its VHDL-like description of systems (expressing DSP software
libraries as OOBP objects is the first step towards their VHDL
description), the essential originality of this approach resides in its
simplicity, which itself allows programmers to keep total control of the
execution of their code. As such, OOBP can be combined with any other
programming paradigm (like OOSP, for instance). What is more, it does
by no means invalidate structured programming DSP software libraries,
the functions of which can still directly be addressed by the blocks
process methods. Programs can even be only partially described in the
form of blocks. In a word : the OOBP paradigm remains intrinsically open.
This is a fundamental requirement for skilled DSP programmers who wish to
develop efficient software libraries of DSP systems.
What is available ?
A standard UNIX version of the first version of OOBP has been made available on our FTP server (tcts.fpms.ac.be) in the directory /pub/blocks/unix. To install this version, just copy the file
blocks.tar.gz and have a look at the README file for more information.
We are now working on a complete PnP library, which will shortly be made available here.
[Airiau et al. 90] R. Airiau, J.-M. Bergé, V. Olive, J. Rouillard, VHDL, du langage à la modélisation, Presses polytechniques et universitaires romandes, Lausanne, 1990.
[Covington et al 87] C.D. Covington, G.E. Carter, D.W. Summers, "Graphic Oriented Signal Processing Language, GOSPL", ICASSP 87, Dallas.
[Dutoit et al 93] T. Dutoit, V. Fontaine, H. Leich, "A simple and efficient Object Oriented Block Programming (OOBP) paradigm for signal processing software development", Proc. GRETSI 93, Juan-les-Pins, pp. 1015-1018.
[Dutoit & Fontaine 95] T. Dutoit, V. Fontaine, "The OOBP programming paradigm : a VHDL-like object oriented approach toward developin,g efficient DSP software libraries", Annals of Telecommunications, April 95, pp. 365-379.
[Genin et al 90] D. Genin, P. Hilfinger, J. Rabaey, C. Scheers, H. De Man, "DSP Specefication using the Silage language", Proc. ICASSP 90, 5.2, pp. 1057-1060.
[Gold & Rader 69] A. Goldberg & C. Rader, Digital Processing of Signals, McGrawHill, New York, 1969.
[IEEE 87] IEEE Standard VHDL Language Reference Manual, IEE standard 1076-1987,
[Karjalainen 90] M. Karjalainen, "DSP Software Integration by Object Oriented Programming : a Case Study of QuickSig", IEEE ASSP Magazine, vol. 7, N°2, pp. 21-31, April 90.
[Liénard 87] J. Liénard, "Language conversationel pour le traitement des multi-signaux", Proc. GRETSI 87, Juan-Les-Pins, pp. 709-712.
[Myers 86] C. Myers, Signal Representation for Symbolic and Numerical Processing, Ph. D. dissertation, MIT Technical Report 521, august 1986.
[ZissMan & O'Leary 87] M.A. Zissman, G.C. O'Leary, "A Block Diagram Compiler for Digital Signal Processing MIMD Computers", ICASSP 87, Dallas.
Last updated April 25, 1999, send comments to firstname.lastname@example.org