nul
Pariteitsbit

Pariteitsbit

3 maart 2023

Fouten in binaire communicatie verwijzen naar situaties waarin het ontvangen bericht afwijkt van het bericht dat bedoeld was om te worden verzonden. Dit kan om verschillende redenen gebeuren, zoals slechte signaalintegriteit, ruis of systeemstoringen. De fouten kunnen leiden tot onjuiste interpretaties van het bericht en de nauwkeurigheid en betrouwbaarheid van een digitale signaalcommunicatie beïnvloeden. Een oplossing om fouten in binaire communicatie te verminderen is het gebruik van een pariteitsbit.

Voorbeeld van een fout in de gegevensoverdracht veroorzaakt door ruis.


Wat is een pariteitsbit?

Een pariteitsbit, ook wel pariteitscontrole genoemd, is een extra bit die wordt toegevoegd aan een reeks binaire databits met het oog op foutdetectie tijdens gegevensoverdracht. De pariteitsbit wordt gebruikt om te controleren of het aantal 1-en in een gegevensreeks even of oneven is, wat resulteert in twee soorten: even pariteitsbit en oneven pariteitsbit.

Binaire fouten

Een fout in binaire communicatie treedt op wanneer een 1 onverwacht verandert in een 0 of vice versa.

Meer informatie: Standaard voor seriële datacommunicatie RS232

Gelijkwaardigheid

In een even pariteitssysteem wordt het pariteitsbit ingesteld op 1 of 0, zodat het totale aantal 1-bits, inclusief het pariteitsbit, een even getal wordt.

Hoe bereken je even pariteit?

Als het aantal 1-en in de gegevensreeks oneven is, wordt het pariteitsbit op 1 gezet om ervoor te zorgen dat het totale aantal 1-en, inclusief het pariteitsbit, even is. Als het aantal 1-en in de gegevensreeks al even is, wordt het pariteitsbit op 0 gezet.

Oneven pariteit

In een oneven pariteitssysteem wordt de pariteitsbit ingesteld op 1 of 0, zodat het totale aantal 1-bits, inclusief de pariteitsbit, een oneven getal wordt.

Hoe oneven pariteit berekenen

Als het aantal 1-en in de gegevensreeks even is, wordt het pariteitsbit op 1 gezet om ervoor te zorgen dat het totale aantal 1-en, inclusief het pariteitsbit, oneven is. Als het aantal 1-en in de gegevensreeks al oneven is, wordt het pariteitsbit op 0 gezet.

Voorbeelden van pariteitsbits

Datastring van 7 bits Aantal 1-bits 8 bits inclusief de pariteitsbit
even pariteit oneven pariteit
0000000 0 00000000 00000001
1100001 3 11000011 11000010
1100101 4 11001010 11001011
1111111 7 11111111 11111110

Pariteitsbitcontrole wordt vaak gebruikt bij de overdracht van ASCII-tekens, waarbij het 8e bit is gereserveerd als pariteitsbit, terwijl de overige 7 bits worden gebruikt om het teken te coderen.


Hoe pariteitsbits werken

Voordat gegevens worden verzonden, moeten zowel de zender als de ontvanger overeenstemming bereiken over oneven of even pariteit. Voordat elk gegevenspakket (reeks bits) wordt verzonden, berekent de verzender de pariteitsbit (0 of 1) om ervoor te zorgen dat deze overeenkomt met de overeengekomen pariteit (oneven of even). Bij ontvangst controleert de ontvanger de pariteit van de ontvangen gegevens aan de hand van de verwachte pariteit. Als deze niet overeenkomen, duidt dit op een fout en kunnen de gegevens worden verwijderd of gecorrigeerd door een nieuwe verzending aan te vragen.

Het pariteitsbit wordt alleen gebruikt om fouten op te sporen, maar het kan geen fouten herstellen omdat het niet kan vaststellen welk bit precies beschadigd is. De enige manier om fouten te herstellen is dus om de hele gegevensreeks te verwijderen en de afzender te vragen de gegevens opnieuw te verzenden.

Pariteitsbitpositie

Hoewel er geen vaste regel is voor de positie van het pariteitsbit, wordt het volgens afspraak meestal aan het einde van het binaire stringbericht toegevoegd.


Foutdetectie

Pariteitscontrole bij de ontvanger kan fouten opsporen door de pariteit van het ontvangen signaal te vergelijken met de verwachte pariteit. Als er een discrepantie is, kan de ontvanger de zender vragen om een hertransmissie.

Het detecteren of het aantal 1-en in een binaire gegevensreeks even of oneven is, kan worden berekend met de modulo-operator. Modulo, of "mod", is een wiskundige bewerking die de rest vindt wanneer een geheel getal door een ander geheel getal wordt gedeeld. De modulo-bewerking wordt weergegeven met het symbool %.

Met behulp van Modulo kunnen we bepalen of een getal even is als het zonder rest door 2 kan worden gedeeld. Als een getal daarentegen een rest oplevert wanneer het door 2 wordt gedeeld, wordt het als oneven beschouwd.

Het volgende voorbeeld van een C-programma illustreert het proces van het controleren van pariteit met behulp van modulo:

#include 
int main() {
    unsigned char byte;
    int num_ones = 0;
    printf("Enter a byte (in decimal): ");
    scanf("%hhu", &byte);
    // Count the number of 1s in the byte
    for (int i = 0; i < 8; i++) {
        if ((byte >> i) & 1) {
            num_ones++;
        }
    }
    // Detect parity with mod 2 and print the parity type. 
    if (num_ones % 2 == 0) { //
        printf("Even parity\n");
    } else {
        printf("Odd parity\n");
    }
    return 0;
}

Het programma begint met het inlezen van een byte van de gebruiker. Vervolgens wordt met behulp van een lus het aantal 1-bits in de byte geteld. Dit gebeurt door de byte naar rechts te verschuiven met elke bitpositie (0 tot en met 7) en te controleren of de resulterende bit 1 is. Als dat het geval is, wordt het aantal 1-bits verhoogd. Ten slotte controleert het programma of het aantal 1-bits even of oneven is en geeft het de juiste melding weer.

Merk op dat het programma een unsigned char gebruikt om de byte op te slaan, een 8-bits geheel getal dat waarden tussen 0 en 255 kan bevatten. De %hhu-formaatspecificatie wordt gebruikt met scanf() om een bytewaarde van de gebruiker in te lezen.


Hoe een pariteitsbit toevoegen

Laten we eens kijken naar een voorbeeld waarbij we de gegevensreeks 1100101 moeten verzenden. Eerst tellen we het aantal 1-en in de gegevensreeks en bepalen we of het aantal even of oneven is met behulp van de mod-operator met 2 als deler:

1100101
(1+1+0+0+1+0+1) mod 2
4 mod 2 = 0

Aangezien 4 gedeeld door 2 geen rest heeft, is het resultaat 0, wat aangeeft dat we een even aantal 1-en hebben. Als we een even pariteit zijn overeengekomen, voegen we een "0" toe als pariteitsbit aan het einde van het bericht, wat resulteert in 11001010, dat nu kan worden verzonden. Als we daarentegen een oneven pariteit zijn overeengekomen, keren we het pariteitsbit om en voegen we in plaats daarvan een "1" toe, wat resulteert in 11001011 als het uiteindelijke bericht dat kan worden verzonden.


Gebruik van pariteitsbits

  • Foutdetectie: Een van de belangrijkste toepassingen van pariteitsbits is het detecteren van fouten tijdens gegevensoverdracht.
  • Geheugenopslag: Pariteitsbits worden ook gebruikt in computergeheugensystemen om fouten op te sporen wanneer gegevens in het geheugen worden opgeslagen. Wanneer gegevens in het geheugen worden opgeslagen, bestaat er altijd een risico op fouten als gevolg van verschillende factoren, zoals elektromagnetische interferentie, hardwarefouten, enz.
  • RAID-systemen: Pariteitsbits worden ook gebruikt in Redundant Array of Inexpensive Disks (RAID). RAID kan ook worden aangeduid als "Redundant Array of Independent Drives". RAID-systemen gebruiken meerdere schijven om gegevens redundant op te slaan en te beschermen tegen schijfstoringen. Ze gebruiken pariteit voor fouttolerantie.

Meer informatie: EMI (elektromagnetische interferentie)


Conclusie

Kortom, het pariteitsbit is een simpel maar effectief mechanisme om fouten op te sporen, dat kan helpen om de nauwkeurigheid van opslag en gegevensoverdracht te garanderen. Hoewel pariteitsbits niet waterdicht zijn en maar sommige fouten kunnen opsporen, blijven ze nuttig voor veel toepassingen in binaire datacommunicatie.