Title of Invention

"A METHOD OF A COMMUNICATION APPARATUS"

Abstract A method and a circuit for generating cyclic redundancy checks. The method calculates a plurality of cyclic redundancy checks for a transport block with a plurality of information bits. A transport block CRC is calculated for a transport block including a plurality of information bit. A transport block including the transport block CRC is segmented into a plurality of subsets and a plurality of cyclic redundancy checks are calculated for the plurality of subsets. At least one cyclic redundancy check among the plurality of cyclic redundancy checks is calculated based on a subset of information bits. In addition, a transport block cyclic redundancy check may be calculated based on all the information bits.
Full Text METHODS AND APPARATUS TO COMPUTE CRC FOR MULTIPLE
CODE BLOCKS IN A COMMUNICATION SYSTEM
BACKGROUND OF THE INVENTION
Field of the Invention
The present invention relates to methods and apparatus to generate cyclic
redundancy checks to multiple code blocks.
Description of the Related Art
A wireless communication system generally includes multiple base stations
and multiple mobile stations, while a single base station often communicates with a
set of mobile stations. The transmission from a base station to a mobile station is
known as downlink communication. Likewise, the transmission from a mobile
station to a base station is known as uplink communication. Both base stations and
mobile stations may employ multiple antennas for transmitting and receiving radio
wave signals. The radio wave signal may be either Orthogonal Frequency Division
Multiplexing (OFDM) signals or Code Division Multiple Access (CDMA) signals.
A mobile station may be either a PDA, laptop, or handheld device.
In a third Generation Partnership Project long term evolution (3GPP LTE)
system, when a transport block is large, the transport block is segmented into
multiple code blocks so that multiple coded packets can be generated, which is
advantageous because of benefits such as enabling parallel processing or pipelining
implementation and flexible trade off between power consumption and hardware
complexity.
In a contemporary High Speed Data Shared Channel (HS-DSCH) design,
only one 24-bit cyclic redundancy check (CRC) is generated for the whole transport
block for the purpose of error detection for that block. If multiple code blocks are
generated and transmitted in one transmission time interval (TTI), the receiver may
correctly decode some of the code blocks but not the others. In that case, the
receiver will feed back a non-acknowledgement (NAK) to the transmitter because
the CRC for the transport block will not check.
SUMMARY OF THE INVENTION
It is therefore an aspect of the present invention to provide improved methods
and apparatus for generating cyclic redundancy checks for multiple code blocks in a
communication system.
It is another aspect of the present invention to provide an improved method
and apparatus for error detection in a communication system.
According to one aspect of the present invention, a method for
communication is provided. A transport block CRC is calculated for a transport
block including a plurality of information bit. A transport block included the
transport block CRC is segmented into a plurality of subsets and a plurality of cyclic
redundancy checks are calculated for the plurality of subsets.
The plurality of cyclic redundancy checks and the plurality of information
bits are transmitted from a first node to a second node.
In response to the plurality of cyclic redundancy checks and the plurality of
information bits received, the plurality of cyclic redundancy checks and the plurality
of information bits are processed at the second node.
The subset of information bits may be jointly encoded by a certain type of
forward error correcting code, such as a turbo code.
The subset of information bits and the at least one cyclic redundancy check
that is calculated based on the subset of information bits may be jointly encoded.
A first cyclic redundancy check may be calculated for a first subset of
information bits, and a second cyclic redundancy checks may be calculated for a
second subset of information bits.
The first subset of information bits and the second subset of information bits
may overlap with each other.
Alternatively, the first subset of information bits and the second subset of
information bits may be separated from each other.
Still alternatively, the second subset of information bits may include the first
subset of information bits.
At least one cyclic redundancy check among the plurality of cyclic
redundancy checks may be calculated based on all of the information bits.
According to another aspect of the present invention, a method for
communication is provided. At least one transport block of information bits are
segmented into a plurality of code blocks. A plurality of code block cyclic
redundancy checks are calculated for the plurality of code blocks, with at least one
code block cyclic redundancy check being calculated based upon a corresponding
code block. The plurality of code blocks and the plurality of code block cyclic
redundancy checks are transmitted from a first node to a second node.
The bits in a code block selected from the plurality of code block may be
jointly encoded using a certain type of forward error correcting code. In this case, a
code block cyclic redundancy check is calculated based upon the jointly coded code
block.
Each of the plurality of code block cyclic redundancy checks may be
calculated based upon a corresponding one of the plurality of code blocks.
Each of the plurality of code block cyclic redundancy checks may be
calculated based upon at least the corresponding one of the plurality of code blocks.
A transport block cyclic redundancy check may be calculated based on the
transport block before segmenting the transport block.
The plurality of code blocks may include at least one code block from which
no code block cyclic redundancy check is generated.
At least one code block cyclic redundancy check may be calculated based
upon all of the plurality of code blocks.
According to yet another aspect of the present invention, a circuit for
generating cyclic redundancy checks in data communications is provided with: an
input port for receiving information data; an output port for outputting the
information data and cyclic redundancy checks; a linear feedback shift register unit
communicatively connected between the input port and the output port, and
comprising L shift registers for transforming the information data with a cyclic
redundancy check generation polynomial g(x) having a degree of L-l; a cyclic
redundancy check register unit communicatively connected between the input port
and the linear feedback shift register unit, and comprising L cyclic redundancy check
registers; a first switch communicatively connected between the input port and the
cyclic redundancy check register unit; a second switch communicatively connected
at a feedback loop of the linear feedback shift register unit; a third switch
communicatively connected between the linear feedback shift register unit and the
cyclic redundancy check register unit; and a fourth switch communicatively
connected between the input port, the linear feedback shift register unit and the
output port, and having a first position for connecting the input port and the output
port, and a second position for connecting the linear feedback shift register unit and
the output port.
The linear feedback shift register unit and the cyclic redundancy check
register unit may be initialized to an all-zero state. The first switch may be set to
connect the input port to the linear feedback shift register unit. The second switch
may be set to connect the feedback loop of the linear feedback shift register unit.
The third switch may be set to disconnect the linear feedback shift register unit and
the cyclic redundancy check register unit. The fourth switch may be set to the first
position to connect the input port with the output port. A code block of information
data may be received via the input port. The first switch may be set to disconnect the
input port and the linear feedback shift register unit. The second switch may be set
to disconnect the feedback loop of the linear feedback shift register unit. The third
switch may be set to connect the linear feedback shift register unit and the cyclic
redundancy check register unit. The fourth switch may be set to the second position
to connect the linear feedback shift register unit with the output port. The linear
feedback shift register unit may be shifted L times to obtain the cyclic redundancy
checks for the code block.
According to still another aspect of the present invention, a circuit for
generating cyclic redundancy checks in data communications is provided with an
input port for receiving information data; an output port for outputting the
information data and cyclic redundancy checks; a linear feedback shift register unit
communicatively connected between the input port and the output port, and
comprising L shift registers for transforming the information data with a cyclic
redundancy check generation polynomial g(x) having a degree of L-l; L state
registers communicatively connected to corresponding ones of the L shift registers to
write and read data values to and from the L shift registers; a first switch
communicatively connected between the input port and the linear feedback shift
register unit; a second switch communicatively connected at a feedback loop of the
linear feedback shift register unit; and a third switch communicatively connected
between the input port, the linear feedback shift register unit and the output port, and
having a first position for connecting the input port with the output port, and a
second position for connecting the linear feedback shift register unit and the output
port.
The linear feedback shift register unit and the state registers may be
initialized to an all-zero state. The first switch may be set to connect the input port
to the linear feedback shift register unit. The second switch may be set to connect
the feedback loop of the linear feedback shift register unit. The third switch may be
set to the first position to connect the input port with the output port. A code block
of information data may be received via the input port. The data values in the L shift
registers in the feedback shift register unit are written to the respectively
corresponding state registers. The first switch may be set to disconnect the input port
and the linear feedback shift register unit. The second switch may be set to
disconnect the feedback loop of the linear feedback shift register unit. The third
switch may be set to the second position to connect the linear feedback shift register
unit with the output port. The linear feedback shift register unit are shifted L times
to obtain the cyclic redundancy checks for the code block. Then, the first switch
may be set to connect the input port to the linear feedback shift register unit; the
second switch may be set to connect the feedback loop of the linear feedback shift
register unit; and the third switch may be set to the first position to connect the input
port with the output port. The data values in the state registers are written to the
respectively corresponding shift registers in the feedback shift register unit.
According to still yet another aspect of the present invention, a circuit for
generating cyclic redundancy checks in data communications is provided with an
input port for receiving information data; an output port for outputting the
information data and cyclic redundancy checks; a first linear feedback shift register
unit communicatively connected between the input port and the output port, and
comprising L shift registers for transforming the information data with a cyclic
redundancy check generation polynomial g(x) having a degree of L-l; a second
linear feedback shift register unit communicatively connected between the input port
and the output port being in parallel with the first linear feedback shift register unit,
and comprising L shift registers for transforming the information data with a cyclic
redundancy check generation polynomial g(x) having a degree of L-1; a first switch
communicatively connected between the input port and a common node between the
first and second linear feedback shift register units; a second switch
communicatively connected at a feedback loop of the first linear feedback shift
register unit; a third switch communicatively connected between the input port, the
common node between the first and second linear feedback shift register units, and
the output port, and having a first position for connecting the input port with the
output port, a second position for connecting the first linear feedback shift register
unit and the output port, and a third position for connecting the second linear
feedback shift register unit and the output port; and a fourth switch communicatively
connected at a feedback loop of the second linear feedback shift register unit.
The first and second linear feedback shift register units and the cyclic
redundancy check register unit may be initialized to an all-zero state. The first
switch may be set to connect the input port to the common node between the first
and second linear feedback shift register units; the second switch may be set to
connect the feedback loop of the first linear feedback shift register unit; the third
switch may be set to the first position to connect the input port with the output port;
and the fourth switch may be set to connect the feedback loop of the second linear
feedback shift register unit. A code block of information data may be received via
the input port. A determination is made regarding whether the received code block is
the last code block of the information data. When the received code block is not the
last code block of the information data, the first switch may be set to disconnect the
input port and the linear feedback shift register unit; the second switch may be set to
disconnect the feedback loop of the linear feedback shift register unit; and the third
switch may be set to the second position to connect the first linear feedback shift
register unit with the output port. The first linear feedback shift register unit may be
shifted L times to obtain the cyclic redundancy checks for the code block.
When the received code block of information data is the last code block of
the information data, the third switch may be set to the third position to connect the
second linear feedback shift register unit with the output port; and the fourth switch
may be set to disconnect the feedback loop of the linear feedback shift register unit.
The second linear feedback shift register unit may be shifted L times to obtain the
cyclic redundancy checks for the code block.
According to a further aspect of the present invention, a circuit for generating
cyclic redundancy checks in data communications is provided with an input port for
receiving information data; an output port for outputting the information data and
cyclic redundancy checks; a linear feedback shift register unit communicatively
connected between the input port and the output port, and comprising L shift
registers for transforming the information data with a cyclic redundancy check
generation polynomial g(x) having a degree of L-l; a first switch communicatively
connected between the input port and the linear feedback shift register unit; a second
switch communicatively connected at a feedback loop of the linear feedback shift
register unit; and a third switch communicatively connected between the input port,
the linear feedback shift register unit and the output port, and having a first position
for connecting the input port with the output port, and a second position for
connecting the linear feedback shift register unit and the output port.
The linear feedback shift register unit may be initialized to an all-zero state.
The first switch may be set to connect the input port to the linear feedback shift
register unit; the second switch may be set to connect the feedback loop of the linear
feedback shift register unit; and the third switch may be set to the first position to
connect the input port with the output port. A code block of information data may be
received via the input port. The first switch may be set to disconnect the input port
and the linear feedback shift register unit; the second switch may be set to disconnect
the feedback loop of the linear feedback shift register unit; and the third switch may
be set to the second position to connect the linear feedback shift register unit with the
output port. The linear feedback shift register unit may be shifted L times to obtain
the cyclic redundancy checks for the code block.
BRIEF DESCRIPTION OF THE DRAWINGS
A more complete appreciation of the invention, and many of the attendant
advantages thereof, will be readily apparent as the same becomes better understood
by reference to the following detailed description when considered in conjunction
with the accompanying drawings in which like reference symbols indicate the same
or similar components, wherein:
FIG. 1 is an illustration of an Orthogonal Frequency Division Multiplexing
(OFDM) transceiver chain suitable for the practice of the principles of the present
invention;
FIG. 2 is two coordinate graphs of OFDM subcarriers showing amplitude as a
function of frequency;
FIG. 3 is an illustration of the waveforms for OFDM symbols in a time
domain;
FIG. 4 is an illustration of single carrier frequency division multiple access
transceiver chain;
FIG. 5 schematically shows a Hybrid Automatic Repeat request (HARQ)
transceiver chain;
FIG. 6 schematically shows a Multiple Input Multiple Output (MIMO)
system;
FIG. 7 schematically shows a precoded MIMO system;
FIG. 8 schematically shows a coding chain for High Speed Data Shared
Channel (HS-DSCH) in a High Speed Downlink Packet Access (HSDPA) system;
FIG. 9 schematically shows a transport block cyclic redundancy check (CRC)
and code block segmentation;
FIG. 10 is an illustration of using a linear feedback shift register (LFSR) for
CRC computation;
FIG. 11 schematically shows High Speed Data Shared Channel (HS-DSCH)
hybrid ARQ functionality;
FIG. 12 schematically shows long term evolution (LTE) downlink sub frame
structure;
FIG. 13 schematically shows LTE uplink subframe structure;
FIG. 14 schematically shows code block CRC;
FIG. 15 illustrates an example of code block segmentation;
FIG. 16 schematically illustrates code block (CB) CRCs and transport block
(TB) CRCs according to one embodiment of the principles of the present invention;
FIG. 17 schematically illustrates code block (CB) CRCs and transport block
(TB) CRCs according to another embodiment of the principles of the present
invention;
FIG. 18 schematically illustrates code block (CB) CRCs and transport block
(TB) CRCs according to yet another embodiment of the principles of the present
invention;
FIG. 19 schematically illustrates code block (CB) CRCs and transport block
(TB) CRCs according to still another embodiment of the principles of the present
invention;
FIG. 20 schematically illustrates code block (CB) CRCs and transport block
(TB) CRCs according to a further embodiment of the principles of the present
invention;
FIG. 21 schematically illustrates a CRC computation circuit for multiple code
blocks constructed as an embodiment according to the principles of the present
invention;
FIG. 22 schematically illustrates a CRC computation circuit for multiple code
blocks constructed as another embodiment according to the principles of the present
invention;
FIG. 23 schematically illustrates a CRC computation circuit for multiple code
blocks constructed as still another embodiment according to the principles of the
present invention; and
FIG. 24 schematically illustrates a CRC computation circuit for multiple code
blocks constructed as a further embodiment according to the principles of the present
invention.
DETAILED DESCRIPTION OF THE INVENTION
Orthogonal Frequency Division Multiplexing (OFDM) is a technology to
multiplex data in frequency domain. Modulation symbols are carried on frequency
sub-carriers. FIG. 1 illustrates an Orthogonal Frequency Division Multiplexing
(OFDM) transceiver chain. In a communication system using OFDM technology, at
transmitter chain 110, control signals or data 111 is modulated by modulator 112 into
a series of modulation symbols, that are subsequently serial-to-parallel converted by
Serial/Parallel (S/P) converter 113. Inverse Fast Fourier Transform (IFFT) unit 114
is used to transfer the signals from frequency domain to time domain into a plurality
of OFDM symbols. Cyclic prefix (CP) or zero prefix (ZP) is added to each OFDM
symbol by CP insertion unit 116 to avoid or mitigate the impact due to multipath
fading. Consequently, the signal is transmitted by transmitter (Tx) front end
processing unit 117, such as an antenna (not shown), or alternatively, by fixed wire
or cable. At receiver chain 120, assuming perfect time and frequency
synchronization are achieved, the signal received by receiver (Rx) front end
processing unit 121 is processed by CP removal unit 122. Fast Fourier Transform
(FFT) unit 124 transfers the received signal from time domain to frequency domain
for further processing.
In a OFDM system, each OFDM symbol consists of multiple sub-carriers.
Each sub-carrier within an OFDM symbol carriers a modulation symbol. FIG. 2
illustrates the OFDM transmission scheme using sub-carrier 1, sub-carrier 2, and
sub-carrier 3. Because each OFDM symbol has finite duration in time domain, the
sub-carriers overlap with each other in frequency domain. The orthogonality is,
however, maintained at the sampling frequency assuming the transmitter and the
receiver has perfect frequency synchronization, as shown in FIG. 2. In the case of
frequency offset due to imperfect frequency synchronization or high mobility, the
orthogonality of the sub-carriers at sampling frequencies is destroyed, resulting in
inter-carrier-interference (ICI).
A time domain illustration of the transmitted and received OFDM symbols is
shown in FIG. 3. As shown in FIG. 3,Due to multipath fading, the CP portion(CPl,
CP2) of the received signal is often corrupted by the previous OFDM symbol. As
long as the CP is sufficiently long, the received OFDM symbol without CP should,
however, only contain its own signal convoluted by the multipath fading channel. In
general, a Fast Fourier Transform (FFT) is taken at the receiver side to allow further
processing frequency domain. The advantage of OFDM over other transmission
schemes is its robustness to multipath fading. The multipath fading in time domain
translates into frequency selective fading in frequency domain. With the cyclic
prefix or zero prefix added, the inter-symbol-interference between adjacent OFDM
symbols are avoided or largely alleviated. Moreover, because each modulation
symbol is carried over a narrow bandwith, it experiences a single path fading. Simple
equalization scheme can be used to combat frequency selection fading.
Single carrier frequency division multiple access (SC-FDMA), which utilizes
single carrier modulation and frequency domain equalization is a technique that has
similar performance and complexity as those of an OFDMA system. One advantage
of SC-FDMA is that the SC-FDMA signal has lower peak-to-average power ratio
(PAPR) because of its inherent single carrier structure. Low PAPR normally results
in high efficiency of power amplifier, which is particularly important for mobile
stations in uplink transmission. SC-FDMA is selected as the uplink multiple acess
scheme in 3GPP long term evolution (LTE). An example of the transceiver chain for
SC-FDMA is shown in FIG. 4. At the transmitter side, the data or control signal is
serial to parallel (S/P) converted by a S/P converter 401. Discrete Fourier transform
(DFT) will be applied to time-domain data or control signal by a DFT transmformer
402 before the time-domain data is mapped to a set of sub-carriers by a sub-carrier
mapping unit 403. To ensure low PAPR, normally the DFT output in the frequency
domain will be mapped to a set of contiguous sub-carriers. Then IFFT, normally
with larger size than the DFT, will be applied by an IFFT transformer 404 to
tranform the signal back to time domain. After parallel to serial (P/S) convertion by
a P/S/ converter 405, cyclic prefix (CP) will be added by a CP insertion unit 406 to
the data or the control signal before the data or the control signal is transmitted to a
transmission front end processing unit 407. The processed signal with a cyclic prefix
added is often referred to as a SC-FDMA block. After the signal passes through a
communication channel 408, e.g., a multipath fading channel in a wireless
communication system, the receiver will perform receiver front end processing by a
receiver front end processing unit 409, remove the CP by a CP removal unit 410,
apply FFT by a FFT transformer 412 and frequency domain equalization 413.
Inverse Discrete Fourier transform (IDFT) 414 will be applied after the equalized
signal is demapped in frequency domain. The output of IDFT will be passed for
further time-domain processing such as demodulation and decoding after parallel to
serial (P/S) converting by a P/S converter 415.
In packet-based wireless data communication systems, control signals
transmitted through control channels, i.e., control channel transmission, generally
accompany data signals transmitted through data channels, i.e., data transmission.
Control channel information, including control channel format indicator (CCFI),
acknowledgement signal (ACK), packet data control channel (PDCCH) signal,
carries transmission format information for the data signal, such as user ID, resource
assignment information, Payload size, modulation, Hybrid Automatic Repeat-
reQuest (HARQ) information, MIMO related information.
Hybrid Automatic Repeat reQuestion (HARQ) is widely used in
communication systems to combat decoding failure and improve reliability. FIG. 5
schematically shows a general Hybrid Automatic Repeat reQuestion (HARQ)
transceiver chain including Encoder 501, Subpacket Generator 502, Transceiver
Chain 503 and Decoder 504. Each data packet is coded using certain forward error
correction (FEC) scheme. Each subpacket generated in Subpacket Generator 502
may only contains a portion of the coded bits. If the transmission for subpacket k
fails, as indicated by a NAK in a feedback acknowledgement channel 505, a
retransmission subpacket, subpacket k+1, is transmitted to help the receiver decode
the packet. The retransmission subpackets may contain different coded bits than the
previous subpackets. The receiver may softly combine or jointly decode all the
received subpackets to improve the chance of decoding. Normally, a maximum
number of transmissions is configured in consideration of both reliability, packet
delay, and implementation complexity.
Multiple antenna communication systems, which is often referred to as
multiple input multiple output (MIMO), are widely used in wireless communication
to improve system performance. In a MIMO system shown in FIG. 6, the transmitter
601 has multiple antennas 602 capable of transmitting independent signals and the
receiver 603 is equipped with multiple receive antennas 604. MIMO systems
degenerates to single input multiple output (SIMO) if there is only one transmission
antenna or if there is only one stream of data transmitted. MIMO systems
degenerates to multiple input signle output (MISO) if there is only one receive
antenna. MIMO systems degenerates to single input single output (SISO) if there is
only one transmission antenna and one receive antenna. MIMO technology can
significant increase throughput and range of the system without any increase in
bandwidth or overall transmit power. In general, MIMO technology increases the
spectral efficiency of a wireless communication system by exploiting the additional
dimension of freedom in the space domain due to multiple antennas. There are many
categories of MIMO technologies. For example, spatial multiplexing schemes
increase the transmission rate by allowing multiple data streaming transmitted over
multiple antennas. Transmit diversity methods such as space-time coding take
advantage of spatial diversity due to multiple transmit antennas. Receiver diversity
methods utilizes the spatial diversity due to multiple receive antennas. Beamforming
technologies improve received signal gain and reducing interference to other users.
Spatial division multiple access (SDMA) allows signal streams from or to multiple
users to be transmitted over the same time-frequency resources. The receivers can
separate the multiple data streams by the spatial signature of these data streams. Note
these MIMO transmission techniques are not mutually exclusive. In fact, many
MIMO schemes are often used in an advanced wireless systems.
When the channel is favorable, e.g., the mobile speed is low, it is possible to
use closed-loop MIMO scheme to improve system performance. In a closed-loop
MIMO systems, the receivers feedback the channel condition and/or preferred Tx
MIMO processing schemes. The transmitter utlizes this feedback information,
together with other considerations such as scheduling priority, data and resource
availability, to jointly optimize the transmission scheme. A popular closed loop
MIMO scheme is called MIMO precoding. With precoding, the transmit data streams
are pre-multiplied by a matrix before being passed on to the multiple transmit
antennas. As shown in FIG. 7, assume there are Nt transmit antennas 702 and Nr
receive antennas 704. Denote the channel between the Nt transmit antennas 702 and
the Nr receive antennas 704 as H. Therefore H is an Nt x Nr matrix. If the transmitter
701 has knowledge about H, the transmitter can choose the most advantageous
transmission scheme according to H. For example, if maximizing throught is the goal,
the precoding matrix can be chosen to be the right singluar matrix of H, if the
knowledge of H is available at the transmitter. By doing so, the effective channel for
the multiple data streams at the receiver side 703 can be diagonalized, eliminating
the interference between the multiple data streams. However, the overhead required
to feedback the exact value of H is often prohibitive. In order to reduce feedback
overhead, a set of precoding matrices are defined to quantize the space of the
possible values that H could substantiate. With the quantization, a receiver feeds
back the preferred precoding scheme, normally in the form of the index of the
preferred precoding matrix, the rank, and the indices of the preferred precoding
vectors. The receiver may also feed back the associated CQI values for the preferred
precoding scheme.
Another perspective of a MIMO system is whether the multiple data streams
for transmission are encoded separately or encoded together. If all the layers for
transmission are encoded together, we call it a single codeword (SCW) MIMO
system.
In a LTE system, when a transport block is large, the transport block is
segmented into multiple code blocks so that multiple coded packets can be generated,
which is advantageous because of benefits such as enabling parallel processing or
pipelining implementation and flexible trade off between power consumption and
hardware complexity. As an example, the encoding process of the High Speed Data
Shared Channel (HS-DSCH) in a High Speed Downlink Packet Access (HSDPA)
system is illustrated in the FIG. 8. In the current HS-DSCH design, only one 24-bit
cyclic redundancy check (CRC) is generated for the whole transport block for the
purpose of error detection for that block. If multiple code blocks are generated and
transmitted in one transmission time interval (TTI), the receiver may correctly
decode some of the code blocks but not the others. In that case, the receiver will
feedback a non-acknowledgement (NAK) to the transmitter because the CRC for the
transport block will not check. The reference number 901 to 905 shows the
relationship of transport block, transport block CRC (TB CRC), and code block
segmentation in FIG. 9.
Assume we use an L-bit CRC pplynomial to generate the code block CRC.
Denote the CRC generation polynomial by:
g(x) = g0xL + g,xL'1 +--- + gL.{x + gL. (1)
In general, for a message:
m(x) = m0xM~l + mxxM'2 +¦•• + mM_2x + mM_x, (2)

yields a remainder equal to 0 when divided by g(x).
Note that if each bit in the message is binary, the message can be represented
as a polynomial defined on binary Galois field (GF(2)). In that case, the operation of
'+' and '-' is the same. In other words, if the message bits are binary, the message
with CRC attached can be represented by either m{x) ¦ xL + p(x) or m(x) ¦ xL - p(x).
In the rest of this invention, we assume the message bits are binary for the sake of
convenience. The ideas disclosed in this invention may, however, certainly apply
when the message bits are non-binary.
One reason of the popularity of CRC is because of its simplicity in
implementation. CRC calculation can be easily implemented by a linear feedback
shift register (LFSR). LFSR can be used as a circuit for polynomial division. As
shown in FIG. 10, assume an L-bit CRC is used, LFSR 1000 has L shift
registers(Ro-RL-i)- Switches 1001, 1003 and 1005 are initially placed at position X.
The message bit mo, m\, ..., and mM.i are fed into LFSR 1000 one at a time in an
order of increasing index. After the last bit (mM.{) has been fed into LFSR 1000,
switches 1001, 1003 and 1005 are moved to position Y. LFSR 1000 is shifted by
another L times to produce the CRC at the output of the rightmost register. Note the
LFSR in FIG. 9 is only an example. There are certainly other implementations of
LFSR for polynomial division and CRC calculation.
The hybrid ARQ functionality matches the number of bits at the output of the
channel coder to the total number of bits of the High Speed Physical Downlink
Shared Channel (HS-PDSCH) set to which the High Speed Data Shared Channel
(HS-DSCH) is mapped. The hybrid ARQ functionality is controlled by the
redundancy version (RV) parameters. The exact set of bits at the output of the
hybrid ARQ functionality depends on the number of input bits, the number of output
bits, and the RV parameters. The hybrid ARQ functionality includes two rate-
matching stages 1101 and 1103, and a virtual buffer 1105 as shown in FIG. 11. The
output bits of the channel coder are segmented into systematic bits, parity bits 1 and
parity bits 2 by bit separation stage 1107 and are inputted to the rate-matching stages.
First rate matching stage 1101 matches the number of input bits to virtual IR buffer
1105, information about which is provided by higher layers. Note that, if the number
of input bits does not exceed the virtual IR buffering capability, first rate-matching
stage 1101 is transparent. Second rate matching stage 1103 matches the number of
bits at the output of first rate matching stage 1101 to the number of physical channel
bits available in the HS-PDSCH set in the TTI. The output bits of second rate
matching stage 1103 are collected by a bit collection stage 1109 and are transmitted
to a wireless network.
The downlink subframe structure of LTE is shown in FIG. 12. In a typical
configuration, each subframe is 1 ms long, containing 14 OFDM symbols as shown
in a vertical axis. Assume the OFDM symbols in a subframe are indexed from 0 to
13. Reference symbols (RS) for antenna 0 and 1 are located in OFDM symbols
0(1201), 4(1203), 7(1205), and 11(1207). If present, reference symbols (RS) for
antennas 2 and 3 are located in OFDM symbols 1(1211) and 8(1213). The control
channels, including Control Channel Format Indicator (CCFI), acknowledgement
channel (ACK), packet data control channel (PDCCH), are transmitted in the first
one, or two, or three OFDM symbols. The number of OFDM symbols used for
control channel is indicated by CCFI. For example, the control channels can occupy
the first OFDM symbol, or the first two OFDM symbols, or the first three OFDM
symbols. Data channels, i.e., Physical Downlink Shared Channel (PDSCH), are
transmitted in other OFDM symbols.
The uplink subframe structure (for data transmissions) is shown in FIG. 13.
Note the LTE uplink is a SC-FDMA based system, which is very much like an
OFDMA system with some differences. Similar to an OFDM symbol, each SC-
FDMA block has a cyclic prefix (CP). For data transmissions, the reference signals
(RSs) are located at the 4-th SC-FDMA block 1301 and the 11-th SC-FDMA block
1303, while the rest of the SC-FDMA blocks carrying data. Note that FIG. 13 only
shows the time-domain structure of an uplink subframe. For each individual UE, its
transmission may only occupy a portion of the whole bandwidth in frequency
domain. And different users and control signals are multiplexed in the frequency
domain via SC-FDMA.
In this invention, we propose methods and apparatus to compute multiple
CRCs for a transmission to improve the reliability of the transmission and reduce the
transmitter and receiver complexity.
Aspects, features, and advantages of the invention are readily apparent from
the following detailed description, simply by illustrating a number of particular
embodiments and implementations, including the best mode contemplated for
carrying out the invention. The invention is also capable of other and different
embodiments, and its several details can be modified in various obvious respects, all
without departing from the spirit and scope of the invention. Accordingly, the
drawings and description are to be regarded as illustrative in nature, and not as
restrictive. The invention is illustrated by way of example, and not by way of
limitation, in the figures of the accompanying drawings. In the following illustrations,
we use data channel in LTE systems as an example. The technique illustrated here,
however, can certainly be used in other channel in LTE systems, and other data,
control, or other channels in other systems whenever applicable.
We first illustrate the concept of transport block, code block, and code block
Cyclic Redundancy Check (CRC). A portion of the encoding processing chain at the
transmitter side is shown in FIG. 14. Multiple transport blocks in a TTI can be
serially concatenated, if necessary. If the number of bits after transport concatenation
is larger than Z, which is the maximum size of a code block in question, then code
block segmentation is performed after the concatenation of the transport blocks.
Note that in this invention, the transport blocks may or may not contain transport
block CRC before the segmentation. After the code block segmentation, CRC can be
generated for some, or all, of the code blocks. After the code block CRC is attached
to a corresponding code block, the channel coder encodes the code block to which
the CRC is attached. The hybrid ARQ functionality matches the number of bits
outputted from the channel coder to the total number of bits of the High Speed
Physical Downlink Shared Channel (HS-PDSCH) set to which the High Speed Data
Shared Channel (HS-DSCH) is mapped. For illustration purpose, let's assume the
code block CRC is generated for every code block, although the ideas disclosed in
this invention certainly apply otherwise. For ease of illustration, we assume there is
only one transport block. All the embodiments in this invention apply, however, to
cases with multiple transport blocks and transport block concatenation. Also note
that although we often use transmitter processing to illustrate the ideas of the
invention, all the embodiments in this invention apply to CRC computation at both
the transmitter and the receiver.
Denote the input bits to CRC computation by a0, av •••, aAA where A is
the size of the transport block. We call the input bits the information bits. Again,
the methods described in this invention apply regardless of whether there is one or
multiple transport block or whether the transport blocks contain transport block CRC
or not. Assume we use an Z,-bit CRC polynomial to generate the code block CRC.
Denote the CRC generation polynomial by:


where ak{x) is the polynomial presentation of the information bits up to the
k-Xh. code block, including information bits in the previous code blocks. It is easy to
see that a0(x) = b0(x), and flc_,(;c) = a(x). For the sake of simplicity, in the rest of the
invention, these notations are used without repeated definition.
In a first embodiment according to the principles of the present invention, in
a transmission of a first plurality of bits with a second plurality of CRCs or in a
receiving process of such a transmission, at least one CRC is computed based on a
subset of bits of the first plurality of bits such that at least one bit of the first plurality
of bits is not in the said subset. In an example shown in FIG. 16, a transport block
CRC is generated from a transport block and a transport block 1601 including the
transport block CRC is segmented code block 0 1603, code block 1 1605, code block
2 1607. CBOCRC 1609 is computed based on information bits in Code Block 0
1603 but not based on information bits in Code Block 1 1605 or Code Block 2 1607.
In doing so, a UE can use the CB0_CRC 1609 to check whether the information bits
in Code Block 0 1603 are received correctly before finishing the receiver processing
for Code Block 1 1605 and Code Block 2 1607. This feature is particularly beneficial
in terms of UE complexity reduction and power saving. The code block CRC can be
used for purposes such as, but not limited to, providing error detection for the
corresponding code block or code blocks, early stopping of iterative turbo decoding
that can achieve power saving and statistical multiplexing of decoding capacity
among code blocks, detecting decoding error of one code block that can avoid
unnecessary decoding of other code blocks in the event of decoding error of one code
block, etc.
In a second embodiment according to the principles of the present invention,
in a transmission of a first plurality of bits with a second plurality of CRCs or in the
receiver processing of such a transmission, at least one CRC is computed based on a
subset of the first plurality of bits that are jointly encoded by some type of forward
error correcting code. For example, as shown in FIG. 16, CB0_CRC 1609 is
computed based on the bits in Code Block 0 1603, a subset of all the bits in the
transport block. The bits in Code Block 0 1603 are jointly encoded by some
forward-error-correcting (FEC) code such as turbo code. FEC coding sometimes is
also called channel coding. Note that CB0_CRC 1609 is normally also jointly
encoded with information bits in Code Block 0 1603 to achieve error protection for
both the information bits and the CRC bits. By synchronizing the block of
information bits for CRC computation and the block of information bits for FEC
channel coding, a UE can use the code block CRC during the decoding process and
determining whether the corresponding code block is decoded correctly. And this
process can be done separately for each code block with a code block CRC, either in
a parallel or a pipeline and serial fashion.
In a third embodiment according to the principles of the present invention, in
a transmission of a first plurality of bits with a second plurality of CRCs or in the
receiver processing of such a transmission, a first CRC is computed based on a first
subset of bits while a second CRC is computed based on a second subset of bits. One
example is shown in FIG. 16. In this example, the "subset of bits" is referred to as a
code block. A transport block 1601 including the transport block CRC is computed
for the transport block. Then the transport block is segmented into three code blocks.
A CRC is computed for each code block. CB0_CRC 1609, which is the code block
CRC attached to Code Block 0 1603, is derived based on the bits in Code Block 0;
CB1_CRC 1611, which is the code block CRC attached to Code Block 1 1605, is
derived based on the bits in Code Block 1; CB2CRC 1613, which is the code block
CRC attached to Code Block 2 1607, is derived based on the bits in Code Block 2
including the transport block CRC. Also note that, in this example, the first subset of
bits from which a first CRC is derived does not overlap with the second subset of
bits from which a second CRC is derived. The subsets of bits can, however,
certainly overlap without departing from the disclosure of this invention. Also note
that some subsets may include all the bits in the transmission. Also note that it is not
necessary to compute CRCs for all the code blocks to use this invention. Some code
block may not have code block CRC. Also note that a subset can also include bits in
multiple code blocks. For example, as shown in FIG. 17, CBOCRC 1709 is derived
based on the subset of bits that include the bits in Code Block 0 1703; CB1_CRC
1711 is derived based on the subset of bits that include both the bits in Code Block 0
1709 and the bits in Code Block 1 1705; CB2CRC 1713 is derived based on the
subset of bits that include the bits in Code Block 0 1703, the bits in Code Block 1
1705, and the bits in Code Block 2 1707.
In a fourth embodiment according to the principles of the present invention,
in a transmission of a first plurality of bits with a second plurality of CRCs or in the
receiver processing of such a transmission, the bits upon which a first CRC is
derived are a subset of bits upon which a second CRC is derived. One example is
shown in FIG. 17. For the purpose of illustration, we only show three code blocks.
A transport block CRC is computed for the transport block. Then a transport block
1701 including the transport block CRC is segmented into three code blocks. A
CRC is computed for each code block. CBOCRC 1709, which is the code block
CRC attached to Code Block 0 1703, is derived based on the bits in Code Block 0;
CB1_CRC 1711, which is the code block CRC attached to Code Block 1 1705, is
derived based on the bits in Code Block 0 and Code Block 1; CB2_CRC 1713,
which is the code block CRC attached to Code Block 2 1707, is derived based on the
bits in Code Block 0 1703, Code Block 1 1705, and Code Block 2 1707. By doing so,
we improve the miss detection performance of these CRCs, comparing with the
CRCs derived based on a single code block. We assume the transport block is
a(x) = a0xA~] + a}xA'2 +••¦ + aA_2x + aAA , where A is the transport block size. If transport
block CRC (TB CRC) is used, the TB CRC is included in the message. As defined
earlier, the transport block a{x) is segmented into C code blocks with code block i
represented by b^x). We compute one CRC, namely CBOCRC, and attach it to the
first code block. The CB0_CRC can be derived from some or all of the bits in the
first code block. We denote CB0_CRC by:
(12)
One example of computing CBOCRC is by finding the remainder of
b0(x)-xl divided by the CRC generator polynomial g(x), in which p0(x) can be
represented as:
where q0(x) is the quotient of b0(x)-xL divided by g(x) . We compute
another CRC, namely CB1_CRC, and attach it to the second code block. CB1_CRC
can be derived from some or all of the bits in the first code block and some or all of
the bits in the second code block. We denote CB1_CRC by:

One example of computing CB1CRC is by finding the remainder of
\b(j(x)-xB' + bl(x))-xL divided by the CRC generator polynomial g(x), in which px{x)
can be represented as-
where qx(x) is the quotient of (b0(x)-x* +bl(x))-xi divided by g(x) . By
deriving CB1_CRC based on both the information bits in the first code block and the
information bits in the second code block, we reduce the miss detection probability
because CB1CRC can be used to detect error of information bits in the first code
block and the second code block.
Obviously, if there are more than two code blocks, we can extend the
operations in similar ways. For example, the CRC attached to Code Block 2 can be
derived from bits in Code Block 0, Code Block 1, and Code Block 2. Alternatively,
the CRC attached to one code block does not need to be derived based on the bits
from all of the previous code blocks, including the current code block. For example,
the CRC attached to Code Block 2 can be derived from the bits in Code Block 1 and
Code Block 2, but not the bits in Code Block 0. Note this embodiment also applies
when there is no transport block CRC, as shown in FIG. 18. If the error detection of
the CB CRC is reliably enough, TB CRC may not be needed.
In a fifth embodiment according to the principles of the present invention, in
a transmission of a first plurality of bits with a second plurality of CRCs or in the
receiver processing of such a transmission, a transport block CRC is derived from all
the bits in a transport block before the code block segmentation while there is at least
one subset of bits from which no code block CRC is computed. As shown in FIG. 19,
a transport block CRC is computed based on bits in the transport block. Then the
transport block 1901, including the transport block CRC, is segmented into three
code blocks. In this example, CBOCRC 1909 is computed based upon bits in Code
Block 0 1903; CB1_CRC 1911 is computed based upon bits in Code Block 0 1903
and Code Block 1 1905. Because there is a transport block CRC that covers all the
bits in the transport block, code block CRC for Code Block 2, however, is not
necessary. The CB0_CRC 1909 can be used for stopping turbo decoding iterations
for Code Block 0 1903; the CB1_CRC 1911 can be used for stopping turbo decoding
iteration for Code Block 1 1905; and the TBCRC can be used for stopping turbo
decoding iteration for Code Block 2 1907. At the same time, TBCRC provide error
detection for the whole transport block.
In a sixth embodiment according to the principles of the present invention, in
a transmission of a first plurality of information bits with a second plurality of CRCs
or in the receiver processing of such a transmission, a first CRC is derived from all
the information bits while a second CRC is derived from a subset of the information
bits. As shown in FIG. 20, no transport block CRC is computed before code block
segmentation. The transport block 2001 is segmented into three code blocks. Code
block CRC is computed for each of the three code blocks. CB0_CRC 2009 is derived
from the bits in Code Block 0 2003; CB1_CRC 2011 is derived from the bits in Code
Block 1 2005; CB2_CRC 2013 is derived from the bits in Code Block 0 2003, Code
Block 1 2005, and Code Block 2 2007. The CB0_CRC 2009 can be used for
stopping turbo decoding iterations or error detection for Code Block 0 2003; the
CB1CRC 2011 can be used for stopping turbo decoding iteration or error detection
for Code Block 1 2005; and the CB2_CRC 2013 can be used for stopping turbo
decoding iteration and error detection for Code Block 2 2007. At the same time,
CB2CRC 2013 provides error detection for the whole transport block.
In the following embodiments, we illustrate how linear feedback shift register
(LFSR) based circuits can be used to efficiently calculate multiple CRCs for a
plurality of information bits. Note that although we use the transmitter side CRC
generation for illustration purpose, it is straightforward for a person of ordinary skill
in the art to apply these methods to the receiver processing. For the sake of
convenience, we assume the CRC calculation circuit is initialized to all-zero state.
The ideas disclosed in this invention may apply, however, when the initial state of
the LFSR are set to non-zero state.
In a seventh embodiment according to the principles of the present invention,
a first plurality of CRCs for a second plurality of information bits can be computed
recursively with one single CRC calculation circuit. We compute one CRC, namely
CB0_CRC, and attach it to the first code block. The CB0_CRC can be derived from
some or all of the bits in the first code block. We denote CB0_CRC by

One example of computing CB0_CRC is by finding the remainder of
b0(x)-xL divided by the CRC generator polynomial g(x), in which p0(x) can be
represented as:

where q0(x) is the quotient of b0(x)-xL divided by g(x) . We compute
another CRC, namely CB1_CRC, and attach it to the second code block. CB1_CRC
can be derived from the bits in the first code block and the bits in the second code
block. We denote CB1_CRC by

In other words, CB1_CRC is the remainder of (b0(x)-*51 +bl(x))-xL divided by
the CRC generator polynomial g(x), in which p,(x) can be represented as:
where qx(x) is the quotient of [b0(x)-x* +bl(x))-xL divided by g(x) . By
deriving CB1_CRC based on both the information bits in the first code block and the
information bits in the second code block, we reduce the miss detection probability
because CB1_CRC can be used to detect error in both the first code block and the
second code block. Similarly, the CRC for the k-th code block can be computed as
the remainder of ak (x) • xL divided by g(x). In other words,

where qk{x) is the quotient of ak(x)-xL divided by g(x). Note that:

This way of computing CRC lends itself well to a simple CRC calculation
method. The CRC for the Ar-th code block can be represented as
f
One example of circuit to recursively compute the CRC p,(x) ,
i = 0, 1, ..., C-l is shown in FIG. 21. As shown in FIG. 21, the circuit for
computing the CRC is constructed with an input port 2109 for receiving information
data, an output port 2111 for outputting the information data and CRC, a linear
feedback shift register (LFSR) unit 2100 communicatively connected between input
port 2109 and output port 2111. LFSR unit 2100 includes L shift registers 2115, L
AND gates 2113 (represented by "x" surround by a circle) and L XOR gates 2117
(represented by "+" surround by a circle). A cyclic redundancy check register unit
2119 is connected between input port 2109 and LFSR unit 2100. Cyclic redundancy
check register unit 2119 includes L cyclic redundancy check registers. A first switch
2101 is located between input port 2109 and cyclic redundancy check register unit
2119. First switch has a position X to connect input port 2109 and cyclic
redundancy check register unit 2119, and a position Y to disconnect input port 2109
and cyclic redundancy check register unit 2119. A second switch 2103 is located at a
feedback loop of LFSR unit 2100. Second switch 2103 has a position X to connect
the feedback loop of LFST unit 2100, and a position Y to disconnect the feedback
loop of LFST unit 2100. A third switch 2105 is located between LFST unit 2100 and
cyclic redundancy check register unit 2119. Third switch 2105 has a position X to
disconnect LFST unit 2100 and cyclic redundancy check register unit 2119, and a
position Y to connect LFST unit 2100 and cyclic redundancy check register unit
2119. A fourth switch 2107 is located between input port 2109, LFSR unit 2100 and
output port 2111. Fourth switch 2107 has a position X to connect input port 2109
and output port 2111, and a position Y to connect LFSR unit 2100 and output port
2111. The switches can be any contemporary electronic switches such as, for
example, any contemporary field effect transistors (FETs). The corresponding
procedure for operating the circuit shown in FIG. 21 is outlined as follows:
Initialize LFSR unit 2100 to an all-zero state; Set k = 0; Initialize the CRC
registers to zero; Set all switches 2101, 2103, 2105 and 2107 at position X.
Input bk(x) into the circuit, one bit at a time. Note the LFSR is also shifted
once for every bit input.
Change all 2101, 2103, 2105 and 2107 switches to position Y.
Shift LFSR unit 2100 and the CRC registers L times to output pk{x), which
is the Z-bit CRC.
Reset LFSR unit 2100 to all-zero state; Change all switches to position X.
Increase k.
If k The CRC attached to the k-th code block can be represented by Equation 20:
pk{x) = ak{x)-xL-qk(x)-g{x) In other words, the CRC of the k-th code block is
computed based on the information bits of the k-th code block and all previous code
blocks. As we can see, the calculation of the code block CRCs is the same as the
calculation of the transport block CRC, except that after input each code block to the
circuit, the CRC should be stored and added back at some point into the CRC
calculation for the next code block. In this way, separate circuits and extra
computation complexity for calculating code block CRC and transport block CRC
are avoided. In fact, the last code block CRC equals to a transport block CRC. This
structure fits well with the pipelining structure of the multiple code blocks. In
addition, the miss detection performance of the transport block is guaranteed at the
minimum. Note that Equation (20) is only for the case when the k-th code block
CEC is calculated based upon the information bits of the k-th code block and all
previous code blocks.
Alternatively, another example of circuit to recursively compute the CRC
p,(x), i = 0, 1, ..., C-l is shown in FIG. 22 according to an eighth embodiment
of the principles of the present invention. As shown in FIG. 22, the circuit is
constructed with an input port 2215 for receiving information data, an output port
2217 for outputting the information data and CRC, a LFSR unit 2200 connected
between input port 2215 and output port 2217. LFSR unit 2200 includes L shift
registers. The circuit is further constructed with L state registers 2213 connected to
corresponding ones of the L shift registers to write and read data values to and from
the L shift registers. A first switch 2201 is located between input port 2215 and
LFSR unit 2200. First switch 2201 has a position X to connect input port 2215 and
LFSR unit 2200, and a position Y to disconnect input port 2215 and LFSR unit 2200.
A second switch 2203 is located at a feedback loop of LFSR unit 2200. Second
switch 2203 has a position X to connect the feedback loop of LFSR unit 2200, and a
position Y to disconnect the feedback loop of LFSR unit 2200. A third switch 2205
is located between input port 2215, LFSR unit 2200 and output port 2217. Third
switch 2205 has a position X for connecting input port 2215 with output port 2217,
and a position Y for connecting LFSR unit 2200 and output port 2217. This circuit
achieves the same CRC computation as the circuit shown in FIG. 21. The
corresponding procedure is outlined as follows:
Initialize LFSR unit 2200 to all-zero state; Set k = 0; Initialize state registers
2213 to zero; Set all switches 2201, 2203 and 2205 at position X.
Input bk{x) into the circuit via input port 2215, one bit at a time. Note the
LFSR is also shifted once for every bit input.
Write the value of shift registers in LFSR unit 2200 to the corresponding state
registers 2213; Change all switches 2201, 2203 and 2205 to position Y.
Shift LFSR unit 2200 L times to obtain pk(x), which is the I-bit CRC.
Change all switches 2201, 2203 and 2205 to position X; Write the value of
state registers 2213 into the corresponding shift registers in LFSR unit 2200.
Increase K.
If£ Another method to compute CRCs for multiple code blocks is to use two
LFSRs according to a ninth embodiment of the principles of the present invention.
As shown in FIG. 23, the circuit is constructed with an input port 2311 for receiving
information data, an output port 2313 for outputting the information data and cyclic
redundancy checks, a first LFSR unit 2300 connected between input port 2311 and
output port 2313, and including L shift registers, a second LFSR unit 2301 connected
between input port 2311 and output port 2313, being in parallel with first FLSR unit
2300, and comprising L shift registers. A first switch 2303 is located between input
port 2311 and a common node 2317 between first and second LFSR units 2300 and
2301. First switch has a position X for connecting input port 2311 with common
node 2317, and a position Y for disconnecting input port 2311 with common node
2317. A second switch 2305 is located at a feedback loop of first LFSR unit 2300.
Second switch 2305 has a position X for connecting the feedback loop of first LFSR
unit 2300, and a position Y for disconnecting the feedback loop of first LFSR unit
2300. A third switch 2307 is located between input port 2311, common node 2317
between first and second LFSR units 2300 and 2301, and output port 2313. Third
switch 2307 has a position X for connecting input port 2311 with output port 2313, a
position Y for connecting first LFSR unit 2300 and output port 2313, and a position
Z for connecting second LFSR unit 2301 and output port 2313. A fourth switch
2309 is located a feedback loop of second LFSR unit 2301. Fourth switch 2309 has
a position X for connecting the feedback loop of second LFSR unit 2301, and a
position Z for disconnecting the feedback loop of second LFSR unit 2301. This
method can be outlined as follows:
Initialize first LFSR unit 2300 and second LFSR unit 2301 to all-zero state;
Set k = 0; Set all switches 2303, 2305, 2307 and 2309 at position X.
Input bk{x) into the circuit via input port 2311, one bit at a time. Note that
both first LFSR unit 2300 and second LFSR unit 2301 are also shifted once for every
bit input.
Change first switch 2303 to position Y.
If k = C-l, go to Step 8; Otherwise, change switches 2305 and 2307 to
position Y.
Shift first LFSR unit 2300 L times to obtain pk(x), which is the L-bit CRC
for the k-th code block.
Change switches 2303, 2305 and 2307 to position X; Reset first LFSR unit
2300.
Increase k, go to Step 2.
Change switches 2305 and 2307 to position Z.
Shift second LFSR 2301 L times to obtain pc_x(x), which is the I-bit CRC
for the last code block.
This method computes the k-th code block CRC only based on information
bits in the k-th code block, except the last code block. Therefore, the A:-th code block
CRC, except the last code block CRC, can be represented by:
Pk{x) = bk{x)-xL -qk{x)-g(x),fox k = 0,\,...C-2, (23)
where C is the total number of code blocks. The last code block CRC is
computed by LFSR2 and is derived from information bits in all the code blocks.
Therefore, the last code block CRC can be represented by:
pk(x) = ak(x)-xL-qk(x)-g(x), for k = C-I. (24)
Another method is to insert L O's at the bit positions for all code block CRCs
to the message a{x) before input a(x) to the CRC calculation circuit according to a
tenth embodiment of the principles of the present invention. An example of this
implementation is illustrated in FIG. 24. The circuit is constructed with an input port
2407 for receiving information data, an output port 2409 for outputting the
information data and CRCs, and a LFSR unit 2400 connected between input port
2407 and output port 2409, and including L shift registers for transforming the
information data with a cyclic redundancy check generation polynomial g(x) having
a degree of L-l. A first switch 2401 is located between input port 2407 and LFSR
unit 2400. First switch 2401 has a position X for connecting input port 2407 and
LFSR unit 2400, and a position Y for disconnecting input port 2407 and LFSR unit
2400. A second switch 2403 is located at a feedback loop of LFSR unit 2400.
Second switch 2403 has a position X for connecting the feedback loop of LFSR unit
2400, and a position Y for disconnection the feedback loop of LFSR unit 2400. A
third switch 2405 is located between input port 2407, LFSR unit 2400 and output
port 2409. Third switch 2405 has a position X for connecting input port 2407 with
output port 2409, and a position Y for connecting LFSR unit 2400 and output port
2409. Note that the L O's is added implicitly by changing the switches' position
from X to Y for L shifts. Essentially, in this case, we allow the initial state of the
LFSR to be dependant on the previous code blocks and thus enabling the current
CRC to protect the bits in the current code block and previous code blocks. This
method can be outlined as follows:
Initialize LFSR unit 2400 to all-zero state; Set k = 0; Set all switches 2401,
2403 and 2405 at position X.
Input bk{x) into the circuit via input port 2407, one bit at a time. Note the
LFSR is also shifted once for every bit input.
Change all switches 2401, 2403 and 2405 to position Y.
Shift LFSR unit 2400 L times to obtain pk(x), which is the I-bit CRC for the
£-th code block.
Change all switches to position X.
Increase k.
If k While the invention has been shown and described in connection with the
preferred embodiments, it will be apparent to those skilled in the art that
modifications and variations can be made without departing from the spirit and scope
of the invention as defined by the appended claims.
WHAT IS CLAIMED IS:
1. A method for generating Cyclic Redundancy Checks of information bits
and transmitting the information bits together with the generated CRCs in a
communication system, the method comprising the steps of:
calculating a transport block CRC for a transport block including a plurality
of information bits;
segmenting a transport block including the transport block CRC into a
plurality of subsets;
calculating a plurality of CRCs for the plurality of subsets; and
transmitting the plurality of subsets and the plurality of CRCs for the
plurality of subsets.
2. The method of claim 1, the step of calculating the plurality of CRCs for
the plurality of subsets further comprises, caculating n-th CRC based on n-th subset
of the information bits.
3. The method of claim 1, wherein in the calculating the plurality of CRCs,
at least one CRC among the plurality of CRCs is calculated based on the
plurality of subsets.
4. The method of claim 1, wherein in the step of calculating the plurality of
CRCs,
the last CRC among the plurality of CRCs is calculated from the last subset
including the transport block CRC.
5. The method of claim 1,
further comprising jointly encoding the plurality of subsets of the information
bits by a certain type of forward error correcting code.
6. The method of claim 5,
wherein the certain type of forward error correcting code comprises a turbo
code.
7. The method of claim 1,
further comprising jointly encoding the plurality of subsets and the at least
one CRC that is calculated based on the plurality of subsets.
8. The method of claim 1,
wherein the plurality of subsets are overlapped with each other.
9. The method of claim 6,
wherein the plurality of subsets are separated from each other.
10. The method of claim 1,
wherein at least one subset among the plurality of subsets comprises at least
one of other subset.
11. The method of claim 1,
wherein at least one CRC among the plurality of CRCs is calculated based on
all of the information bits.
12. The method of claim 1,
wherein each of the plurality of CRCs is calculated based upon a
combination of the corresponding one of the plurality of subsets and other subsets
that are proceeding the corresponding subset.
13. A circuit for generating cyclic redundancy checks in data
communications, comprising:
an input port for receiving information data;
an output port for outputting the information data and cyclic redundancy
checks;
a linear feedback shift register unit communicatively connected between the
input port and the output port, and comprising L shift registers for transforming the
information data with a cyclic redundancy check generation polynomial g(x) having
a degree of L-l;
a cyclic redundancy check register unit communicatively connected between
the input port and the linear feedback shift register unit, and comprising L cyclic
redundancy check registers;
a first switch communicatively connected between the input port and the
cyclic redundancy check register unit;
a second switch communicatively connected at a feedback loop of the linear
feedback shift register unit;
a third switch communicatively connected between the linear feedback shift
register unit and the cyclic redundancy check register unit;
a fourth switch communicatively connected between the input port, the linear
feedback shift register unit and the output port, and having a first position for
connecting the input port and the output port, and a second position for connecting
the linear feedback shift register unit and the output port; and
Controlling the first to the fourth switch to sequentially perform the first
operation of initializing the linear feedback shift register unit and the cyclic
redundancy check register unit to an all-zero state, the second operation of serially
inputting a code block of information bits via the input port, the third operation of
shifting the linear feedback shift register unit L times to obtain the cyclic redundancy
checks for the code block and the fourth operation of resetting the linear feedback
shift register unit to the all-zero state.
14. A circuit for generating cyclic redundancy checks in data
communications, comprising:
an input port for receiving information data;
an output port for outputting the information data and cyclic redundancy
checks;
a linear feedback shift register unit communicatively connected between the
input port and the output port, and comprising L shift registers for transforming the
information data with a cyclic redundancy check generation polynomial g(x) having
a degree of L-l;
L state registers communicatively connected to corresponding ones of the L
shift registers to write and read data values to and from the L shift registers;
a first switch communicatively connected between the input port and the
linear feedback shift register unit;
a second switch communicatively connected at a feedback loop of the linear
feedback shift register unit;
a third switch communicatively connected between the input port, the linear
feedback shift register unit and the output port, and having a first position for
connecting the input port with the output port, and a second position for connecting
the linear feedback shift register unit and the output port; and
Controlling the first to the fourth switch to sequentially perform the first
operation of initializing the linear feedback shift register unit and the state registers
to an all-zero state, the second operation of serially inputting a code block of
information bits via the input port, the third operation of writing the data values in
the L shift registers in the feedback shift register unit to the respectively
corresponding state registers, the fourth operation of shifting the linear feedback shift
register unit L times to obtain the cyclic redundancy checks for the code block and
the fifth operation of writing the data values in the state registers to the respectively
corresponding shift registers in the feedback shift register unit.
15. A circuit for generating cyclic redundancy checks in data
communications, comprising:
an input port for receiving information data;
an output port for outputting the information data and cyclic redundancy
checks;
a first linear feedback shift register unit communicatively connected between
the input port and the output port, and comprising L shift registers for transforming
the information data with a cyclic redundancy check generation polynomial g(x)
having a degree of L-1;
a second linear feedback shift register unit communicatively connected
between the input port and the output port being in parallel with the first linear
feedback shift register unit, and comprising L shift registers for transforming the
information data with a cyclic redundancy check generation polynomial g(x) having
a degree ofL-1;
a first switch communicatively connected between the input port and a
common node between the first and second linear feedback shift register units;
a second switch communicatively connected at a feedback loop of the first
linear feedback shift register unit;
a third switch communicatively connected between the input port, the
common node between the first and second linear feedback shift register units, and
the output port, and having a first position for connecting the input port with the
output port, a second position for connecting the first linear feedback shift register
unit and the output port, and a third position for connecting the second linear
feedback shift register unit and the output port;
a fourth switch communicatively connected at a feedback loop of the second
linear feedback shift register unit; and
Controlling the first to the fourth switch to sequentially perform the first
operation of initializing the first and second linear feedback shift register units and
the cyclic redundancy check register unit to an all-zero state, the second operation of
serially inputting a code block of information bits via the input port, the third
operation of making a determination regarding whether the received code block is
the last code block of the information data, the fourth operation of shifting the first
linear feedback shift register unit L times to obtain the cyclic redundancy checks for
the code block and the fifth operation of resetting the first linear feedback shift
register unit to the all-zero state.
16. A circuit for generating cyclic redundancy checks in data
communications, comprising:
an input port for receiving information data;
an output port for outputting the information data and cyclic redundancy
checks;
a linear feedback shift register unit communicatively connected between the
input port and the output port, and comprising L shift registers for transforming the
information data with a cyclic redundancy check generation polynomial g(x) having
a degree of L-l;
a first switch communicatively connected between the input port and the
linear feedback shift register unit;
a second switch communicatively connected at a feedback loop of the linear
feedback shift register unit;
a third switch communicatively connected between the input port, the linear
feedback shift register unit and the output port, and having a first position for
connecting the input port with the output port, and a second position for connecting
the linear feedback shift register unit and the output port; and
Controlling the first to the fourth switch to sequentially perform the first
operation of initializing the linear feedback shift register unit to an all-zero state, the
second operation of serially inputting a code block of information bits via the input
port, the third operation of shifting the linear feedback shift register unit L times to
obtain the cyclic redundancy checks for the code block.
17. A method for calculating cyclic redundancy check of a data packet, the
method comprising the steps of:
segregating the data packet into a plurality of code blocks, with each code
block being represented by a polynomial established by:
bt (x) = bi0xBr{ + biAxBl~2 +¦¦¦ + bi(B_2)x + bUB_X),
where / is the index of the code block b:(x), i = 0,1,..., C-l, C is the total
number of the code blocks, B. is the size of the i-th code block b^x);
repeatedly inputting information bits of each code block into a linear
feedback shift register unit comprising L shift registers, and generating a cyclic
redundancy check for each code block in dependence upon an L-bit cyclic
redundancy check polynomial:
g(x) = g0xL + g,*i_1 +¦¦¦ + gL_xx + gL,
with the cyclic redundancy check pk(x) for a k-th code block bk(x) being
established by:

appending the generated cyclic redundancy checks at the end of the
respective corresponding code blocks.
18. A method for calculating cyclic redundancy check of a data packet, the
method comprising the steps of:
segregating the data packet into a plurality of code blocks, with each code
block being represented by a polynomial established by:
repeatedly inputting information bits of each code block into a first linear
feedback shift register unit comprising L shift registers and a second linear feedback
shift register unit comprising L shift registers, and generating a cyclic redundancy
check for each code block in dependence upon an L-bit cyclic redundancy check
polynomial:

with the cyclic redundancy check pk(x) for a k-th code block bk(x) being
established by:
where qk(x) is the quotient of ak{x)-xL divided by g(x) , a0(x) = b0(x) ,
ak (x) = akA (x) • xBk + bk (x), and Bk is the size of the k-th code block bk (x); and
appending the generated cyclic redundancy checks at the end of the
respective corresponding code blocks.


A method and a circuit for generating cyclic redundancy checks. The method
calculates a plurality of cyclic redundancy checks for a transport block with a
plurality of information bits.
A transport block CRC is calculated for a transport block including a
plurality of information bit. A transport block including the transport block CRC is
segmented into a plurality of subsets and a plurality of cyclic redundancy checks are
calculated for the plurality of subsets. At least one cyclic redundancy check among
the plurality of cyclic redundancy checks is calculated based on a subset of
information bits. In addition, a transport block cyclic redundancy check may be
calculated based on all the information bits.

Documents:

http://ipindiaonline.gov.in/patentsearch/GrantedSearch/viewdoc.aspx?id=pXmeiPQGKtDZtnoGAFrg9w==&loc=wDBSZCsAt7zoiVrqcFJsRw==


Patent Number 270777
Indian Patent Application Number 4579/KOLNP/2009
PG Journal Number 04/2016
Publication Date 22-Jan-2016
Grant Date 19-Jan-2016
Date of Filing 31-Dec-2009
Name of Patentee SAMSUNG ELECTRONICS CO. LTD.
Applicant Address 416, MAETAN-DONG, YEONGTONG-GU, SUWON-SI, GYEONGGI-DO 442-742, KOREA
Inventors:
# Inventor's Name Inventor's Address
1 PI, ZHOUYUE 4000 EAST RENNER RD., 1023, RICHARDSON, TEXAS 75082, U.S.A.
2 KHAN, FAROOQ 820 SADLEBROOK DRIVE, ALLEN, COLLIN COUNTY, TEXAS 75002, U.S.A.
PCT International Classification Number H03M13/00; H03M13/09; H03M13/00
PCT International Application Number PCT/KR2008/004102
PCT International Filing date 2008-07-11
PCT Conventions:
# PCT Application Number Date of Convention Priority Country
1 12/076,777 2008-03-21 U.S.A.
2 60/929,790 2007-07-12 U.S.A.