Tenta i Digitalteknik Kurskod D0011E Tentamensdatum 2008-08-29 Skrivtid 9.00-13.00 Maximalt resultat 50 poäng Godkänt resultat 25 poäng inkl bonus Jourhavande lärare Johan Eriksson Tel 070 589 7911 Tillåtna hjälpmedel Pennor, sudd, kaffe och joltcola. Lycka till!
1 Aritmetik 10p. A 5p) Fyll i tabellen nedan, vi använder 4-bitars operander och 4-bitars resultat. För subtraktion använder vi två-komplement metoden. Status koderna är; C = Carry, V = Overflow. Operation A B Result binary Result hex Result decimal unsigned Result Decimal signed C V A+B 1101 1110 0100 0101 A-B 1101 1110 0100 0101 A << B (A shiftat B steg vänster) 1001 0010 - - B 2p) Vi antar 4 bitars operander och 8 bitars resultat. Visa hur du beräknar resultatet för 0101*1011. Vad är motsvarande operander och resultat decimal unsigned. C 3p) Vi antar 4 bitars operander och 8 bitars resultat. Visa hur du beräknar resultatet för 0101*1011. Vad är motsvarande operander och resultat decimal signed.
2 Kombinatorik och logikminimering, Karnaugh 10p. Antag att kostnaden för varje komponent är proportionell mot antalet ingångar, dvs en OR med två ingångar har kostnaden 2. a) 2p. Ange funtionen f(x3,x2,x1,x0) från tabellen nedan som disjunktiv, alltså Sum Of Products (SOP), samt konjunktiv, alltså Product of Sums (POS ) form. OBS ingen minimering. b) 1p. Rita motsvarande två nivå grindnät för SOP formen, mha OR och AND grindar med möjliga interterare på ingångarna. c) 1p. Vilken är kostnaden för grindnätet 2b) d) 2p. Miminera mha Karnaugh diagram funktionen från 2a i SOP form. Ange den resulterande SOP formen. e) 1p. Vilken är grindnätskostnaden för den minimerade SOP formen. X3 x2 x1 x0 f(x3,x2,x1,x0) 0000 1 0001 1 0010 1 0011 1 0100 0 0101 1 0110 0 0111 1 1000 1 1001 0 1010 1 1011 1 1100 0 1101 1 1110 0 1111 1 f) 1p. Antag funktionen f(x3, x2, x1, x0) enligt Karnaugh diagramet nedan. indikerar don t care. Minimera funktionen (som SOP) givet att vi sätter alla don t cares till 0. Vilken blir grindnätskostnaden för den minimerade SOP formen? g) 2p. Antag funktionen f(x3, x2, x1, x0) enligt Karnaugh diagramet. indikerar Don t care. Minimera funktionen (som SOP) givet att vi kan sätta don t cares till 0 eller 1 för att minimera funktionen. Vilken blir grindnätskostnaden för den minimerade SOP formen?
X3, x2 \ x1, x0 00 01 11 10 00 1 1 1 1 01 0 1 1 0 11 - - - - 10-1 - - 3 Sekvenskretsar 10p. a) 1p Rita tillståndsgrafen för en Mooreautomat som kan detektera SEKVENSER,0,0,1,1 b) 2p Ställ upp en tillståndstabell med tillståndskodningen binär och en med gray kod. c) 2p Realisera din binärkodade automat (b) mha D-vippor, och kombinatoriska grindar. d) 1p Rita tillståndsgrafen för en Mealy automat som kan detektera SEKVENSER,0,0,1 e) 1p Ställ upp en tillståndstabell för (d) med tillståndskodningen one-hot f) 3p Realisera din one hot kodade automat (d) mha D-vippor, och Kombinatoriska grindar. För full poäng, använd don't care informationen och minimera grindnätet tex mha Karnaughdiagram.
4 Kretsanalys och minnesavkodning 10p. 4 a) 5p. I figuren nedan ser du en sekvensiell krets. D-FF är flanktriggad och har en setup-time tid på 2 ns (som signalen måste vara stabil innan triggning), och en fördröjning på 5 nanosekunder (från klocka till utgång). Varje grind har en outputdelay fördröjning på 3ns. Externa ingångar kan anses ha en output-delay på 0 nanosekunder. Du skall använda topologisk sortering för att: 2p) 1.5p Räkna ut kritisk väg, den tidsmässigt längsta tid som signalen behöver från en klockpuls till nästa. (I detta skall setup-time och output-delay ingå. (Visa i bilden nedan, delresultaten som ges vid topologisk sortering.) X 1 >1 1D C1 Q1 >1 U >1 1D C1 Q2 Clock 0.5p Vilken blir den maximala klockfrekvensen för detta system? 1.5p) Antag att nuvarnade tillstånd är 1 för D-FF. Räkna ut nästa värde för varje D-FF (utifrån nuvarande tillstånd), givet att X=1. (Visa i bilden nedan, delresultaten som ges vid topologisk sortering.) X 1 >1 1D C1 Q1 >1 U >1 1D C1 Q2 Clock
1.5p) Vad innebär en kombinatorisk loop? På vilket sätt beter sig en krets som innehåller en kombinatorisk loop? För full poäng krävs att vi visat hur ni tillämpat algoritmen för topologisk sortering, att bara ge ett svar räcker inte. (Tips, själva klocksignalen ingår inte i den topologiska sorteringen). 4 b) 5p. Du har obegränsad tillgång på minneskapslar/avkodare, men du skall lösa uppgiften med minimalt antal kapslar. Varje minneskapsel har fyra adresser, och en databit per adress. Minneskapslarna har en aktivt låg ingång (ChipSelect). Adressavkodare har fyra utgångar. Se figuren nedan. 2.5p Rita schema för ett minne med 8 adresser a en bit. 2.5p Rita schema för ett minne med 4 adresser a fyra bitar. Adressbuss 1 avkod 1-4 2 0 1 2 3 ROM A0 D0 A1 CS ( 4 st )
5 ALU design 10p. 5 a) (6p) Konstruera (dvs rita kretsschema) en ALU (aritmetisk/logisk enhet) som kan ADDERA, SUBTRAHERA, SHIFTA höger/vänster, logiskt och aritmetiskt (vi låter BARRELSHIFTERN avgöra vad en aritmetisk vänstershift innebär) samt göra bitvis AND/NAND/OR/XOR. Din ALU skall ha ingångarna A, B, OPERAND, och utgången R. Till din hjälp har du följande block att tillgå: --Implements the function R = A+B+Cin entity ADD is A, B : in std_logic_vector(31 downto 0); Cin : in std_logic); R : out std_logic_vector(31 downto 0); Cout : out std_logic); end ALU; --Implements the function R = A<<SA when Lshift='1' else A>>SA entity BARRELSHIFT is A : in std_logic_vector(31 downto 0); --inputvalue SA : in std_logic_vector(31 downto 0); --shiftamount R : out std_logic_vector(31 downto 0); --result LShift : in std_logic; --Left when '1' else Right AShift : in std_logic); --Arithmetic when '1' else Logic end BARRELSHIFTER; --Implements the function R = A when S='0' else B entity MUX2to1 is A, B : in std_logic_vector(31 downto 0); S : in std_logic; R : out std_logic_vector(31 downto 0)); end M21; --Implements the function R = A when S= 00 else B when S= 01 else C when S= 10 else D entity MUX4to1 is A, B, C, D : in std_logic_vector(31 downto 0); S : in std_logic_vector(1 downto 0); R : out std_logic_vector(31 downto 0)); end M41; Du har dessutom tillgång till enheter för standardkombinatorik typ AND/OR/XOR.. Du får maximalt använda 1 ADD och 1 BARRELSHIFT Dessutom har du en (optimal) dekoder som tar en 4bitars operand och skapar de styrsignaler som behövs entity DECODER is ALU_OP : in std_logic_vector(3 downto 0); -- THE ONLY INPUT!!!... -- Lots of outputs, you have to choose them!... end DECODER;
b) (2p) Välj OP-koder för din ALU, Rita en tabell. (Välj koderna smart, dvs så att avkodningen/genereringen av styrsignaler blir enkel). Icke använda OP-koder får generera valfritt output. c) (3p) Rita kretsschema i form av grindnät över dekodern. För varje styrsignal ange dess logiska funktion, (styrsignal som funktion av OPkod, och eventuella andra signaler som ni genererar). (Att utifrån denna, sedan göra en VHDL implementation är en rent syntaktisk övning som ni visat att ni behärskar i labbarna, så det behöver ni inte visa här.) Lycka Till