3/22/2010 Nội dung trình bày: Mã hóa kênh ( Channel coding ) Mã hóa khối (Block codes) + Mã lập (Repetition Code) + Hamming codes + Cyclic codes * Reed-Solomon codes Mã hóa chập (Convolutional codes) + Encode + Decode ðiều chế mã lưới (Trellis Coded Modulation) CHƯƠNG 5: MÃ HÓA KÊNH ðặng Lê Khoa Email: dlkhoa@fetel.hcmuns.edu.vn Facuty of Electronics & Telecommunications, HCMUS Channel coding gì? Sơ ñồ khối DCS Format Source encode Channel encode Pulse modulate Bandpass modulate Digital demodulation Format Source decode Channel decode Detect Demod Sample Các loại mã hóa sửa sai Channel Digital modulation • Tín hiệu truyền qua kênh truyền bị ảnh hưởng nhiễu, can nhiễu, fading… tín hiệu ñầu thu bị sai • Mã hóa kênh: dùng ñể bảo vệ liệu không bị sai cách thêm vào bit dư thừa (redundancy) • Ý tưởng mã hóa kênh gởi chuỗi bit có khả sửa lỗi • Mã hóa kênh không làm giảm lỗi bit truyền mà làm giảm lỗi bit liệu (bảng tin) • Có hai loại mã hóa kênh là: Block codes Convolutional codes Mã lập Mã lập (Repetition Code) Mã khối tuyến tính (Linear Block Code), e.g Hamming Mã vòng (Cyclic Code), e.g CRC BCH RS Code Mã chập (Convolutional Code) Recovered state Truyền thống, giải mã Viterbi Mã Turbo Mã LDPC Coded Modulation TCM BICM 3/22/2010 Kiểm tra chẵn lẻ (Parity Check) Thêm bit ñể xor bit có kết Dữ liệu truyền, sửa lỗi, sửa lỗi Mã khối tuyến tính (Linear block codes) Chuỗi bit thông tin ñược chia thành khối k bit Mỗi khối ñược encode thành khối lớn có n bit Các bit ñược mã hóa gửi kênh truyền Quá trình giải mã ñược thực phía thu Channel encoder Data block Codeword k bits n bits n-k Kiểm tra hàng cột Ứng dụng: ASCII, truyền liệu qua cổng nối tiếp Redundant bits k Rc = Code rate n Linear block codes – cont’d Khoảng cách Hamming hai vector U V, số phần tử khác d (U, V ) = w(U ⊕ V ) Khoảng tối thiểu mã hóa khối d = d (U i , U j ) = w(U i ) i≠ j i Ví dụ: Tính khoảng cách Hamming C1: 101101 C2 :001100 Giải: Vì 101101 ⊕ 001100 = 100001 =>d12=W(1000001)=2 => Ta giải mã ñể sửa sai cách chọn codewords có dmin Linear block codes – cont’d Khả phát lỗi ñược cho bởi: e = d − Khả sửa lỗi t mã hóa ñược ñịnh nghĩa số lỗi tối ña sửa ñược từ mã (codeword) d − 1 t = Linear block codes – cont’d Encoding mã hóa khối (n,k) U = mG V1 V (u1 , u2 ,… , u n ) = (m1 , m2 ,… , mk ) ⋅ ⋮ Vk (u1 , u2 ,… , u n ) = m1 ⋅ V1 + m2 ⋅ V2 + … + m2 ⋅ Vk 10 Linear block codes – cont’d Example: Block code (6,3) Message vector V1 1 0 G = V = 1 V 1 0 Các hàng G ñộc lập tuyến tính 11 Codeword 000 100 01 000000 110100 011010 110 001 011 1 01 0 1 01 011 11 111 1 011 0 111 12 3/22/2010 Linear block codes – cont’d Linear block codes – cont’d Mã hóa khối (n,k) k phần tử ñầu tiên (hoặc cuối cùng) từ mã bit thông tin ðối với mã hóa khối tuyến tính, có ma trận H ( n − k )× n Các hàng ma trận trực giao với ma trận G : G = [P I k ] GH T = I k = k × k identity matrix Pk = k × (n − k ) matrix U = (u1 , u , , u n ) = ( p1 , p2 , , pn − k , m1 , m2 , , mk ) parity bits H ñược gọi ma trận kiểm tra parity hàng chúng ñộc lập tuyến tính ðối với mã hóa khối truyến tính: H = [I n − k message bits 13 14 Linear block codes – cont’d Data source Format m Channel encoding U Linear block codes – cont’d Mảng tiêu chuẩn Modulation channel Data sink Format ˆ m Channel decoding r Demodulation Detection r = U+e r = (r1 , r2 , , rn ) received codeword or vector Hàng i = 2,3, ,2 với pattern e i zero codeword e = (e1 , e2 , , en ) error pattern or vector Kiểm tra ñặc trưng: S ñặc trưng r, tưng ứng với error pattern e S = rHT = eHT coset leaders n−k ñược tạo thành cách cộng U U1 U2 ⋯ e2 e2 ⊕ U ⋯ e ⊕ U 2k ⋮ ⋯ ⋱ ⋮ e n −k Linear block codes – cont’d Mảng tiêu chuẩn ñặc trưng bảng giải mã Tính S = rH T Tìm coset eˆ = ei , tưng ứng với S ˆ = r + eˆ tưng ứng với m ˆ Tính U ˆ = r + eˆ = (U + e) + eˆ = U + (e + eˆ ) U • • Nếu eˆ = e , error ñược sửa Nếu eˆ ≠ e , giải mã phát lỗi U 2k coset e n −k ⊕ U ⋯ e n −k ⊕ U k 15 Chú ý: PT ] 16 Linear block codes – cont’d Ví dụ: Mảng chuẩn cho mã (6,3) codewords 000000 110100 011010 101110 101001 011101 110011 000111 000001 110101 011011 101111 101000 011100 110010 000110 000010 110111 011000 101100 101011 011111 110001 000101 000100 110011 011100 101010 101101 011010 110111 000110 001000 111100 010000 100100 100000 010100 ⋮ 010001 100101 ⋮ ⋮ coset ⋮ ⋯ ⋯ 010110 Coset leaders 17 18 3/22/2010 Linear block codes – cont’d Hamming codes Hamming codes Error pattern Syndrome Là trường hợp riêng linear block codes Diễn tả theo hàm số nguyên m ≥ 000000 000 U = (101110) transmitted 000001 000010 000100 001000 010000 100000 101 011 110 001 010 100 r = (001110) is received The syndrome of r is computed : 010001 111 n = 2m − S = rH T = (001110) H T = (100) Code length : Error pattern corresponding to this syndrome is eˆ = (100000) Number of parity bits : The corrected vector is estimated ˆ = r + eˆ = (001110) + (100000) = (101110) U Number of information bits : k = m − m − 19 20 Mã hóa Hamming Hamming codes Example: Systematic Hamming code (7,4) 1 0 1 1 H = 0 1 1 = [I 3×3 0 1 1 0 1 0 1 1 0 = [P G= 1 0 0 1 1 0 PT ] I 4×4 ] Message=[a b c d] r= (a+b+d) mod s= (a+b+c) mod t= (b+c+d) mod Message=[1 0] r=(1+0+0) mod =1 s=(1+0+1) mod =0 t=(0+1+0) mod =1 Code=[ 1 1 ] Tốc ñộ mã: 4/7 Càng nhỏ, nhiều redundance bit, ñược bảo vệ tốt Khác biệt phát sửa lỗi 22 Ví dụ mã hóa Hamming Hamming codes Example: Systematic Hamming code (7,4) 23 Mã hóa: H(7,4) Nhiều phép kiểm tra tổng Code=[r s a t b c d] 21 1 0 1 1 H = 0 1 1 = [I 3×3 0 1 1 0 1 0 1 1 0 = [P G= 1 0 0 1 1 0 n-k = m Error correction capability : t = PT ] H(7,4) Ma trận sinh G: ñầu tiên ma trận ñơn vị 4x4 Dữ liệu truyền vector p Vector truyền x (G=[I/P]) I 4×4 ] Vector nhận r vector lỗi e 24 3/22/2010 Sửa lỗi ðộ lợi mã hóa (Coding Gain) Nếu lỗi, vector ñặc trưng (syndrome) z=zeros Tốc ñộ mã R=k/n, k: số symbol liệu, n tổng symbol SNR từ SNR bit Nếu có lỗi vị trí thứ Vector ñặc trưng z tương với cột thứ H Vậy, lỗi ñuợc phát vị trí thứ sửa lại cho ñúng Với sơ ñồ mã hóa, ñộ lợi mã hóa sắc xuất lỗi bit ñược ñịnh nghĩa khác biệt lượng cần thiết cho bit thông tin ñã mã hóa ñể ñạt ñược sắc xuất lỗi cho trước truyền dẫn không mã hóa 25 26 Ví dụ ñộ lợi mã hóa Example of the block codes PB 8PSK QPSK Eb / N [dB] 27 28 Cyclic code Cyclic codes ñược quan tâm quan trọng Dựa cấu trúc ñại số ứng dụng rộng rãi Dễ dàng thực ghi dịch (shift register) ðược ứng dụng rộng rãi thực nghiệm Trong thực nghiệm, cyclic codes ñược sử dụng ñể phát lỗi (Cyclic redundancy check, CRC) ðược sử dụng mạng chuyển mạch gói Khi có lỗi ñược phát nhận, chúng ñược yêu cầu truyền lại ARQ (Automatic Repeat-reQuest) 29 Cyclic block codes Một mã tuyến tính (n,k) ñược gọi Cyclic code dịch vòng 1codeword ñó codeword U = (u0 , u1 , u2 , , un −1 ) “i” cyclic shifts of U U (i ) = (un −i , un −i +1 , , un −1 , u0 , u1 , u2 , , un −i −1 ) Ví dụ: U = (1101) U (1) = (1110) U ( 2) = (0111) U (3) = (1011) U ( 4) = (1101) = U 30 3/22/2010 Cyclic block codes Cyclic block codes Cấu trúc ñại số Cyclic codes, suy codewords ñược sinh từ U ( X ) = u0 + u1 X + u2 X + + un −1 X n −1 degree (n-1) Mối quan hệ codeword ghi dịch: XU( X ) = u0 X + u1 X + , un− X n−1 + u n−1 X n Thuật toán mã hóa Cyclic code (n,k): n −k Nhân thông tin với chuỗi m( X ) X Chia kết bước với ña thức sinh g (X ) Lấy p( X ) phần dư n− k Thêm p( X ) vào X m( X ) ñể tạo thành codeword U ( X ) = un −1 + u0 X + u1 X + + un − X n −1 + un −1 X n + u n −1 u n −1 ( X n +1) U (1 ) ( X ) = U (1) ( X ) + un −1 ( X n + 1) U (1) ( X ) = XU( X ) modulo ( X n + 1) Vậy: By extension U (i ) ( X ) = X i U ( X ) modulo ( X n + 1) 31 32 Cyclic block codes Cyclic block codes Example: For the systematic (7,4) Cyclic code with generator polynomial g( X ) = + X + X Find the codeword for the message m = (1011) n = 7, k = 4, n − k = m = (1011) ⇒ m ( X ) = + X + X X n− k m ( X ) = X 3m ( X ) = X (1 + X + X ) = X + X + X Divide X n− k m ( X ) by g ( X) : X + X + X = (1 + X + X + X )(1 + X + X ) + quotient q(X) generator g(X) remainder p ( X ) Form the codeword polynomial : U ( X ) = p ( X ) + X 3m ( X ) = + X + X + X U = (1 0 1 ) Find the generator and parity check matrices, G and H, respectively g ( X ) = + ⋅ X + ⋅ X + ⋅ X ⇒ ( g , g1 , g , g ) = (1101) 1 0 G= 0 0 1 0 0 1 0 1 0 0 1 1 1 0 G= 1 1 1 P parity bits message bits 33 1 1 0 0 0 0 Not in systematic form We the following: row(1) + row(3) → row(3) row(1) + row(2) + row(4) → row(4) 0 0 1 1 0 1 1 H = 0 1 1 0 0 1 1 I 3×3 I 4×4 PT 34 Ví dụ CRC Cyclic block codes Giải mã Cyclic code: Từ mã thu ñược cho Received codewor d r ( X ) = U ( X ) + e( X ) Error pattern ðặc trưng phần dư có ñược cách chia chuỗi nhận cho ña thức sinh: r( X ) = q( X )g( X ) + S( X ) Syndrome Với ñặc trưng mảng tiêu chuẩn, lỗi ñược ước lượng 35 36 3/22/2010 Checking for errors Khả CRC Một lỗi E(X) phát chúng chia hết cho G(x) Ngược lại, phát lỗi Có khả mạnh mẽ phát lỗi 37 BCH Code 38 BCH Performance Bose, Ray-Chaudhuri, Hocquenghem Có khả sửa ñược nhiều lỗi Dễ dàng thực mã hóa giải mã Các chuẩn công nghiệp - (511, 493) mã hóa BCH ITU-T Chuẩn H.261- chuẩn mã hóa video ñược sử dụng cho video conferencing video phone (40, 32) mã hóa BCH ATM (Asynchronous Transfer Mode) 39 40 Reed-Solomon Codes Một trường hợp riêng non-binary BCH ðược ứng dụng rộng rãi Storage devices (tape, CD, DVD…) Wireless or mobile communication Satellite communication Digital television/Digital Video Broadcast(DVB) High-speed modems (ADSL, xDSL…) 41 ... mã hóa, ñộ lợi mã hóa sắc xuất lỗi bit ñược ñịnh nghĩa khác biệt lượng cần thiết cho bit thông tin ñã mã hóa ñể ñạt ñược sắc xuất lỗi cho trước truyền dẫn không mã hóa 25 26 Ví dụ ñộ lợi mã hóa. .. lỗi Dễ dàng thực mã hóa giải mã Các chuẩn công nghiệp - (51 1, 493) mã hóa BCH ITU-T Chuẩn H.261- chuẩn mã hóa video ñược sử dụng cho video conferencing video phone (40, 32) mã hóa BCH ATM (Asynchronous... Linear block codes – cont’d Linear block codes – cont’d Mã hóa khối (n,k) k phần tử ñầu tiên (hoặc cuối cùng) từ mã bit thông tin ðối với mã hóa khối tuyến tính, có ma trận H ( n − k )× n Các hàng