LEU431 – Digital- och datorteknik, Chalmers, 2015/2016 Föreläsning #8 Uppdaterad 15 september, 2015 Aritmetik i digitala system Digital- och datorteknik Grindnät för addition: Vi har sett att man bör kunna bygga en komponent (ett grindnät) för addition av en enskild bit, och sedan seriekoppla (kaskadkoppla) n stycken sådana komponenter för att erhålla en n-bitars adderare. • Ett grindnät för bitaddition som inte tar hänsyn till inkommande minnessiffra kallas för en halvadderare (”half adder”). • Ett grindnät för bitaddition som tar hänsyn till inkommande minnessiffra kallas för en heladderare (”full adder”). Föreläsning #8 Biträdande professor Jan Jonsson cn Institutionen för data- och informationsteknik Chalmers tekniska högskola + Aritmetik i digitala system cn-1 ci+1 ci c1 c0 cn-1 … … xi … x1 x0 yn-1 … … yi … y1 y0 sn-1 … … si … s1 s0 Aritmetik i digitala system Grindnät för addition: Grindnät för addition: Härledning av grindnät för en halvadderare: Härledning av grindnät för en heladderare: Samma som halvadderare för ci = 0 xi yi si ci+1 si = x i ⊕ yi 0 0 0 0 0 1 1 0 c i+1 = x i ∗ yi 1 0 1 0 1 1 0 1 xi si yi c i+1 AND-funktion XOR-funktion ci xi yi si ci+1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 XOR-funktion för ci = 0 1 1 si = c i ⊕ x i ⊕ yi xi yi ci Villkorlig inverterare NXOR-funktion för ci = 1 si LEU431 – Digital- och datorteknik, Chalmers, 2015/2016 Föreläsning #8 Uppdaterad 15 september, 2015 Aritmetik i digitala system Aritmetik i digitala system Grindnät för addition: Grindnät för addition: Härledning av grindnät för en heladderare: Härledning av grindnät för en heladderare: Samma som halvadderare för ci = 0 Samma som halvadderare för ci = 0 c i+1 = x i ∗ yi + c i (x i + yi ) ci xi yi si ci+1 ci xi yi si ci+1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 1 0 0 1 0 1 0 0 1 1 0 1 0 1 1 0 1 1 0 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 1 1 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 Men: denna bit blir ’1’ även om vi väljer XOR i stället för OR. Och vi har ju faktiskt redan denna XOR-funktion i halvadderaren. c i+1 = x i ∗ yi + c i (x i ⊕ yi ) xi ci yi c i+1 Principen och grindnät för addition av två n-bitars tal cn cn-1 an-1 + bn-1 sn sn-1 cn-2 an-2 bn-2 sn-2 ...ci+1 ........ ........ ........ ci...c1 ai...a1 bi...b1 si...s1 0 a0 b0 s0 minnessiffror augendsiffror addendsiffror summasiffror För att addera två n-bitars tal krävs det enligt uppställningen ovan n st grindnät som bildar utsignalerna si och ci+1 av insignalerna ai, bi och ci, dvs n st heladderare med symbol och funktionstabell nedan. Aritmetik i digitala system Grindnät för addition: xai i P Härledning av grindnät för en heladderare: ybi i Q cci i ci xi yi si ci+1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 si = c i ⊕ x i ⊕ yi ssi i CO C cci+1 i+1 Heladderare ai bi ci ci+1 si 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 0 1 1 1 0 1 1 0 1 0 0 1 c i+1 = x i ∗ yi + c i (x i ⊕ yi ) si = ai'bi'ci + ai'bici' + aibi'ci' + aibici (4.2 i KMP) ci+1 = ai'bici + aibi'ci + aibici' + aibici (4.3 i KMP) si si = (ai bi) ci ci+1 = aibi + (ai bi) ci ai bi =1 & ai ai bi bi c 0 ai 1 minnessiffror c cc c ...c c 0 (4.4 i KMP) bi Q ccini C 1 s i ai P (4.5 i KMP) CO Heladderare s minnessiffror c cc c ...c c 0 minnessiffror c c ...c 0 minnessiffror augendsiffror addendsiffror summasiffror 2 s i ai P bi Q ci+1ci C 2 bi ci+1ci CO Heladderare s 0 3 ai bi ci 0 P 0 0 0 Q 1 1 C 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 CO1 0 1 ci+1 Heladderare s 1 0 s0i ai 0 1 bi 0 c1i+1ci 1 1 3 si ai bi ci 0 1 1 0 1 0 0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 CO1 0 1 2 0 P 0 0 0 Q 1 1 C 1 1 ci+1 Heladderare s 0 s0i 0 1 0 c1i+1 1 1 c si ai bi ci ci+1 0 1 1 0 1 0 40 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 0 1 1 1 0 0 0 0 1 1 1 1 si ai bi ci ci+1 si 0 1 1 0 1 0 0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 0 1 1 1 0 1 1 0 1 0 0 1 0 0 0 0 1 1 1 1 3 Ur funktionstabellen fårUrman funktionstabellen fram si och ci+1 får man funktionstabellen fram sform: man funktionstabellen fram sform: man fram sform: påUr SP normal påUr SP normal på SP normal i och ci+1 får i och ci+1 får i och ci+1 på SP normal form: =1 & cc c ...c c 0 c n-2 ... i+1 n i n-1 1 n-2 ... i+1 n i n-1 1 n-2 ... i+1 n i n-1 1 n-2 ... i+1 i 1 Vi kan kaskadkoppla fyraaia... heladderare få an-2nu a1an-2 a0 ........ augendsiffror a1an-2 a0 ........ augendsiffror aoch a1a a0 en augendsiffror ai...a1 a0 ... ... ........ aia n-1 n-1 ia n-1 n-2 ........ + bib + bib... + bikan b... bn-2 ........ b1bFlera b0 ........ addendsiffror b1badderare b0 ........ addendsiffror b1bsedan b0 ........ addendsiffror bi...b1 b0 ... n-1 n-2 n-1 n-2 n-1 n-2 4-bitars adderare. 4-bitars snsis snsis sn-2 ........snsis s1sn-2 s0 ........ summasiffror s1sn-2 s0 ........ summasiffror s1sn-2 s0 ........ summasiffror si...s1 s0 ... ... ... n-1 n-1 n-1 på samma sätt kopplas ihop för att bygga adderare för 8, 16 eller 32 bitars binärtal. c i+1 Motsvarande grindnät: ci cn cn-1 an-1 + bn-1 sn sn-1 0 Förenkling ger: yi Konstruktion av 4-bitars adderare: Principen och grindnät Principen för addition och grindnät av Principen tvåför n-bitars addition och grindnät tal av Principen tvåför n-bitars addition och grindnät tal av tvåför n-bitars addition tal av två n-bitars tal För att addera två n-bitars För tal attkrävs addera dettvå enligt n-bitars uppställningen För tal att krävs addera detovan två enligt n-bitars n stuppställningen För grindnät tal att krävs addera som dettvå ovan bildar enligt n-bitars n st uppställningen grindnät tal krävs som detovan bildar enligt n st uppställningen grindnät som ovan bildarn st grindnät som bildar utsignalerna si och ci+1 av utsignalerna si och utsignalerna si och utsignalerna sioch insignalerna ai, bicoch ci,insignalerna dvs n st heladderare ai, bicoch cmed , dvssymbol n st heladderare och ai, bicoch , dvssymbol n st heladderare och ai, bi och cmed n st heladderare och med symbol och i+1 av i+1 av iinsignalerna i+1 avcmed iinsignalerna i, dvssymbol funktionstabell y x nedan. funktionstabell y x nedan. funktionstabell y x nedan. funktionstabell y x nedan. Ur funktionstabellen får man fram si och ci+1 på SP normal form: xi Aritmetik i digitala system si 1 ci+1 ci si = ai'bi'ci + ai'bici' + aibis'ci i'=+aia'b ' + aiibKMP) ' +aia'bibi'c ' + aiibKMP) ' +aia'bibi'c ' + aiibKMP) ibi'c ici + ai'bici(4.2 is'ci i= icii + ai'bici(4.2 is'ci i= icii + ai'bici(4.2 i'ci' + aibici (4.2 i KMP) = aaiib'bicici i + aibi(4.3 'ci + iaKMP) = aaiib'bicici i + aibi(4.3 'ci + iaKMP) = aaiib'bicici i + aibi(4.3 'ci + iaKMP) ci+1 = ai'bici + aibi'ci + aib ci+1 ci+1 ci+1 ici' + ib ici' + ib ici' + ibici' + aibici (4.3 i KMP) Förenkling ger: si = (ai 2 Förenkling ger: bi) ci ci+1 = aibi + (ai si = (ai bi) ci Förenkling ger: bi) ci (4.4 i KMP) si = (ai ci+1 = aibi + (ai Förenkling ger: bi) ci (4.4 i KMP) si = (ai (4.5 bi) cii KMP) ci+1 = aibi + (ai bi) ci (4.4 i KMP) (4.5 bi) cii KMP) ci+1 = aibi + (ai (4.4 i KMP) (4.5 bi) cii KMP) (4.5 i KMP) Motsvarande grindnät: Motsvarande grindnät: Motsvarande grindnät: Motsvarande grindnät: ai =1 ai ai bi =1 =1 ai ai bi =1 s=1 i ai ai bi =1 s=1 i ai bi s=1 i si LEU431 – Digital- och datorteknik, Chalmers, 2015/2016 Föreläsning #8 Uppdaterad 15 september, 2015 Aritmetik i digitala system Aritmetik i digitala system Konstruktion av 4-bitars adderare: Konstruktion av 4-bitars subtraktionsenhet: Principen och grindnät Principen för addition och grindnät av Principen tvåför n-bitars addition och grindnät tal av Principen tvåför n-bitars addition och grindnät tal av tvåför n-bitars addition tal av två n-bitars tal cn cn-1 an-1 + bn-1 sn sn-1 c cc c ...c c 0 c minnessiffror c cc c ...c c 0 minnessiffror c cc c ...c c 0 minnessiffror c c ...c 0 minnessiffror augendsiffror addendsiffror summasiffror n-2 ... i+1 n i n-1 1 n-2 ... i+1 n i n-1 1 n-2 ... i+1 n i n-1 1 n-2 ... i+1 i 1 Vi kan kaskadkoppla fyraaia... heladderare få an-2nu a1an-2 a0 ........ augendsiffror a1an-2 a0 ........ augendsiffror aoch a1a a0 en augendsiffror ai...a1 a0 ... ... ........ aia n-1 n-1 ia n-1 n-2 ........ + bib + bib... + bikan b... bn-2 ........ b1bFlera b0 ........ addendsiffror b1badderare b0 ........ addendsiffror b1bsedan b0 ........ addendsiffror bi...b1 b0 ... n-1 n-2 n-1 n-2 n-1 n-2 4-bitars adderare. 4-bitars snsis snsis sn-2 ........snsis s1sn-2 s0 ........ summasiffror s1sn-2 s0 ........ summasiffror s1sn-2 s0 ........ summasiffror si...s1 s0 ... ... ... n-1 n-1 n-1 på samma sätt kopplas ihop för att bygga adderare för 8, 16 eller 32 bitars binärtal. Det vore praktiskt om vår 4-bitar adderare också kunde användas för subtraktion. Och vi har faktiskt redan sett hur detta skulle kunna gå till: 1-komplement För att addera två n-bitars För tal attkrävs addera dettvå enligt n-bitars uppställningen För tal att krävs addera detovan två enligt n-bitars n stuppställningen För grindnät tal att krävs addera som dettvå ovan bildar enligt n-bitars n st uppställningen grindnät tal krävs som detovan bildar enligt n st uppställningen grindnät som ovan bildarn st grindnät som bildar utsignalerna si och ci+1 av utsignalerna si och utsignalerna si och utsignalerna sioch insignalerna ai, bicoch ci,insignalerna dvs n st heladderare ai, bicoch cmed , dvssymbol n st heladderare och ai, bicoch , dvssymbol n st heladderare och ai, bi och cmed n st heladderare och med symbol och i+1 av i+1 av iinsignalerna i+1 avcmed iinsignalerna i, dvssymbol funktionstabell y x nedan. funktionstabell y x nedan. funktionstabell y x nedan. funktionstabell y x nedan. 0 0 1 1 2 2 3 bi ci ci+1 si ai Vad bestämmer löptiden för aadderaren? i ai s i ai P bi Q ccini C CO Heladderare s bi Q ci+1ci C 0 s i ai P 0 0 Q 1 1 C 1 1 bi ci+1ci CO Heladderare s 0 0 0 1 1 0 0 1 1 P 0 0 1 0 1 0 CO1 0 1 Heladderare s 1 Y2-komplement = 2n − Y = 2n − 1+ 1− Y = (2n − 1− Y) + 1 ”carry-in” 3 0 0 1 0 1 1 bi 0 0 1 c1i+1ci 0 1 0 1 1 s0i ai 2 0 P 0 0 0 Q 1 1 C 1 1 bi ci 0 0 1 1 0 0 1 1 0 1 0 1 0 CO1 0 1 ci+1 Heladderare s 0 s0i 0 1 0 c1i+1 1 1 c si ai bi ci ci+1 0 1 1 0 1 0 40 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 0 1 1 1 0 0 0 0 1 1 1 1 si ai bi ci ci+1 si 0 1 1 0 1 0 0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 0 1 1 1 0 1 1 0 1 0 0 1 0 0 0 0 1 1 1 1 X − Y = X + (−Y) = X + Y2−komplement = X + Y1−komplement + 1 Vi kan alltså erhålla subtraktionen X − Y genom att addera X till de inverterade bitarna i Y (1-komplementet) samt lägga till 1 till summan via adderarens ”carry-in”. 3 Ur funktionstabellen fårUrman funktionstabellen fram si och ci+1 får man funktionstabellen fram sform: man funktionstabellen fram sform: man fram sform: påUr SP normal påUr SP normal på SP normal i och ci+1 får i och ci+1 får i och ci+1 på SP normal form: si = ai'bi'ci + ai'bici' + aibis'ci i'=+aia'b ' + aiibKMP) ' +aia'bibi'c ' + aiibKMP) ' +aia'bibi'c ' + aiibKMP) ibi'c ici + ai'bici(4.2 is'ci i= icii + ai'bici(4.2 is'ci i= icii + ai'bici(4.2 i'ci' + aibici (4.2 i KMP) = aaiib'bicici i + aibi(4.3 'ci + iaKMP) = aaiib'bicici i + aibi(4.3 'ci + iaKMP) = aaiib'bicici i + aibi(4.3 'ci + iaKMP) ci+1 = ai'bici + aibi'ci + aib ci+1 ci+1 ci+1 ici' + ib ici' + ib ici' + ibici' + aibici (4.3 i KMP) Förenkling ger: si = (ai Förenkling ger: bi) ci ci+1 = aibi + (ai si = (ai bi) ci Förenkling ger: bi) ci (4.4 i KMP) si = (ai ci+1 = aibi + (ai Förenkling ger: bi) ci (4.4 i KMP) si = (ai (4.5 bi) cii KMP) ci+1 = aibi + (ai bi) ci (4.4 i KMP) (4.5 bi) cii KMP) ci+1 = aibi + (ai (4.4 i KMP) (4.5 bi) cii KMP) (4.5 i KMP) Motsvarande grindnät: Motsvarande grindnät: Motsvarande grindnät: Motsvarande grindnät: ai =1 =1 =1 =1 Aritmetik system =1 i digitala =1 =1 ai ai bi ai ai bi ai ai bi si bi & ai bi bi && ai bi bi ai si && ai bi bi && bi s=1 i ai bi 1 c 1 c 1 c Konstruktion av 4-bitars addition/subtraktionsenhet: i+1 ci ci ci i+1 & i+1 Aritmetik i digitala system si 1 Tolkning av resultat ci+1 ci Vi kan nu konstruera en enhet för både addition och subtraktion genom att ansluta bitarna för Y via villkorliga inverterare. Vi har alltså en enhet för både addition och subtraktion som kan arbeta med såväl tal utan tecken som tal med tecken. De villkorliga inverterarna styrs av signalen SUB som väljer om kretsen skall utföra addition (SUB = 0) eller subtraktion (SUB = 1) med Y. Fråga: Hur vet enheten vilken typ av tal som används? Svar: Det vet den inte! Den måste därför alltid generera resultat som kan användas för endera typen av tal. Signalen SUB sätter också rätt värde på ”carry-in”: 0 vid addition och 1 vid subtraktion. Vi återkommer strax till den villkorliga inverteringen vid C. 3 LEU431 – Digital- och datorteknik, Chalmers, 2015/2016 Uppdaterad 15 september, 2015 Föreläsning #8 Aritmetik i digitala system Aritmetik i digitala system Tolkning av resultat Flaggbitar: Vi har en enhet som kan ge spill vid operationer på tal både med och utan tecken. Fråga: Hur vet man om resultatet har gett spill eller ej? Flaggbitar används inte bara för att detektera spill utan också för att indikera andra egenskaper hos ett resultat. Som vi skall se senare kan programvaran i en dator konstrueras så att den vidtar olika åtgärder beroende på vilka egenskaper ett resultat har. De vanligast förekommande flaggbitarna i ett digitalt system är Svar: Enheten måste generera information om spill för båda typer av tal. Det är sedan upp till användaren att tolka resultaten på rätt sätt. • Z (zero): Z-flaggan indikerar om resultatet av en operation blev 0. • N (negative): N-flaggan indikerar om resultatet av en operation blev negativt (oftast bara av intresse vid aritmetik på tal med tecken) • C (carry): C-flaggan indikerar om resultatet av en operation mellan tal utan tecken resulterade i spill. • V (overflow): V-flaggan indikerar om resultatet av en operation mellan tal med tecken resulterade i spill. Denna information om spill finns i s k flaggbitar. Aritmetik i digitala system Aritmetik i digitala system Z-flaggan: N-flaggan: Baserat på resultatet från en aritmetisk operation skall Z-flaggan sättas till 1 när alla bitar sn-1, sn-2, …, s1, s0 i resultatet är lika med 0. Baserat på resultatet från en aritmetisk operation skall N-flaggan sättas till 1 när resultatet är mindre än 0. Då vi använder 2-komplementaritmetik vet vi att resultatet är mindre än 0 när teckenbiten sn-1 = 1. Z = sn−1 ∗ sn−2 ∗…∗ s1 ∗ s0 N = sn−1 4 LEU431 – Digital- och datorteknik, Chalmers, 2015/2016 Uppdaterad 15 september, 2015 Föreläsning #8 Aritmetik i digitala system Aritmetik i digitala system C-flaggan: C-flaggan: Vi såg tidigare att ”carry-out” cn = 1 indikerar spill från en n-bitars addition av tal utan tecken. Vi såg tidigare att ”carry-out” cn = 1 indikerar spill från en n-bitars addition av tal utan tecken. Vi såg också att ”carry-out” cn = 0 indikerar spill från en n-bitars subtraktion av tal utan tecken när man använder 2-komplementaritmetik. Vi såg också att ”carry-out” cn = 0 indikerar spill från en n-bitars subtraktion av tal utan tecken när man använder 2-komplementaritmetik. Vi kan alltså erhålla C-flaggan genom att använda en villkorlig invertering av ”carry-out” cn från additionen, styrd av signalen SUB. C = c n ⊕ SUB Aritmetik i digitala system Aritmetik i digitala system V-flaggan: V-flaggan: Vid addition av tal med olika tecken kan spill aldrig uppträda, då beloppen inte adderas. Resultatet kommer aldrig närmare talområdets gränser än vad något av de två talen gör. Villkor för spill: x n−1 ∗ yn−1 ∗ sn−1 Vid addition av tal med olika tecken kan Detta ger oss två möjligheter till spill: spill aldrig uppträda, då beloppen inte 1.adderas. AdditionResultatet av två positiva tal ger ett kommer aldrig negativt talområdets resultat. närmare gränser än vad något av de två talen gör. Vid addition av tal med samma tecken kan spill uppträda, då beloppen adderas. Resultatet kommer närmare talområdets gränser än vad något av de två talen gör och kan komma att ”spilla över” till andra änden av tallinjen. Vid addition av tal med samma tecken kan spill uppträda, då beloppen adderas. Resultatet kommer närmare talområdets gränser än vad något av de två talen gör och kan komma att ”spilla över” till andra änden av tallinjen. 5 0 1 0 0 LEU431 – Digital- och datorteknik, Chalmers, 2015/2016 Föreläsning #8 Uppdaterad 15 september, 2015 Aritmetik i digitala system V-flaggan: Vid addition av tal med olika tecken kan Detta ger oss två möjligheter till spill: spill aldrig uppträda, då beloppen inte 1.adderas. AdditionResultatet av två positiva tal ger ett kommer aldrig negativt närmareresultat. talområdets gränser än 2.vad Addition negativa tal ger ett något av av två de två talen gör. positivt resultat. Vid addition av tal med samma tecken kan spill uppträda, då beloppen adderas. Resultatet kommer närmare talområdets gränser än vad något av de 1 två talen gör och kan komma att ”spilla över” till andra änden av tallinjen. Aritmetik i digitala system V-flaggan: Villkor för spill: x n−1 ∗ yn−1 ∗ sn−1 Vid addition av tal med olika tecken kan spill aldrig uppträda, då beloppen inte Genom attResultatet kombinerakommer de två fallen adderas. aldrigfår vinärmare ett slutligt villkor för spill vid addition. talområdets gränser än vad något av de två talen gör. 1 Vid addition av tal med samma tecken kan spill uppträda, då beloppen adderas. Resultatet kommer närmare talområdets gränser än vad något av de två talen gör och kan komma att ”spilla över” till andra änden Vav=tallinjen. x n−1 ∗ yn−1 ∗ sn−1 + x n−1 ∗ yn−1 ∗ sn−1 0 1 Aritmetik i digitala system Aritmetik i digitala system V-flaggan: V-flaggan: Vid subtraktion av tal med samma tecken kan spill aldrig uppträda. För att inse detta påminner vi oss om att subtraktion X – Y utförs medelst additionen X + Y2-komplement. Då måste de två talen som adderas ha olika tecken, vilket vi vet inte kan ge spill. Vid subtraktion av tal med olika tecken kan spill uppträda. Med ett liknande resonemang inser vi att de två talen som adderas har samma tecken, vilket vi vet kan orsaka spill. Vid subtraktion av tal med samma tecken kan spill aldrig uppträda. För att inse detta Vipåminner får alltsåvisamma för spill vidX – Y oss omvillkor att subtraktion subtraktion somadditionen vid addition. utförs medelst X + Y2-komplement. Då måste de två talen som adderas ha olika tecken, vilket vi vet inte kan ge spill. Vid subtraktion av tal med olika tecken kan spill uppträda. Med ett liknande resonemang inser vi att de två talen som adderas har samma tecken, Vvilket = x n−1vi∗vet yn−1kan ∗ sn−1orsaka + x n−1 ∗spill. yn−1 ∗ sn−1 6 LEU431 – Digital- och datorteknik, Chalmers, 2015/2016 Föreläsning #8 Uppdaterad 15 september, 2015 Aritmetik-/logikenhet (ALU) Dataväg, ALU och minne 7.2 Ömsesidigt byte av registerinnehåll gör operationen A↔R, så som den utförs i datavägen enligt Figur 7.2. Aritmetik-/logikenhet (ALU) Grundläggande datorteknik för högskolans ingenjörsutbildningar FLISP:s ALU är ett kombinatoriskt nät som består av totalt 21 insignaler och 12 utsignaler. Det finns två 8-bitars ingångar, D och E, och en 8-bitars utgång U. Det finns också fyra villkorsindikatorer (flaggbitar) som utsignaler. Dessa är N (Negative), Z (Zero), V(Overflow) och C (Carry). Ändringar på ingångarna D och E påverkar alltså innehållet i U och flaggbitarna momentant, se Figur 7.4. Vår adderare kan nu, tillsammans med en uppsättning logikgrindar, användas för att bygga upp en er piloperatorerna används också alla de vanliga operatorsymbolerna så som likhet (=), olikhet och logikenhet (ALU). aritmetiktionsoperatorer (<,>), aritmetikoperatorer (+, - , × , /) och logikoperatorer ( ’, &, |, ~) i RTNingar, se Tabell 7.1. Till skillnad från piloperatorn representerar dessa operatorer asynkrona Detta nya kombinatoriska nät är ner. Vi kommer att introducera ytterligare operatorer allt eftersom de behövs i den kommande ningen. nödvändigt för att kunna utföra operation beräkningar i datorn. Konstant uttryckt i talbas 10 Konstanten N uttryckt i talbasen r. Gränssnittet mot grindnätet utgörs Kopiering (synkron överföring) Addition av ett antal operationssignaler (F), Subtraktion ett par dataingångar (D och E), en Logiskt ”OCH” (AND) Logiskt ”ELLER” (OR) datautgång (U) samt fyra flaggbitar Logiskt ”EXKLUSIVT ELLER” (XOR) (d) ”Opr” skiftas vänster ett steg. Biten d skiftas in i den minst signifikanta positionen. (Z, N, C och V). Opr ”Opr” skiftas höger. Biten d skiftas in i den mest signifikanta positionen. Bitvis komplementering av operanden ”Opr” likhet olikhet större än mindre än större än eller likhet mindre än eller likhet (d7,d6,d5,d4, d3,d2,d1,d0) U (u7,u6,u5,u4, u3,u2,u1,u0) E (e7,e6,e5,e4, e3,e2,e1,e0) FIGUR 7.4 TABELL 7.1 GRUNDLÄGGANDE OPERATIONER I RTN (REGISTER TRANSFER NOTATION) LU-funktioner ar sett hur man med en enkla operationer kan kopiera data mellan olika register i datavägen. eg är att kunna förändra data under dataöverföringen. Vi behöver exempelvis kunna utföra de tmetikoperationerna addition och subtraktion med registerinnehåll, vi behöver också kunna mplement och utföra logikoperationer på registerinnehållen bland annat. F (f3,f2,f1,f0) Cin g5 g6 g7 BLOCKSCHEMATISK BILD AV FLISP’S ALU AritmetikFLEXav(FLEX-ALU) ALU:n kan utföra totalt 16 olika operationer. logikenhet Utsignalerma Uför bestäms operationen F(f3,f2,f1,f0) som styr 8 st. 1 av 16-väljare. På liknande sätt används 4 st. 1 av 16-väljare för att bilda flaggbitarna från E(8) ALU:n. Vi använder i bland det förenklade skrivsättet: D(8) F(0) för att beteckna f3, f2, f1,f0 = 0,0,0,0 F(1) för att beteckna f3, f2, f1,f0 = 0,0,0,1 ... Funktion (f3f2f1f0) F(15) för att beteckna f3, f2, f1,f0 = 1,1,1,1 ALU C Selektorsignaler 5 6 7 Digital- och datorteknik LV1 Flaggor U(8) Figur 7.5 visar en förenklad bild av ALU’n. ALU:ns logik- och aritmetikoperationer på indata D och E definieras av ingångarna Funktion (F) och Cin enligt tabellen nedan. F = (f3, f2, f1, f0). Aritmetik-/logikenhet (ALU) I kolumnen Operation förklaras (där det behövs) hur operationen utförs. Tecknen "+" och " " avser aritmetiska operationer. Med D1k menas att samtliga bitar i D inverteras. ALU för laboration 1: f3 f2 f1 f0 0 0 0 0 U = f(D,E,F,Cin) Operation Resultat Bitvis nollställning 0 0 0 0 1 D 0 0 1 0 Carryflaggan (C) innehåller minnessiffran ut (carry-out) från den mest signifikanta bitpositionen (längst till vänster) om en aritmetisk operation utförs av ALU:n. Vid subtraktion gäller för denna ALU att C = 1 om lånesiffra (borrow) uppstår och C = 0 om lånesiffra inte uppstår. E värde är 0 vid andra operationer FIGUR 7.5 FÖRENKLAD BILD AV FLISP’SCarryflaggans ALU 0 0 1 1 Bitvis invertering D1k än aritmetiska. DATAVÄG MED ALU 115 Väljare in för användning tillsammans med flertalet olika ALUEn sista insignal Cin (carry in) är kopplad operationer. Vi återkommer senare till hur denna kan användas. generellt vill vi kunna utföra någon förutbestämd operation på innehållet i något register och återföra resultatet till ett godtyckligt (eventuellt samma) register. Vi inför därför en ny ent i datavägen med sådana egenskaper (se Figur 7.3). Den nya komponenten kallas aritmetik- enhet, på engelska, Arithmetic/Logical Unit, eller helt enkelt ALU. FIGUR 7.3 S4.16 Exempel: Väljare för ”bitslice” (Arb kap 6) Varje bit Ui på datautgången ansluts med åtta operationer. till en väljare (”multiplexer”) som, MUX styrd av operationssignalerna F, "0" levererar en bit av 0resultatet (en s k SelektorINVi s 0 0 den valda ”bitslice”) operationen. G AND (väljar-) från s i 1 Exempel i7en ALU: 2 ORi f signalerpåsoperationer Ui 2 XOR • addition och subtraktion i SUB 0 i g0 • bitvis XOR ADDi 1 • bitvis ORg1 "1" g2 2 • bitvis AND 3 g3 f • bitvis invertering 4 Insignaler g4 f2 f1 f0 • bitkonstanter ”0” och ”1” Utsignal N V Z C kombinatorik D Väljare ALU ”bitslice”: Ett nytt kombinatoriskt nät: datavägen inte tillåter samtidig överföring, dvs. vi kan bara överföra ett registerinnehåll åt gången, så t göras i två steg och vi måste dessutom använda ett tredje register (T) för mellanlagring: , R A, T R 116 Den ALU ni möter i laboration 1 arbetar med 8-bitars maskintal, och innehåller de operationer vi visade för vår enkla ”bitslice”, samt ytterligare ett par varianter av addition. 0 1 0 0 Bitvis invertering E1k 0 1 0 1 Bitvis OR D OR E 0 1 1 0 Bitvis AND D AND E 0 1 1 1 Bitvis XOR D XOR E 1 0 0 0 D + 0 + Cin D + Cin 1 0 0 1 D + FFH + Cin 1 0 1 0 D + E + Cin 1 0 1 1 D + D + Cin 1 1 0 0 D +E1k + Cin D 1 + Cin Overflowflaggan (V) visar om en aritmetisk operation ger "overflow" enligt reglerna för 2komplementaritmetik. V-flaggans värde är 0 vid andra operationer än aritmetiska. Väljare MUX s0 s1 0 s2 2 g0 g1 0 g2 g3 g4 2 3 4 g5 g6 g7 5 6 G S4.16 1 (eng multiplexer) s0 0 7 1 f “1 av 8 väljare” 7 s2 s1 s0 f 0 0 0 g 0 0 1 g 0 1 0 g 0 1 1 g 1 0 0 g 1 0 1 g 1 1 0 g 1 1 1 g 1 0 1 s1 2 1 3 4 5 s2 6 7 D + E + Cin 2D + Cin D E 1 + Cin 1 1 0 1 Bitvis nollställning 0 1 1 1 0 Bitvis nollställning 0 1 1 1 1 Bitvis ettställning FFH Zeroflaggan (Z) visar om en ALU-operation ger värdet noll som resultat på U-utgången. Signflaggan (N) är identisk med den mest signifikanta biten (teckenbiten) av utsignalen U från ALU:n. 7 f = m0g0 + m1g1 + m2g2 + m3g3 + m4g4 + m5g5 + m6g6 + m7g7 m0 är motsvarande minterm (m0 = s’2 s’1 s’0) Digital- och datorteknik LV1 NBC till 1 av 8
© Copyright 2024