Symbol boundary detection

09749124 · 2017-08-29

Assignee

Inventors

Cpc classification

International classification

Abstract

A symbol boundary in a data packet having a guard interval preceding a preamble having a predetermined sequence of symbols is detected by receiving a signal representing a data packet; sampling the received signal at a sampling rate; estimating channel impulse responses from a set of samples in dependence on the predetermined sequence of symbols of the preamble; determining an energy value for each of a plurality of windows of channel impulse responses, each of the windows corresponding to W number of consecutive samples, the energy value for each of the windows being indicative of the total energy associated with the channel impulse responses of that window; determining which of the windows has the greatest energy value; and identifying the earliest sample of the consecutive W samples in said determined greatest energy window, the earliest sample being indicative of a symbol boundary for the preamble.

Claims

1. A method for detecting a symbol boundary between symbol intervals in a data packet comprising a guard interval preceding a preamble having a predetermined sequence of symbols, the method comprising: receiving a signal representing a data packet, the signal comprising a first signal transmitted from one antenna and one or more other signals transmitted from respective one or more other antennas, said other signals being the same as the first signal and shifted by predetermined amount of time; sampling the received signal at a specified sampling rate to obtain a set of samples; estimating channel impulse responses from the set of samples in dependence on the predetermined sequence of symbols of the preamble; determining an energy value for each of a plurality of first windows of channel impulse responses, each of the first windows corresponding to W number of consecutive samples, W being an integer greater than 1, the energy value for each of the first windows being indicative of the total energy associated with the channel impulse responses of that window; determining which of the first windows has the greatest energy value; identifying the earliest sample n.sub.lgi of the consecutive W samples in the determined greatest energy first window; calculating a sample range in dependence on sample n.sub.lgi a peak sample n.sub.max and a W.sub.s number of samples corresponding to the duration of a short guard interval; determining an energy value for each of a plurality of second windows of channel impulse responses, each second window corresponding to W.sub.s number of consecutive samples, the plurality of second windows being within the sample range, the energy value for each second window being indicative of the total energy associated with the channel impulse responses of respective W.sub.s samples; determining which second window has the greatest estimated energy value; and identifying the earliest sample of the consecutive W.sub.s samples in said determined second window, the earliest sample being indicative of a symbol boundary in said data packet.

2. A method as claimed in claim 1, wherein W is dependent on the sampling rate and a duration of the guard interval.

3. A method as claimed in claim 1, wherein W corresponds to a number of samples for the duration of a long guard interval.

4. A method as claimed in claim 1, wherein said step of calculating a sample range comprises: identifying the channel impulse response having the greatest energy as n.sub.max; and determining if n.sub.max is for the first signal or the one of the other signals in dependence on n.sub.lgi and W.sub.s.

5. A method as claimed in claim 4, wherein the maximum magnitude of the shift is d and said step of calculating the sample range comprises setting the start of the range as n.sub.c−W.sub.s+1, and the end of the range as n.sub.c−W.sub.s−1, wherein n.sub.c=n.sub.max if n.sub.max is for the first signal or n.sub.c=n.sub.max−d if n.sub.max is for one of the other signals.

6. A method as claimed in claim 1, wherein the maximum magnitude of the shift is d and the first and other signals are transmitted over channels having a channel width corresponding to less than d.

7. A method as claimed in claim 1, wherein the received signal comprises a first signal transmitted from a first transmit antenna and a plurality of shifted signals transmitted from a plurality of other transmit antennas, each shifted signal being shifted by a different predetermined amount time from the first signal, and the first and other signals being received at a corresponding number of receive antennas, the method further comprising: decoupling the channel impulse response for the channels between each transmit antenna and each receive antenna; and summing the decoupled channel impulse responses, said step of determining an energy value for each of a plurality of sets being carried out on the summed channel impulse responses.

8. A receiver comprising: a plurality of antennas configured to receive a signal representing a data packet, wherein each data packet comprises a guard interval preceding a preamble having a predetermined sequence of symbols, the received signal comprises a first signal transmitted from one transmit antenna and one or more other signals transmitted from respective one or more other transmit antennas, said other signals being the same as the first signal and shifted by predetermined amount of time; a sampler configured to sample the received signal at a specified sampling rate to obtain a set of samples; and a symbol boundary estimator configured to: estimate channel impulse responses from the set of samples in dependence on the predetermined sequence of symbols of the preamble; determine an energy value for each of a plurality of first windows of channel impulse responses, each of the first windows corresponding to W number of consecutive samples, W being an integer greater than 1, the energy value for each of the first windows being indicative of the total energy associated with the channel impulse responses of that window; determine which of the first windows has the greatest energy value; identify the earliest sample n.sub.lgi of the consecutive W samples in the determined greatest enemy first window; calculate a sample range in dependence on sample n.sub.lgi , a peak sample n.sub.max and a number W.sub.s of samples corresponding to the duration of a short guard interval; determine an enemy value for each of a plurality of second windows of channel impulse responses, each second window corresponding to W.sub.s, number of consecutive samples, the plurality of second windows being within the sample range, the energy value for each second window being indicative of the total enemy associated with the impulse responses of respective W.sub.s, samples; determine which second window has the greatest estimated energy value; and identify the earliest sample of the consecutive W.sub.s samples in said determined second window, the earliest sample being indicative of a symbol boundary in the data packet.

9. A receiver as claimed in claim 8, wherein the plurality of first windows comprises successive first windows of W samples, each successive first window being offset by one sample from a previous first window in the succession.

10. A receiver as claimed in claim 8, wherein W is dependent on the sampling rate and a duration of the guard interval.

11. A receiver as claimed in claim 8, wherein the guard interval duration is 0.8μs or 0.4μs.

12. A receiver as claimed in claim 8, wherein the data packet further comprises a training field preceding the guard interval, the symbol boundary estimator being further configured to estimate a boundary between the training field and the guard interval, the set of samples being taken from said estimated boundary for a period corresponding to the duration of the preamble.

13. A receiver as claimed in claim 8 wherein W corresponds to a number of samples for the duration of a long guard interval.

14. A receiver as claimed in claim 8, wherein the symbol boundary detector is configured to calculate the sample range by: identifying the channel impulse response having the greatest energy as n.sub.max; and determining if n.sub.max is for the first signal or one of the other signals in dependence on n.sub.lgi and W.sub.s.

15. A receiver as claimed in claim 14, wherein the maximum magnitude of the shift is d and the symbol boundary detector is configured to calculate the sample range by setting the start of the range as n.sub.c−W.sub.s+1, and the end of the range as n.sub.c−W.sub.s−1, wherein n.sub.c=n.sub.max if n.sub.max is for the first signal or n.sub.c=n.sub.max−d if n.sub.max is for one of the other signals.

16. A receiver as claimed in claim 8, wherein the maximum magnitude of the shift is d and the first and other signals are transmitted over channels having a channel width corresponding to less than d.

17. A receiver as claimed in claim 8, wherein the received signal comprises a first signal transmitted from a first transmit antenna and a plurality of shifted signals transmitted from a plurality of other transmit antennas, each shifted signal being shifted by a different predetermined amount time from the first signal, and the receiver comprising a corresponding number of receive antennas configured to receive the first and other signals, the symbol boundary estimator being further configured to: decouple the channel impulse response for the channels between each transmit antenna and each receive antenna; and sum the decoupled channel impulse responses, said step of determining an energy value for each of a plurality of sets being carried out on the summed channel impulse responses.

18. A non-transitory computer readable storage medium having stored therein processor executable instructions that when executed cause at least one processor to: receive a signal representing a data packet, the signal comprising a first signal transmitted from one antenna and one or more other signals transmitted from respective one or more other antennas, said other signals being the same as the first signal and shifted by predetermined amount of time; sample the received signal at a specified sampling rate; estimate channel impulse responses from a set of samples in dependence on the predetermined sequence of symbols of the preamble; determine an energy value for each of a plurality of first windows of channel impulse responses, each of the first windows corresponding to W number of consecutive samples, where W is an integer greater than one, the energy value for each of the first windows being indicative of the total energy associated with the channel impulse responses of that window; determine which of the windows has the greatest energy value; identify the earliest sample n.sub.lgi of the consecutive W samples in the determined greatest energy first window; calculate a sample range in dependence on sample n.sub.lgi,a peak sample n.sub.max and a W.sub.s number of samples corresponding to the duration of a short guard interval; determine an energy value for each of a plurality of second windows of channel impulse responses, each second window corresponding to W.sub.s number of consecutive samples, the plurality of second windows being within the sample range, the energy value for each second window being indicative of the total energy associated with the channel impulse responses of respective W.sub.s samples; determine which second window has the greatest estimated enemy value; and identify the earliest sample of the consecutive W.sub.s samples in said determined second window, the earliest sample being indicative of a symbol boundary in the data packet.

Description

DESCRIPTION OF THE DRAWINGS

(1) The present invention will now be described by way of example with reference to the accompanying drawings, in which:

(2) FIG. 1 shows a structure of a packet in accordance with the IEEE 802.11 standard;

(3) FIG. 2 shows a schematic diagram of a receiving device;

(4) FIG. 3 shows an example channel impulse response for a single-input single-output (SISO) system;

(5) FIG. 4 shows an example channel impulse response for system with 2 transmit antennas and N.sub.RX receive antennas;

(6) FIG. 5 shows an example channel impulse response for a wide band channel in a system with 2 transmit antennas and N.sub.RX receive antennas; and

(7) FIG. 6 shows an example of summing channel impulse responses for a wide band channel in a system with N.sub.Tx transmit antennas and N.sub.Rx receive antennas.

DETAILED DESCRIPTION OF THE INVENTION

(8) The following description is presented to enable any person skilled in the art to make and use the invention, and is provided in the context of a particular application. Various modifications to the disclosed embodiments will be readily apparent to those skilled in the art.

(9) The general principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the present invention. Thus, the present invention is not intended to be limited to the embodiments shown, but is to be accorded the widest scope consistent with the principles and features disclosed herein.

(10) Examples described herein provide a new, energy based method of determining a symbol boundary in an OFDM system with preamble that has a predetermined sequence of symbols. For a received signal, a coarse estimate of the symbol boundary may first be made using a method such as an auto-correlation based boundary estimation. Channel impulse responses can be calculated from samples of the received signal using the predetermined preamble symbols. The energy for each of a plurality of windows of channel impulse responses can be determined, wherein each window corresponds to W number of consecutive samples. The energy value for each window is indicative of the total energy associated with that window. In examples described herein, the window that has the greatest estimated energy value is determined and the earliest sample of the consecutive W samples in the greatest energy window is identified. The earliest sample is indicative of the symbol boundary. As described in more detail below, this method allows the symbol boundary to be determined for packets transmitted in single-input single-output systems and in multiple-input multiple-output systems operating with narrowband or wideband channels.

(11) FIG. 2 shows a receiving device 200 comprising an RF receiver unit 201, an analogue-to-digital converter (ADC) 202, a coarse boundary estimator 203, a symbol aligner 204, a fast Fourier transform (FFT) unit 205, a packet processor 206 and a fine symbol boundary (FSB) estimator 207.

(12) The RF receiver unit 201 receives an analogue OFDM signal and provides it to the ADC 202. The ADC 202 samples the analogue OFDM signal and feeds it to the symbol aligner 204. The symbol aligner 204 aligns the samples so that the input to FFT unit 205 is the 3.2 μs of samples for each data symbol. The sample rate of the ADC 202 may be dependent on the bandwidth of the signal to be received, which may be, for example, 20, 40, 80 or 160 MHz. The sampled signal is also fed to the coarse boundary estimator 203, which provides a coarse estimate of the symbol boundary for the received signal and provides that estimate to the symbol aligner 204.

(13) The symbol aligner 204 aligns the samples initially according to the coarse estimated symbol boundary from the coarse boundary estimator 203. The symbol aligner 204 feeds the aligned samples to the FFT unit 205. The FFT unit 205 computes the discrete Fourier transform (DFT) of the samples. The DFT of the samples is fed back into the FSB estimator 207 so that the FSB can be estimated. The FSB estimate is provided to the symbol aligner 204 which aligns the symbols according to that estimate. The FFT unit 205 transforms the signal into a frequency domain signal, from which the payload data can be obtained via further processing at the packet processor 206.

(14) The correct start position (i.e., the symbol boundary) of the time domain sampled signal should be accurately estimated so that the FFT is performed at the proper time so as to avoid ISI effectively. The coarse boundary estimator 203 determines an estimate of the symbol boundary and provides it to the symbol aligner 204 so that the samples can be properly aligned for the FFT.

(15) The plurality of time-sequential samples obtained from ADC 202 is provided to the coarse boundary estimator 203, which coarsely estimates the time of the S10-DGI boundary. This coarse estimation can be carried out using any method known in the art, such as auto-correlation using the short preamble.

(16) From the coarse estimation of the S10-DGI boundary, a rough estimation of the time of the DGI-L1 boundary can be determined. The FSB estimator 207 utilises 3.2 μs of samples from the time of the estimated S10-DGI boundary to provide a finer estimation of the time of the DGI-L1 boundary. An N-point discrete Fourier transform (DFT) is performed on these samples by the FFT unit 205 to convert the sampled signal from the time domain to the frequency domain, where N is the total number of time-domain samples of the signal in the 3.2 μs period.

(17) The long preamble L1 has a predetermined sequence of symbols (which is defined by the appropriate 802.11 standard) and so the long preamble is known by the receiving device 200. Thus the long preamble signal in the frequency domain is also known by the receiver. The FSB estimator 207 compensates each of the frequency domain samples with the known frequency domain values of the long preamble signal. Each frequency domain sample is compensated by multiplying the N-point DFT output for the sample with the conjugate of frequency domain values of the known long preamble.

(18) The following equations and steps below generally describe the procedure carried out by the FSB estimator 207 to determine the DGI-L1 boundary.

(19) For n=1, 2, . . . , N samples,
y(n)=h(n)custom character.sub.Nx(n)+w(n)
where y(n) is the received signal in the time-domain, h(n) is the channel in the time-domain, x(n) is the transmitted signal in the time-domain and w(n) is the noise signal in the time-domain.

(20) Assuming the coarse boundary estimation is off by M samples, the received signal is the M samples delayed version of the long preamble signal p(n), so
y(n)=h(n)custom character.sub.Np(n−M)+w(n)

(21) DFT is applied for k=1, 2, . . . , N

(22) z ( k ) = g ( k ) p ( k ) e - j 2 π Mk N + w ( k )
where g(k) is the channel in the frequency-domain, p(k) is the long preamble in the frequency-domain, z(k) is the obtained signal in the frequency domain and w(k) is noise.

(23) The known frequency domain long preamble p(k) can be compensated in the above equation by multiplication of both sides by the conjugate of p(k).

(24) Hence,

(25) z ( k ) p * ( k ) = g ( k ) p ( k ) p * ( k ) e - j 2 π Mk N + w ( k ) p * ( k )

(26) As p(k)p*(k)=1, we get:

(27) z ~ ( k ) = g ( k ) e - j 2 π Mk N + w ~ ( k )
where {tilde over (z)}(k) and {tilde over (w)}(k) are intermediate signals, with {tilde over (z)}(k)=z(k)p*(k) and {tilde over (w)}(k)=w(k)p*(k).

(28) An inverse DFT (IDFT) is applied on both sides of above equation. For n=1, 2, . . . , N, this results in
c(n)=h(n−M)+{tilde over (w)}(n)
where c(n) is the estimated channel in the time domain, which is estimated using the known long preamble. In a noise-free environment, c(n) is the shifted version of h(n). From the estimated channel c(n), the FSB can be found as described below with reference to FIG. 3.

(29) FIG. 3 shows an example of the channel impulse response in a single-input single-output (SISO) system. The graph shows the energy of N samples (or channel taps). The channel taps represent impulse responses of channels.

(30) Since for an ISI-free OFDM system the number of channel taps with significant energy (e.g. taps that have energy that ≧90% higher than the rest of the taps) should be less than the number of samples for the guard interval, a sliding window 301 is used to measure the energy of a number of taps within a duration (i.e. the window size) that corresponds to the duration of the GI.

(31) As shown in FIG. 3, the window 301 moves along the x-axis one tap at a time so that the energy of the channel taps in the GI-sized window can be determined. The window position 302 with the greatest energy is determined. The first (i.e. earliest) tap 303 in the window 302 is selected to be an estimate of the position of the FSB. Selecting the earliest tap 303 as the FSB helps to mitigate the effect of ISI for L1.

(32) In multiple-input-multiple-output (MIMO) OFDM systems, when transmitting and receiving with multiple antennas, the receiving device can suffer from undesirable beam forming if every antenna transmits the same signal. In IEEE 802.11 systems, the preambles transmitted by different antennas are shifted cyclically. This leads to additional complications when determining the FSB due to the use of multiple cyclically shifting signals.

(33) For example, in a 2×N.sub.rx MIMO system (i.e. 2 transmitters and 1 or more receivers), both transmitters transmit the same long preamble signal but with a cyclic shift (d) (in the time domain) between the first and second transmitters. The cyclic shift causes the estimated channel for i.sup.th receive antenna c.sub.i(n) to contain the channel information of both transmitters with cyclic shift d. The estimated channel can be given by

(34) For iε[1 N.sub.rx] and n=1, 2, . . . , N
y.sub.i(n)=h.sub.i1(n)custom character.sub.Nx.sub.1(n)+h.sub.i2(n)custom character.sub.Nx.sub.2(n)+w.sub.i(n)
where y.sub.i(n) is the received signal in the time-domain, h.sub.i1(n) and h.sub.i2(n) are the channels in the time-domain between the first and second antennas of the transmitter and the i.sup.th receiver respectively, x.sub.1(n) and x.sub.2(n) are the transmitted signals in the time-domain by the first and second transmitters respectively and w.sub.i(n) is the noise signal in the time-domain.

(35) The received signal is the M samples delayed version of the long preamble signal p(n) and there is a cyclic shift d between the signals transmitted by the first and second transmitters, so:
y.sub.i(n)=h.sub.i1(n)custom character.sub.N p(n−M)+h.sub.i2(n)custom character.sub.N p(n−M+d)+w.sub.i(n)

(36) Similarly to above, DFT is applied to the signal, the frequency-domain signal is then compensated using the known long preamble signal in the frequency-domain and an IDFT is applied to the estimated channel to give:
c.sub.i(n)=h.sub.i1(n−M)+h.sub.i2(n−M+d)+{tilde over (w)}(n)

(37) FIG. 4 shows a channel impulse response for an example of a narrow band channel in a MIMO system with 2 transmit antennas, where the shift delay is −d. As shown, in a noise free environment, two peaks at M and M-d are obtained.

(38) The method described above of determining the highest energy window and the earliest tap in that window can be used to estimate the FSB for standard packets where the GI is longer than d. In this case, as shown in FIG. 4, the window 401 size is greater than d and so is able to cover both M and M-d peaks. However, in the scenario of HT or VHT packets with a short GI, the short GI may be less than d and so the shorter window size 402 corresponding to the short GI may not be sufficient to cover both peaks. Thus, if the peak at M-d is greater than the peak at M, then the window doesn't cover the peak at M, giving a false FSB reading. To account for this, the following procedure is used for the case of a 2×N.sub.rx MIMO and HT or VHT packets.

(39) The maximum energy peak tap location n.sub.max is determined from the sum of absolute square of resultant channel Σ.sub.i|c.sub.i(n)|.sup.2. Also, using the method described above in relation for FIG. 3, the tap location n.sub.LGI of the FSB using a window size for the long GI is determined. The following equation determines whether the peak at n.sub.max belongs to Σ.sub.i|h.sub.i1(n)|.sup.2 or Σ.sub.i|h.sub.i2(n)|.sup.2 (i.e. the channel between the first transmitter antenna and the i.sup.th receive antenna or the channel between the second transmitter antenna and the i.sup.th receive antenna respectively):

(40) n LGI - n max = { W S peak at M is the maximum < W S peak at M - d is the maximum
where W.sub.S is the number of taps (i.e. samples) in the short GI window of 0.4 μs.

(41) Once the peak location has been determined, the method described above for determining the FSB is carried out for a range of samples between n.sub.start and n.sub.end, which are defined as:
n.sub.start=n.sub.c−W.sub.S+1
n.sub.end=n.sub.c+W.sub.S−1
where n.sub.c is the position of the highest energy peak M for channel between first antenna and the i.sup.th receive antenna and is determined by:

(42) n C = { n max if N LGI - n max W S - 1 n max + d if N LGI - n max < W S

(43) The window of short GI size moves along the x-axis one tap at a time from n.sub.start to n.sub.end to determine the energy of W.sub.S taps within that range. The window position with the greatest energy is determined and the first (i.e. earliest) tap in that window corresponds to the location of the FSB for the HT or VHT packet transmitted by the first antenna of the transmitter. By carrying out the FSB determination within the n.sub.start and n.sub.end range, ISI from the channel between the second transmit antenna and the i.sup.th receive antenna can be avoided to give a more accurate FSB location.

(44) In certain cases where a wide band channel is used in a 2×N.sub.Rx MIMO, the channels between the first and second transmit antennas and the i.sup.th receive antenna can contain multiple paths. Thus, the channels can contain precursor, post-cursor and line of sight components. FIG. 5 shows an example of this, where the channels for the first and second transmit antennas Σ.sub.i|h.sub.i1(n−M)|.sup.2 and Σ.sub.i|h.sub.i2(n−M+d)|.sup.2 respectively have 2 precursors, 3 post-cursors and a line of sight component. In this case n.sub.start is decided based on the number of precursors that are required to be covered and the FSB is determined as described above.

(45) However, if the width of the channels is greater than the number of samples corresponding to the shift d, then the channels will overlap with each other, which may affect the FSB detection. Thus prior to carrying out the FSB detection using this method, the FSB estimator 207 may detect the channel type and width and determine the number of precursors required to be covered.

(46) In the case of a N.sub.Tx×N.sub.Rx MIMO systems for narrow- and wide-band channels, additional LTFs are transmitted which are used to compute channel estimates h.sub.ij.sup.E(n), where i=1, 2, . . . , N.sub.Rx and j=1, 2, . . . , N.sub.Tx. The channels h.sub.ij.sup.E(n) are decoupled channels and the methodology described above in relation to FIG. 3 can be applied to the sum of absolute square of decoupled channel Σ.sub.i|h.sub.i1.sup.E(n)|.sup.2 to determine the FSB for h.sub.i1.sup.E(n).

(47) Alternatively, in the case of N.sub.Tx×N.sub.Rx MIMO systems, rather than determining the FSB for h.sub.i1.sup.E(n), the shifted versions of the estimated channels h.sub.ij.sup.E(n) are summed. The sum of the absolute square of resultant channel |c.sub.ij.sup.E(n)|.sup.2 is given by

(48) .Math. c ij E ( n ) .Math. 2 = .Math. j .Math. i .Math. h ij E ( n - d cj ) N .Math. 2
where N is the duration of the long preamble and d.sub.j is the cyclic shift for the j.sup.th transmit antenna. The values for d.sub.j are predefined values, for example as defined in the IEEE 802.11 standard. |c.sub.ij.sup.E(n)|.sup.2 for an example signal is shown in FIG. 6. The FSB for the resultant channel |c.sub.ij.sup.E(n)|.sup.2 can be found using the sliding window method described above.

(49) The receiving device configured in accordance with the examples described herein could be embodied in hardware, software or any suitable combination of hardware and software. The receiving device of the examples described herein could comprise, for example, software for execution at one or more processors (such as at a CPU and/or GPU), and/or one or more dedicated processors (such as ASICs), and/or one or more programmable processors (such as FPGAs) suitably programmed so as to provide functionalities of the data processing system, and/or heterogeneous processors comprising one or more dedicated, programmable and general purpose processing functionalities. In the examples described herein, the transmitting and receiving devices comprise one or more processors and one or more memories having program code stored thereon, the data processors and the memories being such as to, in combination, provide the claimed data processing systems and/or perform the claimed methods.

(50) Data processing units described herein (e.g. ADC 202, coarse boundary estimator 203, symbol aligner 204, FFT unit 205, packet processor 206 and FSB estimator 207) need not be provided as discrete units and represent functionalities that could (a) be combined in any manner, and (b) themselves comprise one or more data processing entities. Data processing units could be provided by any suitable hardware or software functionalities, or combinations of hardware and software functionalities.

(51) The term software as used herein includes executable code for processors (e.g. CPUs and/or GPUs), firmware, bytecode, programming language code such as C or OpenCL, and modules for reconfigurable logic devices such as FPGAs. Machine-readable code includes software and code for defining hardware, such as register transfer level (RTL) code as might be generated in Verilog or VHDL.

(52) Any one or more of the data processing methods described herein could be performed by one or more physical processing units executing program code that causes the unit(s) to perform the data processing methods. Each physical processing unit could be any suitable processor, such as a CPU or GPU (or a core thereof), or fixed function or programmable hardware. The program code could be stored in non-transitory form at a machine readable medium such as an integrated circuit memory, or optical or magnetic storage. A machine readable medium might comprise several memories, such as on-chip memories, computer working memories, and non-volatile storage devices.

(53) The applicant hereby discloses in isolation each individual feature described herein and any combination of two or more such features, to the extent that such features or combinations are capable of being carried out based on the present specification as a whole in the light of the common general knowledge of a person skilled in the art, irrespective of whether such features or combinations of features solve any problems disclosed herein, and without limitation to the scope of the claims. The applicant indicates that aspects of the present invention may consist of any such individual feature or combination of features. In view of the foregoing description it will be evident to a person skilled in the art that various modifications may be made within the scope of the invention.