Convolution Code
การเข้ารหัส Convolution Code

Convolution Code หรือบางคนอาจเรียกว่า รหัสแบบขด จัดอยู่ในกลุ่มของ การเข้ารหัสผ่านช่องสัญญาณ (Channel Coding) โดยมีจุดประสงค์ เพื่อให้ผู้รับ รับสัญญาณ ได้ครบถ้วน หรือหากเกิดมีสัญญาณรบกวนขึ้น ผู้รับสามารถรับรู้ได้ถึงความผิดพลาด ของข้อมูลที่ได้รับ อีกทั้งสามารถแก้ไขข้อผิดพลาดนั้น ๆ ได้ โดยวิธีนี้เรียกว่า Forward Error Correction (FEC)
การเข้ารหัส Convolution Code นั้น นำไปใช้อย่างแพร่หลาย เช่นใช้ในการส่งสัญญาณวิทยุระบบดิจิตอล โทรศัพท์มือถือ รวมถึงในสัญญาณดาวเทียม และใน BlueTooth อาจเนื่องจากหากเกิดข้อผิดพลาด หรือมี Noise เข้ามากวน ฝั่งผู้รับสามารถตรวจสอบ และแก้ไขให้ข้อมูลที่ได้รับ กลับมาถูกต้อง แต่ถ้าเกิด Noise แบบแถบ (Burst noise) ล่ะก็ อาจช่วยได้ไม่ทั้งหมด อาจต้องใช้เทคนิค Bit Interleave เข้ามาช่วย ผมเคยทดสอบด้วย Math Lab ได้ผลค่อนข้างดีเดียว
การเข้ารหัส Convolution Code นั้น เริ่มต้นด้วยมีการสร้าง Generator เพื่อทำการแปลงข้อมูลจาก Bit ข้อมูล เป็น Bit รหัส Convolution Code โดยที่เริ่มต้นจากกระแสข้อมูล ที่ต้องการเข้ารหัสวิ่งผ่าน ตัวสร้างรหัส จะนำแต่ละ Bit ข้อมูลมาเพิ่มรหัส ดัง฿าพ

ข้อมูลที่ต้องการส่ง คือ 110101เมื่อตัวสร้างรหัสแล้วจะได้รหัส Convolution คือ 11 10 11 01 01 01 ซึ่งแม้จะขนาดยาวกว่าเพิ่ม แต่ได้เพิ่ม Bit เพื่อให้ปลายทางสามารถตรวจสอบ และกู้คืนความผิดปกติได้ หลักการทำงาน โดยการเปลี่ยนแปลง
การถอดรหัส Convolution
หากเป็นการอธิบายให้เห็นภาพ จะใช้ แผนภาพ Viterbi algorithm ซึ่งจะแผนเส้นทางเดิน ของข้อมูล ซึ่งจะแสดงเส้นทางที่เป็นไปได้




จากตัวอย่าง จะเห็นว่าฝั่งผู้รับมีข้อมูลผิดถึง 2 bit (Bit สีแดง) โดยสามารถถอดรหัส โดยไล่ตามเส้นทางของ Bit ที่ได้รับในแผนภูมิ Viterbi algorithm หากไม่มีเส้นทางไหนที่เป็นไปได้ แต่เมื่อถอดไปอีก จะเห็นเส้นทางต่อไป จึงทำให้สามารถสร้างเส้นทางที่ขาดไป ได้
จากการทดสอบด้วย Math Lab นั้น มีฟังก์ชั่น การเข้ารหัส Convolution ให้เรียกใช้ จากการทดสอบ ด้วยข้อมูลทดสอบนั้น หากผิดเพียง 1 Bit ปลายทางสามารถกู้คืนได้ แต่หากผิด 2 Bit ติดกัน สามารถแก้ไขได้ โดยมีโอกาศผิด 30% แต่หากผิด 1 Bit สลับกัน มีโอกาสกู้คืนผิดถึง 50% วิธีการแก้ปัญหานั้น ให้ใช้ รหัส Convolution ควบคู่กับเทคนิค Bit Interleaving และยังสามารถป้องกัน Burst Errors (การเกิด Noise ทำให้เกิด Error เป็นแถบ) ดังภาพ

เมื่อเกิด Burst Error เกิดขึ้น เมื่อ De-Interleaving ทำให้ Bit ที่เสียหายกระจายตัวกันออกไป หลังจากนั้นก็ Decode รหัส Convolution อีกครั้ง ซึ่งจะทำให้รหัส Convolution เป็นพระเอกขึ้นมาทีเดียว
ขอบพระคุณที่สนใจอ่าน
อ่านเพิ่มเติม : http://en.wikipedia.org/wiki/Convolution_code