Beruflich Dokumente
Kultur Dokumente
-Código utilizado:
Este es el código utilizado para la entidad y la arquitectura:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.all;
ENTITY codifica_boton IS
END codifica_boton;
BEGIN
PROCESS (piso_donde_va)
BEGIN
CASE (piso_donde_va) IS
END CASE;
END PROCESS;
END arquitectura_cod_boton;
LIBRARY ieee;
USE ieee.STD_LOGIC_1164.all;
ENTITY codifica_boton_test IS
END codifica_boton_test;
COMPONENT codifica_boton IS
PORT
);
END COMPONENT;
-- Declaración de señales
-- Configuración de la arquitectura
BEGIN
);
END arquitectura_boton_test;
2.-Capturas de pantallas:
La librería WORK:
3.-Análisis de resultados:
Tras haber creado la entidad y la arquitectura, procedemos a realizar la simulación.
Dicha simulación debe cumplir lo que dice en el archivo de test. Por eso lo
analizaremos por intervalos(cada intervalo son 20 nanosegundos):
1. (piso_donde_va <= "100" )Es decir, el ascensor esta en el piso 2 con el código
de entrada (piso_donde_va) “100”; por lo cual, la salida (codigo_piso) devuelve
“10”.
2. ("001" AFTER periodo) Cuando pasan 20 ns, el código recibe “001” por lo que
devuelve “00” como dice la arquitectura.
3. ("010" AFTER 2 * periodo) Cuando vuelve a pasar un periodo, cambia y recibe
“010” por lo que sale (codigo_piso) es “01”.
4. ("100" AFTER 3 * periodo) cuando pasa el periodo, cambia de piso al segundo
y devuelve en el código_piso “10” como al principio.
5. ("000" AFTER 4 * periodo) como no maraca nada, se recibe “000”; y como es
distinto de: “001”, “010”, “100”; devuelve “11”.
6. ("111" AFTER 5 * periodo) se marcan 3 pisos a la vez y se recibe “111” ”; y
como es distinto de: “001”, “010”, “100”; devuelve “11”.
7. (“001" AFTER 6 * periodo) se aprieta el botón 0 (“001”) y devuelve “00”.
8. (100" AFTER 7 * periodo) ahorase aprieta el botón del segundo piso, por lo que
la salida (código_piso) será “10”
9. ("010" AFTER 8 * periodo) ahora pasa otro periodo y recibe “010” por lo que se
devuelve el equivalente al haber pulsado el botón 1: “01”.
10. (100" AFTER 9 * periodo) Ahora se pulsa el botón del segundo piso y
devolvemos “10”.
11. ("001" AFTER 10 * periodo) por último se requiere bajar al piso 0 y el
código_piso es: “00”.
1.- Primera parte:
a) Código utilizado:
Código de la entidad y arquitectura de un biestable tipo D activado por flanco de
subida y señal clear asíncrona activa a nivel alto: (los comentarios han sido eliminados)
LIBRARY IEEE;
USE ieee.STD_LOGIC_1164.all;
ENTITY biestable_D_con_clr IS
END biestable_D_con_clr;
BEGIN
END flujo_asin;
b) Capturas:
1. Reloj (CLK).
2. Clear.
3. Entrada (D).
4. Salida (Q).
c) Análisis de los resultados:
Las otras dos señales son la de entrada y la de salida. La de entrada vale cero
en toda la simulación menos en los intervalos: (8ns-10ns), (12ns-13ns), (14ns-23ns),
(24ns-26ns). Como es un biestable activo por flanco de subida, la salida solo se
actualizará cuando el reloj cambie de ‘0’ a ‘1’. Estos casos son:
4ns: como la entrada es ‘0’, la salida vale 0ns (no varía). La señal de
entrada valdrá 1 entre los 4ns a los 12 ns, pero como no hay flanco de
subida, la salida no se actualiza.
12ns: como la entrada pasa a valer ‘1’, la salida pasa a valer ‘1’ hasta un
flanco de subida del reloj donde la entrada sea ‘0’.
20ns: pese a que la entrada ha tomado valores de ‘0’, como en el
vigésimo nanosegundo esta vale ‘1’, la salida seguirá siendo ‘1’.
28ns: en este flanco de subida la entrada vale ‘0’, y la salida cambiara su
valor a ‘0’.
36ns: la salida seguirá siendo ‘0’, puesto que este es el valor de la
entrada en estos dos flancos de subida del reloj.
44ns: la salida seguirá siendo ‘0’, puesto que este es el valor de la
entrada en estos dos flancos de subida del reloj.
2.- Primera parte:
a) Código utilizado:
Código de la entidad y arquitectura de un registro de entradas paralelas, salidas
paralelas y clear asíncrono: (los comentarios han sido eliminados)
LIBRARY IEEE;
USE ieee.STD_LOGIC_1164.all;
ENTITY registro_PP IS
GENERIC (num_bits:natural);
PORT(CLOCK,CLEAR : IN STD_LOGIC;
END registro_PP;
COMPONENT biestable_d_con_clr IS
Q : OUT STD_LOGIC);
END COMPONENT;
BEGIN
B1: biestable_D_con_clr PORT MAP(clock => CLOCK, clear => CLEAR, D => ent_datos(i),
Q => sal_datos(i));
END GENERATE;
END con_generate;
b) Capturas:
1. BID_GRUPO17.VHD
2. RPP_GENE_GRUPO17.VHD
3. RPP_TB.VHD
1. CLOCK (reloj).
2. CLEAR.
3. Entrada.
4. Salida.
Tras esto están la señal de entrada y la señal de salida que posen 5 bits cada
una. La salida tomará los valores de la entrada cuando la señal del reloj esté en flanco
de subida o valdrá “00000” si el clear esta activo (a nivel alto => ‘1’). Los flancos de
subida son:
a) Código utilizado:
Para esta parte de la práctica hemos creado la entidad y la arquitectura de
comportamiento de la máquina de estados finitos (FSM) del ascensor. Está en el
archivo FSM_ascensor_grupo_17.vhd.
b) Capturas de pantallas:
Las siguientes dos señales de salidas son SUBE y BAJA. Sube tomara el valor de
uno cuando el ascensor suba de piso; y baja tomara el valor 0 cuando baje. La señal de
PISO_DONDE_ESTA está compuesta de dos bits y es una señal de entrad, que indica el
piso donde está actualmente el ascensor.
La señal de reloj esta a nivel bajo (‘0’), por lo que al no ser un flanco de
subida, no actualizará el estado.
La señal de codigo_piso vale “00” porque se habrá pulsado el botón del
piso_0 del ascensor.
La señal de sube esta negada, porque el ascensor no sube de piso
La señal de baja vale ‘1’, porque el ascensor baja hasta el piso_0.
La señal de piso_donde_esta vale “11”, porque en el anterior flanco de
subida del reloj, el ascensor seguía en el mismo sitio. Pasará a valer “00”
en el siguiente flanco de subida.
El e_actual es el piso_2 porque esta en dicho piso. Tomara el valor de
e_futuro en el siguiente flanco.
E_futuro es piso_0 porque se ha pulsado el botón del piso_0
(codigo_piso = “00”).
d) Tarea-6:
a) Código utilizado:
Para esta parte hemos utilizado el fichero que codifica el botón de un ascensor
(codifica_boton_grupo_17.vhd) de la práctica 1 y el fichero
(FSM_ascensor_grupo_17.vhd) de la primera parte de esta práctica. Tras esto creamos
un fichero llamado ascensor_comple_grupo_17 donde realizamos la entidad y la
arquitectura de estilo estructural de un ascensor completo.
b) Capturas de pantallas:
c) Tarea-7:
En la señal se observan 8 señales. La primera es la señal de reloj, que se activa
por flanco de subida (pasar de ‘0’ a ‘1’) y tienen un periodo de 10 nanosegundos. La
segunda señal es el piso_donde_va, que es una señal de entrada de tres bits. Luego
está la última señal de entrada que es el codigo_piso que es una señal compuesta de 2
bits. El resto de señales son señales de salida, donde piso_donde_esta, que recibe los
dos bits del codigo_del_piso; también están las señales de estado (e_actual y
e_futuro), que indica el piso donde está por la enumeración de piso_0, piso_1 o piso_2
y las últimas señales son la de sube y baja, que si están activadas (‘1’), entonces el
ascensor subirá o bajará respectivamente.
Se observa que en la simulación todo ocurre sin errores. El fichero test da los
valores de entrada y gracias a los demás ficheros, procesan la información y devuelven
una salida. Por ejemplo en el 65ns, tiene ciertos valores de entrada, y que en el
nanosegundo 70 (flanco de subida del reloj), se actualizan correctamente el
piso_donde_esta, el estado actual, toma el valor del futuro etc…
d) Tarea-8: