Linear feedback shift register

Een linear feedback shift register, afgekort LFSR, is een schuifregister dat als belangrijkste kenmerk heeft dat bepaalde uitgangen via een xor-bewerking teruggekoppeld worden naar de ingang van het schuifregister. Het schuifregister is op deze manier in staat een rij bits te genereren. De lengte van de gegenereerde rij hangt af van welke uitgangen teruggekoppeld zijn, en is maximaal , met de lengte van het schuifregister (een maximum-lengtereeks), of als met extra logica nul gedetecteerd wordt. Een belangrijk kenmerk van de rij is dat elk getal maar één keer voorkomt. De bits in het schuifregister worden in ieder geval vanaf een bepaalde combinatie cyclisch doorlopen.

Toepassingen bewerken

  • Een LFSR kan worden gebruikt als een generator van pseudotoevalsgetallen, maar heeft het nadeel dat elk getal in de rij voorspeld kan worden als de terugkoppelcombinatie bekend is. Voor sommige toepassing echter is dit juist een belangrijk voordeel.
    • Zo gebruikt gps verschillende LFSR's om door middel van "spread-spectrum" modulatie alle satellieten op dezelfde frequentieband uit te laten zenden maar toch in de ontvanger iedere satelliet apart te kunnen identificeren. Bijkomende voordelen zijn dat met een gering zendvermogen, van 50 W, toch een betrouwbare ontvangst verkregen kan worden, en dat exact bepaald kan worden hoelang het signaal erover deed om van de zender naar ontvanger te komen.
  • Een LFSR kan ook cyclic redundancy checks (CRC's) berekenen. Door de seriële natuur van een LFSR is dit een efficiënte manier om een cyclic redundancy check te berekenen in bijvoorbeeld Ethernet.
  • Vroeger werden LFSR's ook gebruikt in cryptografie, maar door de deterministische natuur is de code gemakkelijk te kraken.
  • Een LFSR kan ook dienen als een teller, omdat de rij exact bekend is en elk getal maar een enkele keer voorkomt. Bij sommige toepassingen is de exacte volgorde niet belangrijk maar de snelheid waarop de teller kan werken wel. Een LFSR-teller is sneller dan een normale binaire teller omdat er weinig extra logica nodig is.
  • Systemen voor digitale communicatie gebruiken LFSRs om de inkomende gegevens te bewerken om op die manier lange rijen van dezelfde waarde te onderdrukken.

Voorbeeld bewerken

 

Dit linear feedback shift register geeft de volgende rij:

Index Registerinhoud decimaal Registerinhoud binair
0 7 111
1 6 011
2 5 101
3 2 010
4 4 001
5 1 100
6 3 110

Het is belangrijk dat er bij het opstarten minstens een flipflop gezet is, zodat het register minstens één 1 bevat. Een meer geavanceerde schakeling heeft hiervoor extra logica die de toestand met allemaal nullen kan detecteren en in dat geval een extra 1 invoegt.

Plaats van de XOR-bewerking bewerken

De XOR-poort kan ook geplaatst worden 'tussen' de flipflops:

 

Dit is een galoisconfiguratie, die gemakkelijker in software te implementeren is.