Among
various new uses of ASN.1, nuclear instrumentation has taken ASN.1 to new
heights in the critical world of sensors. The IEC International Standard, “Nuclear
instrumentation – Data format for list mode digital data acquisition used in
radiation detection and measurement”,
uses ASN.1 to encode digital data acquired from various sensors, including
radiation, environmental condition, and geolocation sensors. The standard
specifies the ASN.1 encoding format of the binary data which represents the
results of measurements of signals generated by various sensors.
For
example, the radiation level detected by a sensor (called an event) is passed
to an Amplifier/Anti-aliasing filter and an Analog to Digital converter (ADC).
The digital signal is then processed by a DSP/FPGA to extract the pulse
characteristics, e.g. shape, energy, timestamp, etc. This information is then
encoded in ASN.1 COER (Canonical Octet Encoding Rules) and stored in a data
file, or streamed to remote computers (receivers). It’s also possible to
combine the data acquired from different sensors into a single data file or
stream.
The IEC
63047 standard group chose ASN.1 and COER to specify data structures and
encoding format because ASN.1 is an international standard that is vendor-,
platform-, and language-independent. ASN.1 supports an extensibility feature
which ensures backward and forward compatibility between different editions of
the standard. Applications implemented using a revised edition of the standard
will be able to exchange encodings with applications implemented using the
previous editions and vice versa. The use of Canonical OER ensures that there
is exactly one binary representation for each possible data value, which allows
the use of digital signature and encryption to protect the encodings during
transfer to a file or a stream. Several characteristics - it being an
international standard; vendor, platform, and language independence;
extensibility to ensure backward and forward compatibility; and canonical
encodings - which often are taken for granted, made ASN.1 the ideal choice for
use in such critical solutions.
All the
encodings stored to a IEC63047 database file or sent to the receivers are of
the Listmodedata ASN.1 type which is a choice of a “Header”, an “EventList”, or
a “Footer” type. The first encoding should be of the “Header” type, followed by
a set of encodings of the type “EventList”. The last encoding should be of the
type “Footer” (see the diagram below). The EventList type is defined as a
SEQUENCE type which contains a SEQUENCE OF “Event”, and one “Event” is a CHOICE
of different types of Events.
The ASN.1
specification uses IEEE 754 single- and double-precision REAL types which yield
very efficient encodings. The OER encodings of these REAL types are the same as
the in-memory unencoded/decoded values. The values can be directly copied
to/from the encodings from/to the in-memory representations, making the
encoding and decoding process extremely efficient.
The OSS ASN.1 Tools, available for C, C++, Java, and C# programming languages, can be used to generate the COER encodings of the types “Header”, “EventList”, and “Footer”. The ASN.1 compiler maps the Listmodedata ASN.1 type to the structure/class of the programming language in use. An encoder application can fill an instance of the structure/class and call the high performance COER encoder to create the IEC 63047 encoding. On the receiver side, the encoding can be decoded, using the COER decoder, to an instance of the structure/class. There is no need for the encoder/decoder applications, built using the OSS ASN.1 Tools, to be aware of the intricacies of ASN.1 or COER.
Please visit OSS website to learn more about the OSS ASN.1 Tools and access the documentation of the Tools.