This preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full Document
Unformatted text preview: IEEE TRANSACTIONS ON COMMUNICATIONS, VOL. 36, N0. 4, APRIL 1988 389 RateCompatible Puncturcd Convolutional Codes
(RCPC Codes) and their Applications JOACHIM HAGENAUER, SENIOR MEMBER, IEEE Abstract—The concept of punctured convolutional codes is extended
by puncturing a low rate l/N code periodically with period P to obtain a
family of codes with rate P/ (P + I) where I can be varied between 1 and
(N — UP. A ratecompatibility restriction on the puncturing tables
ensures that all code bits of high rate codes are used by the lower rate
codes. This allows transmission of incremental redundancy in ARQ/FEC
schemes and continuous rate variation to change from low to high error
protection within a data frame. Families of RCPC codes with rates
between 8/9 and 1/4 are given for memories M from 3 to 6 (8 to 64 trellis
states) together with the relevant distance spectra. These codes are almost
as good as the best known general convolutional codes of the respective
rates. It is shown that the same Viterbi decoder can be used for all RCPC
codes of the same M by controlling the metric memory access through the
puncturing rule, the soft decision and the channel state information
(CS1). The performance of RCPC codes on Gaussian and fading channels
is shown under various quantization and CSI conditions. The application
of RCPC codes to hybrid ARQ/FEC schemes is discussed for Gaussian
and Rayleigh fading channels using CSI to optimize throughput. If a
source coder supplies a source significance information (881) indicating
the relative importance of hits, a ﬂexible unequal error protection scheme
can be designed with RCPC codes which minimizes the redundancy
overhead. I. INTRODUCTION HE design of an error correction coding system usually consists of selecting a ﬁxed code with a certain rate and
correction capability matched to the protection requirement of
all the data to be transmitted and adapted to the average or
worst channel conditions to be expected [1]. In many cases,
however, one would like to be more ﬂexible because the data
to be transmitted have different error protection needs and the
channel is time varying or has insufﬁciently known parame—
ters. Consequently, ﬂexible channel encoding and an adaptive
decoder are required. As Fig. 1 shows, the information to be
transmitted might carry source signiﬁcance information (581)
indicating different protection requirements. Examples in
clude control and signaling bits in a data stream, most
signiﬁcant bits in a PCM word, or side information like
quantizer slopes, or ﬁlter coefﬁcients in more sophisticated
voice encoding schemes [2]. On the other hand, the channel
characteristics or the channel state might vary considerably, as
encountered in mobile or multipath radio transmission, in a
jamming environment, dilring rain fading, or in HF transmis
sion. This is indicated in Fig. 1 by the channel state
information CSI. In rare cases the instantaneous CSI is
available at the encoder where code adaptation could take
place. Mostly the receiver only can use a CSIlike fading Paper approved by the Editor for Coding Theory and Application of the
IEEE Communications Society. Manuscript received December 22, 1986;
revised June 5, 1987. This paper was presented in part at the 1986
International Symposium on information Theory, Ann Arbor, MI, October
1986, and ICC’87. Seattle, WA, June 1987. The author is with the German Aerospace Research Establishment
(DFVLR), D803l Oberpfaffenhofen. West Germany. IEEE Log Number 8718991. FEEDBACK FOR I—_——ARO—/ FEC 1. I f V‘R‘ABLE —
SOU RCE RATE CHANNEL DECODER
eucoczn “"9
DECISIONS
L __._ _ _
SSI CSI
SOURCE CHANNEL
SIGNIFICANCE STATE
INFORMAYION INFORMATION Coded transniiSsion scheme with source signiﬁcance information
(881) and channel state information (CSI). Fig. 1. depth, noise level variation, shortterm signal loss, or jammer
activity. The CSI can signiﬁcantly improve decoder perform—
ance together with soft decisions at the receiver. Whenever a
return channel is available, the CSI can be indirectly relayed to
the transmitter by asking for a retransmission as employed in
automatic repeat request (ARQ) systems. Such ARQ systems
can also be combined with forward error correction (FEC) to
yield type I or type II ARQ/FEC hybrid schemes [3], [4]. The
latter schemes nicely match the average channel rate or the
throughput with the channel conditions and some of them use
different FEC codes for repeated transmission attempts. The
scenarios shown in Fig. 1 require variable codes adapted to the
source and channel needs. We wish to change the code rate,
i.e. , the number of check bits, and hence the correction power
of the code during transmission of an information frame
according to source and channel needs. For practical purposes,
we would like to have not just switching between a set of
encoders and decoders, but one encoder and one decoder
which can be modiﬁed without changing their basic structure.
This can be achieved by not transmitting certain code bits,
namely, by puncturing the code. Mandelbaum [5] was the ﬁrst
to propose punctured codes for transmitting redundancy in
incremental steps by using Reed—Solomon codes. In order to
accommodate soft decisions and CSI at the receiver, a
maximum likelihood decoder is required. This motivates the
use of convolutional codes and the Viterbi algorithm for
decoding. Punctured convolutional codes were ﬁrst introduced by
Cain, Clark, and Geist [6] mainly for the purpose of obtaining
simpler Viterbi decoding for rate K/N codes with two
branches arriving at each node instead of 2" branches. They
obtained codes of rate 2/3 and 3/4 by puncturing rate 1/2
codes. These punctured codes 'were almost as good as the best
known codes. Some of the good codes used the same basic rate
1/2 generators. Later, Yasuda et a1. [7], [8] found a family of
(N — l)/N codes by puncturing 1/2 codes for N up to 14, and
built selectable rate encoders and Viterbi decoders using soft
decisions. In this paper, the concept of punctured convolutional codes
is modiﬁed for the generation of a family of codes by adding a
rate—compatibility restriction to the puncturing rule. The
restriction implies that all the code bits of a high rate punctured 0090—6778/88/04000389$01.00 © 1988 IEEE 390 code are used by the lower rate codes; or in other words, the
high rate codes are embedded into the lower rate codes of the
family. If the higher rate codes are not sufﬁciently powerful to
decode channel errors, only supplemental bits which were
previously punctured have to be transmitted in order to
upgrade the code. Furthermore, since codes are compatible,
rate variation within a data frame is possible to achieve
unequal error protection. In Section H, the necessary deﬁni—
tions and the performance criterion for the class of rate
compatible punctured convolutional codes (RCPC codes) are
given. Section HI reports the results of a computer search for
families of RCPC codes of rate P/(P + I), with rates
between 1/4 and 8/9. The analytically calculated and simulated
performance of some codes on Gaussian, Rayleigh, and Rice
fading channels is shown in Section IV. Modiﬁed type II
ARQ/FEC schemes with RCPC schemes shown in Section allow a minimum number of transmitted bits as well as soft
decision and CSI adaptive decoding and compare favorable to
previous known schemes. Unequal error protection with
RCPC codes is discussed in Section VI. 11. DEFINITION AND PERFORMANCE CRITERION 0F RCPC CODES In order to explain ratecompatible punctured codes, we
start with the example of Fig. 2 where a rate R = 1/2
convolutional code with memory M = 2 is punctured
periodically with period P = 4. We describe the binary
information symbols and the binary code symbols x” and xzj
by values 1 l. A zero in the puncturing table means that the
code symbol is not to be transmitted. In the upper example of
Fig. 2, the fourth bit of the upper branch and the second and
third bit of the lower branch are not transmitted. The
puncturing table can be viewed as a modulo P rule for
multiplexing the two streams of code bits. Instead Of transmit—
tingZP = 24onlyP + I: P + l = 5 bitsaretransmitted
per P = 4 information bits. Therefore, we have generated a
code with rate R = 4/5 by using only P + I“l” ’5 instead of
2P “ 1 " ’s in the puncturing table, which can be described by
the N X P matrix 1 l 1 0
“(1) (1 0 o 1) ‘ Suppose the code rate with 4/5 and with the puncturing table
a(l) is not powerﬁrl enough to correct the channel errors. A
more redundant and therefore more powerful code with lower
rates 4/6, 4/7, or 4/8 would be necessary. Instead of
transmitting all the code bits of a completely different low rate
code, the lower rate code should utilize the bits already
transmitted. Then only additional incremental redundancy bits
have to be transmitted. Additional “1” ’s in the puncturing
tables of the lower rate codes can therefore be placed only
where zeros appeared in the puncturing matrix of the previous
higher rate code, for example, a<2>=(: 1 2, ‘3),a<s>=(: 1 2. i). We : :1). Thus, for I = 1 to 4, we get a compatible family of codes
derived from the mother code 1/2 with rates 4/5, 4/6, 4/7, 4/8
which use only incremental redundancy. The question, of
course, is whether all these codes in the family are good and
whether noncamstrophic codes exist. This will be discussed in
Section II]. On the receiving side the decoder using the Viterbi
algorithm (VA) has to know the current puncturing rule a. The
VA receives real values yij when full soft decision is used.
Alternatively, the decoder can use quantized values of yg. The
VA ﬁnds the path with the maximum likelihood metric for [EEE TRANSACTIONS ON COMMUNICATIONS, VOL. 36, N0. 4, APRIL 1988 PUNCTURING
PERIOD P = 4 TIME 1 12345 123 +1 01 1 1 01 9M1 91 1 GEN ERATOR
MATRIX 2412;) Fig. 2. Example of a punctured convolutional code with two rate compatible
puncturing tables. PUNCTUR lNG
TABLE statistically independent y” by calculating J
max ~
m 2 A, (1)
j = l
where the metric increment is
N (m)
N: 2 aux ij yij (2)
i=1 and aij+P = 0,; due to periodic puncturing. a,, =' 0 means that
this xvi”) has not been transmitted and yjj is not available.
Actually, it is not necessary to insert any dummy data at the
receiver as suggested in [7]. The Viterbi algorithm operates on
the trellis of the l/ N mother code with two branches leaving at
each state. Equation (2) simply means that for at, = l the
metric ROM is accessed using the address x170") y.; to add a
metric increment and for 11,, =, 0 it is not accessed. For a fading channel, the transmitted signal is multiplied by
a fading factor (1;. If interleaving is. assumed, up is an
independent positive real randbm variable with density p(ap),
i.e., Rayleigh or Rice. If this factor can be estimated at the
receiver and is used as a CSI the MLmetric for coherent
transmission is [9] (3) N
 (m)
)\j=2 aijaijinj yij~
i=1 As expected, a deep fade (am: > 0) has the same effect as
puncturing (au = 0).
A. General Definition of RCPC Codes A family of RCPC codes is described by the mother code of
rate R = UN and memory M having the generator tap matrix «M+1> ,
g=1y<gik) with the tap connections gik E (0, l) where a 1 represents a
connection from the kth shift register stage to the ith output.
Together with N, the puncturing period P determines the
range of code rates _ P
P+I
between P/ (P + l) and UN. The RCPC codes are punctured
codes of the mother code with puncturing matrices (4) 1:1, (N—1)P (5) «13»
V a(1)=1§ (av(1)) with ail(l ) E (0, l) where 0 implies puncturing. (6) HAGENAUER: (RCPC CODES) AND THEIR APPLICATIONS The rate—compatibility restriction implies the following
rule: if aij(10)=1 then a,,(l)=1 for all I g [0 2 1 (7a)
or equivalently if a;j(10):0 then ail(1)20 for all 1 g [0 g (N— l)P— 1.
(7b) B. Criterion of Goodness for RCPC Codes With Viterbi decoding the usual optimality criterion is a
large free distance dm, a small number of paths a,,, and a
small information error weight Cd on all paths with d g dfm.
More speciﬁcally, one has Viterbi’s upper bound an error
event probability [13] l on PE é — E (1de (8)
P d=d
free
and for the bit error probability
1 on
Pb E I; 2 Cde (9) d = dfree Pd is the probability that the wrong path at distance d is
selected. The socalled distance spectra {ad} and {Cd}, which
should be as small as possible, depend only on the code,
namely, on N, M, P, g, and a(1). Due to the time—varying
nature of the RCPC codes, P different starting points for
diverging paths have to be considered to obtain the total
numbers ad and c4. Since RCPC codes are a subclass of
punctured codes, which in turn is a subclass of the general K /
N codes, it has still to be shown that the RCPC restriction is
not too severe to prevent “good” codes from being located in
this subclass. A degree of freedom can be gained by increasing
the period P. RCPC codes constitute a speciﬁc class of time
varying codes with a ﬁxed generator but periodically time
varying puncturing. We know that some timevarying codes
are better than ﬁxed codes [10] and some random coding
theorems hold only for timevarying codes. Therefore, some
improvement may be possible by using a higher period P.
Note that P has to be sufﬁciently large if codes of speciﬁc rates
are to occur in the same RCPC family. The complexity of the
VA decoder of an RCPC code in terms of add, compare and
select operations per decoded bit is 22“, whereas a general
K/N code requires (2 K2M)/K such operations where M is the
total encoder memory. At the RCPC decoder, an N 'P
ambiguity has to be resolved in the incoming data stream and
the decision depths of punctured codes are generally longer
[8]. The last disadvantage is not severe, when as in most
applications, data frames are transmitted with sync words and
proper termination of short frames. III. RESULTS OF THE SEARCH FOR GOOD RCPC CODES No constructive method is known for determining the
generator matrix g and the puncturing matrices a(1) for a
RCPC code family. Therefore a computer search has been
performed under some restrictions. For distances d ; dim,
ad, Cd, and the path length distribution has been determined by
a stack algorithm similar to Cedervall’s algorithm [11]. The basic steps to ﬁnd a family of good RCPC codes are: Step 1: Select mother code with rate l/N, memory M, and
generator g. Select puncturing period P. For] = [max = (N —
1)P set (1(1) = (1). For 1 = (N — 1)P to 2 perform Steps 2—4. Step 2: Amongst the elements ag(l ) which are “1” select
one and set it to “0” [compatibility rule (7b)]. Observe that
cyclic column permutations give the same code performance. 391 Step 3: Determine dfm and cd for d ; dme. Step 4: Repeat steps 2 and 3 to ﬁnd a(l — 1) with maximal
dim, and minimal Cd for d : time, time + 1. If only
catastrophic codes can be found, use next best code at level I. The results of the computer search for the M = 4 code
family are given in some detail in Table I, whereas for the
other codes of memory M = 3, 5, 6, only a(l ) and the Cd
values are given in Table II. The codes have a period P : 8
with a subperiod of P = 4 and are punctured mostly in steps
A] = 2 in such a way as to arrive at the best known code of
rate 1/2. This implies that the mother codes of rate 1/3 or 1/4
are not necessarily the best known code of this rate. This is the
case for M = 4 and 6 where one path exists at a distance
which is one less than the best known free distance [3]. Table III shows a comparison of the most important distance
parameters of RCPC codes, punctured codes, and general K/N
codes for rates where results are available. This and other
comparisons show that RCPC codes are almost as good as the
other codes. By increasing the period P one can even obtain
slightly better codes as Shown for M = 3 and rate 2/3 code. P
= 4 gives a greater variety in selecting the puncturing
positions. In this case, cd/P for d = dfm,   , dfw, + 5 is less
than the corresponding numbers for the code with P = 2 and
therefore a better BER performance can be expected over the
whole SNR range. This result is a further conﬁrmation that
time—varying codes are better than ﬁxed codes and that time
varying codes become better with increasing time period. In
[10], an example is given where g is time varying. Here, we
ﬁx g and puncture in a timevarying manner. One disadvantage of punctured codes is that error events at
high rates and higher distances can be quite long. This was
previously observed in [7]. To give an example, we have
plotted in Fig. 3 the path length distribution of an R = 4/5
code with M = 4, P = 4. Paths at dﬁee + 3 = 6 can be up to
50 information bits long. For high rate codes, this requires a
longer path memory. IV. PERFORMANCE OF RCPC CODES ON GAUSSIAN AND FADING
CHANNELS The performance of RCPC codes on a Gaussian channel
with soft decision and on interleaved Rayleigh and Rician
channels using different degrees of channel state information
has been evaluated using (9) and the distance Spectrum {Cd} in
Tables I and II. For the Gaussian case simulation results are
also given. Fig. 4 Shows the transmission scheme over a
nonfrequencyselective fading channel with multiplicative
distortion tip, with E{a%} = 1 and paF(a}.—) = 2a,.(1 + C/M) exp [— (ago + C/M) + C/M)]
 [0(20FN/C/M(l + C/M)). (10) For a Ricean channel, C/M is the ratio of the direct to
diffusely reﬂected signal energy. With C/M = O we have
Rayleigh fading, with C/M > 00 we obtain the Gaussian
channel. In the fading case we assume perfect interleaving,
which means that the CSI values a; and the received code
values y are statistically independent with density function
(10). Since we consider a varying code rate, we describe the
channel SNR by Es/No rather than by Eb/No = ES/RNO. A
reduced rate consequently means reduced throughput. The
Viterbi algorithm for decoding the RCPC code uses the metric
(3). In the following, we give the values for d; = am.— and y =
y,, which the decoder uses in different cases, as well as the
resulting Pd to be used in the evaluation of the BER in (9).
a) Gaussian channel [13] 6p: 1 y analog or ﬁnely quantized 1
Pd=§ erfc VdEs/No. 392 IEEE TRANSACTIONS ON COMMUNICATIONS, VOL. 36. NO. 4, APRIL 1988 TABLEI
PUNCTURING TABLES a(l ), 0,, AND ad VALUES FOR RCPC CODES WITH MEMORY M = 4. PERIOD P = 8 AND
RATESR = P/(P +1): 8/(8 + I), I = 1,2,4, 6, 24 RCPC CODE M=4 P=8 m IIIII
IIIIIIIIII
IIIIIIIIIII
IIIIIEIIIIII
IIIIEIIIII
IIIIEIIIII!
IIIIEUIIIIE
IIIEEIIIEE
IIIEIIIIIIH
IIIIIIIIIllﬂ
IIIIIIIIMM
IIIIIIIIII
IIIIIIIIII
IIIIIIIIII
IIIIIIIIIII
IIIIIIIIII
IIIIIIIIII
IIIIIIIIII IIIIIIIQEEIII ‘4
V 1000 1000 1010 1010 u N
z.
o N
é a N b) Rayleigh and Rice fading with hard decisions on y (YII)
and no CSI, a not used (AN): YHAN (3F: 1, y= i 1.
d d ‘
E (e> P3(l—Po)d‘e d odd
P (d+l)/2 Pd—l (1' even with the channel bit error rate °° 1
Po: so 5 erfcmpap(af.)dap_ (12) c) Rayleigh fading with soft decisions on y (YS) and full
CSI (AS) with perfect estimation of the analogy amplitude up:
YSAS ap= (1,: y analog or ﬁnely quantized Pd is equivalent to the error probability of a dth order
maximum ratio diversity system and can be upper bounded by [9]
1 1 a
Pds— —— .
2(1+ES/N0) d) Rayleigh fading with hard decision (YH) and hard CSI (13) HAGENAUER: (RCPC CODES) AND THEIR APPLICATIONS 393 TABLE H
PUNCTURING TABLES a(l ) AND q, VALUES FOR RCPC CODES wmI MEMORY M = 3, 5, 6. PERIODP = 8 AND RATESR = P/(P +1): 8/(8 +1),l= 1,2,4, 6, ,14,16 RCPC CODE: M =3 07
_A
_.
O
_. _.
b _.
a
_A
.I. 3894 1 168056 26580
1 3088533 1 71 784
1070980 8 $~I
:33
no E m
w
to RS ! I m
m
m









 (a) RCPC CODE: M =5 _ ""01
 101011
 100111
m
_ d m l E
Emu
mmmm
mmmm
155mm”
=mmm
 mm
mm
m (b) 394 IEEE TRANSACTIONS ON COMMUNICATIONS, VOL. 36, N0. 4, APRIL 1988 TABLE II (Continued) RCPC CODE: M = 6 TABLE III
COMPARISON OF RCPC CODES WITH PUNCTURED AND GENERAL
CONVOLUTIONAL CODES Rate Memory RCPCCodes Punctured Codes [8] General K/N Codes
dfree cdfree/P P dfree Cdfree/P P dfree I)
u 5 2
M = 3 ll _5_ 2 4 [3]
4 a 4
2/3
M = 6 6 1.5 2 6 1.5 2 7 [3]
M = 3 3 7,7 Al 3 3.5 LI 2 [12]
4/5
M = e u 3 u u 3 I. _
M = 3 2 2,6 8 2 0 8 ﬂ 
8/9
M = 6 3 _3_ 8 3 1 6 8 
M = 3 II 0.5 4  —  4 [12]
an M = 5 6 1.25 It    6 [12] " With memory to give an equal number of total branches per information bit in me
VA. HAGENAUER: (RCPC CODES) AND THEIR APPLICATIONS O 10 20 gill
PUNCTURING
TABLE RATE 1
SELECTlON _ p
R' P+1 DEINTERLEAVER 395 1600
1400
1200
4000
800
600
400 200 30 4O 50 60 70 80 PATHLENGTH In ———> Fig. 3. Number of paths with length I, at distance d for a RCPC code of rate
R = 4/5,P= 4,M= 4. CHANNEL
STATE
ESTIMATOR ____..___ pioF): RAYLEIGH, RICE A
— 0F — Fig. 4. Coded data transmission using RCPC codes with interleaving and
channel state information (CSI) on fading channels. (AH): YHAH
lPE
log for aF< aT
(2F: . ” <14)
1 l—PG f >
0 or a _ a
g PG F __ T where a7 is an optimized threshold. By partial integration in
(12), we obtain PG as the channel BER above the threshold aT
and PB as the BER below a; [9]. Pa can be calculated in closed
form. The result is given in [9] and [14]. Fig. 5 shows the simulated RCPC performance for the
Gaussian channel. Simulation and an analytical upper bound at
3 BER of 10—5 differ only by approximately 0.2 dB. The
performance curves for the Rayleigh channel with the scheme
described in Fig. 4 and in Section IV show that RCPC codes
with rates between 4/5 and 1/3 cover a broad range of SNR
and BER. At a BER of 10‘5 a 1bit CSI gains 7.9 dB at rate 2/3
and 2.6 dB at rate 1/3 relative to hard decisions without C81.
The Rice channel with C/M = 7 dB is typical for mobile
satellite communications to ships with small antennas, to cars
in open areas, and to airplanes with hemispherical antennas
[14]. As Fig. 7 shows, the RCPC codes using basically the
same encoder and the same Viterbi decoder with only 16
states and two branches per state can cover a SNR between 4 UNCODED 8940 4 5 s 7
10Iog (E,IMD) dB—O 0123 Fig. 5. BER performance of RCPC codes on Gaussian channels, N = 3,
P = 8,]: 1,2,4, "',16, rate = 8/(8 + I),M = 4: simulationwith
soft decision. and 17 dB to achieve 3 BER of 105. This means that the same
link can serve users with a gain variation of 13 dB by
adaptively changing the rate between 4/5 and 1/3 at the
expense of throughput. 396 o 2 4 15 8101214161820
10Io91:./N°)aa_. Fig. 6. BER performance of RCPC codes on an interleaved Rayleigh
channel,N= 3,P= 8,1: 2,4, , l6,rateR = 8/(8 + I),M= 4;
analytic upper bound YHAH: hard decision, 1 bit CSI. .
o 2 4 6 8101214161620
10loq(E'/N°)dB—+ Fig. 7. BER performance of RCPC codes on an interleaved Rice channel
C/M = 7 dB, YHAN: hard decision, no CSI, N = 3, P = 8, I = 2, 4,
'~, 16, rateR = 8/(8 +1), M = 4, analytic upper bound. V. THE APPLICATION or RCPC CODES T0 HYBRID ARQ/FEC
TRANSMISSION For data transmission schemes where a retum channel is
available, automatic repeat request (ARQ) schemes guarantee
high reliability at high and moderate channel qualities. The
throughput performance degrades if the channel is bad or time
varying. A combination with forward error correction (FEC)
to form a hybrid system combines the advantages of both
methods. A broad variety of hybrid systems has been
suggested, a good overview of the literature is given in [3] and
[4]. Some more recent proposals can be found in [15]—[19]. A
socalled “type II hybrid system” [4] uses a rate 1/2 invertible
code and alternately sends coded sequences (“information”
and “parity” sequences) which are either detected to be
correct or combined for FEC decoding. Block and convolu
tional FEC codes have been used and extensions to rate 2/3
and 3/4 have been reported [4]. Typically, the “throughput
versuschannel quality”curves exhibit a saddle at the FEC
code rate and some of the schemes require different decoders
at different stages of the detection and decoding algorithm. A
more natural scheme than alternate code and parity transmis—
sion seems to be successive parity transmission to build up a
code which is ﬁnally powerful enough to decode the message.
Consequently, none of the already transmitted code bits are
thrown away but are used to improve FEC decoding,
preferably with ML decoding. As in most other hybrid
schemes an outer high rate blockcode detects decoding errors. [EEE TRANSACTIONS ON COMMUNICATIONS, VOL. 36, NO. 4, APRIL 1988 This method . goes back to Mandelbaum [5] and includes
variations like code combining [15], [16] and memory ARQ
[171 We propose to use rate compatible punctured convolutional
codes (RCPC Codes) with Viterbi algorithm (VA) decoding
for successive parity transmission. The principle of the
proposed ARQ/FEC scheme is not to repeat information or
parity bits if the transmission is unsuccessful as in previOUS
type II ARQ/FEC schemes, but to transmit additional code bits
of a lower rate RCPC code until the code is powerful enough
to enable decoding. This includes several decoding attempts
on the receive side, which seem especially feasible for
applications in mobile or low rate systems where the data rate
is in the kbit/s range and the VA decoder would run on a chip
at a higher rate. A. ARQ/FEC Protocol with RCPC Codes The ARQ/FEC protocol performs the following steps while
transmitting a block I of information, which contains typically
n = 100 to 1000 bits. Encoding: 1) Add n, parity bits to form an error detection code C0,
i.e., 16 or more CRC bits. 2) Add M “0” or known bits to properly terminate the
encoder memory and the decoder trellis for the “information”
block (n + n,). M is the memory of the convolutional
encoder. 3) Use the UN encoder to encode the convolutional code
and store it at the transmitter, possibly in a matrix as in Fig. 8.
The matrix is only conceptual and can be modified in several
ways to accommodate interleaving. Transmitting and decoding: l) Transmit the ﬁrst P columns of the matrix. 2) Transmit additional columns of the matrix up to index 1
according to the puncturing table. 3) Decode RCPC code of rate P/(P + l ) with Viterbi
algorithm. 4) Check the syndrome of code C0. If the syndrome is zero
output I and send ACK to the transmitter. If the syndrome of
Co is not zero increase I and repeat steps (2)—(4). If decoding is still not successful for l ‘= (N — 1)P, i.e., R
= l/N, several possibilities exists. A higher order protocol
could take over or ask for a repetition of the whole procedure
starting at step 1). Code combining as suggested by Chase [15]
could be used to repeat the whole l/N code L, times and
combine it with the already transmitted code. Actually, the VA
uses in this case the same trellis as for all the RCPC codes, but
the ML metric (3) is changed to N Lr Lr N _
hj=2 E aijaierxijyijr: E aijxi} 2 aii'FyU'
r=1 i=1 i=1 r=1 (15) where index r indicates the rth repeated transmission. Note
that by repeating all code bits L, times the free distance is
increased by a factor of L, [15] and the numbers of the weight
spectrum are unchanged d,=L,  dfor d=dﬁee+i. Note that a repetition code is almost optimal only for low rates
such as 1/8, 1/ 16 [15]. By halving the code rate the distance
usually is more than twice as shown in Table I for memory M
= 4. This enables a gain in Eb/No on the Gaussian channel.
This type of code combining as expressed in (15) can be
viewed as maximum ratio combining of the received yii,
values. The combined y values which equal the inner sum of
the right side in ( 15) are then used by the original code for ML
decoding. In the following analysis, we will assume that decoding
stops with the UN code in step 4). Consequently, there exists Cd, = Cd HAGENAUER: (RCPC CODES) AND THEIR APPLICATIONS ‘ RATE TABLE
0 cocci.0000 £491
1 oooo~oooo £19me“) mnp FF; atOng1)...oe(P(N1)) TABLES SHOW POSITION 0F COLUMN BITS TO BE
TRANSMITTED BY THE lTH STEP Fig. 8. ARQFEC encoding scheme with RCPC codes. a probability that the frame with information block I was not
errorfree decoded. This frame error rate FER will be
calculated and should be sufﬁciently small. It should be
pointed out that we are completely free in which steps we
increase I. The number of steps depends on the ratio of frame
arriving time (information rate) to frame decoding time
(decoder speed). For extremely varying channel conditions an
exponential increase could be useful, i.e., I = l, 2, 4, 8, 16.
This would mean to perform less FEC decoding attempts than
the maximum number possible. This is at the cost of a slightly
smaller throughput because in the example, the 10th attempt
could have been successful, saving the transmission 1116 in the above example. With this type of protocol an acknowledgement (ACK) is
only sent after successful decoding of a frame. The encoder
would send more and more code bits until it receives the ACK.
Assume that decoding is successful at step 13. If there is a
roundtrip delay TD involved in the transmission with rate 1/
T3, the encoder would transmit TD/ Ts unnecessary bits,
which would slightly reduce the throughput. This will be
shown in the analysis. If the ACK is lost, the encoder keeps
transmitting unnecessary code bits until I = (N — 1)P. If the
probability of an ACK loss or error is small the effect on the
throughput is negligible. Thus, the return channel is used only
once per frame and a bad return channel does not confuse the
basic protocol. ‘ B. Throughput Analysis We will describe the performance of the hybrid ARQ/FEC
scheme by two ﬁgures of merit: the average throughput R AV
and the probability that a frame or packet with n information
bits is ﬁnally not correctly decoded, the socalled frame error
rate FER. The throughput is 1 n P
n+nc+M P+lAV' (16) RAV= [Av is the average number of additionally transmitted bits per P
information bits. From Fig.’8 this can be interpreted as the
average number of additionally transmitted columns. P/(P +
[A y) isthe effective code rate of the FEC code. Due to the
overhead of HC parity check bits and M terminating bits with n,
+ M at n, the throughput is slightly smaller than the effective
FEC code rate. We assume that the error detecting code Co
achieves a very low probability of undetected errors which
will be ignored in the subsequent analysis. If the (n + 11,, n)
error detection code Co falls into the class which satisﬁes [20] Prob {error undetected} < 2 ‘ "c a very low error probability can be achieved when HC is at
least 16. Typically, one would use a cyclic redundancy check
CRC common in data transmission. protocols. Let [k be the 397 sequence number of the decoding attempt using the RCPC
code with puncturing tables a(lk) with 11<12<"‘<[k<"' [1( Let PEF(lk) be the probability that the FEC decoding at the kth
step results in errors which are detected by Co. We will give an
approximate analysis where we assume that the K decoding
attempts have statistically independent outcomes. Then we
have X 1—1 K
IAV= 2 11:0 ’PEFUk» ' H PEF(li)+ 1K H PEFUi) (17)
F. i=0 i=0 where we define PEFUO) = 1.
The frame error rate of the unsuccessful ARQ/FEC procedure is then
FER=PEF(IK). (18) We can include in the analysis a delay TD caused by the round
trip time and the decoding time by replacing 1,, in (17) by 1,. := min {In Ik+PTD/(Ts(n+n,+m))}. (19) ‘ Similarly, a loss or error in the ACK signal on the return
channel, causing unnecessary transmission up to (K, can be
accommodated. For the probability PEA lk), we only can give
an upper bound by using (9) to calculate the probability that an
error event occurs for the transmitted bits 1
PEF(1,,)<1—(1—I—D E ham n+nc+M
a401,) ' Pd) O The values 0,; depend on the code, Pd depends on the channel
and the detection scheme and can be selected from the values
given in Section IV and in [9]. Recall that Pd usually assumes
sufﬁcient interleaving. By using (20) in (17) and (16), we
obtain a lower bound for the throughput R A y and by using (20)
in (19), we get an upper bound on the FER. Two examples will be given to show the performance of the
RCPC codes in the hybrid ARQ/FEC scheme. The same code
with M = 4, N = 3, P = 8 will be used, which has fairly low
decoding complexity with 16 states and 32 add, compare and
select operations per decoded bit. Fig. 9 shows the throughput
on a Gaussian channel with hard and soft decisions as
calculated by the lower bound method described. The simula
tions show that for this case the bound is accurate within 1 dB.
The beneﬁts of soft decisions are clearly observable. Due to
the overhead RAyapproaches 0.97 for high SNR. At low SNR,
RAy approaches 0.323 and the frame error rate is high. The
RCPC scheme which uses adaptive code rates between 1 and
US has generally a better throughput than comparable schemes
described in [4] and its throughput curve constitutes a kind of
envelope to the corresponding ﬁxed rate schemes. In Fig. 10
the performance on a fully interleaved Rayleigh channel is
given. In this case, decoding starts with l = 1, i.e., the 8/9
code and ends with the 1/3 code. Several degrees of CSI are
given as described in Section IV: YHAN, YHAH, and YSAS.
Note that for a Rayleigh channel with Es/No = 10 dB a frame
error rate of less than 10" and a throughput of 0.7 can be
easily achieved. Simulation results and analytic bounds agree
within 1 dB. VI. THE APPLICATION OF RCPC Cones TO UNEQUAL ERROR
Paoracnos In many applications it is required to provide different levels
of error protection for different parts of an information
sequence or block. Some examples have been given in the
introduction. We assume that the source or the source coder
supplies us with some information about the relative impor— 398
1
0.8
T 0.6
i o SIMULATION
“‘ 0.4 HARD
0.2
o
104 10‘3 10'2 10" 1
CHANNEL BER ~—>
E,/N,,e 7 s 54 3210
dB
Fig. 9. ARQ/FEC throughput with RCPC codes on a Gaussian channel with softamihard decisions (BSC). Code: P = 8,N = 3,1: 0,1, 2, 4, ~~,
16,M = 4. Frame: n = 8 x 125, n, = 28. 0 N0 CSI (VHAN)
—— 0 1 BIT CSI (YHAH)
—— x FULL CSI (YSAS)
7* \ CALCULATION SIMULATION 0.2 0
0 4 8 12 dB 16 20 E./N°—b Fig. 10. ARQ/FEC throughput and frame error rate FER on an interleaved
Rayleigh channel, hard decision, and CSI. Code: P = 8, N = 3, l = 1, 2,
4, ,16,M= 4. Frame: n = 8 x 48, n. = 34. tance or susceptibility to errors of certain information bits or
groups of information bits. We will call this source signiﬁ
cance information (551). An example of an 881 would be the
required ISER after decoding for certain groups of information
bits. Assume, that in a block of 71 information bits we have K
groups with nk information bits in the kth group requiring an
BER of PM after decoding. In this case, PM. would be the 881 and
K
E nk=n.
k'=I An example is given in Fig. 11 where we have ordered the
information bits according to their relative importance and
their error protection needs PM. Of course one could now
separately encode the K groups by K different encoders and
use K different decoders according to the protection needs.
Besides the increased overhead and complexity some numbers
11,, might be rather small and exclude the use of powerful
longer codes. Instead, We wish to use one encoder and one
decoder which provides the proteCtion requirements with a
minimum of redundancy and overhead. Very little is known in
the literature about unequal error protection of this type by
block or convolutional codes. A recent reference is [21] where
more literature is quoted. Most recently the extension of this IEEE TRANSACTIONS ON COMMUNICATIONS, VOL. 36, NO. 4, APRIL 1988 P], < Pb < pbB <sz< I>,,1 CODE INDEX 1.. 25 > 14 > 13 > 12 > 11
CODE RATE R. OF P < P < P < P < P RCPC  CODE P+15 Pu4 P413 P”; PHI
PUNCTURING TABLE a 1 ) a” ) gm) 0F RCPCCODE “15) 9”“ 9‘13) J 2 ‘ FREE DISTANCE OF as > d4 > as , .12 > d, RCPC CODE Fig. 11. Data frame with information bits grouped according to their error protection requirement (source signiﬁcance information PM). RCPC codes
assigned to the groups. concept to convolutional codes has been reported [26]. It
seems, however, that only a limited amount of variability can
be introduced and only short or low rate codes have been used.
Furthermore, no ML decoding results have been shown.
Another interesting unequal protection scheme with two codes
has been reported in [22], which combines block and
convolutional codes. ' RCPC codes are well suited for this application. In the
example of Fig. 11, the ordered information bits are shifted
into the shift register of a UN, memory M RCPC code.
During the n, information bits the puncturing matrix (10,) is
used as the relevant rule for the multiplexer. As soon as the
ﬁrst bit of the second group enters the encoder the puncturing
table, a(12) will be used. After another It; information bits or
encoder shifts, the table is switched to a(13), etc. The procedure
is easier to follow when nk is an integer multiple of the
puncturing period P, however, this is not a strict requirement.
At the kth step P + 1,, code bits are transmitted per P
information bits using the RCPC code with index 1,, and rate R k
= P/(P + 11,). The frame is terminated after the group nK by
shifting M “0” bits into the shiﬁ register, thus transmitting
M/RK overhead code bits necessary for proper termination of
the trellis. The average code rate is then K
E "k
R: k=l K .
E m,  (P+lk)/P+M(P+IK)/P
k=l The ratecompatibility condition (73) is crucial. In a
transitional phase between two matrices a(lk) and a(lk+1)
where I“. > [k we have to guarantee, that despite the
transition, the distance properties of all paths originating in
code 1;, do not suffer a loss of distance due to transitions, thus
guaranteeing at least the designed performance. Fig. 12 shows
the same error paths relative to the correct allzero path in
RCPCcode 1k: path 1 having distance d1 is not effected by a
transition, whereas path 2 extends into the lower rate code
In]. The ratecompatibility condition (7a) guarantees that the
lk+1 code does not puncture any “1” on the path. Due to less
puncturing it might happen that additional ‘ ‘ 1 ’ ’ "5 occur on the
part B of the path, which would cause a d; > d1. Therefore,
some of the {ad} and {Cd} values have to be assigned to higher
distances if the path is not terminated at the transition. Thus,
the rate compatibility restriction guarantees that transitional
paths do have a distance which is at least the distance of the
same path within the higher rate code, and at most the distance
of the same path within the lower rate code. If two punctured
codes without the rate compatibility restriction are used at a
rate transition, it can happen that a transitional path has a
distance which is even lower than the distance of the same path HAGENAUER: (RCPC CODES) AND THEIR APPLICATIONS ’k < ’kn
PATH 1 PATH 2
DISTANCE d1 DISTANCE d2; d1 Fig. 12. Error paths in a time varying RCPC code during a transition period
between code rates. 4/8 CODE RATE CHANNEL: 4/7 4/5 4/6 10' GAUSS
aCPSK YHAN EyNo= asdB _.
O
I
n) LOIE RCPC
M=3
p=4 DECODED
BER FRAME:
16x8 INFO BITS
20.000 FRAMES STD.
DEVIATION O
I
u 104 Li_LLi_i_L_L_l_J_.
5 10 15 BYTE NR. Measured short term bit error rate in a data frame with unequal
error protection using RCPC codes. Fig. 13. within the higher rate code. This would lead to a bad error
behavior in the transition region. One can easily construct such
an example. It is useful to order the information as described with
increasing importance. Decoding errors typically occur at the
beginning of paths and the last M information bits of each
error path are error free. However, the transitional paths (path
2) to lower rates generally have higher distances and therefore
errors occur with lower probability. Simulations show that this
type of ordering leads to a smaller number of total errors.
Error paths can extend over many transitions. All paths will be
properly terminated by the tail forcing the decoder to the all
zero state. Ordering the information bits from lower to higher
rate codes would require proper zero termination at each
change of rate. We conclude this section by giving an example
of the simulated performance of the RCPC code with unequal
error protection within one data frame of 128 bits. As Fig. 13
shows the code rate is changing from 4/5 to 4/8 while the
measured short term BER is improving by a factor of 100. As
discussed above, the bits close to a transition to the next lower
rate get a better protection. VH. CONCLUSIONS We have described the concept of forward error correction
codes which are obtained from low rate convolutional codes
by puncturing them periodically in a ratecompatible manner.
Surprisingly, this restriction still produced good codes relative
to the best known codes of comparable complexity. In such a
way, a whole family of codes with different rates is available
using the same encoder and the same ML—decoder employing
the Viterbi algorithm. Only the puncturing rule, i.e., the
multiplexer switching pattern is changed. Since in most
transmission schemes, channel rate is ﬁxed due to modulation
and channel ﬁlter requirements, changing the code rate means
a change of information rate and a buffer for the incoming 399 information stream is required. One disadvantage of punctured
codes with high rate is that error paths can be quite long, as
shown in Fig. 3 and in [7]. This requires either long path
memories in the VA, framed transmission as employed in
most packet oriented transmission schemes, or periodically
inserted synchronization patterns or known data bits. In a
decoder implementation, the basic Viterbi algorithm runs on
the same trellis for all the codes. This suggests a VLSI for the
Viterbi—decoding algorithm where only the control and the
memory access is changed according to the rate, the channel
conditions, and the channel state information (CSI). Since the compatibility condition ensures that only incre—
mental redundancy is used for lower rate codes, RCPC codes
are suitable for ARQ/FEC protocols and unequal error
protection as shown in Sections V and VI. Of course, both
methods can be combined to adapt unequal error protection to
varying channel conditions. For instance, the transmission
security of a frame with a set of unequal error protection codes
using rates (1, 8/10, 8/14) can be upgraded to a set of (8/10, 8/
12, 8/16) codes when the channel conditions get worse by
transmitting another two check bits per 8 information bits. The concept of RCPC codes can be combined with the
concept of nested codes [25] where the Viterbi decoder can
work also with M — 1, M ~ 2,  '  on a reduced set of states.
Codes have been found which satisfy both the RCPC and the
nested condition. Furthermore, the concept of RCPC codes
could also be used to ﬁnd a family of “good” codes with high
memory suitable for sequential decoding [3]. “Good” would
mean that all the codes with different rates need a rapidly
growing distance proﬁle [3]. In an ARQ/FEC application, the
error detection via the Co code could be replaced by a timeout
condition in the Fano or stack algorithm. The design of combined source and channel coding as
described for voice transmission in [23] and for image
transmission in [24] gets a new degree of freedom by using
RCPC codes because the code rate can be changed within a
data frame and during transmission according to the needs
[27]. In other words, source signiﬁcance information 881,
channel state information CSI, and check information from the
decoded bits can be used for the adaptation of the encoding and
MLdecoding algorithm of RCPC codes. ACKNOWLEDGMENT The author would like to thank H. Osthoff for writing the
computer search program used in Section HI as part of his
Dipl. Ing. thesis at the Technical University Miinchen. REFERENCES [I] G. C. Clark and J. B. Cain, ErrorCorrection Coding for Digital
Communications. New York: Plenum, 1981. [2] N. S. Jayant and P. Noll, Digital Coding of Waveforms, Principles
and Applications to Speech and Video. Englewood Cliffs, NJ:
Prentice Hall, 1984. [3] S. Lin and D. J. Costello, Jr., Error Control Coding: Fundamentals
and Applications. Englewood Cliffs, NJ: Prentice Hall, 1983. [4] S. Lin, D. J. Costello, and M. J. Miller, “Automatic repeat—request
error control schemes," IEEE Commun. Mag, vol. 12, pp. 5—17,
Dec. 1984. [5] D. M. Mandelbaum, “An adaptivefeedback coding scheme using
incremental redundancy,” IEEE Trans. Inform. Theory, vol. lT20,
pp. 388—389, May 1974. [6] J. B. Cain, G. C. Clark, and J. M. Geist, “Punctured convolutional
codes of rate (It — l)/n and simpliﬁed maximum likelihood decod
ing,” IEEE Trans. Inform. Theory, vol. IT—25, pp. 97—100, Jan.
1979. [7] Y. Yasuda et (11., “Development of variablerate Viterbi decoder and
its performance characteristics,” in Proc. 6th Int. Conf. Digit.
Satellite Commun., Phoenix, AZ, Sept. 1983, pp. XII24XII3l. [8] Y. Yasuda, K. Kashiki, and Y. Hirata, “High rate punctured
convolutional codes for soft decision Viterbi decoding," IEEE Trans.
Commun., vol. COM32, pp. 315—319, Mar. 1984. [9] J. Hagenauer, “Viterbi decoding of convolutional codes for fading and 400 [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] burst channels," in Proc. 1980 Int. Zurich Sem., Mar. 1980, pp.
G2.l—GZ.7. M. Mooser, “Some periodic convolutional codes better than any fixed
code,” IEEE Trans. Inform. Theory, vol. ITv29, pp. 750—751, Sept.
1983. M. Cedervall, “Contribution to the decoding and structure of convolu
tional codes," Ph.D. dissertation, Univ. Lund, Sweden, 1983. D. G. Daut. J. W. Modestino, and L. D. Wismer, “New short
constraint length convolutional code constructions for selected rational
rates,” IEEE Trans. Inform. Theory, vol. IT»28, pp. 794—800, Sept.
1982. A. J. Viterbi and J. K, Omura, Principles of Digital Communication
and Coding. New York: McGraw Hill, 1979. J. Hagenauer and E. Lutz, “Forward error correcting coding for fading
compensation in mobile satellite channels,“ IEEE J. Select. Areas
Commun, vol. SAC5, pp. 215—225, Feb. 1987. D. Chase, “Code combining—A maximum likelihood decoding ap—
proach for combining an arbitrary number of noisy packets," IEEE
Trans. Commun, vol. COM33, pp. 385—393, May 1985. D. Chase, P. D. Mullins, and .I. K. Wolf, “Application of code
combining to a selective repeat ARQ link," in 1985 IEEE Military
Commun. Conf. MILCOM ’85, Conf. Rec, vol. 1, pp. 247—252,
1985. J. J. Metzner and D. Chang, “Efﬁcient selective repeat ARQ strategies
for very noisy and ﬂuctuating channels,” IEEE Trans. Commun.,
vol. COM—33, pp. 409—416, May 1985. H. Krishna and S. D. Morgera, “A new error control scheme for
hybrid ARQ systems," in Proc. ICC 1986, Toronto, Ont., Canada,
pp. 637—645. T. Kasami, S. Lin, and D. J. Costello, “Performance analysis of a
concatenated coding scheme for error control,” in Proc. [CC 1984,
Amsterdam, The Netherlands, pp. 769773. J. K. Wolf, A. M. Michelson, and A. H. Levesque, “On the
probability of undetected error for linear block codes," IEEE Trans.
Commun, vol. COM»30, pp. 317—324, Feb. 1982. W. J. Gils, “Linear unequal error protection codes from shorter
codes.” IEEE Trans. Inform. Theory, vol. IT30, pp. 544—546, May
1984. L. Kittel and P. Piret, “Compound coding with unequal error IEEE TRANSACTIONS ON COMMUNICATIONS, VOL. 36, NO. 4, APRIL 1988 [23] [24] [25] [26] [27] protection for digital mobile radio systems,” (in German), NT 0
['achberichte, no. 90, "Bewegliche Funkdienste," pp. l78—l85, VDE
Verlag, Frankfurt, Germany, 1985. D. J. Goodman and C. E. Sundberg, “Combined source and channel
coding for variablebitrate speech transmission,” Bell Sysl. Tech. 1..
vol. 62, no. 7, pp. 2017—2036, Sept. 1983. D, G. Dam and J. W. Modestino, “Two dimensional DPCM image
transmission over fading channels,“ IEEE Trans. Commun, vol.
COM—31. pp. 315328, Mar. 1983. F. Hemmati, “A Versatile Viterbi processor for decoding variable gain/
rate convolutional codes," presented at Proc. 7th Int. Conf. Digital
Satellite Commun., Munich, West Germany, May 1986. R. Palazzo, Jr., “On the linear unequal error protection convolutional
codes,” in Proc. GLOBECOM1986, Houston, TX, pp. 1367—1371.
R. V. Cox, J. Hagenauer, N. Senhadri, and C.E. Sundberg, “A sub
band coder designed for combined source and channel coding,"
presented at Proc. ICASSP 1988, New York, Apr. 1988. * Joachim Hagenauer (M’78ASM'87) received the
Ing.(grad) degree from Ohm—Polytechnic Niirnr
berg, in 1963, and the DiplIng. and the Drrlng.
degrees in electrical engineering from Technical
University Darmstadt, in 1968 and 1974, respec
tively. At Darmstadt University he served as an Assist
ant Professor and Dozent. From May 1975 to
September 1976 he held a postdoctoral fellowship at
the IBM T. J , Watson Research Center, Yorktown
Heights, NY, working on error correction coding I for magnetic recording. Since 1977 he has been with the German Aerospace
Research (DFVLR) at Oberpfaffenhofen—since May 1980 as the Head of the
Communication Theory Group. His research interests include convolutional
coding, data transmission via fading channels, and mobile communications.
During 1986/87 he spent a sabbatical year as an “Otto Lilienthal Fellow" at
AT&T Bell Laboratories, Crawford Hill, NJ working on joint source/channel
coding and on trellis coded modulation. ...
View
Full
Document
This note was uploaded on 03/20/2012 for the course EEL 6650 taught by Professor Shea during the Spring '12 term at University of Florida.
 Spring '12
 Shea

Click to edit the document details