On the use of an algebraic language interface for waveform definition


We discuss implementation aspects of a software-defined radio system that allows the user to define waveforms using an algebraic language interface, currently as an extension to C++. Current software-defined radio systems provide waveform definitions through a combination of a graphical interface, markup language, interpreted script, and compiled code. Regardless of the methods used, the actual executed code generates each waveform via a series of graph-style connections: instantiating blocks and then explicitly connecting ports between blocks. We propose a system that allows the definition of waveforms using a novel text-based algebraic language interface similar to that found in MathWorks MATLAB or GNU Octave. Our system simplifies the waveform programming abstraction by using implicit graph-style connections; it makes extensive use of C++ templates and operator overloading to allow this high-level abstraction. Our interface is solely an abstraction layer providing an alternative means for coding waveforms in comparison to current techniques, and hence has no more overhead than current techniques. Example code is provided to compare and contrast various methods of waveform definition.

This is a preview of subscription content, log in to check access.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Listing 1
Listing 2
Listing 3
Listing 4
Listing 5
Listing 6


  1. 1.

    Zimmermann, H. (1980). OSI reference model—The ISO model of architecture for open systems interconnection. IEEE Transactions on Communications, 28(4), 425–432.

    Article  Google Scholar 

  2. 2.

    Jones, D. (2012). Efficient FFT algorithm and programming tricks, Connexions Website. Accessed June 2012 http://cnx.org/content/m12021/1.6.

  3. 3.

    Frigo M., & Johnson, S. G. (2005). The design and implementation of FFTW3. Proceedings of the IEEE. Invited paper, Special Issue on Program Generation, Optimization, and Platform Adaptation, 93(2): 216–231.

  4. 4.

    Ramakrishnan, V., Witte, E. M., Kempf, T., Kammler, D., Ascheid, G., Leupers R., Meyr, H., Adrat, M., & Antweiler, M., (2009). Efficient and Portable SDR Waveform Development: the nucleus concept. Proceedings of the 28th IEEE Conference on Military Communications, (pp. 918–924), 2009.

  5. 5.

    Williams, L.J (ITT: Technical Director, JTRS Business Area). (2009). Software defined radios: Are they really that hard?, Presented at the IPFW Wireless Summer School, June 17, 2009.

  6. 6.

    GNU Radio Discussion Email List, Thread on why isn’t gnu radio used more. Accessed June 2012 https://lists.gnu.org/archive/html/discuss-gnuradio/2011-05/msg00173.html.

  7. 7.

    MathWorks MATLAB Website. Accessed June 2012 http://www.mathworks.com/products/matlab.

  8. 8.

    GNU Octave Website. Accessed June 2012 https://www.gnu.org/software/octave.

  9. 9.

    MathWorks Company Facts Sheet. Accessed June 2012 http://www.mathworks.com/company/factsheet.pdf.

  10. 10.

    Dickens, M. L., Laneman, J. N., & Dunn, B. P. (2011). Seamless dynamic runtime reconfiguration in a software defined radio. Proceedings of SDR’11 WInnComm Europe, Brussels, June 2011.

  11. 11.

    GNU Radio Website. Accessed June 2012 http://gnuradio.org/.

  12. 12.

    The Khronos Group, OpenCL Website. Accessed June 2012 http://www.khronos.org/opencl.

  13. 13.

    Dickens, M. L., & Laneman, J. N. (2011). On the use of an algebraic language for waveform definition. Proceedings of SDR’11 WInnComm, Washington, DC, November–December 2011.

  14. 14.

    Software Communications Architecture Website. Accessed June 2012 http://sca.jpeojtrs.mil.

  15. 15.

    GNU Radio Companion Website. Accessed June 2012 http://www.joshknows.com/grc.

  16. 16.

    MathWorks Simulink Website. Accessed June 2012 http://www.mathworks.com/products/simulink.

  17. 17.

    National Instruments Corporation, LabVIEW Website. Accessed June 2012 http://www.ni.com/labview.

  18. 18.

    Eker, J., Janneck, J. W., Lee, E. A., Liu, J., Liu, X., Ludvig, J., et al. (2003). Taming heterogeneity—the ptolemy approach. Proceedings of the IEEE, 91(1), 127–144.

    Article  Google Scholar 

  19. 19.

    Agilent VEE Website. Accessed June 2012 http://www.agilent.co/find/vee.

  20. 20.

    Mitov Software OpenWire Website. Accessed June 2012 http://www.mitov.com/products/openwire.

  21. 21.

    Schniter, P. (2012). Polyphase decimation filter, Connexions Website. Accessed June 2012 http://cnx.org/content/m10433/2.12.

  22. 22.

    Morrison, J. P. (2012) Flow-based programming, 2nd ed.: A new approach to application development, self-published: EAN-13 978-1451542325, 2010. Accessed June 2012 https://www.createspace.com/3439170.

  23. 23.

    Hsu, C. J., Corretjer, I., Ko, M. Y., Plishker, W., Bhattacharyya, S. S., (2007). Dataflow interchange format. Technical Report UMIACS-TR-2007-32, Institute for Advanced Computer Studies, University of Maryland at College Park, June 2007.

  24. 24.

    SystemC Website. Accessed June 2012 http://www.systemc.org.

  25. 25.

    Grimm, C. (Ed.). (2004). Languages for system specification. Boston: Kluwer Academic Publishers.

    Google Scholar 

  26. 26.

    NoFlo (Flow-based programming for Node.js) Website. Accessed June 2012 https://github.com/bergie/noflo.

  27. 27.

    Berka, A. V. (2012). Interlanguages and synchronic models of computation, Published 25 May 2010 on the Isynchronise Ltd. Website. Accessed June 2012 http://arxiv.org/pdf/1005.5183.

  28. 28.

    ParC Website. Accessed June 2012 http://parallel.cc.

  29. 29.

    Thies, W., Karczmarek, M., & Amarasinghe, S. (2002). StreamIt: A language for streaming applications. Proceedings of the International Conference on Compiler Construction, Grenoble, 2002.

  30. 30.

    Stroustrup, B. (2000). The C++ Programming Language: Special Edition, Addison-Wesley, ISBN 0201700735.

  31. 31.

    C++03 Wikipedia Entry. Accessed June 2012 http://en.wikipedia.org/wiki/C++03.

  32. 32.

    C++ Working Group Documents Website. Accessed June 2012 http://www.open-std.org/JTC1/SC22/WG21.

  33. 33.

    C++11 Wikipedia Entry. Accessed June 2012 http://en.wikipedia.org/wiki/C++11.

  34. 34.

    Dinesh, T. B., Haveraaen, M., & Heering, J. (2000). An algebraic programming style for numerical software and its optimization. Scientific Programming, 9(4), 247–259.

    Google Scholar 

  35. 35.

    McCarthy, N. (2011). The VOLK is for the people: On-Chip, hand-coded optimization in an unaccommodating world. Presented at the 1st GNU Radio Conference, Philadelphia.

  36. 36.

    Apple Developer Website, Taking advantage of the accelerate framework. Accessed June 2012 https://developer.apple.com/performance/accelerateframework.html.

Download references


This work has been supported in part by NIJ Grant 2006-IJ-CX-K034 and an NVIDIA Professor Partnership Award.

Author information



Corresponding author

Correspondence to Michael Dickens.

Rights and permissions

Reprints and Permissions

About this article

Cite this article

Dickens, M., Laneman, J.N. On the use of an algebraic language interface for waveform definition. Analog Integr Circ Sig Process 73, 613–625 (2012). https://doi.org/10.1007/s10470-012-9921-9

Download citation


  • Software defined radio
  • Waveform definition language
  • Octave
  • C++
  • Runtime optimization