Κεφάλαιο 08

Ψηφίο Ισοτιμίας (Parity Bit)

Το ψηφίο ισοτιμίας είναι το πιο απλό σύστημα ανίχνευσης σφαλμάτων: ένα επιπλέον bit που προστίθεται σε κάθε μήνυμα ώστε ο δέκτης να μπορεί να εντοπίσει αν ένα bit αλλοιώθηκε κατά τη μετάδοση.

01

Γιατί χρειαζόμαστε parity;

Όταν στέλνεις δεδομένα μέσω καλωδίου ή ασύρματα, μπορεί να συμβούν λάθη: ηλεκτρομαγνητικός θόρυβος, παρεμβολές, παροδικές αλλοιώσεις. Ένα bit μπορεί να αλλάξει από 0 σε 1 (ή αντίστροφα), και ο δέκτης δεν θα το ξέρει.

Το ψηφίο ισοτιμίας προστίθεται στο μήνυμα ώστε ο συνολικός αριθμός των 1 να ακολουθεί έναν προκαθορισμένο κανόνα. Αν ο δέκτης δει ότι ο κανόνας παραβιάζεται, ξέρει ότι κάτι πήγε στραβά.

02

Ο Ορισμός

Το ψηφίο ισοτιμίας (parity bit) είναι ένα επιπρόσθετο bit στον κώδικα δεδομένων, έτσι ώστε ο συνολικός αριθμός των 1 (μαζί με το parity bit) να είναι πάντοτε:

  • ζυγός αριθμός (even parity), ή
  • μονός αριθμός (odd parity)
💡 Ο κανόνας XOR

Το parity bit υπολογίζεται με XOR (αποκλειστικό ή) όλων των bits του δεδομένου. Το XOR είναι 1 όταν ο αριθμός των 1 είναι περιττός.

03

Άρτιο vs Περιττό Parity

Γεννήτρια Άρτιας Ισοτιμίας

P = A₃ ⊕ A₂ ⊕ A₁ ⊕ A₀

Ο αριθμός των 1 (μαζί με το P) θα είναι πάντα ζυγός. Αν τα bits έχουν περιττό πλήθος 1, το P=1 (για να γίνει το σύνολο ζυγό). Αν τα bits έχουν ζυγό πλήθος 1, το P=0.

Γεννήτρια Περιττής Ισοτιμίας

P = A₃ ⊕ A₂ ⊕ A₁ ⊕ A₀

Στην περιττή ισοτιμία (odd parity), το συμπλήρωμα του παραπάνω αποτελέσματος. Δηλαδή ο αριθμός των 1 (μαζί με το P) θα είναι πάντα περιττός.

Παράδειγμα

Για το δεκαδικό 5 (BCD = 0101):

  • Αριθμός 1 στα bits: 2 (ζυγός)
  • Even parity: P = 0 (γιατί ήδη είναι ζυγός)
  • Odd parity: P = 1 (για να γίνει περιττός)
🎮

Διαδραστικό: Parity Generator

Φτιάξε τον κώδικα

Δες πώς υπολογίζεται το P

Πάτα τα bits A₃A₂A₁A₀ για να φτιάξεις έναν 4-bit αριθμό. Επίλεξε άρτια ή περιττή ισοτιμία και δες ζωντανά να υπολογίζεται το parity bit P. Το βήμα-βήμα XOR εξηγεί κάθε υπολογισμό.

Δεδομένα (A)

Αριθμός των 1
0
Δεκαδικός
0
Parity bit P
0
Σύνολο 1 με P
0

Ολόκληρος κώδικας προς μετάδοση

Υπολογισμός XOR:
04

Έλεγχος Ισοτιμίας

Στον δέκτη, ένα κύκλωμα ελέγχου εφαρμόζει XOR σε όλα τα bits μαζί με το parity:

C = A₃ ⊕ A₂ ⊕ A₁ ⊕ A₀ ⊕ P
  • Για άρτια ισοτιμία: C = 0 σημαίνει OK, C = 1 σημαίνει σφάλμα.
  • Για περιττή ισοτιμία: C = 1 σημαίνει OK, C = 0 σημαίνει σφάλμα.
🎮

Διαδραστικό: Parity Checker (Πομπός → Δέκτης)

Σιμουλάρισε μετάδοση

Παίξε τον ρόλο του θορύβου

Ο πομπός στέλνει 4-bit δεδομένα + parity. Πάτα ένα bit στον δίαυλο μετάδοσης για να προσομοιώσεις θόρυβο που το αλλάζει! Δες αν ο δέκτης θα ανιχνεύσει το σφάλμα.

📡 Πομπός — Αποστολή

↓ Δίαυλος μετάδοσης (πάτα τα bits για να εισάγεις θόρυβο!) ↓

🔌 Δίαυλος (Channel)

📥 Δέκτης — Λήψη & Έλεγχος

XOR (C)
0
Αποτέλεσμα
✅ OK
05

Πίνακας Parity για BCD

Ο παρακάτω πίνακας δείχνει το parity bit για όλους τους αριθμούς 0-15 σε δυαδική μορφή. Πατώντας έναν αριθμό, μπορείς να δεις τον υπολογισμό.

🎮

Διαδραστικό: Πίνακας Parity 0-15

Πάτα έναν αριθμό

Δες τον υπολογισμό για κάθε τιμή

Πάτα οποιοδήποτε κελί στον πίνακα για να δεις τον αναλυτικό υπολογισμό του parity bit για αυτή την τιμή.

Πάτα έναν αριθμό για να δεις τον υπολογισμό...
06

Περιορισμοί & Εξελίξεις

⚠️ Σημαντικός Περιορισμός

Το parity bit ανιχνεύει μόνο μονό αριθμό σφαλμάτων (1, 3, 5...). Αν αλλοιωθούν 2 bits ταυτόχρονα, ο έλεγχος ισοτιμίας θα δείξει "OK" ενώ τα δεδομένα είναι λάθος! Επίσης, δεν μπορεί να διορθώσει το σφάλμα, μόνο να το ανιχνεύσει.

Πιο εξελιγμένα συστήματα:

  • Hamming Code: Μπορεί να ανιχνεύσει και να διορθώσει σφάλματα 1 bit.
  • CRC (Cyclic Redundancy Check): Πιο ισχυρή ανίχνευση πολλαπλών σφαλμάτων.
  • Reed-Solomon: Διόρθωση πολλαπλών σφαλμάτων (CDs, DVDs, QR codes).

Πού χρησιμοποιείται το parity:

  • Σειριακή επικοινωνία (RS-232, UART)
  • Μνήμες RAM (parity RAM, ECC RAM)
  • Σκληροί δίσκοι (RAID 5)
  • SCSI και άλλα παλιότερα πρωτόκολλα
07

📄 Διαφάνειες & Σημειώσεις

📚 Οι διαφάνειες και χειρόγραφες σημειώσεις είναι διαθέσιμες στην τάξη από την/τον εκπαιδευτικό σου.