Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ingeniería Electrónica
Diseño digital con VHDL
29/Marzo/2020
Introducción
Objetivos
La separación del bloque combinacional que determina el próximo estado y
el bloque de memoria F/Fs y que se obtenga una sentencia para cada uno
de esos 2 bloques.
Comparación en simulaciones de la versión original y la versión que se
creó.
Marco teórico
El modelo Moore es donde las salidas únicamente dependen del estado del
circuito.
El modelo Mealy es aquel cuyas salidas no únicamente dependen del estado del
circuito si no que también estas dependen de las entradas del mismo circuito.
Desarrollo
Se creó un proyecto en el ambiente de desarrollo Xilinx para copiar y analizar
posteriormente el lenguaje descriptivo de la circuitería de un detector de secuencia
con modelo Moore.
Una vez ya fue creado este proyecto se copió del archivo proporcionado por el
docente por medio de la plataforma el contenido de este con el cual se puede
observar la aplicación del modelo Moore, después se procedió a realizar el
objetivo, el cual es la obtención de un bloque combinacional y del bloque de
memoria siendo este último el de los flip-flops y, al mismo tiempo, obtener dos
process para la descripción VHDL del detector de secuencia Moore.
En la descripción en VHDL, para llegar a obtener los dos process, lo que hicimos
fue primero tener las señales Y, actual, siguiente, más las constantes de los
estados A,B,C, se tiene que saber que estas ya no son de tipo state_type como se
ve en la primera versión de este secuenciador de Moore, sino que ahora son
meras constantes de tipo std_logic y, además a estas, se les asignó su valor
binario de estado que se mostró en la clase.
Puesto esto, se colocó el primer process siendo controlado por W y la señal
actual, que es el bloque combinacional que determinará el próximo estado. En
este bloque, se necesita analizar la señal actual y para esto se optó por tener un
case donde la señal actual se analiza para A,B,C donde, dependiendo del valor
que tengamos en W, siendo como únicos posibles valores 0 o 1, dependiendo de
estos estados se realizarán diferentes acciones, si es 0 se devolverá al estado
inicial (A o “00”) pero si es 1 continuará a un estado posterior que será B si
anteriormente fue A y C si anteriormente fue B, además, continuara en C si la
entrada W sigue tomando el valor de 1 consecutivamente. Se termina el case y,
por lo tanto, terminamos el process.
En el segundo bloque, el cual es el bloque de f/fs o bloque de memoria donde
tendremos el clock y el reset. Este bloque incluye una condición reset donde si
este tiene el valor 0 la señal actual de Y se asignara al estado inicial (A o “00”),
usando un elsif para cuando se tenga un evento de reloj y este esté en alto a la
señal actual de Y se le asignará la siguiente señal de Y para que pueda analizarse
en el siguiente case, esto es la memoria, y, como línea final, se añadió una
asignación a la salida Z donde se tiene como condición a un 1 solamente cuando
la señal de Y se encuentre en el estado C u “11”.
Por último, lo realizado fue la simulación tanto con un solo process como con dos
para la comparación en simulación de estas dos descripciones en VHDL.
Resultados
Simulación de la descripción VHDL original.
Simulación y esquemático de la descripción VHDL con dos procesos.
Conclusión
Se observó de manera eficaz el funcionamiento de descripción Moore aunque con
respecto al esquemático se vio como el mismo se disminuyó en tamaño puesto
que habíamos hecho dos procesos donde separábamos los f/fs con respecto del
bloque combinacional pero dimos por hecho que la funcionabilidad de ambos es
exactamente igual como se puede apreciar en las simulaciones.
Referencias
https://mecatronic2.wordpress.com/2012/11/07/detector-de-secuencia-maquina-de-estados-
moore/ -- Diego González García 7 de nov.
https://www.academia.edu/4867365/Fundamentos_de_logica_digital_con_diseno_VHDL_-
_Brown_2ed_---HD Fundamentos de lógica digital con diseño VHDL Brown 2ed Pag 533.
Anexos
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity SEC_MOORE_ASIG_ESTD is
end SEC_MOORE_ASIG_ESTD;
begin
z <= '1' when y_actual = C else '0' ; --La salida (Z) sera 1 solamente cuando la señal
actual de y sea
-- igual al estado C "11"
end Behavioral;
Test Bench
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity SEC_MOORE_TB is
end SEC_MOORE_TB;
component SEC_MOORE
port(Clock, Resetn, w: IN STD_LOGIC;
Z : OUT STD_LOGIC);
end component;
signal Clock: std_logic:= '1';
signal Reset: std_logic:= '0';
signal w: std_logic:= '0';
signal Z: std_logic;
begin
UUT: SEC_MOORE
PORT MAP(
Clock => Clock,
Resetn => Reset,
Z => Z,
w => w );
end Behavioral;