GB2322526A - Encoding and decoding data - Google Patents

Encoding and decoding data Download PDF

Info

Publication number
GB2322526A
GB2322526A GB9703715A GB9703715A GB2322526A GB 2322526 A GB2322526 A GB 2322526A GB 9703715 A GB9703715 A GB 9703715A GB 9703715 A GB9703715 A GB 9703715A GB 2322526 A GB2322526 A GB 2322526A
Authority
GB
United Kingdom
Prior art keywords
bits
division register
fcs
register
encoder
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
GB9703715A
Other versions
GB9703715D0 (en
Inventor
Martin Robert Evans
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Technology Partnership PLC
Original Assignee
Technology Partnership PLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Technology Partnership PLC filed Critical Technology Partnership PLC
Priority to GB9703715A priority Critical patent/GB2322526A/en
Publication of GB9703715D0 publication Critical patent/GB9703715D0/en
Publication of GB2322526A publication Critical patent/GB2322526A/en
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • H04L1/0043Realisations of complexity reduction techniques, e.g. use of look-up tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0052Realisations of complexity reduction techniques, e.g. pipelining or use of look-up tables

Abstract

Algorithms for encoding and decoding Frame Check Sequences (FCS) currently perform a standard modulo-2 addition using a feedback shift register. The algorithm is equivalent to: clocking a stream of m bits through a n stage division register, where n½m; and combining input bits with bits emerging from said division register to give a bit combination used to modify said division register's state, which only on its initial state and the bit stream. The fast algorithm is implemented in a digital processor having a q-bit division register and a look-up table store. In operation, the division register is initialised to zero and the following steps are performed repeatedly, p times: - adding a next group of N input bits, modulo-2, to a least significant group of N bits in the division register, in a first adder; - using the result as an index to a look-up table parameter, stored in said look-up table store; - shifting the contents of said division register N bits to the right and adding, modulo-2, the indexed look-up table parameter to the content of the division register, in a second adder. After completion of p steps, the FCS is derived from said division register contents. Application is to GSM mobile telephone systems.

Description

Improvements in. or Relating to Encoding and Decoding Data The present invention relates to data decoders, data encoders, data transmission systems and methods of decoding data, having particular application to data transmission over GSM mobile telephony systems.
Algorithms for encoding and decoding Frame Check Sequences (FCS) for Radio Link Protocol (RLP) frames have been defined in the GSM Standard 04.22, published by ETSI (European Telecommunications Standards Institute).
The data to be transmitted is encoded in the form of a cyclic error detecting code.
Such algorithms may be implemented on ASICs (Application Specific Integrated Circuit), using VHDL (VLSI Hardware Description Language), for incorporation into a Data Terminal Adaptor (DTA).
The algorithm currently used for FCS with RLP and implemented in VHDL for the DTA, performs a standard modulo-2 addition using a feedback shift register. This register is clocked 240 times as the input data stream is fed in to generate the checksum. The realisation of this implementation within an ASIC, or an FPGA (Field Programmable Gate Array) is compact and sufficiently fast and is, therefore, the most appropriate way of providing this function if an ASIC, or FPGA, is to be used. However, if a faster algorithm were available, suitable for software implementation within a processor, the ASIC, or FPGA, could be removed from the DTA, yielding a significant cost saving. In addition, other products, entirely software based, could contain a fast implementation of the algorithm, making it possible to provide data services where previously lack of performance would have meant that this was not feasible.
It is an object of the present invention to provide a fast algorithm for calculating a FCS from a cyclically coded bit stream, a method of implementing the algorithm using a digital processor and look-up table, a decoder operating said method, transceivers containing said decoders and a digital transmission system including said transceivers.
According to a first aspect of the present invention, there is provided an encoder, having a bit stream input and a digital processor, for encoding data in a cyclic code by adding an FCS to said data, said FCS being determined by means of an FCS algorithm, which is equivalent to: - clocking a bit stream of m bits through a n stage division register, where n < < m; - combining input bits with bits emerging from said division register to give a bit combination; and - using said bit combination to modify said division register's state; said division register's state depending only on its initial state and said bit stream, characterised in that said digital processor has a q-bit division register and look-up table storage means, and in that in operation, said division register is initialised to zero and the following steps are performed repeatedly, p times: - adding a next group of N input bits, modulo-2, to a least significant group of N bits in the division register, in a first adder means, to yield a result; - using the result as an index to a iook-up table parameter, stored in said look-up table storage means; - shifting the contents of said division register N bits to the right and adding, modulo-2, the indexed look-up table parameter to the content of the division register, in a second adder means; and, after completion of p steps, deriving said FCS from said division register contents.
Preferably, p = mlN, and said division register contents, after completion of p steps, is said FCS.
Said look-up table storage means may be a read only memory.
Alternatively, said look-up table storage means may be a logic array.
Alternatively, said look-up table storage means may be a random access memory.
Said look-up table may be generated at compile-time as a read only table.
Alternatively, said look-up table may be generated at run-time when said digital processor means starts-up.
Said FCS algorithm may be the FCS algorithm defined in GSM Standard 04.22 for RLP frames.
The value of m may be equal to 216.
Said encoder may be adapted for use with a GSM mobile telephone system.
The values of N, q and p may be 8, 24 and 27 respectively.
Said look-up table may be generated by calculating the final value of the division register for all possible values of an input value, said input value being a modulo-2 sum of the input bits and the first N bits in said register.
Said look-up table may be generated by: - for each input value, setting a division register in said digital processor to zero and adding the rightmost bit of said input value, modulo-2, to the rightmost bit of said division register to yield a sum; - if said sum is zero adding a generator polynomial to said division register; - shifting the division register one place to the right, a "1" being shifted in if said sum is not zero; - shifting said input bit stream one place to the right; and - continuing the process until all input bits have been consumed.
According to a second aspect of the present invention, there is provided a decoder, having a bit stream input for frames of m-bits followed by N FCS-bits and a digital processor, for decoding data encoded in a cyclic code by using an FCS algorithm, which is equivalent to: - clocking a bit stream of m bits through a n-stage division register, where n < < m; - combining input bits with bits emerging from said division register to give a bit combination; and - using said bit combination to modify said division register's state; said division register's state depending only on its initial state and said bit stream, characterised in that said digital processor encodes said m-bits to derive a local value for an FCS therefrom using an encoder as set forth in any preceding paragraph, in that said local value of said FCS is compared with said N-FCS bits in a comparator means, and in that an error signal is generated if a difference between said N-FCS bits and said local value of said FCS is detected.
According to a third aspect of the present invention, there is provided a data transmission system, characterised in that said data transmission system includes a data transmitter having an encoder, as set forth in any preceding paragraph, and a data receiver having a decoder as set forth above.
Said data transmission system may be compliant with the GSM standards, and said data transmission system may include a plurality of mobile transceivers each having a decoder as set forth above and an encoder, as set forth in any preceding paragraph.
Said data transmission system may include at least one fixed transceiver having an encoder, for encoding data, as claimed in any preceding paragraph and a decoder as set forth above.
According to a fourth aspect of the present invention, there is claimed a mobile GSM transceiver, characterised in that said mobile transceiver has a decoder, as set forth above and an encoder, as set forth in any preceding paragraph.
Said encoder and decoder may share a single digital processor and a single look-up table.
According to a fifth aspect of the present invention, there is provided a GSM base station having a fixed transceiver, characterised in that said fixed transceiver has a decoder, as hereinbefore defined and an encoder, set forth in any preceding paragraph.
According to a sixth aspect of the present invention, there is provided a method of decoding data encoded in a cyclic code by using an FCS algorithm, which is equivalent to: - clocking a bit stream of m-bits through a n-stage division register, where n < < m; - combining input bits with bits emerging from said division register to give a bit combination; and - using said bit combination to modify said division register's state; said division register's state depending only on its initial state and said bit stream, characterised by initialising a q-bit division register to zero and performing the following steps repeatedly, p times: - adding a next group of N input bits, modulo-2, to a least significant group of N bits in said q-bit division register, to yield a result; - using the result as an index to a look-up table to an indexed look up table parameter; and - shifting the contents of said division register N bits to the right and adding, modulo-2, the indexed look-up table parameter to the content of the division register; and, after completion of said p steps, deriving said FCS from said division registers contents.
Preferably, p = m/N, and said division register contents, after completion of p steps, is said FCS.
Embodiments of the invention will now be described, by way of example, with reference to the accompanying drawings, in which: Figure 1 illustrates an implementation of a slow algorithm for calculating an FCS, according to GSM standard 04.22.
Figure 2 illustrates one step in the slow algorithm illustrated in Figure 1.
Figure 3 illustrates the combination of four steps in the slow algorithm illustrated in Figure 1.
Figure 5 illustrates, in diagrammatic form, apparatus for implementing the fast algorithm of the present invention.
To understand the present invention, it is necessary to first explain the operation of the slow algorithm, specified in GSM standard 04.22, and its implementation using a shift register.
The FCS algorithm is completely deterministic, based on a modulo-2 division process within a 24-bit division register. Figure 1 shows an outline of the implementation of the "slow" algorithm. An input bit stream, comprising frames of 216 bits, is input to an exclusive OR gate 1, which has an output bit stream as its second input. The output from exclusive OR gate 1, is passed via invertor 2, to an input of a division register having n stages, 5, each stage acting as a one bit delay.
The output of exclusive OR gate 1 is also passed to an AND gate whose second input is a "mode" condition. The mode condition is set during the period when an FCS is being calculated and is un-set when an FCS is being read from the division register. The bits gl to 923 of a generator polynomial are bit-wise multiplied with the input bit stream by means of AND gates 3, and the result is bit-wise added to the contents of the division register by exclusive OR gates 4.
The input data stream is 216 bits long and is clocked through the register, the contents of the register at the end of this process providing the checksum, FCS. In principle, the calculation could be done using a single look-up table, as any given 216-bit input data stream maps onto a 24-bit result. Unfortunately, the look-up table would require a 216-bit address, rendering this approach totally impossible to implement in practice. However, the state of the division register, at all times, depends only on its initial state and the values of the input bits subsequently fed into it. Therefore, if a group of input bits is taken together with the current state of the division register, it would be possible to use a look-up table to determine the new state of the division register. By repeating this princess, an appropriate number of times (depending on the size of the input bit groups), the FCS can be calculated.
Consider a look-up table with two inputs: first, the group of input bits, and second, the current state of the division register. The output of the look-up table would then be the new state of the division register. Unfortunately, a very large table is still required; the state of the register requires 24 bits and so the number of address bits would be 24 plus the size of the group of input bits. Even for the degenerate case of input bits grouped in ones, this requires a look-up table with 225 locations, each of 24 bits (96 Mbyte).
Fortunately, a dramatic reduction in size can be made by taking note of the fact that it is only necessary to know the states of the first N bits in the division register, where N is the size of the input groups. This is because the division process combines the input bits with the bits emerging from the division register as they are shifted out to determine how to modify the register. None of the contents of the register beyond the first N bits can have any influence on the result. The contents of the table can be made the value to be added, modulo-2, to the initial value of the register to form the final value, so it is no longer necessary to make the entire initial contents of the register one of the input values.
This look-up table requires only 2N address bits. At this stage, a manageable size for the look-up table and a realistic implementation have been attained.
Further consideration of the workings of the algorithm allows a further dramatic reduction in the look-up table size to be made. Figure 2 illustrates one step in the "slow" algorithm.
Bit i0 of the input stream is added, modulo-2, to bit ro of the division register. Depending upon the value of the sum of these bits, one of two possible values for 90...923, the generator polynomial, is added to the register after it has been shifted one place right. The result becomes the new value of the register.
For the next step, the next input bit, il, will be compared with r'0, which was formed by adding rl to the appropriate value of g0. At each step the new value of the register will depend on the next input bit and the sum of all the previous additions. Figure 3 shows four steps brought together.
The first of the four steps adds i0 to rO and the value of the sum, S0, determines which of the two values for 90...923 is added. The next step adds il to the sum of r1 and g0 to form SI, which determines the next value to be added, and so on. As the order of the additions doesn't matter (addition is associative) i0...i3 can be added to rO...r3 before performing the four steps to generate the answer. The four steps can then be performed as a single lookup table operation which can be given the sum i0...i3 and rO...r3 as an input and generates the difference to the initial value of the division register. In the general case, the lookup table now only requires N input bits and 24 output bits, where N is the group size of the input bits (which is 4 in the above example).
The gain in speed provided by this fast algorithm will depend on the group size, N, of the input bits. The greater the value of N, the fewer steps are required to generate the FCS but the larger the look-up table will have to be. This represents a time/space trade-off; the more memory that can be devoted to the lookup table, the fewer steps must be performed by the algorithm and, generally speaking, the quicker the answer is obtained. However, there are other factors which may influence the choice of N, including the packing of the input data and the relative efficiency of the processor in handling different sized groups of bits.
For instance, it may be much more efficient to handle the data in 8-bit units than in 12-bit units as the advantage of the smaller number of steps would be offset by the additional complexity required within each step. There is also a limited choice of values for N, which must also be taken into account. The number of steps needed in the "slow" algorithm is 216 and the value of N should be chosen so that it is a factor of this number. The "slow" algorithm has N equal to one and performs 216 steps. Other possible values are given in the table below.
N 2 3 4 6 8 9 12 18 24 etc.
Steps 108 72 54 36 27 24 18 12 9 etc.
Values for N above 24 are not given as the look-up table for these values would be rather large.
For a given value of N it is possible to write algorithms to generate the corresponding lookup table and to use the table to generate an FCS from any given input stream. A value of N equal to 8, leads to a lookup table size of 256x24 bits.
The algorithm for calculating the FCS from the lookup table is as follows.
First a 24-bit division register must be initialised to zero and then the same step repeated 27 times. This step takes the next input byte and adds it, modulo-2, to the least significant byte of the division register. The result is used as an index into the lookup table. The division register is shifted right by one bit and the contents of the address location of the lookup table are added to it, modulo-2.
When all 27 steps have been completed the division register contains the FCS.
The lookup table is generated by calculating the final value of the division register for all possible values of the input value, this input value being the modulo2 sum of the input bits and the first N bits of the register. For N equal to 8, there are 256 (28) possible input values and each value requires the performance of 8 additions to generate the table entry. For each input value, a division register is set to zero and then the rightmost bit of the input value added modulo-2 to the rightmost bit of the register. If the sum is zero, the generator polynomial is added to the register. The register is then shifted right one place, a one being shifted in if the generator polynomial was not added to the register. The input bit stream is then shifted one place to the right and the loop repeats until all the input bits have been consumed.
The lookup table may be generated at compile time as a read-only table or it may be calculated at run-time when the processor which computes the FCS starts up.
A C implementation of the table generation and FCS calculation is shown in the listing below, based on a group size, N, of 8.
CODE LISTINGS /**************************************************************************/ /* */ /* Fast version of ENCODE imlementted using a look-up */ /* table technique */ /* */ /**************************************************************************/ &num;define BYTE~SIZE 8 &num;define FCS~SIZE 24 &num;define GENERATOR Ox5bObbbL static Int32 Table[1 < < BYTE SIZE]; It Look-up table */ static void CreateLookupTable(void) It /* Creates the look-up table used by the fast It encoder. Takes each possible input byte and /* runs the standard algorithm loop 8 times to It create the table entry for that input byte. */ /* */ lnt16 I; /* The input byte Int16 j; /* Bit counter for the byte */ Int16 Current; /* The current input lnt32 Divider; It The division register for( I = 0; I < (1 < < BYTE~SIZE); I++) { Divider = OL; It Initialise the register Current = 1; It Get the next input byte */ for (j = 0; j < BYTE~SIZE; j++) Divider A ((Current & 1) == (lnt16) (Divider & 1L))? GENERATOR:(1L < < FCS~SIZE); Divider > > = 1; Current > > = 1; Table[i] = Divider; /* Update the table */ static Int32 FastEncode (Int8 *Data) It /* Calculates the FCS using the fast algorithm */ /* supported by a look-up table */ /* */ Int16 I; /* Counter */ lnt8 Input; I Next input byte Int32 Divider; /* The encoding divider /* Initialise */ Divider = OL; /* Preset divider for(I = 0; I < (DATA~SIZE/BYTE~SIZE); I++) Input = (*Data++) A (Int8)(Divider & BYTE~MASK); Divider = (Divider > > > > BYTE~SIZE) A Table[lnput]; return(Divider); A further explanation of the operation of the present invention will now be given, with reference to Figure 4. The input data, in blocks of 8 bits, is bit-wise combined in exclusive OR gates with the output of the 8 right most bits in the division register, to generate an 8 bit index for the look-up table, held in RAM, or ROM, or implemented as a logic tree. The 24 bit look up table parameter is bitwise combined with 24 bits, 8 through to 31, in the division register and input into the division register. The contents of the division register are then shifted 8 bits to the right and the process is repeated 27 times. The final content of the division register is the FCS.
In the general case, blocks of N-bits are used and the process is repeated p times. If the number of bits in a frame is m, then N must, for the simplest realisation of the present invention, be a factor of m and p = mlN. However, it is possible to use any value N. If N is not a factor of m, then p is the integer part of mlN and the content of the division register will require further manipulation after the completion of p process steps, in order to derive the FCS.
Where the FCS is to be used for error detection only, the same process can be used for encoding and decoding data. Since the FCS is added to the bits in a data stream before transmission, it is only necessary, when decoding data to re-encode the data in the bit frame to derive a local FCS and to compare the local FCS with the transmitted FSC. If the two FCSs are not identical, there is an error and the bit frame must be re-transmitted. In the present example, where a bit frame contains 216 bits, and the FCS contains 24 bits, a received bit frame will contain a total of 240 bits. To decode the data, the 24 bits of the FCS are stripped out from the bit frame and a local FCS is derived by re-encoding.
The present invention has particular application to GSM transceivers, which may be used in either mobile GSM handsets, or fixed base stations. Of course, the receiver and transmitter parts of a transceiver can share the same digital processor for encoding and share a common look-up table.

Claims (36)

  1. CLAIMS 1. An encoder, having a bit stream input and a digital processor, for encoding data in a cyclic code by adding an FCS to said data, said FCS being determined by means of an FCS algorithm, which is equivalent to: - clocking a bit stream of m bits through a n stage division register, where n < < m; - combining input bits with bits emerging from said division register to give a bit combination; and - using said bit combination to modify said division register's state; said division register's state depending only on its initial state and said bit stream, characterised in that said digital processor has a q-bit division register and look-up table storage means, and in that in operation, said division register is initialised to zero and the following steps are performed repeatedly, p times: - adding a next group of N input bits, modulo-2, to a least significant group of N bits in the division register, in a first adder means, to yield a result; - using the result as an index to a look-up table parameter, stored in said look-up table storage means; - shifting the contents of said division register N bits to the right and adding, modulo-2, the indexed look-up table parameter to the content of the division register, in a second adder means; and, after completion of p steps, deriving said FCS from said division register contents.
  2. 2. An encoder, as claimed in claim 1, characterised in that p = mlN, and in that said division register contents, after completion of p, steps is said FCS.
  3. 3. An encoder, as claimed in claim 1, or claim 2, characterised in that said look-up table storage means is a read only memory.
  4. 4. An encoder, as claimed in claim 1, or claim 2, characterised in that said look-up table storage means is a logic array.
  5. 5. An encoder, as claimed in claim 1, or claim 2, characterised in that said look-up table storage means is a random access memory.
  6. 6. An encoder, as claimed in claim 5, characterised in that said look-up table is generated at compile-time as a read only table.
  7. 7. An encoder, as claimed in claim 5, characterised in that said look-up table is generated at run-time when said digital processor means starts-up.
  8. 8. An encoder, as claimed in any previous claim, characterised in that said FCS algorithm is the FCS algorithm defined in GSM Standard 04.22 for RLP frames.
  9. 9. An encoder, as claimed in any previous claim, characterised in that m = 216.
  10. 10. An encoder, as claimed in claim 9, characterised in that said encoder is adapted for use with a GSM mobile telephone system.
  11. 11. An encoder, as claimed in any previous claim, characterised in that N is 8, q = 24 and p = 27.
  12. 12. An encoder, as claimed in any previous claim, characterised in that said look-up table is generated by calculating the final value of the division register for all possible values of an input value, said input value being a modulo-2 sum of the input bits and the first N bits in said register.
  13. 13. An encoder, as claimed in claim 12, characterised in that: - for each input value, a division register in said digital processor is set to zero and the rightmost bit of said input value is added modulo-2 to the rightmost bit of said division register to yield a sum; - if said sum is zero a generator polynomial is added to said division register; - the division register is shifted one place to the right, a "1" being shifted in, if said sum is not zero; - said input bit stream is shifted one place to the right; and - the process is continued until all input bits have been consumed.
  14. 14. A decoder, having a bit stream input for frames of m-bits followed by N FCS-bits and a digital processor, for decoding data encoded in a cyclic code by using an FCS algorithm, which is equivalent to: - clocking a bit stream of m bits through a n-stage division register, where n < < m; - combining input bits with bits emerging from said division register to give a bit combination; and - using said bit combination to modify said division register's state; said division register's state depending only on its initial state and said bit stream, characterised in that said digital processor encodes said m-bits to derive a local value for an FCS therefrom using an encoder as claimed in any of claims 1 to 13, in that said local value of said FCS is compared with said N-FCS bits in a comparator means, and in that an error signal is generated if a difference between said N-FCS bits and said local value of said FCS is detected.
  15. 15. A data transmission system, characterised in that said data transmission system indudes a data transmitter having an encoder, as claimed in any of claims 1 to 13, and a data receiver having a decoder as claimed in claim 14.
  16. 16. A data transmission system, as claimed in claim 15, characterised in that said data transmission system is compliant with the GSM standards, and in that said data transmission system includes a plurality of mobile transceivers each having a decoder as claimed in claim 14, and an encoder, as claimed in any of claims 1 to 13.
  17. 17. A data transmission system, as claimed in claim 16, characterised in that said data transmission system includes at least one fixed transceiver having an encoder, for encoding data, as claimed in any of claims 1 to 13 and a decoder as claimed in claim 14.
  18. 18. A mobile GSM transceiver, characterised in that said mobile transceiver has a decoder, as claimed in claim 14 and an encoder, as claimed in any of claims 1 to 13.
  19. 19. A GSM base station having a fixed transceiver, characterised in that said fixed transceiver has a decoder, as claimed in claim 14 and an encoder, as claimed in any of claims 1 to 13.
  20. 20. A data transmission system, or mobile GSM transceiver, or base station, as claimed in any of claims 15 to 19, characterised in that said encoder and decoder share a single digital processor and a single look-up table.
  21. 21. A method of decoding data encoded in a cyclic code by using an FCS algorithm, which is equivalent to: - clocking a bit stream of m-bits through a n-stage division register, where n < < m; - combining input bits with bits emerging from said division register to give a bit combination; and - using said bit combination to modify said division register's state; said division register's state depending only on its initial state and said bit stream, characterised by initialising a q-bit division register to zero and performing the following steps repeatedly, p times: - adding a next group of N input bits, modulo-2, to a least significant group of N bits in said q-bit division register, to yield a result; - using the result as an index to a look-up table to an indexed look up table parameter; and - shifting the contents of said division register N bits to the right and adding, modulo-2, the indexed look-up table parameter to the content of the division register; and, after completion of said p steps, deriving said FCS from said division registers contents.
  22. 22. A method, as claimed in claim 21, characterised by p = m/N, and by said division register contents, after completion of p steps, being said FCS.
  23. 23.. A method, as claimed in either claim 21, or claim 22, characterised by generating said look-up table at compile-time as a read only table.
  24. 24. A method, as claimed in either claim 21, or claim 22, characterised by generating said look-up table at run-time.
  25. 25. A method, as claimed in any of claims 21 to 24, characterised by said FCS algorithm being equivalent to the canonical form of the FCS algorithm defined in GSM Standard 04.22 for RLP.
  26. 26. A method as claimed in any of claims 20 to 25, characterised by m = 16.
  27. 27. A method, as claimed in claim 20 to 26, characterised in that said method is employed in a GSM mobile telephone system.
  28. 28. A method, as claimed in any of claims 21 to 27, characterised by N = 8, q = 24 and p = 27.
  29. 29. A method, as claimed in any of claims 21 to 28, characterised by generating said look-up table by calculating the final value of the division register for all possible values of an input value, said input value being a modulo-2 sum of the input bits and the first N bits in said register.
  30. 30. A method, as claimed in claim 29, characterised by setting a division register to zero, and: - for each input value, adding the rightmost bit of said input value, modulo-2, to the rightmost bit of said division register to yield a sum; - if said sum is zero, adding a generator polynomial to said division register; - shifting said division register one place to the right, a "1" being shifted in if said sum was not zero; - shifting said input bit stream one place to the right; and - continuing the process until all input bits have been consumed.
  31. 31. An encoder, substantially as hereinbefore described with reference to Figure 4 of the accompanying drawings.
  32. 32. A data transmission system, including a data receiver having a encoder, substantially as hereinbefore described with reference to Figure 4 of the accompanying drawings.
  33. 33. A mobile GSM transceiver having a encoder, substantially as hereinbefore described with reference to Figure 4 of the accompanying drawings.
  34. 34 A method, substantially as hereinbefore described with reference to Figure 4 of the accompanying drawings.
  35. 35. A decoder, substantially as hereinbefore described with reference to Figure 4 of the accompanying drawings.
  36. 36. A GSM base station, substantially as hereinbefore described with reference to Figure 4 of the accompanying drawings.
GB9703715A 1997-02-22 1997-02-22 Encoding and decoding data Withdrawn GB2322526A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
GB9703715A GB2322526A (en) 1997-02-22 1997-02-22 Encoding and decoding data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB9703715A GB2322526A (en) 1997-02-22 1997-02-22 Encoding and decoding data

Publications (2)

Publication Number Publication Date
GB9703715D0 GB9703715D0 (en) 1997-04-09
GB2322526A true GB2322526A (en) 1998-08-26

Family

ID=10808137

Family Applications (1)

Application Number Title Priority Date Filing Date
GB9703715A Withdrawn GB2322526A (en) 1997-02-22 1997-02-22 Encoding and decoding data

Country Status (1)

Country Link
GB (1) GB2322526A (en)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1440165A (en) * 1973-04-13 1976-06-23 Cii Honeywell Bull Method and apparatus for obtaining the cyclic code of a binary message
EP0092960A2 (en) * 1982-04-22 1983-11-02 Sperry Corporation Apparatus for checking and correcting digital data
EP0138078A2 (en) * 1983-09-15 1985-04-24 CSELT Centro Studi e Laboratori Telecomunicazioni S.p.A. Decoder of cyclic perfect binary code
WO1994015407A1 (en) * 1992-12-29 1994-07-07 Codex Corporation Efficient crc remainder coefficient generation and checking device and method
EP0608848A2 (en) * 1993-01-25 1994-08-03 Nec Corporation Cyclic coding and cyclic redundancy code check processor
EP0609595A1 (en) * 1993-02-05 1994-08-10 Hewlett-Packard Company Method and apparatus for verifying CRC codes
US5390196A (en) * 1992-11-12 1995-02-14 Bull Hn Information Systems Inc. Byte-wise determination of a checksum from a CRC-32 polynomial

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1440165A (en) * 1973-04-13 1976-06-23 Cii Honeywell Bull Method and apparatus for obtaining the cyclic code of a binary message
EP0092960A2 (en) * 1982-04-22 1983-11-02 Sperry Corporation Apparatus for checking and correcting digital data
EP0138078A2 (en) * 1983-09-15 1985-04-24 CSELT Centro Studi e Laboratori Telecomunicazioni S.p.A. Decoder of cyclic perfect binary code
US5390196A (en) * 1992-11-12 1995-02-14 Bull Hn Information Systems Inc. Byte-wise determination of a checksum from a CRC-32 polynomial
WO1994015407A1 (en) * 1992-12-29 1994-07-07 Codex Corporation Efficient crc remainder coefficient generation and checking device and method
EP0608848A2 (en) * 1993-01-25 1994-08-03 Nec Corporation Cyclic coding and cyclic redundancy code check processor
EP0609595A1 (en) * 1993-02-05 1994-08-10 Hewlett-Packard Company Method and apparatus for verifying CRC codes

Also Published As

Publication number Publication date
GB9703715D0 (en) 1997-04-09

Similar Documents

Publication Publication Date Title
US5428629A (en) Error check code recomputation method time independent of message length
US7206992B2 (en) Decoding a received BCH encoded signal
EP0950300B1 (en) Secondary channel using code violations
US5325372A (en) Implementation of the HDLC CRC calculation
EP0681381A1 (en) Method and apparatus for modifying frame check sequences in intermediate high speed network nodes
WO2002007323A2 (en) Protocol header compression
EP0758825A1 (en) Method and apparatus for generating dc-free sequences with conveying partial information by the sequence of codeword digital sums of successive codewords
EP2271016B1 (en) Method and device for the transmission of data with transmission error checking
US4890286A (en) Method and apparatus for decoding error correcting code
KR100926812B1 (en) Turbo decoder with circular redundancy code signature comparison
US6738946B1 (en) Methods, communication devices, and computer program products for communicating information via a frame check sequence having an information block associated therewith
US4914660A (en) Method and apparatus for decoding error correcting code
US6182260B1 (en) Channel encoding apparatus using single concatenated encoder
EP1422859A2 (en) Method and apparatus for a transport format combination indicator (TFCI) decoder
GB2322526A (en) Encoding and decoding data
KR100687947B1 (en) Hardware efficient fast hadamard transform engine
US8230304B2 (en) Wireless transmit/receive unit having a turbo decoder with circular redundancy code signature comparison and method
KR100189267B1 (en) Device for establishing cell boundaries in a bit stream and crc calculation
US6078620A (en) Method and apparatus for performing adaptive differential pulse code modulation
JPH0998093A (en) Error correction code decoding method
JPH09149080A (en) Data transmitter
Fabre et al. Joint source-channel turbo decoding of VLC-coded Markov sources
Csibi et al. Random time and frequency hopping for unslotted asynchronous access
JPH06224779A (en) Method and equipment for packing and unpacking of coded symbol
KR100818441B1 (en) Turbo decoder with circular redundancy code signature comparison

Legal Events

Date Code Title Description
WAP Application withdrawn, taken to be withdrawn or refused ** after publication under section 16(1)