Tenta i Digitalteknik Kurskod D0011E Tentamensdatum 2009-08-28 Skrivtid 9.00-13.00 Maximalt resultat 50 poäng Godkänt resultat 25 poäng inkl bonus Jourhavande lärare Per Lindgren Tel 070 376 8150 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 A+B 1101 1110 0100 0101 A-B 1101 1110 1101 1101 A >> B 1001 0010 - - Arithmetic 4 bit B 2p) Vi antar 4 bitars operander och 8 bitars resultat. Visa hur du beräknar resultatet för 0111*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 0111*1011. Vad är motsvarande operander och resultat decimal signed. C V
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 Karnaughdiagrammet 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. x3x2\x1x0 00 01 11 10 00 01 11 10 1 1 1 1 1 1 1 1 1 1 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? x3x2\x1x0 00 01 11 10 00 01 11 10 1 - - 1 1 - - 1 1-1
3 Sekvenskretsar 10p. a) 1p Rita tillståndsgrafen för en Mooreautomat som kan detektera SEKVENSER, 1,0,1,0 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,1,0 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å 3 nanosekunder (från klocka till utgång). Varje grind har en outputdelay fördröjning på 2ns. 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.) 0.5p Vilken blir den maximala klockfrekvensen för detta system?
1p) Skapa en krets som räknar ut f = (x1 or x2) and x3. (Ge kretschema) 2p) Dra x3 till f. Analysera kretsen latchen mha topologisk sortering. Kommentera resultatet? 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 fyra bitar. 2.5p Rita schema för ett minne med 6 adresser a fyra bitar.
5 C Stack based computer 8p. Konstruera(dvs rita schematisk skiss) en 8bitars Stackbaserad dator. Datorn ska stödja addition, subtraktion, högershift, vänstershift, PUSH och POP. Interfacet till datorn skall vara: entity CPU is Data_in : in std_logic_vector(7 downto 0); Data_out : out std_logic_vector(7 downto 0); OpCode : in std_logic_vector(2 downto 0); reset,clk : in std_logic); ); end CPU; Du har följande moduler att tillgå: 8Bitars ALUn ifrån föregående uppgift 8Bitars Adderare som adderar 1 entity ADD1 is A : in std_logic_vector(7 downto 0); R : out std_logic_vector(7 downto 0)); end ADD1; 8Bitars Subtraherare som subtraherar 1 entity SUB1 is A : in std_logic_vector(7 downto 0); R : out std_logic_vector(7 downto 0)); end SUB1; 8Bitars Subtraherare som subtraherar 2 entity SUB2 is A : in std_logic_vector(7 downto 0); R : out std_logic_vector(7 downto 0)); end SUB2; 8x8bitars dataminne med dubbla läsutgångar entity mem8_8 is A_adress : in std_logic_vector(7 downto 0); B_adress : in std_logic_vector(7 downto 0); A_out : out std_logic_vector(7 downto 0); B_out : out std_logic_vector(7 downto 0); Write_adress : in std_logic_vector(7 downto 0); Write_data : in std_logic_vector(7 downto 0); Write_enable : in std_logic; reset,clk : in std_logic); ); end mem8_8; 8Bitars Register (D-vippa) entity reg8 is X : in std_logic_vector(7 downto 0); Y : out std_logic_vector(7 downto 0); reset,clk : in std_logic)); end reg8;
8Bitars 2ingångars MUX entity mux8-2 is A,B : in std_logic_vector(7 downto 0); R : out std_logic_vector(7 downto 0); select : in std_logic)); end mux8-2; För full poäng krävs att exakt en av varje av dessa moduler används, förutom MUXen som får användas valfritt antal gånger. Du behöver konstruera en Dekoder/Kontroller för din dator, du får använda valfri metod(ritning, Tabell, VHDL, pseudo-kod, Basic, etc...) för att beskriva funktionaliteten för dekodern. Du får välja opkoder själv, välj dom smart så så att dekodern blir trivial. Datorn ska kunna utföra följande program: Steg1, RESET Datapekare = 0 (eller stackpekare) (detta är ditt 8-bits register...) Dataminne: 0 0 0 0 0 0 0 0 Data_out = 0 ( = Dataminne[datapekare-1] ) Steg2, PUSH 3 Datapekare = 1 3 0 0 0 0 0 0 0 Data_out = 3 Steg3, PUSH 4 Datapekare = 2 3 4 0 0 0 0 0 0 Data_out = 4 Steg4, ADD Datapekare = 1 7 4 0 0 0 0 0 0 Data_out = 7 Steg5, PUSH 1 Datapekare = 2 7 1 0 0 0 0 0 0 Data_out = 1 Steg6, SHIFTRIGHT Datapekare = 1 3 1 0 0 0 0 0 0 Data_out = 3 Steg7, POP
Datapekare = 0 3 1 0 0 0 0 0 0 Data_out = 0 Innehållet i dataminnet är bara relevant under datapekaren, så en lösning som skriver data över/på datapekaren vid tex pop är fortfarande giltig. Lycka Till!