A representation of the 10 bit PRBS used for hashing. 

A representation of the 10 bit PRBS used for hashing. 

Source publication
Article
Full-text available
Concurrent coding is an encoding scheme with holographic-type properties that are shown here to be robust against a significant amount of noise and signal loss. A simple and practical scheme has been tested that displays perfect decoding when the signal to noise ratio is of order -15dB. The same scheme also displays perfect reconstruction when a co...

Context in source publication

Context 1
... across a larger codeword space. A message is broken down into linearly expanding sub-sequences of bits, each of which is then passed through a hashing function. The output of the hashing function is used as the address of a mark to be placed in the codeword space. For example the message 1101 will produce addresses from the hash sequences H(1), H(01), H(101) and H(1101). Multiple messages can be combined into a single codeword before transmission, as shown schematically in Figure 1. The decoding of the message proceeds by trying the values 0 and 1, (the first potential message bits) and passing them through the hashing function, then examining the received codeword. If a mark is found at the position indicated by the output of the hash functions then the message value is retained for further analysis. If no mark is found all possibilities with the input sequence cannot be found and analysis not pursued. For the retained values the next step in the sequence is examined with both 0 and 1 appended i.e. if H(1) found, next step is H(01) and H(11) , retaining those attempts that result in an associated mark present in the codeword. The process is repeated for the relevant number of bits in each message. The process forms a decoding tree as represented in Figure 2. The effect of noise or jamming that adds marks into the codeword is also shown by the highlighted bit in the codeword. It can be seen that whilst initially extra branches are retained they are quickly lost as no marks corresponding to messages are found. With a large number of messages present or significant noise there will be routes through the decoding tree that result in messages not actually present in the original codeword. These false messages are referred to as hallucinations. To help reduce hallucinations a number of constant value, (0) checksum bits are appended to each message (e.g 1101 becomes 001101). Of particular significance to this technique is the hash function that is used. As this function can be called many times, particularly in the decoding tree the processing requirements can be a limiting factor in the performance and could therefore limit bandwidth and usability. Indeed BBC recognised the impact of the hash function and developed the Inchworm Hash to speed up the process [4] and subsequently the Glowworm Hash [8]. Simplicity and speed of implementation are important factors in translating concepts into viable technologies. The driving principle of the hash function is redistribution around the codeword, not in this first instance of providing security in the encoding. For this purpose a PRBS generator was found to be a suitable and simple variant of the hashing function with the added attraction of simplicity of implementation. A 10 bit PRBS addresses a codeword space of 1024 bits and enables 8 bit messages with 2 check sum bits to be used. A PRBS is attractive because it can be implemented in either hardware or software without requiring a large number of operations. The PRBS used in this work is represented in Figure 3 . Whilst this approach does not hash sub-sequences as presented earlier, each progression through each bit of the message produces an output state dependent upon the current bit and all the previous bits. The output of each cycle is used as the address for placing a mark in the codeword. A concurrent code model was coded using LabView software with a view to exploring the performance of this technique with a variety of data conditions and identifying strengths and weaknesses. A word about the scale. In this work simplicity and practicality are driving principles behind the design. For this reason the codeword length was kept relatively short at 10 bits, allowing 8 bit messages to be encoded (convenient for transmitting ASCII codes for example) and equally allowing a simple PRBS to be used. The BBC implementations often focussed on much longer codewords with individual messages as long as 200 bits as well as more involved hashing algorithms. One downside of this is significant latency in the final decoding of the transmission; an issue that is sometimes encountered with interleaving where the effect is much reduced in comparison to concurrent coding. For concurrent coding the entire codeword must be received before the message decoding process can begin, followed by what could be a lengthy computationally involved decoding process. The opposite approach is chosen here, to keep the latency down with short codewords and to reduce computational load with simple hashes. A chosen number of randomly generated 8 bit messages were passed through a concurrent coding algorithm and a codeword prepared from the overlaying of all the encoded messages. This prepared codeword was then degraded through the addition of a controllable level of noise marks into the codeword. An important characteristic of Concurrent Coding is that genuine messages placed into the codeword cannot be deleted, they can only be obscured by the presence of hallucinations, a feature arising from the indelible marks used and the binary asymmetry. Thus the level of hallucinations generated is a critical parameter in assessing the signal to noise ...

Citations

... Concurrent coding is a unique method of encoding that differs significantly from conventional encoding methods[[1]- [5]] and has recently been investigated as a novel, robust method of protecting data transmission[ [6]]. Conventional approaches to protecting information transfer against the corrupting effects of noise see the characteristics of a block of information being encoded with and into the information, thus increasing the amount of data being sent and reducing the information rate. ...
... Concurrent coding is a binary asymmetric technique that encodes and decodes message vectors rather than bits but can only be implemented on binary modulation schemes. It has shown robustness against noise and in particular burst errors[ [6]]. It was originally conceived as a method for providing protection against jamming, an alternative to spread spectrum techniques [ [1], [2], [3]] . ...
... Concurrent coding works by repeated use of a hashing function to distribute information throughout a codeword. Many hashing functions are appropriate [ [4], [6], [16]] but the emphasis is on distribution rather than security although attacks against the algorithm have been examined[ [17]] . Recently Hanifi et al [[18]] have developed a new concurrent code based on the use of monotone Boolean functions. ...
Preprint
Full-text available
An unconventional encoding scheme called concurrent coding, has recently been demonstrated and shown to offer interesting features and benefits in comparison to conventional techniques, e.g. robustness against burst errors and improved efficiency of transmitted power. This concept has been demonstrated for the first time with optical communications where standard light emitting diodes (LEDs) have been used to transmit information encoded with concurrent coding. The technique successfully transmits and decodes data despite unpredictable interruptions to the transmission causing significant drop-outs to the detected signal. The technique also shows how it is possible to send a single block of data in isolation with no pre-synchronisation required between transmitter and receiver, and no specific synchronisation sequence appended to the transmission. This work also demonstrates for the first time the successful use of multithreaded (overlaid) concurrent codes
... Interference might be overcome with the use of a spread spectrum technique. Concurrent coding is a very different way of protecting information [1]- [5] which performs all of the above functions in a single process [6]. Concurrent coding represents a different approach where data is redistributed 'globally' within a data set rather than locally. ...
... The principles of concurrent coding are laid out in previous references [1]- [6] but are given here briefly. . Where corresponding marks are found in the codeword branches are kept alive, where no marks are found no further possibilities are explored in subsequent rounds. ...
... In the earlier work large message vectors of several thousand bits were hashed into a codeword that could be millions of bits in length [3]. Other examples have used much smaller message vectors of 8 bits with codewords of a few thousand bits in length [6]. It is useful to define two types of code as follows: Closed Codes -Where all possible message vectors can be uniquely encoded into the codeword. ...
Preprint
Concurrent coding is an unconventional encoding technique that simultaneously provides protection against noise, burst errors and interference. This simple-to-understand concept is investigated by distinguishing 2 types of code, open and closed, with the majority of the investigation concentrating on closed codes. Concurrent coding is shown to possess an inherent method of synchronisation thus requiring no additional synchronisation signals to be added. This enables an isolated codeword transmission to be synchronised and decoded in the presence of noise and burst errors. Comparisons are made with the spread spectrum technique CDMA. With a like-for-like comparison concurrent coding performs comparably against random noise effects, performs better against burst errors and is far superior in terms of transmitted energy efficiency
... Interference might be overcome with the use of a spread spectrum technique. Concurrent coding is a very different way of protecting information [1]- [5] which performs all of the above functions in a single process [6]. Concurrent coding represents a different approach where data is redistributed 'globally' within a data set rather than locally. ...
... The principles of concurrent coding are laid out in previous references [1]- [6] but are given here briefly. . Where corresponding marks are found in the codeword branches are kept alive, where no marks are found no further possibilities are explored in subsequent rounds. ...
... In the earlier work large message vectors of several thousand bits were hashed into a codeword that could be millions of bits in length [3]. Other examples have used much smaller message vectors of 8 bits with codewords of a few thousand bits in length [6]. It is useful to define two types of code as follows: Closed Codes -Where all possible message vectors can be uniquely encoded into the codeword. ...
Preprint
Full-text available
Concurrent coding is an unconventional encoding technique that simultaneously provides protection against noise, burst errors and interference. This simple-to-understand concept is investigated by distinguishing 2 types of code open and closed with the majority of the investigation concentrating on closed codes. Concurrent coding is shown to possess an inherent method of synchronisation thus requiring no additional synchronisation signals to be added. This enables an isolated codeword transmission to be synchronised and decoded in the presence of noise and burst errors. Comparisons are made with the spread spectrum technique CDMA. With a like-for-like comparison concurrent coding performs comparably against random noise effects, performs better against burst errors and is far superior in terms of transmitted energy efficiency.