Försättsblad till skriftlig tentamen vid Linköpings universitet Datum för tentamen 08-03-3 Sal (5) Tid 8- Kurskod TSEA Provkod TEN Kursnamn/benämning Provnamn/benämning Institution Antal uppgifter som ingår i tentamen Jour/Kursansvarig Ange vem som besöker salen G3(35) G33(3) G3() TER(0) TERF() Digitalteknik Skriftlig tentamen ISY 6 Mattias Krysander Telefon under skrivtiden 073-7085 Besöker salen ca klockan 9 och Kursadministratör/kontaktperson (namn + tfnr + mailaddress) Tillåtna hjälpmedel Övrigt Mattias Krysander 073-7085 mattias.krysander@liu.se Inga Totalt: 50 poäng Preliminära betygsgränser: Betyg 3: poäng Betyg : 3 poäng Betyg 5: poäng Antal exemplar i påsen Visning 0.00-.00 den 0/3 i Datortekniks bibliotek.
Uppgift. Pelle har hittat en gammal krets i labbet som innehåller en JK-vippa. Han vill bygga om kretsen med D-vippor och grindar. För att undersöka hur JK-vippan fungerar mäter han insignalerna J och K och utsignalen/tillståndet Q och erhåller följande tidsdiagram: J K J K Q Q a) Beskriv för de fyra insignalkombinationerna, dvs (J,K) {(0, 0), (0, ), (, 0), (, )}, vilken funktion vippan har, dvs hur nästa tillstånd Q + blir som funktion av tillståndet Q? ( poäng) b) Konstruera en krets som har samma funktion som en JK-vippa men med en D-vippa samt valfria grindar. Visa tillståndsdiagram, tillståndstabell och kretsschema. Onödigt komplicerade lösningar ger poängavdrag. (3 poäng) Lösning. a) (J,K) = (0,0): q + = q, dvs tillståndet förändras ej. (J,K) = (0,): q + = 0, dvs tillståndet nollställs. (J,K) = (,0): q + =, dvs tillståndet sätts till. (J,K) = (,): q + = q, dvs tillståndet byts. b) Tillståndstabell Detta ger följande uttryck: JK q = 0 q = 00 0 0 0 0 0 0 q + = Jq + K q Uppgift. Konstruera en kombinationskrets som gör om ett BCD-kodat tal 0-99 till ett binärkodat tal med följande in- och ut-signaler: a 3 tiotal ental a a a 0 b 3 b b b 0 BCD till binäromvandlare u n u n u u 0 Högst index svarar mot mest signifikant bit. a) Hur många bitar n behövs för att i binärkod kunna representera det decimala talet 99? ( poäng)
b) Med det n som fastställdes i a)-uppgiften konstruera kretsen. Till ert förfogande har ni endast heladderare (FA) och halvadderare (). Använd bara heladderare om det är nödvändigt eftersom halvadderare är komponentsnålare. Lösning. Använd följande uttryck för u vid konstruktion av kretsen u = 0a + b = (8 + )a + b = 8a + a + b () där a = (a 3, a, a, a 0 ), b = (b 3, b, b, b 0 ) och u = (u n, u n,..., u, u 0 ). a) n = 7 bitar behövs eftersom 7 = 7 > 99 6 = 6 b) Multiplikation med är detsamma som att vänsterskifta binärkodningen bit. Detta ger att det givna uttrycket kan realiseras som a 3 a b 3 a b a 0 b b 0 FA FA u 0 a 3 a a a 0 FA u u u 6 u 5 u u 3 I den fösta nivån beräknas x = a + b och i den undre u = 8a + x. Om bara två signaler ska adderas används. Utsignalerna från de vänstraste är alltid noll eftersom a + b 7 < 5 = 3 kräver bara 5 bitar samt och behöver därför inte kopplas in. 8a + a + b 99 < 7 = 8 kräver bara 7 bitar Uppgift 3. Konstruera en krets som har omvandlar talen 0-9 till punktskrift. Punktskrift definieras av u 3 u u u 0 0 3 5 6 7 8 9 Insignalerna till kretsen ges i BCD-kod av x = (x 3, x, x, x 0 ) där x 3 är mest signifikant bit och svart prick motsvarar u i =. Ni behöver bara konstruera kretsarna som skapar utsignalerna u, u och u 0, dvs ej kretsen för u 3. Till er konstruktion får ni endast använda NAND-grindar. Inverterade insignaler antas vara tillgängliga. För full poäng krävs en korrekt funktionstabell, Karnaughdiagram, minimala Booleska uttryck och ett kretsschema. (0 poäng)
Lösning. Funktionstabell: x u 0 0 000 00 3 00 0 5 00 6 0 7 8 0 9 00 f.ö. - u x, x 0 x 3, x 00 0 0 00 0 0 0 0 0 - - - - 0 - - u = x 3x x 0 + x x 0 + x 3 x 0 + x x = = ((x 3x x 0) (x x 0 ) (x 3 x 0 ) (x x ) ) u x, x 0 x 3, x 00 0 0 00 0 0 u 0 x, x 0 x 3, x 00 0 0 00 0 0 0 0 0 0 0 0 - - - - - - - - 0 - - 0 0 - - u = x 3 + x x 0 + x x = = (x 3(x x 0) (x x ) ) u 0 = x x 0 + x x 0 = = ((x x 0) (x x 0 ) ) Totalt krävs 0 NAND-grindar. Den understrukna termen grinddelas. 3
Uppgift. Konstruera ett iterativt kombinatoriskt nät med struktur enligt: x x x n x n Cell Cell Cell n Cell n u u u n u n Utsignal u i ska vara om och endast om x i = 0 och insignalerna till cellerna direkt till vänster om cell i består av en grupp av ett jämnt antal ettor. Ett exempel för n = 0 är x i : 0 0 0 0 0 0 u i : 0 0 0 0 0 0 Ni har tillgång till AND-, OR-grindar och inverterare. För full poäng krävs tillståndsdiagram med minimalt antal tillstånd, tillståndstabell, Booleska minimerade uttryck för alla celler och kretsschema med minimerade celler. (0 poäng) Lösning. Tillståndsdiagram med nodmarkeringar q q 0 och bågmarkeringar x i /u i. 0/0 /0 0 /0 00 0/0 0/ /0 0 Starttillståndet är q = 00. Cell : (q, q 0 ) = (0, 0) q + q+ 0 /u i q q 0 x i = 0 x i = 00 00/0 0/0 0 00/0 0/0 /- /- 0 00/ 0/0 q + 0 = x u = 0 Cell : (q, q 0 ) {(0, 0), (0, )} q + = q 0x q + 0 = q 0x u = 0 Cell k {3,..., n }: (q, q 0 ) {(0, 0), (0, ), (, 0)} q + q + 0 = q 0x k = q 0x k u k = q x k
Cell n : q + = q 0x n u n = q x n Cell n u n = q x n Uppgift 5. Konstruera en synkron 3-bitarsräknare med count enable CE, aktivt hög. När CE = ska följande sekvens genomlöpas för tillståndet q = (q, q, q 0 ): 00 00 000 0 Notera att nästa tillstånd för 00, 0 och 0 är ospecificerat. Till ert förfogande har ni D-vippor och PROM av typen 8 CS 0 3 5 6 7 8 9 0 3 5 där chip select (CS) är aktivt låg. För full poäng krävs korrekt tillståndsdiagram, tillståndstabell och kretsschema. Insignalen behöver inte synkroniseras. (0 poäng) Lösning. CE q q q 0 q + q+ q+ 0 0 q q q 0 q q q 0 000 00 00 00 0 0 000 00 0 0 00 För i = 0, och q + i D Q q i q 0 q q CE 0 8 CS 0 3 5 6 7 8 9 0 3 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 q + q + q + 0 Uppgift 6. En synkron sekvenskrets för styrning av en hissdörr ska konstrueras. 5
OPEN IS_CLOSED Krets ON Insignalerna till kretsen är en styrsignal OPEN som om den är innebär att hissdörren ska öppnas, IS_CLOSED en sensorsignal som om den är indikerar att dörren är stängd samt en sensorsignal som om den är indikerar att dörren är öppen. Kretsens utsignaler är ON som om den är kör motorn som öppnar och stänger hissdörren samt som anger om hissdörren öppnas eller stängs (direction). Kretsen ska styra dörren så att om OPEN = så ska dörren öppnas, vara i öppet läge i 8 sekunder och därefter stängas. Öppningssignalen är en synkroniserad och enpulsad signal. Sensorsignalerna är asynkrona. Ett exempel på korrekt funktion ses i följande tidsdiagram: OPEN IS_CLOSED ON don t care 8 sekunder Observera att när dörren ska öppnas kan det dröja några klockpulser från det att motorn startas till det att sensorn för stängd dörr IS_CLOSED blir 0. Det samma gäller när dörren ska stängas och blir 0. Det gör inget om motorn stängs av någon klockpuls efter att dörren har detekterats i ett ändläge. När motorn inte är på spelar det inte någon roll vilket värde har. Detta är indikerat i grått. Ni får anta att OPEN bara sätts till ett när dörren är stängd. Till er konstruktion har ni valfria vippor, grindar, räknare och en klocka på Hz. Lösning. Det finns många olika lösningar. Här presenteras två varianter. Lösningsförslag (0 poäng) _a D Q OPEN S R Q ING IS_CLOSED_a D Q IS_CLOSED CLOSE IS_CLOSED S R Q IS_CLOSING CE 3-bitsräknare SYNC CLR RCO CLOSE ING IS_CLOSING ING ON Två synkroniseringsvippor för asynkrona insignaler. En SR-vippa håller ordning på om dörren håller 6
på att öppnas ING =, en SR-vippa om dörren håller på att stängas IS_CLOSING = och räknaren ser till att dörren är öppen specificerad tid. Öppningsfasen startas genom att OPEN sätt till och avslutas med att = vilket därmed definerar insignalerna till SR-vippan med tillstånd ING. Innan dörren är öppen = 0 så nollställs räknaren. När blir räknar räknaren upp till 7 då CLOSE på RCO-utgången blir. Detta aktiverar dörrstängningen. Räknaren kommer räkna vidare till dess = 0 men inte påverka övriga kretsen på något sätt. När CLOSE = aktiveras stängningsfasen genom att SR-vippan med tillstånd IS_CLOSING sätt till. Stängingen avslutas då IS_CLOSED =. Motorn ska köras ON = under öppning och stänging. Detta sköts med OR-grinden. Riktningen kan beräknas som = ING som är precis då hissdörren öppnas. Lösningsförslag _a D Q & OPEN CE 8 -bitsräknare SYNC CLR IS_CLOSED_a D Q IS_CLOSED IS_CLOSED & & ON I startläget när dörren är stängd står räknaren på 8 och = 0. När OPEN = nollställsräknaren och = vilket indikerar att dörren ska öppnas. Den undre AND-grinden i AND-OR-kretsen håller motorn påslagen ON = från och med att blir till dess att dörren är öppen, dvs då blir. När blir startar räknaren att räkna upp från 0 till 8 då blir 0 och dörren ska stängas. När blir 0 kommer räknaren att stanna på 8 vilket gör att förblir 0 tills räkaren nollställs vid nästa dörröppning. Den övre AND-grinden i AND-OR nätet håller motorn påslagen till dess att dörren är stängd, dvs då IS_CLOSED blir. Notera att AND-OR-kretsen realiserar en - multiplexer som väljer mellan IS_CLOSED and då är 0 respektive. 7