Quiz 1 solutions

advertisement
EGRE 365
Digital Systems
Quiz 1
Open Book/ Open Notes
9/26/08
NAME: _SOLUTIONS_
Note: Although it is not shown assume each VHDL
program is preceded by the header:
LIBRARY IEEE;
USE work.all;
USE IEEE.Std_Logic_1164.all;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
1
1. Fill in the blanks to complete the VHDL program to model the circuit shown
below.
Q(3)
Q(2)
Q(1)
Q(0)
ENTITY P1 IS PORT
(
CLK: in std_logic;
RST: in std_logic;
D: in std_logic;
Q: OUT std_logic_vector(3 downto 0)
);
END ENTITY P1;
Architecture arch of P1 is
begin
process(clk) is
variable vQ: std_logic_vector(3 downto 0) := "0000";
begin
if RST = '1' then
vQ := "0000";
elsif CLK'EVENT AND CLK = '1' then
vQ := D & vQ(3 downto 1);
end if;
Q <= vQ;
end process;
end architecture arch;
2
2. Consider the VHDL program shown below.
entity tb is end entity tb;
architecture test of tb is
SIGNAL P: std_logic := '0';
SIGNAL N1 : integer := 1;
SIGNAL N2 : integer := 2;
SIGNAL N3 : integer := 3;
begin
P <= '1' after 10 ns, '0' after 20 ns;
process(P)
begin
N2 <= N3 * N2;
N3 <= N2 - N3;
N1 <= N3 + N2;
end process;
end test;
a)
b)
c)
d)
What is the initial value of N1? ___1____
What is the initial value of N2? ___2____
What is the initial value of N3? ___3____
What is the initial value of P? ____’0’___
3. For the program in problem 2, fill in the table below with the signal values at the
specified time.
Signal
t = 1 ns
t = 11 ns
P
‘0’
‘1’
N1
5
5
N2
6
-6
N2
-1
7
Note: Using ‘ and ‘ around the ‘0’ and ‘1’ for signal P values are
not necessary here.
3
Complete, by filling in the blank lines, the VHDL program to implement the MUX
shown below.
ENTITY mux IS
PORT ( A , B : IN STD_LOGIC_VECTOR (7 DOWNTO 0);
sel : IN STD_LOGIC_vector(1 downto 0) ;
C : OUT STD_LOGIC_VECTOR (7 DOWNTO 0));
END MUX ;
ARCHITECTURE arch OF MUX IS
BEGIN
PROCESS (a, b, sel
)
BEGIN
IF (sel = "00"
) THEN
c <= "00000000";
ELSIF (SEL = "01" ) THEN
c <= a;
ELSIF (sel = "10"
) THEN
c <= b;
ELSE
c <= (OTHERS => 'Z'
);
END IF ;
END PROCESS ;
END arch ;
4
5. Complete, by filling in the blank line, the VHDL program that satisfies the
following specifications: The output Y is ‘1’ if and only if all the bits of input X are
‘1’.
ENTITY P5 IS
PORT
(
X: IN std_logic_vector(3 downto 0);
Y: OUT std_logic
);
END ENTITY P5;
Architecture arch of P5 is
begin
Y <= '1' when X = "1111" else '0';
or
Y <= X(3) and X(2) and X(1) and X(0) ;
end architecture arch;
5
6. The state diagram for a certain synchronous finite state machine (FSM) that
implements a counter is shown below.
1
1
000
001
0
1
010
0
1
011
0
100
0
1
0
The counter is clocked by CLK and has a single input X. When X = 1 the FSM
counts up. When X = 0 the FSM counts down. In the architecture below, fill in each
blank with one line of VHDL code to correctly model this counter.
ENTITY Mod5_UD_CNT IS
PORT (CLK : IN STD_LOGIC;
X : IN STD_LOGIC;
Q : OUT UNSIGNED(3 downto 1)
);
END ENTITY MOD5_UD_CNT;
ARCHITECTURE arch of MOD5_UD_CNT IS
begin
process(clk)
variable cnt: unsigned(3 downto 1) := "000";
begin
if clk'event and clk = '0' then
if X = '1' and cnt /= "100" then
cnt := cnt + 1;
elsif X = '0' and cnt /= X"000" then
cnt := cnt - 1;
end if;
end if;
Q <= cnt;
end process;
END arch;
6
Download