Toets Digitale Systemen 01/06/2006, 8.45 – 10.30 uur De toets is open boek en bestaat uit 10 multiple-choice (MC) vragen en 3 open vragen. De MC-vragen dienen beantwoord te worden op het uitgereikte MC-formulier. Enkele aanwijzingen bij het invullen van de MC-formulieren: • • • • • •
slechts 1 antwoord is het correcte antwoord (NB: a,b,c,d staan door elkaar) vul de gekozen vakjes helemaal in (liefst met ballpoint, of met potlood) vul het formulier pas aan het einde in om fouten te voorkomen geen veranderingen aanbrengen: haal dan een nieuw formulier het onbeantwoord laten van een vraag werkt altijd in uw nadeel vergeet niet uw studienummer in te vullen (cijfers en vakjes!)
U mag het boek "Contemporary Logic Design", het VHDL boek, en eventuele prints van het college slides bij u hebben. Verder dus niets! Wij benadrukken dat u tijdens toetsen het tentamen dus GEEN gebruik mag maken van oude examens en toetsen. Gebruikt u deze toch dan zijn de tentamen fraude regels van toepassing. De toets is niet verplicht maar kan u in sommige gevallen van een 5 naar een 6 helpen bij het eindtentamen. Succes!!
A. MC-vragen (gewicht: 10 × 6 % = 60 %) Vraag 1 A
Gegeven bijgaand circuit:
Q
Q’
B Dit circuit is a. b. c. d.
een latch met geen verboden ingangscombinatie een latch; AB = 10 is de verboden ingangscombinatie geen bruikbaar geheugenelement: de Hold-combinatie ontbreekt geen van bovenstaande antwoorden.
Vraag 2 Gegeven het volgende circuit met positive edge-triggered D filpflops:
In
D FF
Q
D
Q
FF
D
Q
D
FF
Q
Out
FF
CLK
CLK:
1
t1 t2 t3 t4 t5 t6 t7 t8 t9 ....
Indien voor tijdstip t1 op ‘In’ het constante signaal X wordt gezet, wanneer wordt X op zijn vroegst op ‘Out’ waargenomen? Op of direct na: a. b. c. d.
t4 t5 t6 t7 of later.
Vraag 3 A
B
C
D
Welke van de volgende vereenvoudigingen is correct?
a. b. c. d.
F = ((a + b’)(a’ + c))’ F = a’d + c’(a + bd) F = a(c + b) + cb’ + bd’ geen van bovenstaande antwoorden.
F
Vraag 4 Gegeven bijgaand circuit: De ROM heeft de volgende inhoud: A1 A0 | D1 D0 ---------------------0 0 | 1 0 0 1 | 0 1 1 0 | 1 1 1 1 | 0 0
2 bit ROM
a
A1
D1
S1
b
A0 D0
S0 G
Welke van de volgende vereenvoudigingen is correct? a. b. c. d.
2:4 DEC
F = ca’ + cb’ F = c (a ⊕ b) F = (a ⊕ b)’ + cb geen van bovenstaande antwoorden.
2
0 1 2 3
c
F
Vraag 5 Gegeven de berekening C = A – B in 2’s complement notatie. Er geldt A = 011010 en C = 101100. Wat is de waarde van B? a. b. c. d.
B = -18 B = 46 B = 14 B kan niet in een 6-bit 2’s complement representatie worden berekend wegens overflow.
Vraag 6 Gegeven de volgende Delta I assembly code: set ld and add st xor add
c 00110011b 01010101b 01100110b R1 11110000b 10000001b
Wat gebeurt met A, Z en C na de executie van de laatste instructie? a. b. c. d.
A = 08H , C = 0, Z = 0 A = 08H , C = 1, Z = 0 A = 09H , C = 0, Z = 1 A = 09H , C = 1, Z = 0
Vraag 7 De onderstaande schakeling bestaat uit een “nand”-gate en een “nor”-gate waarop 4 signalen zijn aangesloten volgens de 9-waarden “stdlogic” standard. De “uit”-signaal is eveneens een stdlogic signaal.
Wat is de waarde van het uitgangssignaal “uit”? (Hint: gebruik de ‘Uittreksel van “std_logic_1164”) a. b. c. d.
‘U’ ‘L’ ‘X’ ‘Z’
3
Vraag 8 Gegeven is een hardware component met de volgende entity en architecture beschrijving: entity onbekend is port (a, b, c: in bit; d: out bit); end onbekend; architecture gedrag of onbekend is begin P1: process (b, c) is begin if (b=’1’) then d<=’0’; elsif (c’event and c=’0’) then d<=not(a); else d<=not(a); end if; end process; end gedrag; Welk van de onderstaande beweringen is juist? a. b. c. d.
De component is een D-flipflop met c als klok die werkt op alleen de neergaande flank en heeft tevens een asynchrone reset. De component is een D-flipflop met c als klok die werkt op beide flanken en heeft tevens een asynchrone reset. De component is een T-flipflop met c als klok die werkt op beide flanken en heeft tevens een synchrone reset. De component is een T-flipflop met c als klok die werkt op beide flanken en heeft tevens een asynchrone reset.
Vraag 9 Hieronder is de beschrijving van een entity schakeling gegeven met een aantal mogelijke architectures: entity schakeling is port (a, b, c: in bit; d: out bit); end schakeling; architecture een of schakeling is begin process (a,b) begin if (b=’1’) then d<=a; end process; end een; architecture twee of schakeling is begin process (a,b,c) begin if (c’event and c=’1’) then if (b=’1’) then d<=’0’; else d<=a; end if; end if; end process; end twee;
4
architecture drie of schakeling is begin process (b) begin if (b=’1’) then d<=a; end if; end process; end drie; architecture vier of schakeling is begin process (a,b,c) begin if (b=’1’) then d<=’0’; elsif (c’event and c=’1’) then d<=a; end if; end process; end vier; architecture vijf of schakeling is begin process (a) begin if (b=’1’) then d<=a; end if; end process; end vijf; Zie bovenstaande beschrijving van schakeling. Welke uitspraak is correct? a. b. c. d.
architecture een beschrijft de werking van een flipflop met het signaal a als input, het signaal b als reset, en het signaal c als klok. architecture een beschrijft de werking van een latch met het signaal a als input en het signaal b als enable. architecture drie beschrijft de werking van een latch met het signaal a als input en het signaal b als enable. architecture vijf beschrijft de werking van een flipflop met het signaal a als input en het signaal b als klok.
5
Vraag 10 Hieronder wordt een beschrijving gegeven van een 4-bits comparator. De binaire signalen a en b worden vergeleken. Het resultaat hiervan wordt de boolean c. We geven 3 entitities en een architecture: --mogelijkheid 1: library IEEE: use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; entity comparator is port (a: in unsigned(3 downto 0); b: in unsigned(3 downto 0); c: out boolean); end comparator; --mogelijkheid 2: library IEEE: use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; entity comparator is port (a: in signed(3 downto 0); b: in signed(3 downto 0); c: out boolean); end comparator; --mogelijkheid 3: library IEEE: use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; entity comparator is port (a: in unsigned(3 downto 0); b: in std_logic_vector(3 downto 0); c: out boolean); end comparator; architecture werking of comparator is begin c <= (a < b); end werking; Welke van de drie entities wordt door de VHDL compiler niet geaccepteerd? a. b. c. d.
mogelijkheid 1 wordt niet geaccepteerd. mogelijkheid 2 wordt niet geaccepteerd. mogelijkheid 3 wordt niet geaccepteerd. alle drie worden niet geaccepteerd.
6
Uittreksel van “std_logic_1164” -------------------------------------------------------------------- tables for logical operations -------------------------------------------------------------------- truth table for "and" function CONSTANT and_table : stdlogic_table := ( -----------------------------------------------------| U X 0 1 Z W L H | | ----------------------------------------------------( 'U', 'U', '0', 'U', 'U', 'U', '0', 'U', 'U' ), -- | U | ( 'U', 'X', '0', 'X', 'X', 'X', '0', 'X', 'X' ), -- | X | ( '0', '0', '0', '0', '0', '0', '0', '0', '0' ), -- | 0 | ( 'U', 'X', '0', '1', 'X', 'X', '0', '1', 'X' ), -- | 1 | ( 'U', 'X', '0', 'X', 'X', 'X', '0', 'X', 'X' ), -- | Z | ( 'U', 'X', '0', 'X', 'X', 'X', '0', 'X', 'X' ), -- | W | ( '0', '0', '0', '0', '0', '0', '0', '0', '0' ), -- | L | ( 'U', 'X', '0', '1', 'X', 'X', '0', '1', 'X' ), -- | H | ( 'U', 'X', '0', 'X', 'X', 'X', '0', 'X', 'X' ) -- | - | ); -- truth table for "or" function CONSTANT or_table : stdlogic_table := ( -----------------------------------------------------| U X 0 1 Z W L H | | ----------------------------------------------------( 'U', 'U', 'U', '1', 'U', 'U', 'U', '1', 'U' ), -- | U | ( 'U', 'X', 'X', '1', 'X', 'X', 'X', '1', 'X' ), -- | X | ( 'U', 'X', '0', '1', 'X', 'X', '0', '1', 'X' ), -- | 0 | ( '1', '1', '1', '1', '1', '1', '1', '1', '1' ), -- | 1 | ( 'U', 'X', 'X', '1', 'X', 'X', 'X', '1', 'X' ), -- | Z | ( 'U', 'X', 'X', '1', 'X', 'X', 'X', '1', 'X' ), -- | W | ( 'U', 'X', '0', '1', 'X', 'X', '0', '1', 'X' ), -- | L | ( '1', '1', '1', '1', '1', '1', '1', '1', '1' ), -- | H | ( 'U', 'X', 'X', '1', 'X', 'X', 'X', '1', 'X' ) -- | - | ); -- truth table for "not" function CONSTANT not_table: stdlogic_1d := -- -------------------------------------------------- | U X 0 1 Z W L H | -- ------------------------------------------------( 'U', 'X', '1', '0', 'X', 'X', '1', '0', 'X' ); -------------------------------------------------------------------- overloaded logical operators ( with optimizing hints ) ------------------------------------------------------------------FUNCTION "and" ( l : std_ulogic; r : std_ulogic ) RETURN UX01 IS BEGIN RETURN (and_table(l, r)); END "and"; FUNCTION "nand" ( l : std_ulogic; r : std_ulogic ) RETURN UX01 IS BEGIN RETURN (not_table ( and_table(l, r))); END "nand"; FUNCTION "or" ( l : std_ulogic; r : std_ulogic ) RETURN UX01 IS BEGIN RETURN (or_table(l, r)); END "or"; FUNCTION "nor" ( l : std_ulogic; r : std_ulogic ) RETURN UX01 IS BEGIN RETURN (not_table ( or_table( l, r ))); END "nor"; FUNCTION "not" ( l : std_ulogic ) RETURN UX01 IS BEGIN RETURN (not_table(l)); END "not";
7
B. Open vragen (gewicht: 40%) Stel u wordt gevraagd om een digitaal systeem te ontwerpen die een inbraakbeveiliging van een woonhuis realiseert. De inbraakbeveiliging kan door de eigenaar mbv. een afstandsbediening “aan” en “uit” worden gezet. Als de eigenaar zijn huis verlaat zet hij de inbraakbeveiliging “aan”. In de stand “aan” moet het systeem als volgt werken. Als het woonhuis betreden wordt (hetzij via de voordeur, hetzij via een andere ingang), wordt (via sensors) een timer geactiveerd, die na een vertragingstijd Δ een alarm doet afgaan. Indien de eigenaar voor die tijd de inbraakbeveiliging mbv. zijn afstandsbediening “uit” zet, is er niets aan de hand. In geval van een inbreker zal de inbraakbeveiliging echter niet uitgezet worden, waarop na Δ het alarm zal afgaan. Dit alarm kan alleen beëindigd worden door de inbraakbeveiliging “uit” te zetten. U wordt gevraagd om een FSM te ontwerpen die de besturing vormt van de inbraakbeveiliging. U heeft de beschikking over de volgende signalen: signaal betekenis: -------------------------------------------------------------------------------------------------------------E ingangsignaal: (“enable”), E = 0: er is op “uit” gedrukt op de afst.bed. E = 1: er is op “aan” gedrukt op de afst.bed. S ingangsignaal: (“sensor”), S = 0: deuren en ramen zijn dicht en heel S = 1: deuren of ramen zijn open of kapot A uitgangsignaal: (“alarm”), A = 0: alarm niet actief A = 1: alarm actief Naast bovengenoemde signalen E, S, en A heeft u de beschikking over een clocksignaal CLK. Om de gewenste vertragingstijd te implementeren kunt u gebruik maken van een reeds ontworpen timer met ingangsignaal R (run timer) en uitgangsignaal T (timeout). Het gedrag van de timer kunt u bepalen aan de hand van de bijbehorende VHDL specificatie (wat gebeurt er met T en hoe moet R bestuurd worden?): ENTITY timer IS PORT ( R: IN bit; -- run T: OUT bit; -- timeout CLK: IN bit -- clock ); END timer; ARCHITECTURE timer_arch OF timer IS BEGIN PROCESS (CLK) VARIABLE count: INTEGER := 0; BEGIN IF (CLK’event AND CLK = ‘1’) THEN IF (R = ‘0’) THEN T <= ‘0’; count := 0; ELSE IF (count < 100000000) THEN T <= ‘0’; count := count + 1; ELSE T <= ‘1’; END IF; END IF; END IF; END PROCESS; END timer_arch;
8
Vraag 11 (10%) Kies voor de FSM van de besturing een Moore machine en specificeer het gewenste gedrag mbv. een ASM (dit moet een ASM zijn!) met gebruikmaking van de eerder beschreven signalen A, E, R, S, T. Deze ASM vormt tevens de basis voor de volgende vraag. (Ook als uw ASM fout is, wordt uw ASM als uitgangspunt gehanteerd bij de beoordeling). Vergeet niet dat de inbraakbeveiliging altijd “uit” gezet moet kunnen worden. Vraag 12 (15%) Ontwerp nu een hardware-oplossing voor de besturing aan de hand van uw FSD/ASM. a. Schrijf de waarheidstabel op, die aangeeft hoe de nieuwe state (Si , i = 0 .. 3) en uitgangsignalen (A, R) afhangen van de huidige state (Si) en ingangsignalen (E, S, T). b. Kies een state assignment die de states Si afbeeldt op de state-variabelen Qj. De state-opvolging hoeft niet progressief te zijn. c. Hoeveel ingangsvariabelen hebben de K-maps van Q j +, A en R? Teken de K-maps alleen voor A en R, en leidt de expressies af voor A en R. Vraag 13 Gegeven het volgende systeem met de getekende componenten:
Systeem Component_type I: - architecture “fast” - gate_delay = 3ns
Component_type I: - architecture “small” - gate_delay = 4ns
A
C
A
C
B
D
B
D
Component_type I: - architecture “slow” - gate_delay = 6ns
Component_type II: - gate_delay = 2ns A
A
D
C B
B
D
C
Vraag 13 a (5%) Geef de entity beschrijvingen van de getekende componenten. Let op: tel goed het aantal benodigde componenten. Let op: benut de mogelijkheid in VHDL om verschillende delays te kunnen specificeren voor entities. Vraag 13 b (10%) Geef de entity beschrijving en de structurele architecture beschrijving van het gegeven systeem. Hierbij wordt aangenomen dat de benodigde componenten in de huidige werk-directory staan. Let op: vergeet niet alle benodigde declaraties te doen binnen de architecture beschrijving.
9
Uitwerkingen Toets Digitale Systemen 01/06/2006, 8.30 – 10.30 uur MC-vragen: 1. b 2. a 3. c 4. a 5. d
6. d 7. c 8. d 9. b 10. c
Vraag 11 De ASM ziet er als volgt uit: S0
0 E 1 S1
0 E 1 0 S 1 S2 R=1 0 E 1
0
T 1 S3 A=1 0
1 E
10
Vraag 12 a) De toestandstabel:
Huidige state |
Volgende state | Uitgang | EST | | 0XX 100 101 110 111 | R A ---------------------------------------------------------------S0 | S0 S1 S1 S1 S1 | 0 0 S1 | S0 S1 S1 S2 S2 | 0 0 S2 | S0 S2 S3 S2 S3 | 1 0 S3 | S0 S3 S3 S3 S3 | 0 1
b) State assignment: state | Q1 Q0 ----------------------S0 | 0 0 S1 | 0 1 S2 | 1 1 S3 | 1 0
c) De K-maps van Q+0, Q+1, A en R hebben respectievelijk 5, 5, 2 en 2 variabelen (zie ook toestandstabel). De K-maps van R en A (gegeven de eerdere state assignment):
R:
Q1: Q0:
A:
0 1 ----------0 | 0 | 0 | 1 | 0 | 1 | -----------
=> R = Q1 . Q0
Q1: Q0:
0 1 ----------0 | 0 | 1 | 1 | 0 | 0 | -----------
=> A = Q1 . Q0’
11
Vraag 13 a) entity component1 is generic (gate_delay: Time = 2 ns); port (a, b: in bit; c, d: out bit); end component1; entity component2 is generic (gate_delay: Time = 2ns); port (a, b, c: in bit; d: out bit); end component2; b) entity systeem is port (a, b, c, d: in bit; e, f, g: out bit); end component2; architecture circuit of systeem is --component and signal declarations component component1 is generic (gate_delay: Time = 2ns); port (a, b: in bit; c, d: out bit); end component; component component2 is generic (gate_delay: Time = 2ns); port (a, b, c: in bit; d: out bit); end component; signal s1, s2, s3, s4: bit; -- configuration specification for C1: component1 use entity WORK.component1(fast); for C2: component1 use entity WORK.component1(slow); for C3: component1 use entity WORK.component1(small); begin C1: component1 generic map (gate_delay => 3 ns) port map (a => a, b => b, c => s1, d => s2); C2: component1 generic map (gate_delay => 6 ns) port map (a => c, b => d, c => s3, d => s4); C3: component1 generic map (gate_delay => 4 ns) port map (a => s1, b => s2, c => e, d => f); C4: component2 port map (a => s2, b => s3, c => s4, d => g); end circuit;
12