Seminar Topics & Project Ideas On Computer Science Electronics Electrical Mechanical Engineering Civil MBA Medicine Nursing Science Physics Mathematics Chemistry ppt pdf doc presentation downloads and Abstract

Full Version: Design Patterns for GNSS Software Receivers
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Design Patterns for GNSS Software Receivers


[attachment=38499]

INTRODUCTION

In Global Navigation Satellite System (GNSS) receivers, signal
processing techniques dealing with the challenges posed by the multi–
constellation/multi–frequency concept and the requirements of scientific
applications should be designed along with the receiver architecture.
The software defined radio approach is a design trend that is
reaching a certain degree of maturity, moving from a strictly–research
orientation to higher levels of performance, reliability, and robustness,
shortening the path to meet the stringent requirements of scientific
and industrial applications. In this sense, a discussion on software
design patterns and their application to multi–constellation/multi–
frequency software receivers appears as a timely, essential task
to achieve the goals of efficiency, modularity, interoperability, and
flexibility demanded by different user domains (aeronautical, land
mobile, maritime, earth observers, geodesy, etc).
In this paper, the approach is based on modern computer science
concepts, ranging from design patterns and template metaprogramming
(which shifts complexity to compile time instead of execution
time, giving place to more optimized executables) to agile software
development techniques, including software development cycles consisting
in planning, requirements analysis, design, coding, unit testing,
and acceptance testing. All these constitute a set of engineering
best practices intended to allow for rapid delivery of high–quality
software.



STATE–OF–THE–ART

Last decade has witnessed a rapid evolution of GNSS software
receivers. Since the first GPS Standard Positioning Service software
receiver described in [1], where the concept of bandpass sampling (or
intentional aliasing) was introduced, several works were devoted to
architectural and implementation aspects. For instance, [2] provided
details about analog–to–digital conversion, high sensitivity signal
acquisition and different tracking loops, and [3] discussed real–time
issues such as the transition from acquisition to tracking. Textbooks
[4] and [5] increased the awareness of the community about the great
benefits provided by software receivers with respect to the traditional
hardware–oriented approach, providing a Matlab implementation of
a complete GPS receiver. In order to accelerate computations and
attain real–time in commodity general–purpose processors, bitwise
operations were introduced in [6]. The use of Single–Input Multiple–
Data (SIMD) parallel computing technology for the correlators and
other time–critical operations is due to [7], a solution that exploited
an extension set of assembly instructions for Intel processors. Both
approaches suffered from being bit–depth dependent, jeopardizing
flexibility since signal quantification cannot be easily changed. Other
recent approaches take advantage of today’s pervasive multicore
architecture processors [8], [9], or of the computational power of
modern Graphics Processing Units (GPUs) [10]. Test procedures
for GNSS software receivers were addressed in [11], and a general
discussion about the architecture is found in [12]. Carrier phase
measurements and clock steering are discussed in [13].



PROGRAMMING METHODOLOGY

After a brief review of the state–of–the–art, this Section aims
to provide concept definitions, practical guidelines, good coding
practices, and development methodologies to attain the objective of
well–written GNSS software receivers.
A. Design patterns
The concept of software design pattern was firstly introduced
in [20], a book that rapidly became a fundamental reference on
the topic. Software design patterns are descriptions of solutions to
common software problems arising in different contexts, capturing
recurring structures and dynamics among software participants to
facilitate reuse of successful, thoughtfully proven designs. They
generally codify expert knowledge of design strategies, constraints
and best practices. Following a pattern helps to resolve key design
forces such as flexibility, extensibility, dependability, predictability,
scalability, and efficiency. They are not code recipes but generalized
solutions to commonly occurring problems, showing relationships
and interactions between classes or objects but without specifying the
final application instantiations. The work in [21] took these concepts
further, and explored their applicability to real–time systems. Other
references are [22], dealing with concurrency issues, [23], that
introduced the object pool pattern, and [24], that advocates using
patterns for improving an existing design.



CONCLUSIONS
Design patterns encapsulate experience and know–how, alleviating
the lack of a comprehensive quantitative measure of software quality
and formalizing good practices in software development. In this
paper, these concepts have been applied to the specific field of
GNSS software receivers, aiming to discuss some formal aspects,

associated design, and development methodologies. Besides, this
paper also presents an open source GNSS software receiver that
partially implements the proposed approach and offers a free–access
framework for further development.