Sistemes Electronics Digitals (SED) 04/12/2008 - deeea

Transcripción

Sistemes Electronics Digitals (SED) 04/12/2008 - deeea
Universitat Rovira i Virgili (URV)
Escola Técnica Superior d’Enginyeria (ETSE)
Enginyeria Automática i Electrònica Industrial (EAEI)
3 ¿Y para la arquitectura A2? (mismas posibles respuestas que la pregunta
anterior)
Sistemes Electronics Digitals (SED)
04/12/2008
Test: Respuesta correcta: +1 punto, Respuesta incorrecta: –1/3 punto
1. Se tiene un bloque lógico LUT de 4 entradas de la figura, que debe mapear
la función lógica F(a,b)=a*b. El contenido de la LUT deberá ser:
Nota: El contenido de la LUT es expresado como (LUT)={($F),($E),($D),…($0)}
donde I0 es el LSB e I3 es el MSB, y la X expresa cualquier valor lógico en
(LUT) o cualquier señal de entrada a la LUT
X
a
b
X
I0
I1
I2
I3
a) (LUT)={1,1,0,0, 0,0,0,0,
b) (LUT)={1,1,1,1, 1,1,1,1,
c) (LUT)={X,1,1,X, X,1,1,X,
d) Ninguna de las anteriores
4 Se desea generalizar la descripción del diseño DESIGN de la figura, con un
genérico N (N es el número de etapas), tal como se muestra en el código
que hay a continuación. La asignación en (1) correcta es:
F(a,b)=a*b
LUT
t
1,1,0,0,
0,0,0,0,
X,1,1,X,
i
0,0,0,0}
0,0,0,0}
X,1,1,X}
library ieee;
use ieee.std_logic_1164.all;
architecture A1 of DIS is
signal a,b: std_logic;
begin
process(clk) is
begin
if rising_edge(clk) then
a<=i;
b<=a;
o<=b;
end if;
end process;
end architecture;
entity DIS is
port(
clk: in std_logic;
i: in std_logic;
o: out std_logic);
end entity;
D
o
Q
i
D
DFF
clk
D
Q
DFF
clk
(a)
i
Q
DFF
D
(b)
Q
D
DFF
Q
DFF
clk
(c)
D
Q
DFF
o
Ninguno de
los anteriores
(d)
D
Q
DFF
D
Q
DFF
library ieee;
use ieee.std_logic_1164.all;
2 El resultado de síntesis del diseño VHDL que hay a continuación, es:
i
architecture A2 of DIS is
begin
process(clk) is
variable a,b: std_logic;
begin
if rising_edge(clk) then
o<=b;
a:=i;
b:=a;
end if;
end process;
end architecture;
o
entity DESIGN is
generic(
N: integer:=128);
port(
clk: in std_logic;
i,t: in std_logic;
o: out std_logic);
end entity;
a) x(i+1)<=x(i) xor t;
b) x(i)<=x(i) xor t(i);
c) x(i)<=x(i-1) xor t;
d) Ninguna de las anteriores
D
Q
DFF
D
Q
o
DFF
architecture A of DESIGN is
signal x: std_logic_vector(0 to
N);
begin
x(0)<=i;
o<=x(N);
g0: for i in 1 to N generate
process(clk) begin
if rising_edge(clk) then
--(1)
end if;
end process;
end generate;
end architecture;
5 El siguiente código modela el circuito de la figura. Para que sea correcto el
modelo se debe substituir (1), (2) y (3) por:
--librerias
... –-definicion entidad
circuito
VDD
a
o
...
o<='L';
a) o<='H';
b) o<='1';
o<='0';
c) o<='1';
o<='0';
d) Ninguna de las anteriores
architecture X1 of circuito is
signal a,o: std_logic;
... --otras declaraciones
begin
o<=...; --(1)
o<=...; --(2)
o<=...; --(3)
... --otras asignaciones
... --y procesos que no usan o
end architecture;
o<='1' when a='0' else '0';
o<='1' when a='0' else '0';
o<='1' when a='0' else 'Z';
6 En el circuito de la anterior figura, el de a=’0’ a los 0 ns, y a=’1’ a los 100 ns.
El valor de la señal o es:
a)
b)
c)
d)
o=’1’ antes de 100 ns, o=’X’ después de 100 ns
o=’1’ antes de 100 ns, o=’W’ después de 100 ns
o=’X’ antes de 100 ns, o=’Z’ después de 100 ns
Ninguno de los anteriores
7 Se desea implementar la máquina de estados finito (FSM), con el diagrama
de estados de la figura (sólo muestra las condiciones del cambio de estado,
en función de la entrada i(1 downto 0)). La condición (1) es:
01
SB
11
10
SA 11
10
SD
SC
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
entity FSM is port(
clk,rst: in std_logic;
i: in std_logic_vector(1 downto 0);
o: out std_logic_vector(3 downto 0));
end entity;
architecture BEH of FSM is
type TFSM is (SA,SB,SC,SD);
signal s,s2: TFSM;
signal i2: unsigned(i'range);
begin
process(i) begin
case i is
when "01"=> s2<=SB;
when "10"=> s2<=SC;
when others=> s2<=SD;
end case;
end process;
process begin
wait until rising_edge(clk);
if rst='1' then
s<=SA;
i2<="00";
--condicion(1)
s<=s2;
i2<=unsigned(i);
end if;
end process;
process(s) begin
case s is
when SA=> o<="0001";
when SB=> o<="0010";
when SC=> o<="0100";
when SD=> o<="1000";
end case;
end process;
end architecture;
11
a)
b)
c)
d)
elsif unsigned(i)>i2 then
elsif unsigned(i)/=i2 then
elsif unsigned(i)>=i2 then
Ninguna de las anteriores
clk
reset
8. Se substituye el último de los procesos (que asigna la salida o), por el
proceso p1 o p2. ¿Cuál/Cuales de los procesos es/son funcionalmente
equivalente/s al de la anterior pregunta?
oA
P1: process(s)
case s is
when SA=>
when SB=>
when SC=>
when SD=>
end case;
end process;
oC
begin
o(o'low+0)<='1';
o(o'low+1)<='1';
o(o'low+2)<='1';
o(o'low+3)<='1';
P2: process(i2) begin
o<=(others=>'0');
o(conv_integer(i2))<='1';
end process;
a)
b)
c)
d)
oB
los dos
sólo P1
sólo P2
Ninguno
9. Se diseña un prescaler de 3-bits, con el código VHDL de abajo. La salida
correcta o, para las entradas clk y rst mostradas en la forma de onda, es:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
entity pscaler is port(
clk,rst: in std_logic;
o: out std_logic);
end entity;
architecture BEH of pscaler is
begin
process(rst,clk)
variable cnt: unsigned(2 downto 0);
--(2)
begin
if rising_edge(clk) then
o<='0';
cnt:=cnt-1;
if cnt=0 then
o<='1';
end if;
end if;
if rst='1' then
cnt:=conv_unsigned(7,3);
--(1)
end if;
end process;
end architecture;
a)
b)
c)
d)
oA
oB
oC
Ninguna
10. Si se desea que la descripción del anterior prescaler pueda generalizarse
para un número arbitrario de bits, modificando en (2) por
cnt: unsigned(XXX-1 downto 0) (XXX es el número de bits). La
modificación/es que puede/n hacerse en (1) es/son:
cnt:=(others=>'1'); --(1a)
cnt:=conv_unsigned((2**XXX)-1,cnt'length); --(1b)
a)
b)
c)
d)
Cualquiera de las dos
Sólo la 1a
Solo la 1b
Ninguna de las dos
Nombre________________________________________________________________
Pregunta
1
2
3
4
5
6
7
8
9
10
A
X
B
C
D
X
X
X
X
X
X
X
X
X

Documentos relacionados