Get Adobe Flash player
ค้นหาบทความ
พฤศจิกายน 2017
พฤ อา
« ก.ย.    
 12345
6789101112
13141516171819
20212223242526
27282930  
"เราทำสิ่งที่แตกต่าง เพื่อให้ตรงตามความต้องการของคุณหรือผู้ใช้งาน" 7 segments article AVR Burn IC CNC CNC Robot Drive Stepping Motor GSM Remote GSM with microcontroller interface interface keyboard interface ps2 MCS51 records circuit การเข้ารหัสข่าวสาร ข้อมูลดิจิตอล ตัดฟองน้ำ ตัดโฟม ตัดไม้ นักประดิษฐ์ บทความ บอร์ดขับกระแส บอร์ดควบคุมเสต็ปปิ้งมอเตอร์ บอร์ดแสดงผล ผู้ออกแบบและผลิต พัฒนาผลิตภัณฑ์ พัฒนาสินค้า มิเตอร์อุตสาหกรรม มิเตอร์ไฟฟ้า ดิจิตอล รับฉลุไม้ รับตัดพลาสติก รับตัดอลูมิเนียม รับตัดอะคลิลิค รับตัดไม้ตามแบบ รับวิจัย วงจร วงจรบันทึกเสียง ออกมาตรงตามความต้องการ เขียนข้อมูลลงไอซี เครื่องตัดโฟม เครื่องโปรแกรม IC เซาะร่องงานทุกชนิด โครงการพิเศษ โครงการสูบน้ำขึ้นวัด

การเข้ารหัสข่าวสารแบบตรวจสอบและแก้ที่ผิดด้วย MCS51

        การเข้ารหัสข่าวสารเป็นอีกวิธีการหนึ่งที่จะทำให้การส่งข้อมูลเข้าไปยังช่องสัญญาณได้อย่างมีประสิทธิภาพ เนื่องจากหากส่งข้อมูลไปในช่องสัญญาณโดยไม่มีการเข้ารหัส เมื่อเกิดสัญญาณลบกวนในช่องสัญญาณก็จะทำให้ข้อมูลที่รับได้เกิดความผิดพลาดขึ้น แต่ถ้าหากผู้ส่งมีการเข้ารหัสสัญญาณข้อมูลก่อนส่งแล้ว เมื่อเกิดสัญญาณลบกวนขึ้นในช่องสัญญาณ ภาครับก็ยังสามารถตรวจสอบและแก้ไขข้อมูลที่ส่งมาให้ถูกต้องเหมือนข้อมูลต้นฉบับได้ แต่ทั้งนี้วิธีการตรวจสอบแก้ไขข้อผิดพลาดจะได้มากหรือน้อยก็ขึ้นอยู่กับหลักการที่นำมาใช้

        การทดลองครั้งนี้ผมจะนำไมโครคอนโทรเลอร์ตระกูล MCS51

มาทดลองการส่งและรับข้อมูลโดยให้วงจรสามารถแก้ไขที่ผิดพลาดได้ 1 จุด หมายความว่าการส่งข้อมูล 8 บิต หากมีข้อมูลบิตใดบิตหนึ่งผิดพลาดไป ภาครับจะยังสามารถแก้ไขที่ผิดได้ให้ข้อมูลกลับมาถูกต้อง โดยจะขอนำหลักการที่มีใช้อยู่ในปัจจุบัน จะเริ่มจากหลักการง่ายๆ ก่อนที่จะใช้หลักการที่ซับซ้อนต่อไป

        เริ่มจาก สมมุติว่าเราต้องการจะส่งข้อมูล 10011010 เข้าไปในช่องสัญญาณที่เป็นคลื่นวิทยุ (ใช้วงจรสื่อสารไร้สายเพื่อการพัฒนา) และสมมุติว่าเกิดสัญญาณลบกวนขึ้นเนื่องจากมีฟ้าผ่าในช่วงสั่นๆทำให้ข้อมูลที่รับได้จากเดิม 10011010 กลายเป็น 11011010 แทน ทำให้ภาครับรับสัญญาณ ที่เป็น MSB ผิดพลาดไป หากไม่มีการแก้ไขก็จะทำให้ภาครับตีความหมายข่าวสารผิดไปค่อนข่างมาก จากตัวอย่างที่ยกมาให้ดูเราจะทำการเพิ่มเติมขั้นตอนการเข้ารหัสก่อนที่จะส่งข้อมูลออกไป และจะเพิ่มขั้นตอนวิธีการเมื่อภาครับรับสัญญาณได้ก่อนที่จะนำข้อมูลไปใช้

        วิธีการ คือ เราจะทำการเพิ่มบิตของข้อมูลที่เป็นรหัสเพื่อใช้ในการตรวจสอบเข้าไป สามารถหาปริมาณบิตที่ต้องการเพิ่มได้จากการคำนวณดังนี้ สมมุติว่าต้องการให้แก้ที่ผิดได้ 1 ที่ ในข้อมูล 8 บิต จะได้ว่า  2  สัญลักษณ์  โดย (จำนวนบิตทั้งหมด + 1) x 2บิตข้อมูล ≤ 2จำนวนบิตทั้งหมดจะได้ว่า 2  ≤ 212 แสดงว่า เราจะต้องใช้จำนวนบิตทั้งหมดที่ต้องส่งเป็น 12 บิต เพื่อให้สามารถตรวจสอบและแก้ไขข้อมูลจำนวน 8 บิตได้  เมื่อได้จำนวนบิตทั้งหมดแล้วเราจะนำมาเพิ่มบิตข้อมูลเข้าไปครับ วิธีการเพิ่มดูได้จากตาราง

 

*

1

*

2

3

4

*

5

6

7

8

ตำแหน่งข้อมูลแต่ละบิต

1

2

3

4

5

6

7

8

9

10

11

12

ตำแหน่งข้อมูล LSB – MSB

* คือ ตำแหน่งที่ใส่บิตตรวจสอบ

        จากนั้นนำข้อมูลที่จะส่งมาจัดลงตามตำแหน่งจะได้ดังนี้

          จากข้อมูล 10011010

 

 

*

*

1

*

0

0

1

*

1

0

1

0

ตำแหน่งข้อมูลแต่ละบิต

1

2

3

4

5

6

7

8

9

10

11

12

ตำแหน่งข้อมูล LSB – MSB

 

 

        เมื่อนำข้อมูลมาใส่แล้วก็ต้องเพิ่มบิตตรวจสอบที่เหลือลงไปพิจารณาจากตำแหน่งของบิตที่เป็น LOGIC 1 ในที่นี้คือตำแหน่งที่ 3,7,9,11 จากนั้นค่าของแต่ละตำแหน่งมา XOR กัน

        ตารางค่าประจำตำแหน่ง   

 

 

หลัก

ค่าข้อมูล

1

1000

2

0100

3

1100

4

0010

5

1010

6

0110

7

1110

8

0001

9

1001

10

0101

11

1101

12

0011

13

1011

14

0111

15

1111

 

 

           นำค่าของหลักที่เป็น LOGIC 1 มาตั้งแล้วทำการ XOR ได้ดังนี้

 

 

1100

3

1110

7

1001

9

1101

11

0110

ผลที่ได้

 

 

            นำค่าที่ได้มาใส่ในช่องที่ว่างไว้ * โดยเรียงลำดับกันไปจะได้

 

 

0 1 1 1 0 0 1 0 1 0 1 0 ตำแหน่งข้อมูลแต่ละบิต
1 2 3 4 5 6 7 8 9 10 11 12 ตำแหน่งข้อมูล LSB – MSB

 

 

            ข้อมูล 001100101010 จะเป็นข้อมูลที่เราจะส่งไปในช่องสัญญาณ  

          เมื่อข้อมูลเดินทางมาถึงภาครับ จากข้อมูล 10011010 นำมาเข้ารหัสได้ข้อมูลเป็น 011100101010 เพิ่มจากเดิม 8 บิตเป็น 12 บิต เมื่อข้อมูล 011100101010 เดินทางมาถึงภาครับและช่องสัญญาณมีสัญญาณลบกวนทำให้ข้อมูลผิดพลาดไป 1 บิต กลายเป็นข้อมูล 111100101010บิตแรกมีการผิดพลาดไป หากไม่มีการแก้ไขจะทำให้ภาครับตีความหมายผิดไปจากเดิมมาก แต่หากภาครับมีการตรวจสอบแก้ไขแล้ว จะสามารถแก้ไขข้อมูลกลับมาได้โดยมีวิธีการดังนี้

    วิธีการคือ นำข้อมูลที่ได้มาตรวจสอบดังนี้

 

 

1 1 1 1 0 0 1 0 1 0 1 0 แทนค่าตำแหน่งข้อมูลแต่ละบิต
1 2 3 4 5 6 7 8 9 10 11 12 ตำแหน่งข้อมูล LSB – MSB

 

 

        นำค่าของตำแหน่ง LOGIC ทีเป็น 1 มา XOR กัน ได้ดังนี้ ตำแหน่งที่ 1,2,3,4,7,9,11

 

 

 

1000

1

0100

2

1100

3

0010

4

1110

7

1001

9

1101

11

1000

รวม

 

 

        ถ้าผลที่ได้ของการ XOR ที่ภาครับไม่เป็น 0000  แสดงว่ามีที่ผิด จากตัวอย่างได้ผลเป็น 1000 แสดงว่าหลักที่ 1 ของข้อมูลผิดพลาด วงจรก็จะทำการกลับบิตที่ผิดตำแหน่งที่ 1 กลายเป็น 011100101010 เหมือนข้อมูลที่ภาคส่งส่งมาและทำการแยกข้อมูลออกจากรหัส โดยการดึงตำแหน่งที่ต้องการออกมา คือ

 

 

0

1

1

1

0

0

1

0

1

0

1

0

แทนค่าตำแหน่งข้อมูลแต่ละบิต

1

2

3

4

5

6

7

8

9

10

11

12

ตำแหน่งข้อมูล LSB – MSB

 

 

        ได้ 10011010 ออกมาเหมือนเดิม จากตัวอย่างนี้ทดลองใส่ข้อมูลผิดพลาดเข้าไปที่ตำแหน่งใดก็ได้ วงจรก็จะยังสามารถระบุที่ผิดและทำการแก้ไขให้โดยการกลับบิตที่เป็นผลลัพธ์เท่านั้น

          จากตัวอย่างที่ยกมาจะเห็นได้ว่าเมื่อเราเพิ่มบิตตรวจสอบเข้าไปกับข้อมูล เราก็จะสามารถระบุตำแหน่งที่ข้อมูลผิด และแก้ไขได้ เมื่อทราบวิธีการตรวจสอบและแก้ไขแล้วทีนี้ผมก็จะนำเสนอวงจรที่สร้างด้วย MCS51 ให้สามารถส่งข้อมูลแบบมีการเข้ารหัสข่าวสาร เพื่อให้สามารถแก้ไขที่ผิดได้ ส่งผลให้ข้อมูลที่เราทำการส่งออกไปไม่ว่าจะเป็นสัญญาณควบคุมระบบอะไรสักอย่างก็ตามที่ในช่องสัญญาณมีการรบกวนค่อนข่างสูง ข้อมูลที่ภาครับรับได้ก็จะยังสามารถรับได้อย่างถูกต้อง ถึงแม้ว่าวิธีการนี้จะสามารถแก้ไขได้เพียง 1 จุดเท่านั้น และต้องแรกกับปริมาณข้อมูลที่เพิ่มขึ้น 4 บิต ก็ตาม แต่ก็ยังถือว่าคุ่มค้ากับข้อมูลที่ถูกต้องที่ภาครับสามารถรับได้ครับ

บทความโดย กิติภูมิ