รหัส Hamming: การตรวจจับและแก้ไขข้อผิดพลาดพร้อมตัวอย่าง
ข้อผิดพลาดคืออะไร?
ข้อมูลที่ส่งอาจเสียหายระหว่างการสื่อสาร อาจได้รับผลกระทบจากเสียงรบกวนจากภายนอกหรือความผิดปกติทางกายภาพอื่นๆ ในสถานการณ์เช่นนี้ ข้อมูลอินพุตต้องไม่เหมือนกับข้อมูลเอาต์พุต ความไม่ตรงกันนี้เรียกว่า "ข้อผิดพลาด"
ข้อผิดพลาดของข้อมูลอาจส่งผลให้ข้อมูลสำคัญหรือข้อมูลที่ปลอดภัยสูญหาย การถ่ายโอนข้อมูลในระบบดิจิทัลส่วนใหญ่จะอยู่ในรูปแบบ 'การถ่ายโอนบิต' การเปลี่ยนแปลงเพียงเล็กน้อยก็อาจส่งผลต่อประสิทธิภาพของระบบทั้งหมดได้ ในลำดับข้อมูล ถ้า 1 เปลี่ยนเป็น 0 หรือ 0 เปลี่ยนเป็น 1 จะเรียกว่า "ข้อผิดพลาดบิต"
ประเภทของข้อผิดพลาด
ประเภทหลักของข้อผิดพลาดบิตที่เกิดขึ้นในการส่งข้อมูลจากผู้ส่งไปยังผู้รับมี 3 ประเภทหลัก
- ข้อผิดพลาดบิตเดียว
- ข้อผิดพลาดหลายบิต
- ข้อผิดพลาดระเบิด
ข้อผิดพลาดบิตเดียว
การเปลี่ยนแปลงที่เกิดขึ้นในบิตเดียวในลำดับข้อมูลทั้งหมดเรียกว่า “ข้อผิดพลาดบิตเดียว” อย่างไรก็ตาม การเกิดข้อผิดพลาดบิตเดียวไม่ได้เกิดขึ้นบ่อยนัก นอกจากนี้ ข้อผิดพลาดนี้เกิดขึ้นเฉพาะในระบบการสื่อสารแบบขนานเท่านั้น เนื่องจากข้อมูลถูกถ่ายโอนเป็นบิตในบรรทัดเดียว ดังนั้นจึงมีโอกาสที่บรรทัดเดียวจะเกิดสัญญาณรบกวนมากขึ้น
ข้อผิดพลาดหลายบิต
ในลำดับข้อมูล หากมีการเปลี่ยนแปลงลำดับข้อมูลตั้งแต่สองบิตขึ้นไปจากตัวส่งไปยังตัวรับ จะเรียกว่า "ข้อผิดพลาดหลายบิต"
ข้อผิดพลาดประเภทนี้ส่วนใหญ่เกิดขึ้นในเครือข่ายการสื่อสารข้อมูลทั้งแบบอนุกรมและแบบขนาน
ข้อผิดพลาดในการระเบิด
การเปลี่ยนแปลงชุดบิตในลำดับข้อมูลเรียกว่า "ข้อผิดพลาดเบิร์ส" ข้อผิดพลาดของข้อมูลประเภทนี้คำนวณจากการเปลี่ยนแปลงบิตแรกไปจนถึงการเปลี่ยนแปลงบิตสุดท้าย
การตรวจจับข้อผิดพลาดและการแก้ไขข้อผิดพลาดคืออะไร
ในระบบการสื่อสารแบบดิจิทัล ข้อผิดพลาดจะถูกถ่ายโอนจากระบบการสื่อสารหนึ่งไปยังอีกระบบหนึ่ง หากตรวจไม่พบและแก้ไขข้อผิดพลาดเหล่านี้ ข้อมูลจะสูญหาย เพื่อการสื่อสารที่มีประสิทธิภาพ ข้อมูลระบบควรถ่ายโอนด้วยความแม่นยำสูง ซึ่งจะทำได้โดยการระบุข้อผิดพลาดก่อนแล้วจึงทำการแก้ไข
การตรวจจับข้อผิดพลาดเป็นวิธีการตรวจจับข้อผิดพลาดที่มีอยู่ในข้อมูลที่ส่งจากเครื่องส่งไปยังเครื่องรับในระบบการสื่อสารข้อมูล
ที่นี่ คุณสามารถใช้รหัสซ้ำซ้อนเพื่อค้นหาข้อผิดพลาดเหล่านี้ โดยการเพิ่มข้อมูลเมื่อมีการส่งจากแหล่งที่มา รหัสเหล่านี้เรียกว่า "รหัสการตรวจจับข้อผิดพลาด"
รหัสการตรวจจับข้อผิดพลาดสามประเภท ได้แก่:
- การตรวจสอบความเท่าเทียมกัน
- Cyclic Redundancy Check (CRC)
- การตรวจสอบความซ้ำซ้อนตามยาว (LRC)
การตรวจสอบความเท่าเทียมกัน
- เรียกอีกอย่างว่าการตรวจสอบความเท่าเทียมกัน
- มีกลไกที่คุ้มค่าในการตรวจจับข้อผิดพลาด
- ในเทคนิคนี้ บิตที่ซ้ำซ้อนเรียกว่าพาริตีบิต มันถูกผนวกเข้ากับทุกหน่วยข้อมูล จำนวน 1 ทั้งหมดในหน่วยควรเป็นเลขคู่ ซึ่งเรียกว่าพาริตีบิต
ตรวจสอบความซ้ำซ้อนตามยาว
ในเทคนิคการตรวจจับข้อผิดพลาดนี้ บล็อกของบิตจะถูกจัดระเบียบในรูปแบบตาราง วิธี LRC ช่วยให้คุณคำนวณพาริตีบิตสำหรับทุกคอลัมน์ ชุดของความเท่าเทียมกันนี้จะถูกส่งไปพร้อมกับข้อมูลต้นฉบับด้วย บล็อกความเท่าเทียมกันช่วยให้คุณตรวจสอบความซ้ำซ้อน
วงจรตรวจสอบความซ้ำซ้อน
การตรวจสอบความซ้ำซ้อนแบบวนเป็นลำดับของความซ้ำซ้อนที่ต้องต่อท้ายหน่วย นั่นเป็นสาเหตุที่หน่วยข้อมูลผลลัพธ์ควรหารด้วยเลขฐานสองวินาทีที่กำหนดไว้ล่วงหน้า
ที่ปลายทาง ข้อมูลที่เข้ามาจะต้องหารด้วยจำนวนเดียวกัน หากไม่มีเศษเหลือ หน่วยข้อมูลจะถือว่าถูกต้องและได้รับการยอมรับ มิฉะนั้น แสดงว่าหน่วยข้อมูลเสียหายระหว่างการส่ง และจะต้องปฏิเสธ
รหัสแฮมมิงคืออะไร?
รหัส Hamming เป็นโค้ดไลเนอร์ที่มีประโยชน์สำหรับการตรวจจับข้อผิดพลาดจนถึงข้อผิดพลาดบิตทันทีสูงสุดสองครั้ง สามารถเกิดข้อผิดพลาดบิตเดียวได้
ในโค้ด Hamming แหล่งที่มาจะเข้ารหัสข้อความโดยการเพิ่มบิตที่ซ้ำซ้อนในข้อความ บิตที่ซ้ำซ้อนเหล่านี้ส่วนใหญ่จะถูกแทรกและสร้างที่ตำแหน่งใดตำแหน่งหนึ่งในข้อความเพื่อให้กระบวนการตรวจจับและแก้ไขข้อผิดพลาดสำเร็จ
ประวัติความเป็นมาของรหัสแฮมมิง
- รหัส Hamming เป็นเทคนิคที่สร้างโดย RWHamming เพื่อตรวจจับข้อผิดพลาด
- ควรใช้โค้ด Hamming กับหน่วยข้อมูลที่มีความยาวเท่าใดก็ได้ และใช้ความสัมพันธ์ระหว่างข้อมูลและบิตที่ซ้ำซ้อน
- เขาทำงานเกี่ยวกับปัญหาของวิธีการแก้ไขข้อผิดพลาดและพัฒนาอัลกอริทึมที่มีประสิทธิภาพเพิ่มมากขึ้นเรื่อยๆ เรียกว่าโค้ดแฮมมิง
- ในปี 1950 เขาได้ตีพิมพ์ Hamming Code ซึ่งใช้กันอย่างแพร่หลายในปัจจุบันในแอปพลิเคชันเช่นหน่วยความจำ ECC
การประยุกต์ใช้รหัส Hamming
ต่อไปนี้เป็นการใช้งานทั่วไปของการใช้โค้ด Hamming:
- ดาวเทียม
- หน่วยความจำคอมพิวเตอร์
- โมเด็ม
- พลาสม่าแคม
- เปิดตัวเชื่อมต่อ
- ลวดป้องกัน
- หน่วยประมวลผลแบบฝัง
ข้อดีของรหัส Hamming
- วิธีการโค้ด Hamming มีผลกับเครือข่ายที่มีการสตรีมข้อมูลสำหรับข้อผิดพลาดบิตเดียว
- โค้ด Hamming ไม่เพียงแต่ให้การตรวจจับข้อผิดพลาดบิตเท่านั้น แต่ยังช่วยให้คุณเยื้องบิตที่มีข้อผิดพลาดเพื่อที่จะสามารถแก้ไขได้
- ความง่ายในการใช้รหัสแฮมมิงทำให้เหมาะสมที่สุดสำหรับใช้ในหน่วยความจำคอมพิวเตอร์และการแก้ไขข้อผิดพลาดเดี่ยว
ข้อเสียของรหัส Hamming
- การตรวจจับและแก้ไขข้อผิดพลาดบิตเดียว อย่างไรก็ตาม หากพบข้อผิดพลาดหลายบิต ผลลัพธ์อาจส่งผลให้มีอีกบิตหนึ่งที่ควรแก้ไขให้ถูกต้อง ซึ่งอาจทำให้ข้อมูลมีข้อผิดพลาดเพิ่มเติมได้
- อัลกอริธึมโค้ด Hamming สามารถแก้ปัญหาบิตเดียวเท่านั้น
วิธีเข้ารหัสข้อความใน Hamming Code
กระบวนการที่ผู้ส่งใช้ในการเข้ารหัสข้อความประกอบด้วยสามขั้นตอนดังต่อไปนี้:
- การคำนวณจำนวนบิตซ้ำซ้อนทั้งหมด
- การตรวจสอบตำแหน่งของบิตที่ซ้ำซ้อน
- สุดท้ายคือการคำนวณค่าของบิตที่ซ้ำซ้อนเหล่านี้
เมื่อบิตที่ซ้ำซ้อนข้างต้นถูกฝังอยู่ในข้อความ บิตนั้นจะถูกส่งไปยังผู้ใช้
ขั้นตอน 1) การคำนวณจำนวนบิตที่ซ้ำซ้อนทั้งหมด
สมมติว่าข้อความประกอบด้วย:
- n– จำนวนบิตข้อมูล
- p – จำนวนบิตซ้ำซ้อนที่ถูกเพิ่มเข้าไปเพื่อให้ np สามารถระบุสถานะที่แตกต่างกันอย่างน้อย (n + p + 1)
ในที่นี้ (n + p) แสดงถึงตำแหน่งของข้อผิดพลาดในแต่ละตำแหน่งบิต (n + p) และสถานะพิเศษอีกหนึ่งสถานะบ่งชี้ว่าไม่มีข้อผิดพลาด เนื่องจาก p บิตสามารถระบุ 2 ได้p รัฐ 2p ต้องเท่ากับ (n + p + 1) เป็นอย่างน้อย
ขั้นตอน 2) การวางบิตที่ซ้ำซ้อนในตำแหน่งที่ถูกต้อง
บิตสำรอง p ควรวางไว้ที่ตำแหน่งบิตที่มีกำลัง 2 ตัวอย่างเช่น 1, 2, 4, 8, 16 เป็นต้น ซึ่งเรียกว่า p1 (ที่ตำแหน่ง 1) น2 (ที่ตำแหน่ง 2) น3 (ที่ตำแหน่ง 4) เป็นต้น
ขั้นตอน 3) การคำนวณค่าของบิตที่ซ้ำซ้อน
บิตที่ซ้ำซ้อนควรเป็นบิตพาริตีที่ทำให้ตัวเลข 1 เป็นเลขคู่หรือคี่
ความเท่าเทียมกันสองประเภทคือ ?
- จำนวนบิตทั้งหมดในข้อความจะถูกทำให้เป็นเลขคู่ เรียกว่าจำนวนพาริตีคู่
- จำนวนบิตทั้งหมดในข้อความที่ทำให้เป็นเลขคี่เรียกว่าความเท่าเทียมกันแบบคี่
ในที่นี้ บิตที่ซ้ำซ้อนทั้งหมด p1 จะต้องคำนวณเป็นพาริตี ควรครอบคลุมตำแหน่งบิตทั้งหมดที่มีการแทนค่าไบนารี่ควรมี 1 อยู่ในตำแหน่งที่ 1 ยกเว้นตำแหน่งของ p1
P1 คือพาริตีบิตสำหรับบิตข้อมูลทุกบิตในตำแหน่งที่การแสดงไบนารี่มี 1 อยู่ในตำแหน่งที่มีความสำคัญน้อยกว่า ไม่รวม 1 Like (3, 5, 7, 9, …. )
P2 คือพาริตีบิตสำหรับบิตข้อมูลทุกบิตในตำแหน่งที่มีการแทนไบนารี่รวม 1 ในตำแหน่งที่ 2 จากขวา ไม่รวม 2 Like (3, 6, 7, 10, 11,…)
P3 คือพาริตีบิตสำหรับทุกบิตในตำแหน่งที่การแทนค่าไบนารี่มี 1 อยู่ในตำแหน่งที่ 3 จากขวา ไม่รวม 4 Like (5-7, 12-15,… )
การถอดรหัสข้อความในรหัส Hamming
ผู้รับจะได้รับข้อความขาเข้าซึ่งจำเป็นต้องคำนวณใหม่เพื่อค้นหาและแก้ไขข้อผิดพลาด
กระบวนการคำนวณใหม่ดำเนินการตามขั้นตอนต่อไปนี้:
- การนับจำนวนบิตที่ซ้ำซ้อน
- วางตำแหน่งบิตที่ซ้ำซ้อนทั้งหมดอย่างถูกต้อง
- การตรวจสอบความเท่าเทียมกัน
ขั้นตอน 1) การนับจำนวนบิตที่ซ้ำซ้อน
คุณสามารถใช้สูตรเดียวกันในการเข้ารหัสคือจำนวนบิตที่ซ้ำซ้อน
2p - เอ็น + พี + 1
ในที่นี้จำนวนบิตข้อมูลและ p คือจำนวนบิตที่ซ้ำซ้อน
ขั้นตอน 2) วางตำแหน่งบิตที่ซ้ำซ้อนทั้งหมดอย่างถูกต้อง
โดยที่ p เป็นบิตซ้ำซ้อนซึ่งอยู่ที่ตำแหน่งบิตที่มีกำลัง 2 เช่น 1, 2, 4, 8 เป็นต้น
ขั้นตอน 3) การตรวจสอบความเท่าเทียมกัน
พาริตีบิตจำเป็นต้องคำนวณตามบิตข้อมูลและบิตที่ซ้ำซ้อน
p1 = ความเท่าเทียมกัน (1, 3, 5, 7, 9, 11…)
p2 = ความเท่าเทียมกัน(2, 3, 6, 7, 10, 11… )
p3 = ความเท่าเทียมกัน(4-7, 12-15, 20-23… )
สรุป
- ข้อมูลที่ส่งอาจเสียหายระหว่างการสื่อสาร
- ข้อผิดพลาดบิตสามประเภทคือ 1) ข้อผิดพลาดบิตเดียว 2) ข้อผิดพลาดหลายบิต 3) ข้อผิดพลาดเบิร์สต์บิต
- การเปลี่ยนแปลงที่เกิดขึ้นในหนึ่งบิตในลำดับข้อมูลทั้งหมดเรียกว่า "ข้อผิดพลาดบิตเดียว"
- ในลำดับข้อมูล หากมีการเปลี่ยนแปลงลำดับข้อมูลตั้งแต่สองบิตขึ้นไปจากตัวส่งไปยังตัวรับ จะเรียกว่า "ข้อผิดพลาดหลายบิต"
- การเปลี่ยนแปลงชุดบิตในลำดับข้อมูลเรียกว่า "ข้อผิดพลาดเบิร์ส"
- การตรวจจับข้อผิดพลาดเป็นวิธีการตรวจจับข้อผิดพลาดที่มีอยู่ในข้อมูลที่ส่งจากเครื่องส่งไปยังเครื่องรับในระบบการสื่อสารข้อมูล
- รหัสการตรวจจับข้อผิดพลาด 1 ประเภท ได้แก่ 2) การตรวจสอบความเท่าเทียมกัน 3) การตรวจสอบความซ้ำซ้อนแบบวนรอบ (CRC) XNUMX) การตรวจสอบความซ้ำซ้อนตามยาว (LRC)
- รหัส Hamming เป็นโค้ดไลเนอร์ที่มีประโยชน์สำหรับการตรวจจับข้อผิดพลาดจนถึงข้อผิดพลาดบิตทันทีสูงสุดสองครั้ง สามารถเกิดข้อผิดพลาดบิตเดียวได้
- รหัส Hamming เป็นเทคนิคที่สร้างโดย RWHamming เพื่อตรวจจับข้อผิดพลาด
- การใช้งานทั่วไปของการใช้โค้ด Hamming ได้แก่ ดาวเทียม หน่วยความจำคอมพิวเตอร์ โมเด็ม โปรเซสเซอร์แบบฝังตัว ฯลฯ
- ประโยชน์ที่ใหญ่ที่สุดของวิธีการโค้ด hamming นั้นมีผลกับเครือข่ายที่มีการสตรีมข้อมูลสำหรับข้อผิดพลาดบิตเดียว
- ข้อเสียเปรียบที่ใหญ่ที่สุดของวิธี hamming code คือสามารถแก้ปัญหาได้เพียงบิตเดียวเท่านั้น
- เราสามารถดำเนินการเข้ารหัสและถอดรหัสข้อความโดยใช้โค้ดแฮมมิง