2
PROBLEMA 3 (Examen Parcial, II Semestre 2014-2015) Diseñe un circuito digital el cual se activa mediante una señal habilitadora START. El circuito selecciona lo que mostrará en la salida F binaria de 5 bits. Dos datos binarios de 4 bits, X y Y, son ingresados al sistema. Además, tiene una entrada de selección S de 2 bits (S1 S0). El sistema funciona de la siguiente manera: Cuando START.L=L, el sistema se comporta como una calculadora básica y realiza lo especificado en la tabla siguiente; caso contrario, el sistema determina el mayor de los datos entre X y Y, presentándolo en F. S1 S0 F Operación 0 0 0000 Reset 0 1 Y - X Resta 1 0 X - Y Resta 1 1 X + Y Suma aritmética Escriba el código VHDL equivalente del circuito descrito, mediante la descripción RTL. Circuito Digital 4 4 S1.H S0.H 5 F X Y START.L

1436288938_75__DigitalesIParcialDic2014

Embed Size (px)

DESCRIPTION

SolucionTema3VHDSD

Citation preview

Page 1: 1436288938_75__DigitalesIParcialDic2014

PROBLEMA 3 (Examen Parcial, II Semestre 2014-2015)

Diseñe un circuito digital el cual se activa mediante una señal habilitadora START. El circuito

selecciona lo que mostrará en la salida F binaria de 5 bits. Dos datos binarios de 4 bits, X y Y, son

ingresados al sistema. Además, tiene una entrada de selección S de 2 bits (S1 S0). El sistema

funciona de la siguiente manera: Cuando START.L=L, el sistema se comporta como una calculadora

básica y realiza lo especificado en la tabla siguiente; caso contrario, el sistema determina el mayor

de los datos entre X y Y, presentándolo en F.

S1 S0 F Operación

0 0 0000 Reset

0 1 Y - X Resta

1 0 X - Y Resta

1 1 X + Y Suma aritmética

Escriba el código VHDL equivalente del circuito descrito, mediante la descripción RTL.

Circuito

Digital

4

4

S1.H

S0.H

5 F

X

Y

START.L

Page 2: 1436288938_75__DigitalesIParcialDic2014

Solución

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity tema3 is

port(x,y: in std_logic_vector(3 downto 0);

start: in std_logic;

s1, s0: in std_logic;

f: out std_logic_vector(4 downto 0));

end tema3;

architecture solucion of tema3 is

signal compar,calc,aux1,aux2: std_logic_vector(4 downto 0);

begin

aux1<= '0'&x;

aux2<= '0'&y;

compar<= aux2 when (aux2>aux1) else aux1;

calc<= "00000" when (s1='0' and s0='0') else

aux2-aux1 when (s1='0' and s0='1') else

aux1-aux2 when (s1='1' and s0='0') else

aux1+aux2 when (s1='1' and s0='1') else

Unaffected;

f<= calc when(start='1') else compar;

end solucion;