William Sandqvist william@kth.se Räknare En räknare är en speciell typ av sekvensnät som registrerar antalet inkommande klockpulser. Registreringen sker.

Slides:



Advertisements
Liknande presentationer
Föreläsning 3 25 jan 2010.
Advertisements

PowerPoint av Bendik S. Søvegjarto Koncept, text och regler av Skage Hansen.
Talföljder formler och summor
PowerPoint av Bendik S. Søvegjarto Koncept, text och regler av Skage Hansen.
PowerPoint laget av Bendik S. Søvegjarto Koncept, text och regler av Skage Hansen.
Längd och massa s
En genomgång av spelet: Dubbelkrig-Grön
MaB: Ekvationssystem Allmänt
PowerPoint av Bendik S. Søvegjarto Koncept, text och regler av Skage Hansen.
hej och välkomna EKVATIONER Ta reda på det okända talet.
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Många studenter använder en LCD-display till sin programmeringsuppgift
Funktionen SA10-Grupper. Följande typer av grupper finns: - Grupp i kurs hör alltid ihop med en kurskod - Grupp i program hör alltid ihop med en programkod.
Vill du lära dig kort division?
Föreläsning 7 Analys av algoritmer T(n) och ordo
Minnesteknologier Teknologi Accesstid Kostnad $/GB SRAM 1 ns 1000 DRAM
William Sandqvist Maurice Karnaugh Karnaugh-diagrammet gör det enkelt att minimera Boolska uttryck! William Sandqvist
Operatorer.
En dator av rep, block och taljor
EDA Digital och Datorteknik
Komplexa tal inför Laborationerna
SR-vippa.
Komparatorn en 1 bits AD-omvandlare
William Sandqvist Metalldetektorn Alla ”förluster” (även virvel-strömsförluster i metaller) sammanfattas av symbolen r ! Järnföremål påverkar.
Språket för inbyggda system 3
Programmeringsteknik K och Media
Grundläggande programmering
Växjö 15 april -04Språk & logik: Reguljära uttryck1 DAB760: Språk och logik 15/4: Finita automater och 13-15reguljära uttryck Leif Grönqvist
MaB: Andragradsekvationer
VAD ÄR BRÅK? täljare bråkstreck nämnare täljare = kvot nämnare.
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Digitalteknik 7.5 hp distans: 5.1 Generella sekvenskretsar 5.1.1
Problemlösning Veckodagsproblemet Gissa talet Siffersumman.
IF1330 Ellära F/Ö1 F/Ö2 F/Ö3 Strömkretslära Mätinstrument Batterier
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Programmering efter tillståndsdiagram
William Sandqvist Låskretsar och Vippor Låskretsar (latch) och vippor (flip-flop) är kretsar med minnesfunktion. De ingår i datorns minnen.
IE1204 Digital Design F1 F2 Ö1 Booles algebra, Grindar F3 F4
Problemlösningsmetodik
Simulering Introduktion Exempel: Antag att någon kastar tärning
Vad kännetecknar ett sekvensnät?
William Sandqvist Binärkod och Graykod 7 Bitars Kodskiva för avkodning av vridningsvinkel. Skivans vridnings-vinkel finns tryckt som binära.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
Digitalteknik 7.5 hp distans: 4.6 Adderare 4.45 Adderare Addition av två tal innebär att samma förfarande upprepas för varje position i talet. För varje.
Exponentialfunktionen
William Sandqvist Melodispelaren Denna demonstrationslaboration visar, steg för steg, hur man skriver ett kort program i programspråket.
William Sandqvist ReadModifyWrite-problemet PORTB = 0; PORTB.0 = 1; PORTB = PORTB; Vilket värde har portpinnen RB1 nu ? Förmodligen ”1”,
William Sandqvist 11.1 ”Glitchar” Om signaler passerar olika många grindsteg på vägen mot utgången kan kortvariga oönskade avvikelser från.
William Sandqvist IS1500 Datorteknik William Sandqvist
William Sandqvist Lab 3 Några slides att repetera inför Lab 3 William Sandqvist
William Sandqvist Lab 2 Några slides att repetera inför Lab 2 William Sandqvist
William Sandqvist DA-omvandling, oftast PWM.
William Sandqvist Binärkod och Graykod 7 Bitars Kodskiva för avkodning av vridningsvinkel. Skivans vridnings-vinkel finns tryckt som binära.
William Sandqvist Funktionsbibliotek När man utvecklat en funktion så långt att den är "färdigutvecklad" kan man lika gärna spara den på.
William Sandqvist PWM Sinusoidal Hur tillverkar man en sinusformad spänning? En PWM-signal kan ge en sinusapproximation. Efter filtrering.
Kronljusströmställaren 0, 1, 2, 3
William Sandqvist Tillståndsmaskiner  Moore-automat  Mealy-automat William Sandqvist
Kronljusströmställaren 0, 1, 2, 3
Shannon dekomposition
IE1206 Inbyggd Elektronik Transienter PWM Visare j  PWM CCP KAP/IND-sensor F1 F3 F6 F8 F2 Ö1 F9 Ö4F7 tentamen William Sandqvist PIC-block.
IE1206 Inbyggd Elektronik F1 F2
William Sandqvist Låskretsar och Vippor Låskretsar (latch) och vippor (flip-flop) är kretsar med minnesfunktion. De ingår i datorns minnen.
© Författarna och Gleerups Utbildning AB. Detta material ingår som en del i lärarmaterialet till Språket och berättelsen. Att läsa och förstå.
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Sekvenskretsar
Kombinatoriska byggblock
Kombinatoriska byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Presentationens avskrift:

William Sandqvist william@kth.se Räknare En räknare är en speciell typ av sekvensnät som registrerar antalet inkommande klockpulser. Registreringen sker efter någon kod, oftast binärkod. Efter ett visst antal pulser tar räknarens tillstånd slut och den börjar om från början igen. Man talar om räknarens modul ( dvs. hur många tillstånd räknecykeln innehåller ). Räknaren behöver inte ha någon insignal utom klockpulserna ( som kan ses som insignalen ). Ett sådant sekvensnät kallas för autonomt. Det går naturligtvis bra att konstruera alla tänkbara räknare som Moore-automater, men litteraturen är full av exempel på "fiffiga" räknare uppbyggda bara av vippor ( och ibland någon grind ). Dessa lösningar är antingen speciellt komponentsnåla eller optimala ur någon annan aspekt, och därför värda att känna till. William Sandqvist william@kth.se

William Sandqvist william@kth.se Binärkoden Om man studerar en tabell över binärkoden så upptäcker man lätt vissa regelbundenheter. Till exempel så ser man att det i första kolumnen är varannan "1" och varannan "0". I kolumnen därefter upprepas mönstret, men nu med två rader "1" innan det kommer två rader med "0" osv. Detta utnyttjas hos de asynkrona räknarna. William Sandqvist william@kth.se

William Sandqvist william@kth.se Asynkron räknare Figuren ovan visar en binärräknare med tre vippor, räknecykeln har åtta tillstånd så det är en Modulo-8 räknare. Räknaren är uppbygd av T-vippor, de har alla T=1 och "togglar" därför vid varje klockpuls. Den första vippan Q0 "togglar" för varje klockpuls. Vippan därefter Q1 klockas av den första vippan. Den kommer därför bara att "toggla" för varannan klockpuls. Den tredje vippan Q2 kommer "toggla" för varannan varannan klockpuls. N st vippor ger modulen 2N. Klockfrekvensen delas ned så att den sista vippan QN slår om med frekvensen  f = CP/2N [Hz]. Ditt armbandsur har en oscillator med en klock-kristall med resonansfrekvensen 32,768 kHz. I klockan finns en räknare med 15 vippor. Dessa delar ned klockfrekvensen till 1 Hz. Enligt binärtabellen kommer räknaren därför att räkna i binärkod. ( Q2Q1Q0: 000 001 010 011 100 101 110 111 000 ... ). William Sandqvist william@kth.se

Asynkronräknarens svaghet Asynkronräknaren har den enklast tänkbara uppbyggnaden. Eftersom klockpulserna tar vägen genom vipporna så kan dessa inte slå om exakt samtidigt. Om man läser av den binära koden på vippornas utgångar för att invänta ett visst räknevärde kan man bli "lurad". Vipporna slår om en efter en och man säger att klockpulsen "ripplar" genom vipporna ( asynkronräknare kallas därför ibland för rippelräknare. Ripple = vågskvalp ). Medan detta pågår kan det kortvarigt förekomma felaktiga räknevärden ( så kallade "räknespikar" ). Detta problem har man löst med de synkrona räknarna. William Sandqvist william@kth.se

William Sandqvist william@kth.se Synkronräknaren Klockpulserna går direkt till alla vippor och därför slår de om samtidigt. Vilka vippor som ska slå om eller ej styrs med T-ingångarna. Den första vippan har T=1 och den slår om för varje klockpuls. Ur binärtabellen kan man se att en viss vippa ska slå om när alla vippor som är före den står på "1". Det vilkoret får man från AND-grindarna i den sk. Carrykedjan och det är dessa som styr T-ingångarna. Vill man utöka räknaren sker det med en vippa och en AND-grind per steg. Om räknaren är lång och består av många steg, måste informationen om att den första vippan står på "1" färdas genom många AND-grindar. Denna signal som kallas för RC, RippleCarry, begränsar räknaren högsta användbara frekvens. ( RCO står för RippleCarryOutput ). För att öka räknarens snabbhet kan man införa en "Carrylookahead"-grind. Genom att avläsa många vippors utgångar på en gång med en ensam AND-grind får man snabbare reda på ifall alla tidigare vippor står på "1". William Sandqvist william@kth.se

William Sandqvist william@kth.se Countdown Hur gör man en räknare för nedräkning? Vad vore en raketuppskjutning eller en tidsstyrd bomb utan nedräkning ( Countdown )? Antag att man använder vippornas inversutgångar i stället för de vanliga utgångarna. En modulo-8 räknare räknar då: 111 110 101 100 011 010 001 000 111 ... det vill säga nedräkning! En reversibel räknare har en styringång för att välja upp/ner-räkning. Ett grindnät ( multiplexor-kretsar ) växlar då mellan vippornas utgångar och inversutgångar. Olika räkne-Moduler En räknare för vår vanliga tideräkning dvs år, månader, dagar, timmar, minuter och sekunder behöver vara sammansatt av en mängd olika typer modulo-räknare. ( Modulo- 365/366, 31/30/29/28, 2, 12, 60, 60, 10 ... ). Trots många försök från Franska revolutionens dagar och framåt att förändra tideräkningen till ett decimalt system är vår "krångliga" tideräkning här för att stanna, och därmed behovet av alla räknarkretsar. William Sandqvist william@kth.se

William Sandqvist william@kth.se Ringräknaren Om ett skiftregisters serieutgång ansluts till dess serieingång säger man att skiftregistret "roterar" ett tal. En ringräknare är ett sådant återkopplat skiftregister. Man ser från början till att bara en av vipporna innehåller "1" ( vanligen den första ), och därefter skiftas denna 1:a runt mellan vipporna. Räknekoden är inte binärkod, utan den brukar kallas för "one hot". Vill man tex räkna modulo-4 har man fyra vippor och kan direkt, utan logikkretsar, se på vippornas utgångar hur långt räknaren hunnit. Det är viktigt att det bara är en av vipporna som är "1" från början. I annat fall kan räknaren "fastna" i andra räknecykler. Om vipporna har direktverkande asynkrona SR-ingångar kan man låta en Reset-puls initiera vipporna innan man startar räknaren. Det är också möjligt att utföra vipporna så att de startar med "0", och att en av dem startar med "1", vid spänningstillslaget. William Sandqvist william@kth.se

William Sandqvist william@kth.se Möbiusräknaren Ett skiftregisters där man återför serie-utgångens inverterade värde till serie-ingången kallas för en sk. Möbius-räknare. Räknekoden brukar kallas för "creeping Code". För varje räknesteg tillkommer en 1:a tills registret är fullt, då försvinner i stället en 1:a för varje steg. I likhet med Graykoden förändras bara en position åt gången. Räknemodulen blir 2 ggr antalet vippor, vilket är mer "ekonomiskt" än vad gäller ringräknaren. Även för denna räknare är det viktigt att den startar i ett tillstånd som ingår i räknecykeln, annars fastnar den i en annan räknrecykel. Eftersom "0000" ingår i cykeln brukar man "resetta" alla vippor innan räknaren startas, alternativt tillverkar man vippor som startar med "0" vid spänningstillslag. Möbiusbandet William Sandqvist william@kth.se

William Sandqvist william@kth.se Johnssonavkodningen Möbius-räknaren är även känd som Johnsonräknare efter Robert Johnson vid University of Utah som utvecklade ett "fiffigt" avkodarschema för "creeping code". Med bara 2-ingångars AND-grindar kan alla räknepositioner avkodas. Johnsonräknaren kan byggas som ett repeterbart mönster på IC-kretsens yta ( en vippa och två AND-grindar ), vilket gör den totalt sett ekonomisk trots den stora åtgången på vippor. Johnson counter William Sandqvist william@kth.se

William Sandqvist william@kth.se Pseudoslumptal Exempel på ett återkopplat skiftregister med 16 vippor. I figuren sker "avtapp-ning" från vippa 0,2, 3, och 5. Skiftregistrets ingång matas med EXOR-funktionen av dessa bitar. Just denna "avtappning" ger en maximalt lång talsekvens som upprepas efter 65535 ggr. Om alla vipporna I skiftregistret är “0” så stannar slumptalssekvensen, så den kombinationen måste undvikas! William Sandqvist william@kth.se

William Sandqvist william@kth.se PIC-program Många algoritmer för slumptal utnyttjar multiplikation och division, något som inte är midrange PIC-processorernas starkaste sida. Nedanstående algoritm bygger i stället på tekniken med "återkopplade shiftregister", som ger hyfsade slumptal utan allt för mycket kod ... /* Random number function */ char rand( void ) { /* 0x0000 won't run ... */ bit EXOR_out; static char rand_hi, rand_lo; if( !rand_hi && !rand_lo ) rand_lo = 0x01; EXOR_out ^= rand_lo.0; EXOR_out ^= rand_lo.2; EXOR_out ^= rand_lo.3; EXOR_out ^= rand_lo.5; Carry = EXOR_out; /* rotate right */ rand_hi = rr( rand_hi); rand_lo = rr( rand_lo); return rand_lo; } Linear feedback shift registers William Sandqvist william@kth.se