Abstract
Development of modern Software Defined Radio (SDR) based communication systems can be accelerated significantly by the use of processing frameworks. The evolution of SDR and the involved departure from digital representations of classical radio architecture towards more abstract software systems raises new requirements of increased flexibility and versatility. The proposed Data Flow Control for C++ (DFC++) processing framework concept addresses those requirements by employing modern programming techniques and flow control mechanisms to allow for variable data rates, dynamic paths, and flexible component designs. Another important trend is the integration of various embedded platforms in the software radio domain. The rapidly increasing performance and efficiency of embedded processors enables the deployment of SDR systems in more space and power constrained environments. Therefore covering a heterogeneous hardware selection becomes increasingly important for processing frameworks. By relying exclusively on C++ and minimizing external dependencies, DFC++ is specifically aiming for excellent portability and adaptability to support a wide range of current and future software radio projects while maintaining high performance and ease of use. This paper introduces the key aspects of the DFC++ concept and implementation with focus on the reference pointer based data transport mechanisms responsible for the propagation of user data between different processing components.
Similar content being viewed by others
References
Braun, M., & et al. (2014). Core concepts of GNU Radio. http://gnuradio.org/redmine/projects/gnuradio/wiki/TutorialsCoreConcepts.
Bard, J., & Kovarik, V. J. (2007). Software Defined Radio - The Software Communications Architecture. Chichester, West Sussex: Wiley.
Aguayo González, C. R., & et al. (2009). Open-source SCA-based core framework and rapid development tools enable software-defined radio education and research. IEEE Commun. Mag., 47(10), 48–55.
Gomez, I., Marojevic, V., & Gelonch, A. (2011). ALOE: an open-source SDR execution environment with cognitive computing resource management capabilities. IEEE Commun. Mag., 49(9), 76–83.
Ronga, L. S. (2005). MuDiSP3 - the MuDiSP tool. http://mudisp3.sourceforge.net.
ISO/IEC (2012). 19500-1/2/3:2012: information technology - object management group - common object request broker architecture (CORBA). http://www.omg.org/spec/CORBA.
JPEO/JTRS (2006). Software communications architecture specification Version 2.2.2. http://www.public.navy.mil/jtnc/sca/Documents/SCAv2_2_2/SCA_version_2_2_2.pdf.
Lockheed Martin Advanced Technology Labs (2015). Comparing various IPC technologies for distributed, real-time embedded computing. http://www.atl.lmco.com/projects/QoS/compare/dist_oo_compare_ipc.html.
FlexNets (2012). ALOE quick start guide. http://flexnets.upc.edu/trac/wiki/QuickStartGuide.
Intel (2014). Intel 64 and IA-32 architectures software developers manual, volume 1: basic architecture. http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-1-manual.pdf.
ARM (2011). Cortex-A9 NEON media processing engine, revision: r3p0. http://infocenter.arm.com/help/topic/com.arm.doc.ddi0409g/DDI0409G_cortex_a9_neon_mpe_r3p0_trm.pdf.
David, F. M., Carlyle, J. C., & Campbell, R. H (2007). Context switch overheads for linux on ARM platforms. http://choices.cs.uiuc.edu/contextswitching.pdf.
Li, C., Ding, C., & Shen, K (2007). Quantifying the cost of context switch http://www.cs.rochester.edu/u/cli/research/switch.pdf.
ISO/IEC (2003). 14882:2003: Standard for programming language C++.
IEEE (2013). Standard for information technology - portable operating system interface, base specifications, Issue 7. http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6506091.
Microsoft (2015). MSDN - Windows API Index. https://msdn.microsoft.com/en-US/library/windows/desktop/ff818516.
Texas Instruments (2011). SYS/BIOS real-time operating system users guide, v6.33. http://www.ti.com/lit/ug/spruex3k/spruex3k.pdf.
Free Software Foundation (2016). GCC, the GNU compiler collection. http://gcc.gnu.org.
Valgrind (2015). Valgrind user manual. http://valgrind.org/docs/manual/manual.html.
Gerneth, F. (2010). FIR filter algorithm implementation using intel SSE instructions. http://www.intel.de/content/dam/www/public/us/en/documents/white-papers/fir-filter-sse-instructions-paper.pdf.
Robert, J., Lindner, T., & Milosiu, H. (2015). Sub 10\(\mu \)W wake-up-receiver based indoor/outdoor asset tracking system. http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7301613.
Tröger, H.-M., & et al. (2014). Time and frequency synchronization of a wireless sensor network with signals of opportunity. in Proceedings of the 46th Annual Precise Time and Time Interval Systems and Applications Meeting, pp. 117–123.
Acknowledgments
This contribution was supported by the Bavarian Ministry of Economic Affairs and Media, Energy and Technology as a part of the Bavarian project “Leistungszentrum Elektronik-systeme (LZE)”. http://www.leistungszentrum-elektroniksysteme.de.
Author information
Authors and Affiliations
Corresponding author
Additional information
This is an extended version of the paper “DFC++ - A Novel Framework Approach for Flexible Signal Processing on Embedded Systems” presented at WInnComm Europe 2015 Conference.
Rights and permissions
About this article
Cite this article
Soller, D., Jaumann, T., Kilian, G. et al. DFC++ Processing Framework Concept. J Sign Process Syst 89, 181–190 (2017). https://doi.org/10.1007/s11265-016-1174-x
Received:
Revised:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11265-016-1174-x