Note: is very restrictive Would like more flexibility in determining the length If we shorten the length of the message to Shortened Reed Solomon Codes
Properties of Shortened Reed Solomon Codes For a (n,k) Reed Solomon code that is shortened to (n-l,k-l) the minimum distance is (n-l-(k-l)-1) = n-k-1 (shortening does not change the minimum distance) Code is no longer cyclic, but it is maximum distance separable e.g. (255,245) RS code and shortened (182,172) code over GF(256) both correct t=5 errors. It is very common to use codes over GF(256) and then shorten the message to get the desired codeword length
Case study: Error control coding in DVD-ROM Product Reed Solomon Codes
Case study: Error control coding in DVD-ROM Product Reed Solomon Codes Physical bits stored
Format k bytes of data (e.g. video) 8-bits 16-bits parity RS encoder EFM+
RS Encoder 33k bytes of data (e.g. video) parity RS encoder 172 bytes 192 rows Read in by row
RS Encoder 33k bytes of data (e.g. video) parity RS encoder 172 bytes 192 rows Read in by row 172 bytes Read out by row
RS Encoder 33k bytes of data (e.g. video) parity RS encoder 172 bytes 192 rows 10 bytes (182,172) RS code over GF(256) 192 times
RS Encoder parity RS encoder 172 bytes 192 rows 10 bytes 16 bytes (208,192) RS code over GF(256) 182 times
RS Encoder parity RS encoder 172 bytes 192 rows 10 bytes 16 bytes 172*182 = 31kbytes 10* *16 n=37856 k=31304 R=k/n = 0.82
RS Encoder 172 bytes 192 rows 10 bytes 16 bytes
RS Encoder 172 bytes 192 rows 10 bytes 16 bytes Row code: Shortened RS code (182,172) with 10 parity bytes: Each row can correct up t=5 byte errors in that row
RS Encoder 172 bytes 192 rows 10 bytes 16 bytes Column code: Shortened RS code (208,192) with 16 parity bytes: Each column can correct up tp t=8 byte errors for that column
RS Encoder 172 bytes 192 rows 10 bytes 16 bytes How long of a burst of errors is correctible?
RS Encoder 172 bytes 192 rows 10 bytes 16 bytes How long of a burst of errors is correctible?
RS Encoder 172 bytes 192 rows 10 bytes 16 bytes How long of a burst of errors is correctible?
RS Encoder 172 bytes 192 rows 10 bytes 16 bytes Burst error correcting capability: - any burst of errors that extends for no more than 8 rows is correctible (182*8 = 1456 bytes)
RS Encoder 172 bytes 192 rows 10 bytes 16 bytes Burst error correcting capability: - a max burst of errors that extends for no more than 8 rows is correctible (182*8 = 1456 bytes)
RS Encoder 172 bytes 192 rows 10 bytes 16 bytes Burst error correcting capability: - a max burst of errors that extends for no more than 8 rows is correctible (182*8 = 1456 bytes) max width of scratch: (1456byte*2.13 microns/byte = 3mm )
Issues 172 bytes 192 rows 10 bytes 16 bytes Unfortunately there are random errors that occur too - at a rate of about 1 in1000 bits -- about other random errors sprinkled in
Issues 172 bytes 192 rows 10 bytes 16 bytes Unfortunately there are random errors that occur too - at a rate of about 1 in1000 bits -- about other random errors sprinkled in Row Decode
Issues 172 bytes 192 rows 10 bytes 16 bytes Unfortunately there are random errors that occur too - at a rate of about 1 in1000 bits -- about other random errors sprinkled in Row Decode
Issues 172 bytes 192 rows 10 bytes 16 bytes Unfortunately there are random errors that occur too - at a rate of about 1 in1000 bits -- about other random errors sprinkled in Row Decode Column decode
Issues 172 bytes 192 rows 10 bytes 16 bytes Unfortunately there are random errors that occur too - at a rate of about 1 in1000 bits -- about other random errors sprinkled in Row Decode Column decode
Comments This is done at about 5 Mbps - not bad this is cheap to implement Can be done on an ASIC - some general purpose DSP’s have this built in now Now decoding…. Row code: different syndromes Col code: different syndromes
Error Control Coding in Fiber Optic Transmission systems This is done at about 5 Mbps - not bad this is cheap to implement
1 bit transmitted every T seconds: data rate 1/T bits/sec Detector at receiving end is a threshold device: was 0 or 1 sent? Transmitting and Detecting bits T Time t Decide 1 Decide 0 0 Volts A Volts 0 Volts
Detector can be wrong Performance B “signal to noise ratio”
Detector can be wrong Performance Bit error rate as a function of SNR
Q degrades as a function of Distance Transmitted power Data rate Traditional (but not best design): Design system with significant margin to keep error rate < 1e-15 Degradation of Q B “signal to noise ratio”
Option: Forward Error Correction Send “information” bits and overhead “parity” bits to correct for the the errors that result from Distance,Transmitted power, Data rate Overhead bits allow for correction of errors during transmission But overhead bits result in bandwidth expansion Have to account for this
History and numbers Error control coding: History –First codes in 30s: Hamming –Promise of error free communications in the presence of any noise: Shannon 1948 Common applications – > 4 Billion CD/DVDs produced each year – > 400 million CD/DVD players – > every hard drive – > every cell phone, many pagers, digital TV, DSL, cable modems GT courses –ECE6605 Information Theory –ECE6606 Error Control Coding
Bandwidth expansion and Rate T Time t RT Time t Information bits only: k bits Information bits (k) and parity ‘overhead’ bits (r) k r True data rate is same in both (information data rate) Let R =k/(k+r), channel bit rate expands by a factor 1/R
Issues Is error correction worth it? Channel bandwidth goes up - noise increases as a function of bandwidth (causes Q to decrease, BER goes up), e.g. But FEC can correct errors that occur Which wins? How is FEC done?
G.975: 10 Gbps data rate n=255 bytes, k=239 bytes, corrects 3 byte errors 25 year old technology Optical fiber products only last 5-7 years R = 239/255, 7% overhead Line rate = n/k*10Gbps=10.7Gbps Standard specifies 16 of these codes in parallel Processing rate = 10 Gbps/16 = 625 Mbps G.975 Reed Solomon Code Enc 1 Enc 2 Enc bytes 255 bytes MUXMUX 10.7 Gbps
FEC BERin vs BERout