Pregunta 4 · Fonaments dels Computadors UAB 2018
Tema: Descripción de máquinas de estados en VHDL · Del examen Examen Parcial Bloque 2 - Curso 2018-2019 (2018)
Enunciado
Pregunta 4 (10 puntos). Análisis e implementación de una MEF descrita en VHDL
A partir del siguiente código VHDL que modela una máquina de estados finitos:
library ieee;
use ieee.std_logic_1164.all;
entity TriProces is
port ( clk, rst: in std_logic;
x, y: in std_logic;
z: out std_logic);
end TriProces;
architecture behavior of TriProces is
type estados is range 0 to 3;
signal cs, ns: estados;
Begin
synchroProc: process (clk, reset)
begin
if rst = '1' then cs <= 0;
elsif (clk'event and clk = '1') then
cs <= ns;
end if; end if;
end process synchroProc;
NsProc: process (cs, x, y)
Begin
ns <= cs;
case cs is
when 0 => if (not(x xor y)='1') then ns <= 1; end if;
when 1 => if (x='1') then ns <= 2; else ns <= 3; end if;
when 2 => ns <= 3;
when 3 => if ((x xor y)='1') then ns <= 0; end if;
end case;
end process NsProc;
OutProc: process (cs, x, y)
begin
case cs is
when 0 => z <= not(x xor y);
when 1 => z <= x;
when 2 => z <= y;
when 3 => z <= x xor y;
end case;
end process outProc;
end architecture behavior;
a)
Determina razonadamente si se trata de una máquina de tipo Moore o de tipo Mealy. En base a dicha clasificación, escoge el diagrama de bloques adecuado entre las dos opciones mostradas a continuación y complétalo asociando los nombres de los procesos VHDL a sus bloques correspondientes, especificando el nombre y el ancho en bits de cada una de las señales:
Moore
Mealy
Bloque / Señal del esquema
Nombre / Proceso asociado
Ancho (# bits / # FFs)
Entradas primarias
Circuito Comb. Estado Siguiente
—
Señal Estado Siguiente (hacia Memoria)
Bloque de Memoria (Proceso / FFs)
Señal Estado Actual (retroalimentación)
Circuito Comb. Salidas
—
Salida generada
b)
Diseña la implementación circuital directa del proceso combinacional NsProc empleando preferentemente multiplexores (MUX) y las puertas lógicas que resulten estrictamente necesarias.
c)
Dibuja el grafo de transición de estados formal correspondiente al autómata modelado por dicha descripción VHDL.

Solución
Según los criterios oficiales de corrección
a) Determina si se trata de una máquina de tipo Moore o de tipo Mealy
Solución: Mealy
a) Justificación del tipo de máquina
Solución: En el proceso generador de salidas OutProc la salida z depende simultáneamente del estado actual cs y de las entradas primarias x, y.
a) Entradas primarias: Nombre
Solución: x, y
a) Entradas primarias: Ancho (# bits)
Solución: 2
a) Circuito Comb. Estado Siguiente: Proceso asociado
Solución: NsProc
a) Señal Estado Siguiente: Nombre
Solución: ns
a) Señal Estado Siguiente: Ancho (# bits)
Solución: 2
a) Bloque de Memoria: Proceso asociado
Solución: synchroProc
a) Bloque de Memoria: Número de Flip-Flops (# FFs)
Solución: 2
a) Señal Estado Actual: Nombre
Solución: cs
a) Señal Estado Actual: Ancho (# bits)
Solución: 2
a) Circuito Comb. Salidas: Proceso asociado
Solución: OutProc
a) Salida generada: Nombre
Solución: z
a) Salida generada: Ancho (# bits)
Solución: 1
b) Diseña la implementación circuital directa del proceso combinacional NsProc
Solución: Implementación mediante un multiplexor principal de 4 a 1 de buses de 2 bits controlado por el estado actual cs (cs1, cs0): - Canal 0 (cs = 0): Mediante un MUX 2:1 secundario controlado por not(x xor y), conmuta entre el estado siguiente 1 (binario 01) si se cumple la condición, o retiene cs (00). - Canal 1 (cs = 1): Se multiplexa con la entrada x: si x = 1 transita a 2 (10), y en caso contrario a 3 (11). - Canal 2 (cs = 2): Asignación incondicional a 3 (11), conectando directamente las entradas del canal a constantes binarias. - Canal 3 (cs = 3): Mediante un MUX 2:1 gobernado por x xor y, si la condición se cumple pasa al estado 0 (00) y si no, preserva cs (11).
c) Dibuja el grafo de transición de estados formal correspondiente al autómata modelado
Solución: Autómata con 4 nodos etiquetados 0, 1, 2 y 3: - Estado 0: Si X xor Y = 0 (XY in {00, 11}), transita a 1 con salida z = 1. Si X xor Y = 1 (XY in {01, 10}), permanece en 0 con z = 0. - Estado 1: Si X = 1 (XY = 1-), transita a 2 con salida z = 1. Si X = 0 (XY = 0-), transita a 3 con salida z = 0. - Estado 2: Para cualquier valor de las entradas (XY = --), transita incondicionalmente a 3 con salida z = Y. - Estado 3: Si X xor Y = 1 (XY in {01, 10}), transita a 0 con salida z = 1. Si X xor Y = 0 (XY in {00, 11}), permanece en 3 con salida z = 0.
La explicación paso a paso, hecha con IA, es Premium. Premium
Resuélvelo aquí mismo: corrección automática, pistas y solución paso a paso.
‹ Pregunta 3 · 2022 · Pregunta 5 · 2018 ›