Tuesday, August 20, 2019

New Use of ASN.1 - Nuclear Instrumentation


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.