การเข้ารหัสแบบสุ่ม (Scrambling) ในอุปกรณ์อิเล็กทรอนิกส์ดิจิทัลคืออะไร?

เรียนรู้ว่าการเข้ารหัสช่วยขจัดรูปแบบข้อมูลที่ซ้ำซ้อนเพื่อรักษาเสถียรภาพและการซิงโครไนซ์ของการส่งข้อมูลดิจิทัลความเร็วสูงได้อย่างไร

การเข้ารหัสแบบสุ่ม (Scrambling) ในอุปกรณ์อิเล็กทรอนิกส์ดิจิทัลคืออะไร?

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

มีเทคนิคการสับไพ่สองแบบที่ใช้กันทั่วไป:

  1. B8ZS (ไบโพลาร์ที่มีการแทนที่ด้วยศูนย์ 8 ตำแหน่ง)
  2. HDB3 (High-Density Bipolar 3-Zero)

B8ZS (ไบโพลาร์ที่มีการแทนที่ด้วยศูนย์ 8 ตัว):เทคนิคนี้คล้ายกับ AMI แบบไบโพลาร์ ยกเว้นว่าเมื่อพบแรงดันระดับที่ไม่ต่อเนื่องกันแปดตัว จะถูกแทนที่ด้วยลำดับ "000VB0VB"

บันทึก:

  • V (การละเมิด) ซึ่งเป็นค่าแรงดันไฟฟ้า ไม่ได้หมายความว่าสัญญาณจะมีขั้วเดียวกับแรงดันไฟฟ้าศูนย์ก่อนหน้า ดังนั้นจึงถือเป็นการละเมิดมาตรฐานทางเทคนิคทั่วไปของ AMI
  • B (ไบโพลาร์) ก็เป็นระดับแรงดันไฟฟ้าที่ไม่เป็นไปตามกฎ AMI เช่นกัน (กล่าวคือ มีขั้วตรงข้ามกับแรงดันไฟฟ้าศูนย์ก่อนหน้า)

ตัวอย่าง: ข้อมูล = 100000000

หมายเหตุ: ทั้งสองรูป (ซ้ายและขวา) ถูกต้อง ขึ้นอยู่กับสัญญาณแรงดันศูนย์สุดท้ายของลำดับข้อมูลก่อนหน้า (กล่าวคือ ลำดับก่อนหน้าลำดับข้อมูลปัจจุบัน "100000000")

HDB3 (High-Density Bipolar 3-Zero):ในเทคนิคนี้ แรงดันระดับที่ไม่ต่อเนื่องกันสี่ระดับจะถูกแทนที่ด้วยลำดับ "000V" หรือ "B00V" กฎสำหรับการใช้ลำดับเหล่านี้มีดังนี้:

  • หากจำนวนพัลส์ศูนย์หลังจากการเปลี่ยนครั้งสุดท้ายเป็นเลขคี่ รูปแบบการเปลี่ยนจะเป็น "000V" ซึ่งจะช่วยรักษาจำนวนพัลส์ศูนย์ทั้งหมดให้เท่ากับศูนย์
  • หากจำนวนพัลส์ศูนย์หลังจากเปลี่ยนครั้งสุดท้ายเป็นเลขคู่ รูปแบบการเปลี่ยนจะเป็น "B00V" ดังนั้น จำนวนพัลส์ศูนย์จึงเป็นเลขคู่ต่อไป

ตัวอย่าง: ข้อมูล = 1100001000000000

คำอธิบายผลลัพธ์: หลังจากแทนค่าเลข 1 สองตัวแรกของข้อมูลแล้ว เราพบเลข 0 ติดต่อกันสี่ตัว เนื่องจากค่าที่จะแทนที่ในขั้นสุดท้ายคือเลข 1 สองตัว (ดังนั้นจำนวนพัลส์ศูนย์จึงไม่เท่ากับศูนย์ ซึ่งเป็นเลขคู่) เราจึงแทนที่เลข 0 ทั้งสี่ตัวด้วย "B00V"

การสับเปลี่ยน (Shuffling) เป็นเทคนิคที่ใช้ในอิเล็กทรอนิกส์ดิจิทัลเพื่อสร้างลำดับบิตที่ทราบค่าเพื่อใช้ในการซิงโครไนซ์และตรวจจับข้อผิดพลาด โค้ดที่ใช้ในการสับเปลี่ยนจะขึ้นอยู่กับข้อกำหนดเฉพาะของระบบ ด้านล่างนี้เป็นตัวอย่างง่ายๆ ของตัวสับเปลี่ยนรีจิสเตอร์เลื่อนป้อนกลับเชิงเส้น (LFSR) ในภาษา C++:

#include <bitset>
#include <iostream>

const int LFSR_LENGTH = 8;
const int TAP_POSITIONS[] = {8, 7, 6, 1};

int main() {
    std::bitset<LFSR_LENGTH> lfsr;
    std::cout << "Enter the starting state of the LFSR: ";
    std::cin >> lfsr;
    
    for (int i = 0; i < 32; ++i) {
        int feedback = 0;
        for (const auto tap_position : TAP_POSITIONS) {
            feedback ^= lfsr[tap_position];
        }
        
        lfsr = (lfsr << 1) | feedback;
        std::cout << lfsr << std::endl;
    }
    
    return 0;
}

ผลลัพธ์ของโค้ดนี้จะเป็นลำดับตัวเลขที่ถูกสุ่มขึ้นโดยรีจิสเตอร์เลื่อนป้อนกลับเชิงเส้น (LFSR) ในช่วง 32 รอบสัญญาณนาฬิกา ผลลัพธ์ที่แน่นอนจะขึ้นอยู่กับสถานะเริ่มต้นของ LFSR ที่ผู้ใช้ป้อน ตัวอย่างด้านล่างนี้คือผลลัพธ์สำหรับสถานะเริ่มต้นที่ 01100101:

ป้อนสถานะเริ่มต้นของ LFSR: 01100101
11000100
01100010
10100010
01010001
10101000
01010100
10101010
01010101
10101101
01011010
10101111
01011110
10111100
01111000
11100000
01000000
10000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000


ในตัวอย่างนี้ LFSR จะถูกกำหนดค่าเริ่มต้นด้วยสถานะ 8 บิต ตำแหน่ง TAP ซึ่งกำหนดแท็ปป้อนกลับใน LFSR ถูกกำหนดเป็น {8, 7, 6, 1} จากนั้น LFSR จะถูกกระตุ้นด้วยสัญญาณนาฬิกา 32 ครั้งเพื่อสร้างลำดับการสับเปลี่ยน ผลลัพธ์ที่ได้จะเป็นลำดับการสับเปลี่ยน โดยแต่ละบรรทัดแสดงถึงสถานะของ LFSR หลังจากแต่ละรอบสัญญาณนาฬิกา

หมายเหตุ: สัญญาณพัลส์ไม่สม่ำเสมอ

บทความที่เกี่ยวข้อง

การเข้ารหัสแบบสุ่ม (Scrambling) ในอุปกรณ์อิเล็กทรอนิกส์ดิจิทัลคืออะไร?

เรียนรู้ว่าการเข้ารหัสช่วยขจัดรูปแบบข้อมูลที่ซ้ำซ้อนเพื่อรักษาเสถียรภาพและการซิงโครไนซ์ของการส่งข้อมูลดิจิทัลความเร็วสูงได้อย่างไร

นักเขียนบทความ
by 
นักเขียนบทความ
การเข้ารหัสแบบสุ่ม (Scrambling) ในอุปกรณ์อิเล็กทรอนิกส์ดิจิทัลคืออะไร?

การเข้ารหัสแบบสุ่ม (Scrambling) ในอุปกรณ์อิเล็กทรอนิกส์ดิจิทัลคืออะไร?

เรียนรู้ว่าการเข้ารหัสช่วยขจัดรูปแบบข้อมูลที่ซ้ำซ้อนเพื่อรักษาเสถียรภาพและการซิงโครไนซ์ของการส่งข้อมูลดิจิทัลความเร็วสูงได้อย่างไร

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

มีเทคนิคการสับไพ่สองแบบที่ใช้กันทั่วไป:

  1. B8ZS (ไบโพลาร์ที่มีการแทนที่ด้วยศูนย์ 8 ตำแหน่ง)
  2. HDB3 (High-Density Bipolar 3-Zero)

B8ZS (ไบโพลาร์ที่มีการแทนที่ด้วยศูนย์ 8 ตัว):เทคนิคนี้คล้ายกับ AMI แบบไบโพลาร์ ยกเว้นว่าเมื่อพบแรงดันระดับที่ไม่ต่อเนื่องกันแปดตัว จะถูกแทนที่ด้วยลำดับ "000VB0VB"

บันทึก:

  • V (การละเมิด) ซึ่งเป็นค่าแรงดันไฟฟ้า ไม่ได้หมายความว่าสัญญาณจะมีขั้วเดียวกับแรงดันไฟฟ้าศูนย์ก่อนหน้า ดังนั้นจึงถือเป็นการละเมิดมาตรฐานทางเทคนิคทั่วไปของ AMI
  • B (ไบโพลาร์) ก็เป็นระดับแรงดันไฟฟ้าที่ไม่เป็นไปตามกฎ AMI เช่นกัน (กล่าวคือ มีขั้วตรงข้ามกับแรงดันไฟฟ้าศูนย์ก่อนหน้า)

ตัวอย่าง: ข้อมูล = 100000000

หมายเหตุ: ทั้งสองรูป (ซ้ายและขวา) ถูกต้อง ขึ้นอยู่กับสัญญาณแรงดันศูนย์สุดท้ายของลำดับข้อมูลก่อนหน้า (กล่าวคือ ลำดับก่อนหน้าลำดับข้อมูลปัจจุบัน "100000000")

HDB3 (High-Density Bipolar 3-Zero):ในเทคนิคนี้ แรงดันระดับที่ไม่ต่อเนื่องกันสี่ระดับจะถูกแทนที่ด้วยลำดับ "000V" หรือ "B00V" กฎสำหรับการใช้ลำดับเหล่านี้มีดังนี้:

  • หากจำนวนพัลส์ศูนย์หลังจากการเปลี่ยนครั้งสุดท้ายเป็นเลขคี่ รูปแบบการเปลี่ยนจะเป็น "000V" ซึ่งจะช่วยรักษาจำนวนพัลส์ศูนย์ทั้งหมดให้เท่ากับศูนย์
  • หากจำนวนพัลส์ศูนย์หลังจากเปลี่ยนครั้งสุดท้ายเป็นเลขคู่ รูปแบบการเปลี่ยนจะเป็น "B00V" ดังนั้น จำนวนพัลส์ศูนย์จึงเป็นเลขคู่ต่อไป

ตัวอย่าง: ข้อมูล = 1100001000000000

คำอธิบายผลลัพธ์: หลังจากแทนค่าเลข 1 สองตัวแรกของข้อมูลแล้ว เราพบเลข 0 ติดต่อกันสี่ตัว เนื่องจากค่าที่จะแทนที่ในขั้นสุดท้ายคือเลข 1 สองตัว (ดังนั้นจำนวนพัลส์ศูนย์จึงไม่เท่ากับศูนย์ ซึ่งเป็นเลขคู่) เราจึงแทนที่เลข 0 ทั้งสี่ตัวด้วย "B00V"

การสับเปลี่ยน (Shuffling) เป็นเทคนิคที่ใช้ในอิเล็กทรอนิกส์ดิจิทัลเพื่อสร้างลำดับบิตที่ทราบค่าเพื่อใช้ในการซิงโครไนซ์และตรวจจับข้อผิดพลาด โค้ดที่ใช้ในการสับเปลี่ยนจะขึ้นอยู่กับข้อกำหนดเฉพาะของระบบ ด้านล่างนี้เป็นตัวอย่างง่ายๆ ของตัวสับเปลี่ยนรีจิสเตอร์เลื่อนป้อนกลับเชิงเส้น (LFSR) ในภาษา C++:

#include <bitset>
#include <iostream>

const int LFSR_LENGTH = 8;
const int TAP_POSITIONS[] = {8, 7, 6, 1};

int main() {
    std::bitset<LFSR_LENGTH> lfsr;
    std::cout << "Enter the starting state of the LFSR: ";
    std::cin >> lfsr;
    
    for (int i = 0; i < 32; ++i) {
        int feedback = 0;
        for (const auto tap_position : TAP_POSITIONS) {
            feedback ^= lfsr[tap_position];
        }
        
        lfsr = (lfsr << 1) | feedback;
        std::cout << lfsr << std::endl;
    }
    
    return 0;
}

ผลลัพธ์ของโค้ดนี้จะเป็นลำดับตัวเลขที่ถูกสุ่มขึ้นโดยรีจิสเตอร์เลื่อนป้อนกลับเชิงเส้น (LFSR) ในช่วง 32 รอบสัญญาณนาฬิกา ผลลัพธ์ที่แน่นอนจะขึ้นอยู่กับสถานะเริ่มต้นของ LFSR ที่ผู้ใช้ป้อน ตัวอย่างด้านล่างนี้คือผลลัพธ์สำหรับสถานะเริ่มต้นที่ 01100101:

ป้อนสถานะเริ่มต้นของ LFSR: 01100101
11000100
01100010
10100010
01010001
10101000
01010100
10101010
01010101
10101101
01011010
10101111
01011110
10111100
01111000
11100000
01000000
10000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000


ในตัวอย่างนี้ LFSR จะถูกกำหนดค่าเริ่มต้นด้วยสถานะ 8 บิต ตำแหน่ง TAP ซึ่งกำหนดแท็ปป้อนกลับใน LFSR ถูกกำหนดเป็น {8, 7, 6, 1} จากนั้น LFSR จะถูกกระตุ้นด้วยสัญญาณนาฬิกา 32 ครั้งเพื่อสร้างลำดับการสับเปลี่ยน ผลลัพธ์ที่ได้จะเป็นลำดับการสับเปลี่ยน โดยแต่ละบรรทัดแสดงถึงสถานะของ LFSR หลังจากแต่ละรอบสัญญาณนาฬิกา

หมายเหตุ: สัญญาณพัลส์ไม่สม่ำเสมอ

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

การเข้ารหัสแบบสุ่ม (Scrambling) ในอุปกรณ์อิเล็กทรอนิกส์ดิจิทัลคืออะไร?

การเข้ารหัสแบบสุ่ม (Scrambling) ในอุปกรณ์อิเล็กทรอนิกส์ดิจิทัลคืออะไร?

เรียนรู้ว่าการเข้ารหัสช่วยขจัดรูปแบบข้อมูลที่ซ้ำซ้อนเพื่อรักษาเสถียรภาพและการซิงโครไนซ์ของการส่งข้อมูลดิจิทัลความเร็วสูงได้อย่างไร

Lorem ipsum dolor amet consectetur adipiscing elit tortor massa arcu non.

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

มีเทคนิคการสับไพ่สองแบบที่ใช้กันทั่วไป:

  1. B8ZS (ไบโพลาร์ที่มีการแทนที่ด้วยศูนย์ 8 ตำแหน่ง)
  2. HDB3 (High-Density Bipolar 3-Zero)

B8ZS (ไบโพลาร์ที่มีการแทนที่ด้วยศูนย์ 8 ตัว):เทคนิคนี้คล้ายกับ AMI แบบไบโพลาร์ ยกเว้นว่าเมื่อพบแรงดันระดับที่ไม่ต่อเนื่องกันแปดตัว จะถูกแทนที่ด้วยลำดับ "000VB0VB"

บันทึก:

  • V (การละเมิด) ซึ่งเป็นค่าแรงดันไฟฟ้า ไม่ได้หมายความว่าสัญญาณจะมีขั้วเดียวกับแรงดันไฟฟ้าศูนย์ก่อนหน้า ดังนั้นจึงถือเป็นการละเมิดมาตรฐานทางเทคนิคทั่วไปของ AMI
  • B (ไบโพลาร์) ก็เป็นระดับแรงดันไฟฟ้าที่ไม่เป็นไปตามกฎ AMI เช่นกัน (กล่าวคือ มีขั้วตรงข้ามกับแรงดันไฟฟ้าศูนย์ก่อนหน้า)

ตัวอย่าง: ข้อมูล = 100000000

หมายเหตุ: ทั้งสองรูป (ซ้ายและขวา) ถูกต้อง ขึ้นอยู่กับสัญญาณแรงดันศูนย์สุดท้ายของลำดับข้อมูลก่อนหน้า (กล่าวคือ ลำดับก่อนหน้าลำดับข้อมูลปัจจุบัน "100000000")

HDB3 (High-Density Bipolar 3-Zero):ในเทคนิคนี้ แรงดันระดับที่ไม่ต่อเนื่องกันสี่ระดับจะถูกแทนที่ด้วยลำดับ "000V" หรือ "B00V" กฎสำหรับการใช้ลำดับเหล่านี้มีดังนี้:

  • หากจำนวนพัลส์ศูนย์หลังจากการเปลี่ยนครั้งสุดท้ายเป็นเลขคี่ รูปแบบการเปลี่ยนจะเป็น "000V" ซึ่งจะช่วยรักษาจำนวนพัลส์ศูนย์ทั้งหมดให้เท่ากับศูนย์
  • หากจำนวนพัลส์ศูนย์หลังจากเปลี่ยนครั้งสุดท้ายเป็นเลขคู่ รูปแบบการเปลี่ยนจะเป็น "B00V" ดังนั้น จำนวนพัลส์ศูนย์จึงเป็นเลขคู่ต่อไป

ตัวอย่าง: ข้อมูล = 1100001000000000

คำอธิบายผลลัพธ์: หลังจากแทนค่าเลข 1 สองตัวแรกของข้อมูลแล้ว เราพบเลข 0 ติดต่อกันสี่ตัว เนื่องจากค่าที่จะแทนที่ในขั้นสุดท้ายคือเลข 1 สองตัว (ดังนั้นจำนวนพัลส์ศูนย์จึงไม่เท่ากับศูนย์ ซึ่งเป็นเลขคู่) เราจึงแทนที่เลข 0 ทั้งสี่ตัวด้วย "B00V"

การสับเปลี่ยน (Shuffling) เป็นเทคนิคที่ใช้ในอิเล็กทรอนิกส์ดิจิทัลเพื่อสร้างลำดับบิตที่ทราบค่าเพื่อใช้ในการซิงโครไนซ์และตรวจจับข้อผิดพลาด โค้ดที่ใช้ในการสับเปลี่ยนจะขึ้นอยู่กับข้อกำหนดเฉพาะของระบบ ด้านล่างนี้เป็นตัวอย่างง่ายๆ ของตัวสับเปลี่ยนรีจิสเตอร์เลื่อนป้อนกลับเชิงเส้น (LFSR) ในภาษา C++:

#include <bitset>
#include <iostream>

const int LFSR_LENGTH = 8;
const int TAP_POSITIONS[] = {8, 7, 6, 1};

int main() {
    std::bitset<LFSR_LENGTH> lfsr;
    std::cout << "Enter the starting state of the LFSR: ";
    std::cin >> lfsr;
    
    for (int i = 0; i < 32; ++i) {
        int feedback = 0;
        for (const auto tap_position : TAP_POSITIONS) {
            feedback ^= lfsr[tap_position];
        }
        
        lfsr = (lfsr << 1) | feedback;
        std::cout << lfsr << std::endl;
    }
    
    return 0;
}

ผลลัพธ์ของโค้ดนี้จะเป็นลำดับตัวเลขที่ถูกสุ่มขึ้นโดยรีจิสเตอร์เลื่อนป้อนกลับเชิงเส้น (LFSR) ในช่วง 32 รอบสัญญาณนาฬิกา ผลลัพธ์ที่แน่นอนจะขึ้นอยู่กับสถานะเริ่มต้นของ LFSR ที่ผู้ใช้ป้อน ตัวอย่างด้านล่างนี้คือผลลัพธ์สำหรับสถานะเริ่มต้นที่ 01100101:

ป้อนสถานะเริ่มต้นของ LFSR: 01100101
11000100
01100010
10100010
01010001
10101000
01010100
10101010
01010101
10101101
01011010
10101111
01011110
10111100
01111000
11100000
01000000
10000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000


ในตัวอย่างนี้ LFSR จะถูกกำหนดค่าเริ่มต้นด้วยสถานะ 8 บิต ตำแหน่ง TAP ซึ่งกำหนดแท็ปป้อนกลับใน LFSR ถูกกำหนดเป็น {8, 7, 6, 1} จากนั้น LFSR จะถูกกระตุ้นด้วยสัญญาณนาฬิกา 32 ครั้งเพื่อสร้างลำดับการสับเปลี่ยน ผลลัพธ์ที่ได้จะเป็นลำดับการสับเปลี่ยน โดยแต่ละบรรทัดแสดงถึงสถานะของ LFSR หลังจากแต่ละรอบสัญญาณนาฬิกา

หมายเหตุ: สัญญาณพัลส์ไม่สม่ำเสมอ

Related articles