Tenta i Digitalteknik Kurskod D0011E Tentamensdatum 2009-06-04 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 101 1110 0100 0101 A B 101 1110 1100 1101 A OR B 1001 0010 C V 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 1101*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 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 1 1 01 1 1 1 11 1 1 10 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 1 1 01 1 - - 11 1 1 10-1
3 Sekvenskretsar 10p. a) 1p Rita tillståndsgrafen för en Mooreautomat som kan detektera SEKVENSER,0,1,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,1,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 5p. 4 a) 5p. I figuren nedan ser du en sekvensiell krets. D FF är flanktriggad och har en setup time tid på 1 ns (som signalen måste vara stabil innan triggning), och en fördröjning på 4 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) Skissa en SR latch. 2p) Analysera SR latchen mha topologisk sortering. Kommentera resultatet?
5 A VHDL 3p Givet följande VHDL kod: entity barrelshifter is Port ( x : in STD_LOGIC_VECTOR(7 downto 0); y : out STD_LOGIC_VECTOR(7 downto 0); shift : in STD_LOGIC_VECTOR(2 downto 0)); end barrelshifter; architecture Behavioral of barrelshifter is signal a, b : STD_LOGIC_VECTOR(7 downto 0); begin a <= x(6 downto 0) & '0' when shift(0) = '1' else x; b <= a(5 downto 0) & '0' & '0' when shift(1) = '1' else a; y <= b(3 downto 0) & '0' & '0' & '0' & '0' when shift(2) = '1' else b; end Behavioral; Rita Kretsschema 5 B ALU Design 4p Konstruera(med valfri metod, dvs rita och/eller koda) en 8bitars ALU, med följande interface: entity ALU is A, B : in std_logic_vector(7 downto 0); Op : in std_logic_vector(1 downto 0); R : out std_logic_vector(7 downto 0)); end ALU; Opkoderna för ALU'n är: 00: ADD, 01: SUB, 10: Högershift, 11: Vänstershift Använd Barrelshiftern ifrån föregående uppgift, och du har endast EN 8bitars adder att tillgå, med interfacet: entity Adder8 is x,y : in std_logic_vector(7 downto 0); c_in : in std_logic; s : out std_logic_vector(7 downto 0); c_out : out std_logic); end Adder8; För full poäng krävs en lättförståelig lösning med vettig struktur.
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!