Konstruktion och undersökning av effektsnåla slumptalsgeneratorer Examensarbete utfört i elektroniksystem av Ulf Källenäs LiTH-ISY-EX-ET-0250-2002 Linköping 2002
Konstruktion och undersökning av effektsnåla slumptalsgeneratorer Examensarbete utfört i Elektroniksystem vid Linköpings tekniska högskola av Ulf Källenäs LiTH-ISY-EX-ET-0250-2002 Handledare: Oscar Gustafsson Examinator: Mark Vesterbacka Linköping 2002-10-31
Avdelning, Institution Division, Department Institutionen för Systemteknik 581 83 LINKÖPING Datum Date 2002-11-21 Språk Language X Svenska/Swedish Engelska/English Rapporttyp Report category Licentiatavhandling X Examensarbete C-uppsats D-uppsats Övrig rapport ISBN ISRN LITH-ISY-EX-ET-0250-2002 Serietitel och serienummer Title of series, numbering ISSN URL för elektronisk version http://www.ep.liu.se/exjobb/isy/2002/250/ Titel Title Författare Author Konstruktion och undersökning av effektsnåla slumptalsgeneratorer Design and examination of lowpower randombit generators Ulf Källenäs Sammanfattning Abstract Minskad effektförbrukning har blivit mer och mer intressant i takt med att fler produkter blir mobila. I artikeln Parallel Implementation of Linear Feedback Shift Registers for Low Power Applications, beskriver Menahem Lowy en metod för att konstruera slumptalsgeneratorer. Dessa är tänkta att vara effektsnålare än en vanlig enkel slumptalsgenerator, med återkopplat skiftregister. I det här examensarbetet har sex slumptalsgeneratorer konstruerats i VHDL. Två är baserade på Lowy s metod och två är parallella varianter av dessa. Dessutom har en seriell slumptalsgenerator med återkopplat skiftregister och en parallell variant konstruerats som jämförelse. Dessa slumptalsgeneratorer har simulerats med avseende på effektförbrukningen. Det visar sig att den bästa slumptalsgeneratorn, räknat i effekt per bit, är den parallella varianten av slumptalsgeneratorn med återkopplat skiftregister. Reduced power consumption have become more and more of interest as more products are becoming mobile. In the article Implementation of Linear Feedback Shift Registers for Low Power Applications, Menahem Lowy describes a method of designing randombit-generators. In this project, six random bit-generators have been designed in VHDL. Two of these are based on Lowy s method, and two are parallel variants of these. In addition, a serial feedback shift register and a parallel variant of it, have been designed for comparison. These randombit- generators have then been simulated with respect to the power consumption. It turnes out that the best randombitgenerator, considering the effect per bit, is the parallel variant of the feedback shift register. Nyckelord Keyword slumptal, slumptalsgenerator, effekt
Innehållsförteckning 1 Inledning... 1 1.1 Bakgrund... 1 1.2 Syfte... 1 1.3 Utförande... 2 2 Funktion hos slumptalsgeneratorerna... 3 2.1 Shift random (SR)... 5 2.2 Parallel shift random (PSR)... 6 2.3 Muxed random (MR)... 7 2.4 Parallel muxed random (PMR)... 8 2.5 Xor mux random (XMR)... 9 2.6 Parallel xor mux random (PXMR)... 9 3 Simulering... 11 3.1 Syntes... 11 3.2 Simuleringsresultat... 12 4 Slutsats... 20 5 Referenser... 21 Bilaga 1... 22 Bilaga 2... 23 Bilaga 3... 24 Bilaga 4... 25 Bilaga 5... 26 Bilaga 6... 27
1 Inledning 1.1 Bakgrund Pseudoslumptalsgeneratorer kan användas till flera olika ändamål. Ett stort användningsområde är att generera testvärden till olika applikationer, t.ex. digitala och analoga filter. Ansluter man en D/A omvandlare får man vitt brus upp till en viss frekvens [1]. Just det att det inte är äkta slumptal, utan en bestämd sekvens av bitar gör den lämplig till andra funktioner. T.ex. till att avgöra hur bra en transmissionsledning är. Man skickar iväg en sekvens pseudoslumptal och kontrollerar i mottagarändan hur väl den mottagna sekvensen stämmer överens med det skickade. Ett annat användningsområde då man använder denna egenskap är vid avståndskodning för radar. Ekot jämförs med den skickade signalen och man kan därigenom bestämma avståndet. 1.2 Syfte I sin enklaste form består en slumptalsgenerator av ett återkopplat skiftregister. Det finns dock andra metoder tänkta att vara effektsnålare. Syftet med det här arbetet var att konstruera sådana slumptalsgeneratorer och jämföra dem med den enkla med återkopplat skiftregister. De olika metoderna att konstruera slumptalsgeneratorerna på ska kunna användas i VLSIkonstruktion, varför detta också måste beaktas. Dessutom skulle en effektmodell utvecklas, en funktion av storleken på registret i slumptalsgeneratorn ska alltså anpassas till den uppmätta effekten. I [2] beskriver Menahem Lowy en metod för att konstruera slumptalsgeneratorer som använts i detta arbete. Lowy kallar metoden för parallell implementering, men detta kommer jag istället kalla för multiplexad implementering eftersom det bättre beskriver funktionen. Dessutom kommer uttrycket parallell att användas för att beskriva slumptalsgeneratorer som ger flera utbitar per klockcykel. 1
1.3 Utförande Alla SG (slumptalsgeneratorer) har implementerats i VHDL. För att underlätta simuleringen av SG för olika längder på registren har de kodats generellt. Med det menas att man genom att ändra på två variabler i koden kan ändra längden på SG. Det är även möjligt att använda dessa konstruktioner som komponenter i andra implementeringar genom att använda generics. Simulering för att kontrollera funktionen utfördes i Vsim. Vsim är ett program med vilket man kan simulera kompilerad VHDLkod. För att kontrollera funktionen på så låg nivå som möjligt, genererades VHDL-kod i primitives, alltså på grindnivå, av programmet Leonardo. Leonardo är ett syntesverktyg från Mentor Graphics. Denna kod simulerades sedan också. Nanosim är ett program som simulerar strömförbrukningen hos en konstruktion. Detta program behöver i princip ha två filer som indata, nämligen en Spice-nätlista och en stimuli-fil. Stimuli-filen är en fil med insignalerna till konstruktionen specificerade under en viss tid. För slumptalsgeneratorerna gäller att de enda insignalerna är reset och clk. För att erhålla en Spice-nätlista måste man gå igenom några steg: 1. VHDL-koden syntetiseras i Leonardo. Därifrån kan man få ut en nätlista i verilog-format. 2. Verilog-filen läses sedan in i Cadence och därur kan man sedan skapa en Spice-nätlista. 3. Spice-nätlistan måste sedan justeras en del för hand för att anpassa den till Nanosim. För att få fram stimuli-filen använde jag Vsim och resultatet kom ut som vcd-fil. Vcd-filen innehåller tidpunkter och värden vid dessa tidpunkterna för insignalerna. T.ex. vid tid 100 är clk = 1 vid tid 200 är clk = 0 osv. 2
2 Funktion hos slumptalsgeneratorerna Den enklaste varianten av SG består av ett klockat skiftregister och en xor-grind. Nedan i figur 1 visas en SG med ett 5-bitars register. Den 3:e och 5:e biten xor:as. Resultatet är slumptalsbiten som också skiftas in på position 1 i registret. Den här metoden ger ingen äkta slumptalsgenerering [1]. Samma sekvens av tillstånd i registret, och därför också samma sekvens av slumptalsbitar, repeteras efter ett tag. Längden av sekvensen är beroende av längden på registret och även av vilka positioner xorgrinden är kopplad till. Dessa positioner kommer hädanefter kallas för tappar. Positionen längst till höger kallas tapp 1 och den till vänster tapp 2. Den maximala längden av sekvensen K för längden m på registret är samma som antalet tillstånd registret kan anta, minus 1, alltså: K = 2 m 1 Tillståndet med bara nollor i registret får inte förekomma eftersom SG då kommer att fastna i det tillståndet. Initierar man registret med något annat än nolltillståndet, så kommer det inte heller att hända. Figur 1 Enkel slumptalsgenerator En tabell med vilka positioner som tapp 1 och tapp 2 ska vara på, för att få ut maximal längd på sekvensen för olika längder på registret, finns i tabell 1. Vissa längder kräver mer än två tappar för maximal sekvenslängd. Dessa har inte tagits med. Tabellen är tagen ur [1]. 3
Tapp 1 Tapp 2 Sekvenslängd 3 2 7 4 3 15 5 3 31 6 5 63 7 6 127 9 5 511 10 7 1 023 11 9 2 047 15 14 32 767 17 14 131 071 18 11 262 143 20 17 1 048 575 21 19 2 097 151 22 21 4 194 303 23 18 8 388 607 25 22 33 554 431 28 25 268 435 455 29 27 536 870 911 31 28 2 147 483 647 33 20 8 589 934 591 35 33 34 359 738 367 36 25 68 719 476 735 39 35 549 755 813 887 Tabell 1 Tapp-positioner och sekvenslängder Sex stycken SG har konstruerats: tre enbitars som ger en slumptalsbit varje klockcykel och tre parallella som ger flera slumptalsbitar per klockcykel. Tanken bakom att göra parallella SG, är att om man får ut flera bitar per klockcykel så behöver man inte klocka med lika hög frekvens som för en enbitars SG. Lyckas man minska klockfrekvensen, minskar antalet switchningar och då också effektförbrukningen enligt formeln nedan. P= f clk C L V DD 2 T.ex. kan en sjubitars parallel SG få ut sex bitar per klockcykel; alltså kan den klockas med sex gånger lägre klockfrekvens. Maximalt antal bitar som man kan få ut parallellt bestäms av tapp 2. Dess position är lika med så många bitar. Det kommer att visas för den enskilda parallella SG. 4
2.1 Shift random (SR) Shift random är den slumptalsgenerator som helt bygger på den enkla strukturen som beskrivs ovan. Se figur 2, här visas åter ett 5 bitars SR. Figur 2 Ett 5 bitars SR Beräkningen går till enligt stegen i tabell 2. Klockcykel Registret Beräkning 1 a b c d e e c = t 2 t a b c d d b = u 3 u t a b c c a = v 4 v u t a b b t = x Tabell 2 Beräkningsgång för ett 5 bitars SR Biten i registret på position 5 och 3 xor:as och resultatet skiftas in i på position 1 samtidigt som biten på position 5 skiftas ut. Registret består, som i de andra slumptalsgeneratorerna, av ett antal d-vippor. Schemat för 7 bitars shift random genererat av Leonardo finns i bilaga 1. Insignaler är reset och clk. Reset ettställer hela registret. Utsignaler är random_bit och state_title. State_title kan användas om man vill använda slumptalsgeneratorn som en tillståndsmaskin. Det finns också en komparator som kollar om registret av en händelse har blivit nollställt, då kommer registret att ettställas. 5
2.2 Parallel shift random (PSR) Parallel shift random är den parallella varianten av shift random. Det maximala antal bitar man kan få ut beror på vilken position tapp 2 är, se tabell 1. Tapp 2 i tabell 1 syftar i det här fallet till vilken position tapp 2 för den första xor-grinden (den längst till höger) har. Betrakta tabell 2. I klockcykel 1, 2 och 3 gör man beräkningar med värden man känner till redan från början. Därför kan man sätta in ytterligare 2 xor-grindar och utföra dessa beräkningar redan under klockcykel 1. Man får alltså ut 3 slumptalsbitar parallellt, lika många som tapp 2:s position. Detta syns tydligt i figur 3 nedan. Man ser att man inte kan använda fler xor-grindar eftersom den tredje xor-grinden använder sig av position 1 i registret. Figur 3 En 5 bitars PSR För tydlighetens skull visas inte hur återkopplingen i bilden, men det är rätt uppenbart. Resultatet från xor-grindarna kommer att läggas in på samma xor-grinds tapp 2-position. De gamla bitarna kommer att skiftas tre steg. Motsvarande tabell som för beräkningen av en 5 bitars SR blir enligt följande: 6
Klockcykel Registret Beräkning 1 a b c d e e c = t d b = u c a = v 2 v u t a b b t = x a u = y t v = z 3 z y x v u... Tabell 3 Beräkningsgång för ett 5 bitars PSR Kretsschemat av PSR genererat av Leonardo finns i bilaga 2. 2.3 Muxed random (MR) Muxed random är baserad på artikeln [2]. Tanken är att istället för att låta innehållet i registret skiftas fram till tapparna så låter man tapparna flytta sig. Innehållet i registret hålls då konstant, förutom de positioner som uppdateras av slumptalsbiten. I figur 4 Figur 4 Fyra klockcykler hos MR 7
visas principen. Tapparna flyttas åt vänster hela tiden och därmed kommer samma beräkning som i SR att utföras. Observera att då tapp 2 nått position 1 kommer den att fortsätta med position 5. Nackdelen med den här strukturen är att det krävs logik för att hålla reda på tapparna. Strukturen syns i bilaga 3. Xor grindens tappar väljs av varsin multiplexer som styrs av en räknare som kallas tap_control. Återkopplingen kontrolleras av decoder_4 som avkodar värdet från tap_control och aktiverar den vippa som slumptalsbiten ska lagras i. Fördelen är att färre d-vippor ändrar data per klockcykel. En d- vippa som behåller sitt data förbrukar mindre effekt än den som byter. I artikeln förespråkar Lowy att man ska ha speciella klockor till varje d-vippa, så att d-vipporna bara klockas när de ska uppdateras. Detta skulle minska effektförbrukningen ännu mera. Det kan dock vara svårt att implementera i VLSI varför har jag valt att klocka alla vippor med samma klocka. 2.4 Parallel muxed random (PMR) Den parallella varianten använder sig av, som synes i figur 5 nedan, en hel del logik för att välja bitar, beräkna och återkoppla. Kretsschemat för denna variant finns i bilaga 4. Figur 5 Princip för 5 bitars PMR 8
2.5 Xor mux random (XMR) Med tanke på den stora mängden logik som behövdes i PMR är detta ett försök att minska denna. Man sätter helt enkelt xor-grindar på alla positioner som ska beräknas. Sedan väljer man det värde som ska beräknas en viss klockcykel. Namnet kommer av att xorgrindarna kommer före multiplexern. XMR är enbitsvarianten. Principen för XMR syns i figur 6 nedan. Schemat finns i bilaga 5. Figur 6 Princip för 5 bitars XMR 2.6 Parallel xor mux random (PXMR) Det är här i PXMR, som är den parallella varianten av XMR, som xor-mux tanken kommer till sin rätt. Jämfört med PMR kräver PXMR mycket mindre logik vilket kan man se i principschemat i figur 7. Schemat finns i bilaga 6. 9
10 Figur 7 Princip för 5 bitars PXMR
3 Simulering 3.1 Syntes Syntesen utfördes av Leonardo i AMS 0.35 µm teknologi. Leonardo ger den maximala klockfrekvensen som konstruktionerna kan köras i. Se tabell 4 nedan. Tabellen visar de maximala klockfrekvenserna för slumptalsgeneratorerna och för olika längder på dessa. Man kan se att de snabbaste slumptalsgeneratorerna är SR och PSR. Betraktar man de olika slumptalsgeneratorernas kretsscheman (se bilagor 1 till 6) ser man också att det är dessa som har minst logik. 5 7 9 11 15 18 20 23 SR 428,2 401,1 323,7 328,7 303,6 259,4 412,2 391,0 PSR 525,0 545,2 549,1 540,0 520,2 540,0 540,0 547,8 MR 228,7 106,1 PMR 108,8 46,8 XMR 283,6 232,2 217,3 206,6 171,0 149,2 132,8 136,3 PXMR 181,4 128,7 80,7 74,3 79,8 56,3 51,2 47,5 Tabell 4 Maximala klockfrekvenser i MHz Tabell 5 visar maximalt antal utbitar per sekund för de olika slumptalsgeneratorerna. 5 7 9 11 15 18 20 23 SR 428,2 401,1 323,7 328,7 303,6 259,4 412,2 391,0 PSR 1575 3271 2746 4860 7283 5940 9180 9860 MR 228,7 106,1 PMR 652,8 795,6 XMR 283,6 232,2 217,3 206,6 171,0 149,2 132,8 136,3 PXMR 544,2 772,2 403,5 668,7 1117 619,3 870,4 855,0 Tabell 5 Maximala bithastigheter i bit/s 11
3.2 Simuleringsresultat Alla konstruktioner simulerades först i längderna 7 och 20. Detta gjordes för att sedan kunna välja ut de effektsnålaste att utföra ytterligare simuleringar på. För att kunna jämföra resultaten mellan enkla och parallella SG, redovisas effekterna i W/bit. Alla resultat redovisas för en frekvens på 40 MHz. Frekvensen är vald efter maxfrekvensen på en 23 bitars PXMR avrundat nedåt. Positionen på tapp 2, anger som nämnts tidigare, antalet parallella utbitar. I tabell 1 kan man se att det inte alltid är så att man erhåller fler utbitar för ett längre register. T.ex. så har en 7 bitars SG 6 bitar ut medan en 9 bitars bara har 5. Detta gör att när man undersöker de parallella SG:s effekt per bit så kommer den att variera kraftigt. För att se trenden för dessa presenteras därför mätvärdena direkt, utan att räkna om dem till effekt per bit, i avsnitt 3.2.2. Man kan då se tydliga trender och även anpassa funktioner efter dessa värden. 3.2.1 Jämförelse av SG Utifrån resultaten av simuleringarna på 7 och 20 bitar valdes de tre bästa SG ut plus SR som referens. I figur 8 visas resultatet. 1400 1200 1000 SR XMR PSR PXMR Effekt i uw 800 600 400 200 0 4 6 8 10 12 14 16 18 20 22 24 Registerlängd Figur 8 Effektförbrukning per bit för slumptalsgeneratorerna 12
Figuren visar effekt per bit. Här syns tydligt att den överlägset bästa SG är PSR. Eftersom figuren ovan inte visar PSR så bra p.g.a. skalan, visas den separat i figur 9 nedan. Man kan se att de båda enbitars SG:s effekt ökar i stort sett linjärt med registerlängden, speciellt SR. Även XMR ökar någorlunda linjärt. För dessa kan man alltså anpassa en linjär funktion. Man kan notera ett något märkligt resultat för en 23 bitars XMR, där denna drar lägre effekt än de två föregående. Vad detta beror på är svårt att säga, kanske lyckades Leonardo med att optimera denna bättre. I fallet med PXMR kan man se en svagt ökande trend även om det förekommer stora lokala variationer. PSR varierar däremot så mycket att det inte är lätt att se någon trend. Möjligen skulle man kunna säga att effektförbrukningen per bit håller sig på en relativt jämn nivå för ökande registerlängd. De båda parallella SG varierar så pass mycket att det inte är någon större idé att göra någon approximation av effekten för dessa. I avsnitt 3.2.2 visas däremot approximationer för dessa och de två enbitars SG, men då med den direkta effektförbrukningen, inte per bit. 80 75 70 Effekt i uw 65 60 55 50 4 6 8 10 12 14 16 18 20 22 24 Registerlängd Figur 9 Effektförbrukning per bit för PSR 13
3.2.2 Enskilda SG För att erhålla en modell av de olika SG approximerades funktioner till mätvärdena. För detta ändamål användes minsta kvadratmetoden. Mätvärdena för SR, PSR och XMR såg ut att vara linjära. Därför ansattes ett linjärt polynom till dessa. För PXMR passade däremot ett andragradspolynom bättre. Principen för beräkningarna visas nedan för ett andragradspolynom. Formeln som ansätts är: f ( x) = C x 2 0 + C1( x 14) + C2 ( 14) Talet 14 är medelvärdet av registerlängderna. Variabeln x minskas med 14 för att ge bäst approximation i mitten av registerlängderna. Sedan används mätvärdena i ansatsen: C C 0 0 + C 1 + C 1 (5 14) + C (7 14) + C 2 2 (5 14) (7 14) = 1045,40072 = 1856,553 M 2 C0 + C1(23 14) + C2 (23 14) = 23583,08 Detta kan man istället skriva på matrisform: 2 2 Ac = f Minsta kvadratlösningen ges då av normalekvationen: A T Ac = A T f Beräkningarna gjordes i Matlab och gav funktionerna plottade i fig 10 till 13: 14
1000 900 800 700 Effekt i uw 600 500 400 300 200 100 0 5 10 15 20 25 Registerlängd Figur 10 Approximerad funktionskurva för SR f SR ( x) = 549.8803 + 36.1773( x 14) 15
1200 1000 800 Effekt i uw 600 400 200 0 0 5 10 15 20 25 Registerlängd Figur 11 Approximerad funktionskurva för PSR f PSR ( x) = 632.4649 + 45.7674(x 14) 16
1200 1100 1000 900 Effekt i uw 800 700 600 500 400 300 0 5 10 15 20 25 Registerlängd Figur 12 Approximerad funktionskurva för XMR f XMR ( x) = 746.5833 + 33.1874(x 14) 17
3 x 104 2.5 2 Effekt i uw 1.5 1 0.5 0 0 5 10 15 20 25 Registerlängd Figur 13 Approximerad funktionskurva för PXMR f PXMR ( x) = 1092.1+ 172.8(x 14) + 8.5( x 14) 2 18
1200 1000 SR XMR PSR 800 Effekt i uw 600 400 200 0 0 5 10 15 20 25 Registerlängder Figur 14 Approximerade funktionskurva för SR, XMR och PXMR I figur 14 är funktionskurvorna för SR, XMR och XMR samlade. PXMR är inte medtagen här eftersom den förbrukar så pass mycket mer effekt att skalningen av grafen skulle medföra att de andra kurvorna inte skulle synas bra. Man kan se att XMR:s derivata är mindre än för SR. Detta skulle kunna medföra att det finns en registerlängd där XMR drar mindre effekt än SR. Denna registerlängd är 80. Ser man på mätvärdena för XMR i figur 12 upptäcker man dock att de tre sista mätvärdena avviker relativt mycket från den approximerade funktionen. Om man bortser från det sista värdet skulle funktionens derivata t.o.m. vara större än SR:s. Alltså bör man vara försiktig med jämförelser långt utanför intervallet för registerlängderna. 19
4 Slutsats Man kan se att de multiplexade SG i den här utformningen inte var så bra som man önskade. Både XMR och PXMR drar mer effekt per bit än SR. Hade man använt flera klockor för att välja vilka vippor som skulle uppdateras, så hade effektförbrukningen nästan säkert minskat. Det kan dock vara svårt att syntetisera sådana. Annars kan man se att man har mycket att vinna på en parallell konstruktion. Man ser tydligt i figur 8 att PSR är mycket effektivare än de andra SG. Om man vill erhålla slumpbitarna seriellt istället, kan man lägga till extra hårdvara som tar hand om detta. Denna hårvara består lämpligen av en multiplexer som tar emot de parallella bitarna, och väljer ut dem i rätt ordning. Denna extra hårdvara måste ju förstås klockas snabbare, vilket kommer att öka effektförbrukningen. Om man jämför en sju-bitars SR och en PSR och man vill erhålla bitarna seriellt i en hastighet av 100 MHz, så måste hela SR klockas i 100 MHz. I PSR behöver endast multiplexern klockas så snabbt. Skiftregistret i PSR behöver bara klockas i 100/6 = 16.67 MHz. Alltså kan det vara värt att använda en parallell arkitektur även vid seriell slumptalsgenerering. I detta arbete har sex slumptalsgeneratorer konstruerats. Att det blev de som det blev var inte klart från början, utan det växte fram under tiden vartefter jag läste artiklar, resonerade med min handledare och provade mig fram med olika varianter. Det var också detta som tog mest tid i arbetet. Simuleringarna var också tidskrävande med dygnslånga simuleringar i vissa fall. Att jag inte har undersökt registerlängder som kräver fler än en xor:grind, om man ser till det seriella fallet, beror på att detta var svårt att koda i VHDL om man fortfarande vill ha koden generell (vad jag menar med generell förklaras i avsnitt 1.3). Koden för att välja om en eller flera xor-grindar ska användas tolkas då som hårdvara av kompilatorn, detta är ju inte meningen. Därför har för enkelhetens skull dessa längder inte undersökts. 20
5 Referenser [1] Horowitz och Hill (1980), The Art of Electronics, Hamilton PC, New York. [2] Menahew Lowy (1996), Parallel Implementation of Linear Feedback Shift Registers for Low Power Applications. 21
Bilaga 1 Detta är ett kretsschema av en sju-bitars shift random, genererat av Leonardo. Random_bit är slumptalsbiten som genereras. Modgen_eq_0 är en komparator som kontrollerar om nolltillståndet uppstått i registret. I så fall kommer registret att ettställas. 22
Bilaga 2 Detta är ett kretsschema av en sju-bitars parallel shift random, genererat av Leonardo. Random_bit är slumptalsbitarna som genereras. Modgen_eq_0 är en komparator som kontrollerar om nolltillståndet uppstått i registret. I så fall kommer registret att ettställas. 23
Bilaga 3 Detta är ett kretsschema av en sju-bitars muxed random, genererat av Leonardo. 24
Bilaga 4 Detta är ett kretsschema av en sju-bitars parallel muxed random, genererat av Leonardo. 25
Bilaga 5 Detta är ett kretsschema av en sju-bitars xor muxed random, genererat av Leonardo. 26
Bilaga 6 Detta är ett kretsschema av en sju-bitars parallel xor muxed random, genererat av Leonardo. 27
På svenska Detta dokument hålls tillgängligt på Internet eller dess framtida ersättare under en längre tid från publiceringsdatum under förutsättning att inga extraordinära omständigheter uppstår. Tillgång till dokumentet innebär tillstånd för var och en att läsa, ladda ner, skriva ut enstaka kopior för enskilt bruk och att använda det oförändrat för ickekommersiell forskning och för undervisning. Överföring av upphovsrätten vid en senare tidpunkt kan inte upphäva detta tillstånd. All annan användning av dokumentet kräver upphovsmannens medgivande. För att garantera äktheten, säkerheten och tillgängligheten finns det lösningar av teknisk och administrativ art. Upphovsmannens ideella rätt innefattar rätt att bli nämnd som upphovsman i den omfattning som god sed kräver vid användning av dokumentet på ovan beskrivna sätt samt skydd mot att dokumentet ändras eller presenteras i sådan form eller i sådant sammanhang som är kränkande för upphovsmannens litterära eller konstnärliga anseende eller egenart. För ytterligare information om Linköping University Electronic Press se förlagets hemsida http://www.ep.liu.se/ In English The publishers will keep this document online on the Internet - or its possible replacement - for a considerable time from the date of publication barring exceptional circumstances. The online availability of the document implies a permanent permission for anyone to read, to download, to print out single copies for your own use and to use it unchanged for any non-commercial research and educational purpose. Subsequent transfers of copyright cannot revoke this permission. All other uses of the document are conditional on the consent of the copyright owner. The publisher has taken technical and administrative measures to assure authenticity, security and accessibility. According to intellectual property law the author has the right to be mentioned when his/her work is accessed as described above and to be protected against infringement. For additional information about the Linköping University Electronic Press and its procedures for publication and for assurance of document integrity, please refer to its WWW home page: http://www.ep.liu.se/ Ulf Källenäs 1