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 reeks van getallen te genereren. De lengte van de gegenereerde reeks 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 reeks is dat elk getal maar één keer voorkomt. Aan het einde van de reeks wordt er teruggesprongen naar het begin.
Toepassingen
- Een LFSR kan worden gebruikt als een generator van pseudotoevalsgetallen, maar heeft het nadeel dat elk getal in de reeks voorspeld kan worden als de terugkoppelcombinatie bekend is. Voor sommige toepassing echter is dit juist een belangrijk voordeel.
- Zo gebruikt gps meerdere 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 zeer gering zendvermogen (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 CRCs (en:Cyclic Redudancy Check) berekenen. Door de seriële natuur van een LFSR is dit een efficiënte manier om een CRC te berekenen in bijvoorbeeld Ethernet.
- Vroeger werden LFSR's ook gebruikt in cryptografie, maar door de deterministische natuur is de code makkelijk te kraken.
- Een LFSR kan ook dienen als een teller, omdat de reeks exact bekend is en elk getal slechts 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.
- Digitale communicatie systemen gebruiken LFSRs om de inkomende data te bewerken om op die manier lange reeksen van dezelfde waarde te onderdrukken.
Voorbeeld van een LFSR
Dit LFSR geeft de volgende reeks:
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 (power-up) minstens één flipflop gezet is (een 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 injecteert.
Plaats van de XOR-bewerking
De XOR-poort kan ook geplaatst worden tussen de flipflops:
Dit is een zgn. Galoisconfiguratie, die gemakkelijker in software te implementeren is.