SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
DEPARTAMENTO DE TECNOLOGÍA INFORMÁTICA
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA
Máquinas de Estados Finitos (FSM) en Verilog
Enunciados de Prácticas de Laboratorio
Estructura de Computadores
v1.03
1 Introducción y objetivos
En esta práctica nos basaremos en los conocimientos adquiridos en la práctica anterior. Por tanto, se
presupone que el alumno sabe:
• Crear un proyecto en el entorno ISE de Xilinx.
• Trabajar con módulos Verilog simples, de tipo secuencial y de tipo combinacional.
• Trabajar con módulos más complejos definidos de forma estructural mediante la interconexión
de instancias de módulos más simples.
• Usar módulos de testbench para simular y comprobar el funcionamiento de los módulos
diseñados.
• Modificar un módulo de testbench para adaptarlo a las pruebas a las que desea someter el
módulo a probar.
Los objetivos para esta práctica son trabajar con módulos Verilog más complejos correspondientes a
la descripción de Máquinas de Estados Finitos (FSM). En concreto, se pretende:
• Describir en Verilog de forma estructural un Circuito Secuencial Síncrono (CSS) partiendo del
esquema de puertas lógicas y biestables de dicho circuito.
• Describir en Verilog de forma procedimental un circuito secuencial síncrono que implemente una
Máquina de Estados Finitos (FSM) utilizando como punto de partida únicamente el diagrama de
estados de dicha máquina.
• Usar y modificar módulos de testbench para simular y verificar el comportamiento de los
módulos diseñados.
Estructura de Computadores 2
• Hacer uso de las herramientas de síntesis del entorno ISE de Xilinx para comprobar que a partir
de la descripción procedimental de un modulo Verilog se obtiene un circuito equivalente.
2 Estudio previo
En esta práctica se va a describir en Verilog, de dos formas distintas, el Circuito Secuencial Síncrono
(CSS) de la figura 1.
Figura 1: Circuito Secuencial Síncrono (CSS)
Utilizando las técnicas de análisis vistas en la asignatura CED podríamos analizar el CSS de la figura
2 y obtener el diagrama de estados de la máquina de estados finitos (FSM) que implementa. Dicho
diagrama se muestra en la figura 2.
Figura 2: Diagrama de estados de la FSM
Por tanto, es fácil interpretar que el circuito de la figura 1 es capaz de detectar en la entrada 'x' una
secuencia de tres unos seguidos (con solapamiento) y, en ese momento, activar la salida 'z'.
La figura 3 nos muestra la forma general de cualquier Circuito Secuencial Síncrono (CSS).
Estructura de Computadores 3
Figura 3: Estructura general de un CSS
Si reorganizamos los elementos del circuito de la figura 1 para adaptarlos a la forma general de un
CSS mostrada en la figura 3, obtenemos un circuito como el que se muestra en la figura 4. Nótese que
en el gráfico de la figura 4 no se están mostrando todos las puertas lógicas que forman parte del circuito
combinacional, porque es tarea del alumno completarlo, como veremos más adelante.
Figura 4: Reestructuración de los elementos del circuito para adoptar la forma general de un CSS
Estructura de Computadores 4
3 Descripción estructural de un CSS a partir del circuito
Se pretende describir en Verilog el circuito secuencial síncrono de la figura 4 y que, como sabemos,
es equivalente al de la figura 1. Realizaremos una descripción Verilog de tipo estructural, instanciando e
interconectando módulos .
Para esta parte de la práctica se dispone de los seis archivos Verilog detallados a continuación, en la
tabla 1:
ARCHIVO CONTENIDO TAREA A REALIZAR
biestable_JK.v Descripción Verilog de un
biestable JK.
Estudiar su funcionamiento antes de la
sesión de laboratorio.
biestable_T.v Descripción Verilog incompleta
de un biestable T.
Completar la descripción Verilog durante
la sesión de laboratorio.
circuito_combinacional.v Descripción Verilog incompleta
del circuito combinacional de la
figura 4.
Completar la descripción Verilog durante
la sesión de laboratorio.
circuito_secuencial.v Descripción Verilog incompleta
del circuito secuencial de la
figura 4.
Completar la descripción Verilog durante
la sesión de laboratorio.
biestable_T_tb.v Descripción Verilog del modulo
de testbench del módulo
biestable_T.
Usarlo durante la sesión de laboratorio
para probar que el módulo biestable_T
funciona correctamente.
circuito_secuencial_tb.v Descripción Verilog del modulo
de testbench del módulo
circuito_secuencial.
Usarlo durante la sesión de laboratorio
para probar que el módulo
circuito_secuencial funciona
correctamente. Modificarlo durante la
sesión de laboratorio para probar nuevas
secuencias de entrada.
Tabla 1
3.1 Creación del proyecto.
Cree un proyecto en el entorno ISE, tal y como aprendió en la primera práctica, dándole el nombre
que prefiera. Recuerde que no puede aparecer ningún carácter acentuado en ninguna parte de la ruta
de carpetas que conduce al proyecto.
Añada al proyecto, de una sola vez, los seis archivos de la tabla 1, salvo que su profesor le indique
que debe ir añadiendo los archivos al proyecto conforme los vaya necesitando.
3.2 Descripción Verilog del biestable T
Complete el módulo biestable_T presente en el archivo biestable_T.v (fragmento de código 1). Luego
utilice el testbench del archivo biestable_T_tb.v para comprobar que funciona correctamente. El aspecto
de los primeros 50 ns de la simulación debe ser idéntico al de la figura 5. Fíjese bien en los resultados
completos de la simulación y si cree que el biestable T que ha diseñado no funciona correctamente
revise el código Verilog y modifíquelo hasta que esté usted conforme con lo que ve en la simulación.
Cuando crea que todo es correcto conteste a las siguientes cuestiones sobre la simulación:
1. ¿Cómo se puede apreciar, en la simulación, que la señal de clear (cl) es asíncrona?
Estructura de Computadores 5
2. ¿En que instantes (en ns) se pone a 1 el biestable?
3. ¿En qué instantes (en ns) se pone a 0 el biestable sin que sea a causa de la señal de clear (cl)?
Para averiguar fácilmente los tiempos que se le preguntan puede hacer click sobre las formas de
onda con el ratón. Esto hace que aparezca en esa posición un cursor amarillo, como el que se ve en la
figura 5, que le informa del valor del tiempo de simulación en ese instante. De forma similar, al hacer
click y arrastrar el ratón sobre las formas de onda aparecen dos cursores y podemos medir diferencias
de tiempo.
// Biestable T sincronizado por flancos de subida de reloj.
// Tiene una señal de clear 'cl' asincrona, activa en baja.
module biestable_T(
input clk,
input T,
input cl, // 'cl' es asincrona y activa en baja
output reg q
);
// Describa el funcionamiento del biestable T de forma
// procedimental utilizando un bloque 'always'
// ESCRIBA AQUI SU CODIGO
// ESCRIBA AQUI SU CODIGO
// ESCRIBA AQUI SU CODIGO
endmodule
Fragmento de código 1: Contenido del archivo biestable_T.v
Figura 5: Resultado de simular el testbench biestable_T_tb
3.3 Descripción Verilog del circuito combinacional
Complete el módulo circuito_combinacional presente en el archivo circuito_combinacional.v
(fragmento de código 2) de forma que su funcionamiento corresponda al del circuito combinacional de la
figura 4. Un buen método para no equivocarse en esta tarea sería dibujar primero, sobre el bloque del
circuito combinacional de la figura 4, las puertas lógicas que faltan y que hacen que su comportamiento
sea equivalente al de la figura 1.
Si comete algún error al describir el módulo circuito_combinacional, el error debería detectarse
cuando ejecute, más adelante, el testbench del módulo circuito_secuencial que, como ya se intuye en la
figura 4, va a contener una instancia del módulo circuito_combinacional.
Estructura de Computadores 6
// modulo circuito_combinacional
module circuito_combinacional(
input x,
input q1,
input q2,
output z,
output T1,
output J2,
output K2
);
// Del esquema del circuito secuencial se ha
// sacado la ecuacion de la salida 'z' y se ha
// descrito con un 'assign'.
assign z = x & q2;
// Saque usted de dicho esquema las ecuaciones
// de excitacion de los biestables y describalas
// todas con varios 'assign' justo a continuacion
// ESCRIBA AQUI UN 'assign'
// ESCRIBA AQUI OTRO 'assign'
// ESCRIBA AQUI OTRO 'assign'
endmodule
Fragmento de código 2: Contenido del archivo circuito_combinacional.v
3.4 Descripción Verilog del circuito secuencial
En este apartado debe completar el módulo circuito_secuencial presente en el archivo
circuito_secuencial.v (fragmento de código 3) de forma que su funcionamiento se corresponda con el del
circuito secuencial representado en la figura 4.
Dispone del esquema de la figura 7 para facilitarle el trabajo. En dicho esquema se muestran las tres
instancias de módulos que forman parte del módulo circuito_secuencial. La figura 7 muestra, para evitar
errores, los nombres de todos los elementos (los módulos, las instancias, los puertos de entrada y de
salida de los módulos y los cables necesarios) de manera idéntica a como aparecen en las diferentes
descripciones Verilog que estamos manejando.
Cuando haya terminado de modificar el archivo circuito_secuencial.v utilice el testbench del archivo
circuito_secuencial_tb.v para comprobar que el módulo circuito_secuencial funciona correctamente. El
aspecto de la simulación durante los primeros 150 ns debe ser el de la figura 6. Si la respuesta del
circuito a las formas de onda generadas por el testbench no es la adecuada, sin duda es porque ha
cometido algún error en este mismo apartado o bien en el apartado anterior (el del módulo
circuito_combinacional), por lo que tendrá que averiguar en qué se ha confundido y solventar el error.
Estructura de Computadores 7
// modulo circuito_secuencial
//
// Definido de forma estructural, mediante la interconexion
// de instancias de otros modulos previamente definidos.
module circuito_secuencial(
input clk,
input x,
input clear,
output z
);
// Cables necesarios para unir las instancias
// de los dos biestables y del circuito combinacional
wire cable_T1_T, cable_J2_J, cable_K2_K, cable_q_q1, cable_q_q2;
// Instancia del modulo biestable_JK
biestable_JK instancia_biestable_JK(
.clk(clk),
.J(cable_J2_J),
.K(cable_K2_K),
.cl(clear),
.q(cable_q_q2)
);
// Instancia del modulo biestable_T
// ESCRIBA AQUI SU CODIGO
// ESCRIBA AQUI SU CODIGO
// ESCRIBA AQUI SU CODIGO
// Instancia del modulo circuito_combinacional
// ESCRIBA AQUI SU CODIGO
// ESCRIBA AQUI SU CODIGO
// ESCRIBA AQUI SU CODIGO
endmodule
Fragmento de código 3: Contenido del archivo circuito_secuencial.v
Figura 6: Primera parte del resultado de simular el testbench circuito_secuencial_tb
Si piensa que los resultados de la simulación del módulo circuito_secuencial_tb son correctos,
conteste a las siguientes preguntas:
1. El testbench del archivo circuito_secuencial_tb.v inyecta al módulo circuito_secuencial una
secuencia de ceros y unos sincronizada con el reloj. ¿Cuál es la secuencia completa dígitos
binarios que está generando el módulo de testbench en la entrada 'x' para probar si funciona
correctamente el circuito secuencial?
2. ¿Cuántos pulsos de nivel alto aparecen en la salida 'z' del circuito_secuencial en respuesta a la
secuencia de entrada? ¿Cuánto dura cada pulso (en ns)?
3. ¿Habría sido la salida 'z' distinta si el circuito detector de la secuencia 111 estuviese
programado para detectar dicha secuencia de entrada pero sin solapamiento? Indique cómo
habrían sido los pulsos que habrían aparecido en la salida 'z' para este mismo testbench.
Estructura de Computadores 8
Figura 7: Esquema del módulo circuito_secuencial utilizando “nombres Verilog”
3.5 Modificación del testbench del circuito secuencial
Modifique el testbench del archivo circuito_secuencial_tb.v (fragmento de código 4) para comprobar
que el modulo circuito_secuencial funciona correctamente cuando recibe la secuencia de entrada
001110111101111100110. Tenga en cuenta que la parte inicial de esa secuencia ya la está generando
el testbench actual. Tan solo debe añadir al final del archivo de testbench el código necesario para
generar los últimos bits de la secuencia (los nuevos). Si lo hace correctamente, al ejecutar la nueva
simulación ésta debe durar 450 ns y el aspecto de la última parte debe ser el de la figura 8. Cuando crea
que los resultados de la nueva simulación son correctos, conteste a las siguientes preguntas sobre ella:
1. ¿En que instante de tiempo (en ns) termina el pulso de mayor duración (de nivel alto) que se
aprecia en la salida 'z'?
2. ¿Habría cambiado la forma de onda de la salida 'z' si el último pulso de nivel alto de la entrada
'x' hubiese durado 50 ns en lugar de 40 ns? Si es así, indique qué forma habría tenido la salida.
Figura 8: La parte final de la simulación del módulo circuito_secuencial_tb, tras las modificaciones
Estructura de Computadores 9
`timescale 1ns / 1ps
// Modulo de testbench del modulo circuito_secuencial
module circuito_secuencial_tb;
// datos 'reg' para conectar a las entradas del modulo a probar
reg tb_clk;
reg tb_x;
reg tb_clear;
// datos 'wire' para conectar a las salidas del modulo a probar
wire tb_z;
// Instancia del modulo a probar
circuito_secuencial instancia_circuito_secuencial (
.clk(tb_clk),
.x(tb_x),
.clear(tb_clear),
.z(tb_z)
);
always begin // always: Siempre generando reloj de periodo 20ns
#10; // espero 10ns ...
tb_clk = ~tb_clk; // ...y ahora invierto la señal de reloj
end
initial // initial: solo se ejecuta una vez al inicio
begin
tb_clk = 0;
tb_x = 1'bZ; // Inicialmente 'x' está desconectada (alta impedancia = Z)
tb_clear = 1; // Empiezo con el 'clear' asincrono DES-activado.
#5;
tb_clear = 0; // Activo 'clear' asincrono poco antes del primer flanco de subida.
@(posedge tb_clk);
@(posedge tb_clk);
tb_clear = 1; // DES-activo 'clear' justo después de flanco subida.
// Generación se la secuencia de entrada.
tb_x = 0;
repeat (2) // x=0 durante 2 ciclos.
@(posedge tb_clk);
tb_x = 1;
repeat (3) // x=1 durante 3 ciclos.
@(posedge tb_clk);
tb_x = 0;
repeat (1) // x=0 durante 1 ciclo.
@(posedge tb_clk);
tb_x = 1;
repeat (4) // x=1 durante 4 ciclos.
@(posedge tb_clk);
tb_x = 0;
repeat (1) // x=0 durante 1 ciclo.
@(posedge tb_clk);
// ESCRIBA AQUI EL NUEVO CODIGO PARA
// GENERAR NUEVAS SECUENCIAS DE ENTRADA
// AL CIRCUITO SECUENCIAL.
$finish;
end
endmodule
Fragmento de código 4: Contenido del archivo de testbench circuito_secuencial_tb.v
Estructura de Computadores 10
4 Descripción Verilog de una FSM a partir del diagrama de estados
Se pretende describir en Verilog la maquina de estados finitos (FSM) cuyo diagrama de estados se
muestra en la figura 2. Esta descripción debe comportarse, como es lógico, de forma idéntica al circuito
de la figura 4, pero no la vamos a obtener como hemos hecho anteriormente, a partir de dicho circuito,
sino que vamos a obtener el código Verilog directamente, a partir del diagrama de estados, usando la
técnica explicada en el tema 1 de EdC.
Para esta parte de la práctica se dispone de los archivos Verilog que a continuación se detallan en la
tabla 2:
ARCHIVO CONTENIDO TAREA A REALIZAR
fsm.v Descripción Verilog incompleta de la
máquina de estados (FSM) cuyo diagrama
de estados se muestra en la figura 2.
Completar la descripción Verilog
durante la sesión de laboratorio.
fsm_tb.v Descripción Verilog del módulo de
testbench del módulo fsm.
Usarlo durante la sesión de laboratorio
para probar que el módulo fsm funciona
correctamente.
Tabla 2
4.1 Añadir los nuevos archivos al proyecto.
Añada al proyecto que ya tiene creado los dos archivos de la tabla 2. Tenga en cuenta que es normal
que le aparezcan errores de sintaxis en el panel de Consola y en el panel de Errores, pues el archivo
fsm.v está incompleto.
4.2 Descripción procedimental en Verilog a partir del diagrama de estados
Complete el modulo fsm presente en el archivo fsm.v (fragmento de código 5) de forma que
represente el funcionamiento de una máquina de estados finitos con un diagrama de estados como el de
la figura 2 (recuerde la técnica vista en el tema 1 de EdC)
Utilice el testbench del archivo fsm_tb.v para comprobar que el módulo fsm funciona correctamente.
El testbench fsm_tb le está suministrando la secuencia de entrada 001110111101111100110 al
módulo fsm y el comportamiento de dicho módulo debe ser el mismo que tendría el módulo
circuito_secuencial pues debe recordar que el diagrama de estados del que hemos partido (el de la
figura 2) lo obtuvimos analizando el circuito secuencial de la figura 1. Si observa un comportamiento
diferente en el módulo fsm es debido a algún fallo en la descripción procedimental. En ese caso, revise
con cuidado lo que ha hecho hasta encontrar el error y arreglarlo.
Si la simulación es correcta conteste a las siguientes preguntas:
1. ¿En que instantes (en ns) se producen flancos de subida en la salida 'z' del módulo fsm?
2. ¿En qué instante empieza (en ns) y cuanto dura (en ns) el pulso de nivel alto de mayor duración
que genera el módulo de testbench en la entrada 'x'?
Estructura de Computadores 11
// Modulo fsm
// Descripcion procedimental en Verilog de
// una maquina de estados (FSM) obtenida de
// forma directa a partir de su diagrama de estados.
module fsm(
input x,
output reg z,
input clk,
input clear // El 'clear' es asincrono y activo en baja.
);
reg [1:0] current_state, next_state;
// Complete la declaracion de los estados.
parameter A = // RELLENE LO QUE FALTA
// RELLENE LO QUE FALTA
// RELLENE LO QUE FALTA
// Bloque 'always' para generar 'current_state'
always @ ( ) // RELLENE LA LISTA DE SENSIBILIDAD
if (clear==0)
current_state <= A;
else
current_state <= next_state;
// Bloque 'always' para generar 'next_state' y salida 'z'
always @ *
begin
z=0;
case (current_state)
A: if (x==1)
next_state=B;
else
next_state=A;
// RELLENE EL 'case' CON LOS ESTADOS QUE FALTAN
// RELLENE EL 'case' CON LOS ESTADOS QUE FALTAN
// RELLENE EL 'case' CON LOS ESTADOS QUE FALTAN
default:
begin
z=1'bX;
next_state=2'bXX;
end
endcase
end
endmodule
Fragmento de código 5: Contenido del archivo fsm.v
4.3 Circuito equivalente a la descripción procedimental de la FSM
Aunque lo único que hemos hecho hasta ahora con las descripciones Verilog ha sido ejecutar
simulaciones, no debemos olvidar que lo que estamos describiendo en Verilog es el funcionamiento de un
circuito.
Las herramientas de síntesis del entorno de desarrollo ISE de Xilinx son capaces de analizar una
descripción Verilog y a partir de ella sintetizar (generar) el diseño de un circuito cuyo funcionamiento
sea equivalente al descrito en Verilog.
Vamos a seguir una serie de pasos para usar una herramienta de síntesis que nos permita ver el
circuito equivalente del módulo fsm que hemos descrito de forma procedimental. Se trata de la
herramienta (o proceso) llamado View RTL Schematic
Estructura de Computadores 12
Las herramientas o procesos de síntesis están disponibles en la vista de implementación, dentro del
panel de diseño, por lo que debe seleccionar ahora dicha vista, de implementación, tal como muestra
la primera flecha de la figura 9.
Figura 9: Pasos a seguir para ver el esquema gráfico del Top Module
Las herramientas o procesos de síntesis solo pueden aplicarse al Top Module de nuestro
proyecto, es decir, al módulo de nivel más alto, que es el que contiene a otros módulos y no está
contenido en ningún otro. Como nuestro proyecto tiene dos módulos con esas características, el Top
Module actual no es el que nosotros queremos, así que tendremos que hacer click con el botón derecho
del ratón sobre el módulo fsm y seleccionar en el menú contextual la opción Set as Top module para
convertirlo en Top Module. Al hacerlo nos saldrá un mensaje de advertencia como el de la figura 10 al
que debemos responder Yes. Si lo hacemos bien, el módulo fsm aparecerá con un icono específico a su
izquierda, indicando que es el Top Module de nuestro diseño, tal y como indica la segunda flecha de la
figura 9.
El siguiente paso es lanzar el proceso View RTL Schematic. Para ello, habiendo seleccionado con un
click de ratón el módulo fsm en la jerarquía de módulos de la vista de implementación, nos iremos a la
Estructura de Computadores 13
parte de abajo del panel de diseño, al subpanel de procesos, y desplegaremos la rama
Synthesize - XST, que nos mostrará el proceso View RTL Schematic. Ejecutamos (Run) el proceso con
un doble click del ratón, tal y como indica la tercera flecha de la figura 9 y nos aparecerá el cuadro de
diálogo de la figura 11, en el que debemos marcar la opción Start with a schematic of the top-level
block y pulsar OK. Si todo va bien se nos habrá abierto una nueva ventana llamada fsm (RTL1) como
la marcada con la cuarta flecha de la figura 9 en la que podremos ver el esquema de nivel RT (RTL) del
módulo fsm, de momento representando únicamente sus puertos de entrada y de salida.
Figura 10: Confirmamos que queremos cambiar el Top Module del proyecto
Figura 11: Confirmamos que queremos empezar viendo el esquema del módulo de más alto nivel
Haciendo doble click sobre recuadro que representa el módulo fsm se nos abre un nuevo esquema
mostrando más detalles sobre el funcionamiento interno de ese módulo. Seguramente tengamos que
hacer uso de los iconos que regulan el zoom ( Zoom In, Zoom Out y Zoom to Full View) para
poder ver el esquema en su totalidad (de forma análoga a como se hacía en el simulador ISim para ver
las formas de onda al tamaño adecuado).
Si continuamos haciendo doble click varias veces sobre los nuevos módulos que nos van apareciendo
(ajustando siempre el zoom en cada esquema) llegaremos a un punto en el que no podremos adentrarnos
más y en el que veremos el diseño a nivel RT (RTL) del circuito que las herramientas de síntesis han
obtenido a partir de la descripción Verilog del módulo fsm.
Estructura de Computadores 14
El esquema de ese circuito es como el mostrado en la figura 12 y en él se aprecian algunas puertas
lógicas y un par de biestables, interconectados formando un circuito secuencial síncrono (CSS).
Nótese que si queremos anular un doble click hecho sobre un módulo del esquema y volver atrás, al
esquema anterior, podemos hacerlo pulsando el icono Previous Schematic o bien usando la opción
del menú View > Previous Schematic
Figura 12. Circuito equivalente a la descripción procedimental en Verilog del módulo fsm
Un análisis cuidadoso del circuito de la figura 12 nos revelaría que si bien es cierto que el diagrama
de estados de la máquina de estados que implementa dicho circuito es idéntico al de la figura 2, vemos
que la herramienta de síntesis se ha tomado la libertad de cambiar la asignación de códigos efectuada a
los diferentes estados de la máquina. Ha utilizado los códigos binarios 00, 01 y 11 para los estados A, B y
C en lugar de los códigos binarios 00, 01 y 10, que son los que seguramente haya usted usado en el
módulo fsm del archivo fsm.v. El motivo de esto es, simplemente, que la herramienta de síntesis intenta
obtener un circuito funcionalmente equivalente al descrito, pero además pretende cumplir ciertos
criterios de optimización (de coste, velocidad, etc.) que aunque no le hayamos indicado expresamente,
están ahí. Es para satisfacer esos criterios de optimización por lo que que a veces la herramienta de
síntesis hace cosas como la que estamos comentando.

Más contenido relacionado

La actualidad más candente

15894 pr cctica-3-introducciun-al-matlab-simulink
15894 pr cctica-3-introducciun-al-matlab-simulink15894 pr cctica-3-introducciun-al-matlab-simulink
15894 pr cctica-3-introducciun-al-matlab-simulinkFrank Arias Beltran
 
SolucionDudas_UnidadIII.Funciones
SolucionDudas_UnidadIII.FuncionesSolucionDudas_UnidadIII.Funciones
SolucionDudas_UnidadIII.Funcionesncandolfi
 
Clases de as 400
Clases de as 400Clases de as 400
Clases de as 400JUAN RIVERA
 
Sesion09 - Manejo de Excepciones (Oracle)
Sesion09 - Manejo de Excepciones (Oracle)Sesion09 - Manejo de Excepciones (Oracle)
Sesion09 - Manejo de Excepciones (Oracle)José Toro
 
Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)José Toro
 
Fpr0407 control
Fpr0407 controlFpr0407 control
Fpr0407 controllabebelo
 
5.5 instruccion for
5.5 instruccion for5.5 instruccion for
5.5 instruccion forSNPP
 
Scjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow ControlScjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow ControlJose Selman
 

La actualidad más candente (11)

15894 pr cctica-3-introducciun-al-matlab-simulink
15894 pr cctica-3-introducciun-al-matlab-simulink15894 pr cctica-3-introducciun-al-matlab-simulink
15894 pr cctica-3-introducciun-al-matlab-simulink
 
SolucionDudas_UnidadIII.Funciones
SolucionDudas_UnidadIII.FuncionesSolucionDudas_UnidadIII.Funciones
SolucionDudas_UnidadIII.Funciones
 
Seti7 ocw
Seti7 ocwSeti7 ocw
Seti7 ocw
 
P proyecto 3
P proyecto 3P proyecto 3
P proyecto 3
 
Clases de as 400
Clases de as 400Clases de as 400
Clases de as 400
 
Sesion09 - Manejo de Excepciones (Oracle)
Sesion09 - Manejo de Excepciones (Oracle)Sesion09 - Manejo de Excepciones (Oracle)
Sesion09 - Manejo de Excepciones (Oracle)
 
Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)
 
Fpr0407 control
Fpr0407 controlFpr0407 control
Fpr0407 control
 
5.5 instruccion for
5.5 instruccion for5.5 instruccion for
5.5 instruccion for
 
7.2 macros
7.2 macros7.2 macros
7.2 macros
 
Scjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow ControlScjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow Control
 

Similar a Practica 2 ed c fsm verilog - 24 marzo 2014 (2)

Xilinx aprender abrirlo
Xilinx aprender abrirloXilinx aprender abrirlo
Xilinx aprender abrirloDuvan Rincon
 
diseño_contro_PID_discreto conv.docx
diseño_contro_PID_discreto conv.docxdiseño_contro_PID_discreto conv.docx
diseño_contro_PID_discreto conv.docxProfessorWilliams
 
Controladores logico programables
Controladores logico programablesControladores logico programables
Controladores logico programablesMaestros en Linea
 
Practica 5 simulink-5156
Practica 5 simulink-5156Practica 5 simulink-5156
Practica 5 simulink-5156RossiHeredia1
 
Ingenieria de control mr
Ingenieria de control mrIngenieria de control mr
Ingenieria de control mrEducaciontodos
 
Ingenieria de control mr
Ingenieria de control mrIngenieria de control mr
Ingenieria de control mrMaestros Online
 
Controladores logico programables
Controladores logico programablesControladores logico programables
Controladores logico programablesMaestros Online
 
Practicas 2016
Practicas 2016Practicas 2016
Practicas 2016Tensor
 
Fgl029 guiano2arquitecturasvhdl (1)
Fgl029 guiano2arquitecturasvhdl (1)Fgl029 guiano2arquitecturasvhdl (1)
Fgl029 guiano2arquitecturasvhdl (1)Alveiro2
 
Detector de secuencia no solapada 1011 empleando PLA
Detector de secuencia no solapada 1011 empleando PLADetector de secuencia no solapada 1011 empleando PLA
Detector de secuencia no solapada 1011 empleando PLAMarc Tena Gil
 
Ic3 enunciado ejerc2 (2)
Ic3 enunciado ejerc2 (2)Ic3 enunciado ejerc2 (2)
Ic3 enunciado ejerc2 (2)pepe lopez
 
Alberto daza prácticas fundamentos electrónica - prác. 1 + apén. a, b, c
Alberto daza   prácticas fundamentos electrónica - prác. 1 + apén. a, b, cAlberto daza   prácticas fundamentos electrónica - prác. 1 + apén. a, b, c
Alberto daza prácticas fundamentos electrónica - prác. 1 + apén. a, b, cAdina Georgiana
 

Similar a Practica 2 ed c fsm verilog - 24 marzo 2014 (2) (20)

Xilinx aprender abrirlo
Xilinx aprender abrirloXilinx aprender abrirlo
Xilinx aprender abrirlo
 
diseño_contro_PID_discreto conv.docx
diseño_contro_PID_discreto conv.docxdiseño_contro_PID_discreto conv.docx
diseño_contro_PID_discreto conv.docx
 
Controladores logico programables
Controladores logico programablesControladores logico programables
Controladores logico programables
 
Practica 5 simulink-5156
Practica 5 simulink-5156Practica 5 simulink-5156
Practica 5 simulink-5156
 
Matlab_basic.pptx
Matlab_basic.pptxMatlab_basic.pptx
Matlab_basic.pptx
 
Enunciado Feedback1
Enunciado Feedback1Enunciado Feedback1
Enunciado Feedback1
 
Ceduvirt simulink
Ceduvirt simulinkCeduvirt simulink
Ceduvirt simulink
 
Control digital
Control digitalControl digital
Control digital
 
Ingenieria de control mr
Ingenieria de control mrIngenieria de control mr
Ingenieria de control mr
 
Control1
Control1Control1
Control1
 
Ingenieria de control mr
Ingenieria de control mrIngenieria de control mr
Ingenieria de control mr
 
Ingenieria de control mr
Ingenieria de control mrIngenieria de control mr
Ingenieria de control mr
 
Controladores logico programables
Controladores logico programablesControladores logico programables
Controladores logico programables
 
Practicas 2016
Practicas 2016Practicas 2016
Practicas 2016
 
Fgl029 guiano2arquitecturasvhdl (1)
Fgl029 guiano2arquitecturasvhdl (1)Fgl029 guiano2arquitecturasvhdl (1)
Fgl029 guiano2arquitecturasvhdl (1)
 
Sem plc
Sem plcSem plc
Sem plc
 
Detector de secuencia no solapada 1011 empleando PLA
Detector de secuencia no solapada 1011 empleando PLADetector de secuencia no solapada 1011 empleando PLA
Detector de secuencia no solapada 1011 empleando PLA
 
Ic3 enunciado ejerc2 (2)
Ic3 enunciado ejerc2 (2)Ic3 enunciado ejerc2 (2)
Ic3 enunciado ejerc2 (2)
 
Alberto daza prácticas fundamentos electrónica - prác. 1 + apén. a, b, c
Alberto daza   prácticas fundamentos electrónica - prác. 1 + apén. a, b, cAlberto daza   prácticas fundamentos electrónica - prác. 1 + apén. a, b, c
Alberto daza prácticas fundamentos electrónica - prác. 1 + apén. a, b, c
 
SimulacionSistemasDinamicos.pptx
SimulacionSistemasDinamicos.pptxSimulacionSistemasDinamicos.pptx
SimulacionSistemasDinamicos.pptx
 

Más de Diego Badilla

I manager u2000 v200r014 optional feature description (elte2.3) 01(20140314)
I manager u2000 v200r014 optional feature description (elte2.3) 01(20140314)I manager u2000 v200r014 optional feature description (elte2.3) 01(20140314)
I manager u2000 v200r014 optional feature description (elte2.3) 01(20140314)Diego Badilla
 
Solucionarioexamen mep
Solucionarioexamen mepSolucionarioexamen mep
Solucionarioexamen mepDiego Badilla
 
Funciones para varios aa
Funciones para varios aaFunciones para varios aa
Funciones para varios aaDiego Badilla
 
Capítulo 1 MODELOS DE PROBABILIDAD
Capítulo 1 MODELOS DE PROBABILIDADCapítulo 1 MODELOS DE PROBABILIDAD
Capítulo 1 MODELOS DE PROBABILIDADDiego Badilla
 

Más de Diego Badilla (9)

I manager u2000 v200r014 optional feature description (elte2.3) 01(20140314)
I manager u2000 v200r014 optional feature description (elte2.3) 01(20140314)I manager u2000 v200r014 optional feature description (elte2.3) 01(20140314)
I manager u2000 v200r014 optional feature description (elte2.3) 01(20140314)
 
Solucionarioexamen mep
Solucionarioexamen mepSolucionarioexamen mep
Solucionarioexamen mep
 
Resumen
ResumenResumen
Resumen
 
Matematica examen
Matematica examenMatematica examen
Matematica examen
 
Abril 2014
Abril 2014Abril 2014
Abril 2014
 
Readme
ReadmeReadme
Readme
 
License
LicenseLicense
License
 
Funciones para varios aa
Funciones para varios aaFunciones para varios aa
Funciones para varios aa
 
Capítulo 1 MODELOS DE PROBABILIDAD
Capítulo 1 MODELOS DE PROBABILIDADCapítulo 1 MODELOS DE PROBABILIDAD
Capítulo 1 MODELOS DE PROBABILIDAD
 

Último

Europa y la Exploración del continente americano.pptx
Europa y la Exploración del continente americano.pptxEuropa y la Exploración del continente americano.pptx
Europa y la Exploración del continente americano.pptxismaelchandi2010
 
Mapa-conceptual-de-la-Primera-Guerra-Mundial.pptx
Mapa-conceptual-de-la-Primera-Guerra-Mundial.pptxMapa-conceptual-de-la-Primera-Guerra-Mundial.pptx
Mapa-conceptual-de-la-Primera-Guerra-Mundial.pptxMaraMilagrosBarrosMa
 
Origen del Hombre- cuadro comparativo 5to Sec
Origen del Hombre- cuadro comparativo 5to SecOrigen del Hombre- cuadro comparativo 5to Sec
Origen del Hombre- cuadro comparativo 5to Secssuser50da781
 
CERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptx
CERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptxCERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptx
CERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptxMaikelPereira1
 
LA DANZA PROCESO DE LA VIDA Y EL CUERPO.pptx
LA DANZA PROCESO DE LA VIDA Y EL CUERPO.pptxLA DANZA PROCESO DE LA VIDA Y EL CUERPO.pptx
LA DANZA PROCESO DE LA VIDA Y EL CUERPO.pptxJuankLerma
 
Habitos atomicos libro completooooooooooo
Habitos atomicos libro completoooooooooooHabitos atomicos libro completooooooooooo
Habitos atomicos libro completoooooooooooTomas914396
 
PA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptx
PA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptxPA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptx
PA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptxJOELORELLANA15
 
La Importancia de la Universidad como Institución Social.pdf
La Importancia de la Universidad como Institución Social.pdfLa Importancia de la Universidad como Institución Social.pdf
La Importancia de la Universidad como Institución Social.pdfloquendo1901
 
MAPA MENTAL sobre los tipos de lectura existentes
MAPA MENTAL sobre los tipos de lectura existentesMAPA MENTAL sobre los tipos de lectura existentes
MAPA MENTAL sobre los tipos de lectura existentesDiandraRivera
 
la configuyracion del territorio peruano
la configuyracion del territorio peruanola configuyracion del territorio peruano
la configuyracion del territorio peruanoEFRAINSALAZARLOYOLA1
 
Relato Bélico sobre la Guerra entre los paises sudamericanos Bolivia y Paragu...
Relato Bélico sobre la Guerra entre los paises sudamericanos Bolivia y Paragu...Relato Bélico sobre la Guerra entre los paises sudamericanos Bolivia y Paragu...
Relato Bélico sobre la Guerra entre los paises sudamericanos Bolivia y Paragu...CarlosMelgarejo25
 
diagrama sinóptico dcerfghjsxdcfvgbhnjdcf
diagrama sinóptico dcerfghjsxdcfvgbhnjdcfdiagrama sinóptico dcerfghjsxdcfvgbhnjdcf
diagrama sinóptico dcerfghjsxdcfvgbhnjdcfDreydyAvila
 
ACUERDOS PARA PINTAR EDUCACION INICIAL.docx
ACUERDOS PARA PINTAR EDUCACION INICIAL.docxACUERDOS PARA PINTAR EDUCACION INICIAL.docx
ACUERDOS PARA PINTAR EDUCACION INICIAL.docxlizeth753950
 
271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptx
271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptx271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptx
271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptxjezuz1231
 
Arquitectura renacentista - Adriánn Díaz 30.118.599.pptx
Arquitectura renacentista - Adriánn Díaz 30.118.599.pptxArquitectura renacentista - Adriánn Díaz 30.118.599.pptx
Arquitectura renacentista - Adriánn Díaz 30.118.599.pptxAdriannDiaz
 
Unitario - Serie Fotográfica - Emmanuel Toloza Pineda
Unitario - Serie Fotográfica - Emmanuel Toloza PinedaUnitario - Serie Fotográfica - Emmanuel Toloza Pineda
Unitario - Serie Fotográfica - Emmanuel Toloza PinedaEmmanuel Toloza
 
Concepto de Estética, aproximación,Elena Olvieras
Concepto de Estética, aproximación,Elena OlvierasConcepto de Estética, aproximación,Elena Olvieras
Concepto de Estética, aproximación,Elena OlvierasAnkara2
 
presentacion-auditoria-administrativa-i-encuentro (1).ppt
presentacion-auditoria-administrativa-i-encuentro (1).pptpresentacion-auditoria-administrativa-i-encuentro (1).ppt
presentacion-auditoria-administrativa-i-encuentro (1).pptDerekLiberatoMartine
 
Trabajo historia sobre el Renacimiento en la arquitectura
Trabajo historia sobre el Renacimiento en la arquitecturaTrabajo historia sobre el Renacimiento en la arquitectura
Trabajo historia sobre el Renacimiento en la arquitecturaccastilloojeda12
 
Artes/ObrasMaestras del siglo XVI - tiempos BY: CLAUDIA GINGLIONA RAMÍREZ DIF...
Artes/ObrasMaestras del siglo XVI - tiempos BY: CLAUDIA GINGLIONA RAMÍREZ DIF...Artes/ObrasMaestras del siglo XVI - tiempos BY: CLAUDIA GINGLIONA RAMÍREZ DIF...
Artes/ObrasMaestras del siglo XVI - tiempos BY: CLAUDIA GINGLIONA RAMÍREZ DIF...CLAUDIA GINGLIONA RAMÍREZ DIFILIPPI
 

Último (20)

Europa y la Exploración del continente americano.pptx
Europa y la Exploración del continente americano.pptxEuropa y la Exploración del continente americano.pptx
Europa y la Exploración del continente americano.pptx
 
Mapa-conceptual-de-la-Primera-Guerra-Mundial.pptx
Mapa-conceptual-de-la-Primera-Guerra-Mundial.pptxMapa-conceptual-de-la-Primera-Guerra-Mundial.pptx
Mapa-conceptual-de-la-Primera-Guerra-Mundial.pptx
 
Origen del Hombre- cuadro comparativo 5to Sec
Origen del Hombre- cuadro comparativo 5to SecOrigen del Hombre- cuadro comparativo 5to Sec
Origen del Hombre- cuadro comparativo 5to Sec
 
CERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptx
CERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptxCERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptx
CERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptx
 
LA DANZA PROCESO DE LA VIDA Y EL CUERPO.pptx
LA DANZA PROCESO DE LA VIDA Y EL CUERPO.pptxLA DANZA PROCESO DE LA VIDA Y EL CUERPO.pptx
LA DANZA PROCESO DE LA VIDA Y EL CUERPO.pptx
 
Habitos atomicos libro completooooooooooo
Habitos atomicos libro completoooooooooooHabitos atomicos libro completooooooooooo
Habitos atomicos libro completooooooooooo
 
PA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptx
PA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptxPA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptx
PA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptx
 
La Importancia de la Universidad como Institución Social.pdf
La Importancia de la Universidad como Institución Social.pdfLa Importancia de la Universidad como Institución Social.pdf
La Importancia de la Universidad como Institución Social.pdf
 
MAPA MENTAL sobre los tipos de lectura existentes
MAPA MENTAL sobre los tipos de lectura existentesMAPA MENTAL sobre los tipos de lectura existentes
MAPA MENTAL sobre los tipos de lectura existentes
 
la configuyracion del territorio peruano
la configuyracion del territorio peruanola configuyracion del territorio peruano
la configuyracion del territorio peruano
 
Relato Bélico sobre la Guerra entre los paises sudamericanos Bolivia y Paragu...
Relato Bélico sobre la Guerra entre los paises sudamericanos Bolivia y Paragu...Relato Bélico sobre la Guerra entre los paises sudamericanos Bolivia y Paragu...
Relato Bélico sobre la Guerra entre los paises sudamericanos Bolivia y Paragu...
 
diagrama sinóptico dcerfghjsxdcfvgbhnjdcf
diagrama sinóptico dcerfghjsxdcfvgbhnjdcfdiagrama sinóptico dcerfghjsxdcfvgbhnjdcf
diagrama sinóptico dcerfghjsxdcfvgbhnjdcf
 
ACUERDOS PARA PINTAR EDUCACION INICIAL.docx
ACUERDOS PARA PINTAR EDUCACION INICIAL.docxACUERDOS PARA PINTAR EDUCACION INICIAL.docx
ACUERDOS PARA PINTAR EDUCACION INICIAL.docx
 
271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptx
271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptx271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptx
271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptx
 
Arquitectura renacentista - Adriánn Díaz 30.118.599.pptx
Arquitectura renacentista - Adriánn Díaz 30.118.599.pptxArquitectura renacentista - Adriánn Díaz 30.118.599.pptx
Arquitectura renacentista - Adriánn Díaz 30.118.599.pptx
 
Unitario - Serie Fotográfica - Emmanuel Toloza Pineda
Unitario - Serie Fotográfica - Emmanuel Toloza PinedaUnitario - Serie Fotográfica - Emmanuel Toloza Pineda
Unitario - Serie Fotográfica - Emmanuel Toloza Pineda
 
Concepto de Estética, aproximación,Elena Olvieras
Concepto de Estética, aproximación,Elena OlvierasConcepto de Estética, aproximación,Elena Olvieras
Concepto de Estética, aproximación,Elena Olvieras
 
presentacion-auditoria-administrativa-i-encuentro (1).ppt
presentacion-auditoria-administrativa-i-encuentro (1).pptpresentacion-auditoria-administrativa-i-encuentro (1).ppt
presentacion-auditoria-administrativa-i-encuentro (1).ppt
 
Trabajo historia sobre el Renacimiento en la arquitectura
Trabajo historia sobre el Renacimiento en la arquitecturaTrabajo historia sobre el Renacimiento en la arquitectura
Trabajo historia sobre el Renacimiento en la arquitectura
 
Artes/ObrasMaestras del siglo XVI - tiempos BY: CLAUDIA GINGLIONA RAMÍREZ DIF...
Artes/ObrasMaestras del siglo XVI - tiempos BY: CLAUDIA GINGLIONA RAMÍREZ DIF...Artes/ObrasMaestras del siglo XVI - tiempos BY: CLAUDIA GINGLIONA RAMÍREZ DIF...
Artes/ObrasMaestras del siglo XVI - tiempos BY: CLAUDIA GINGLIONA RAMÍREZ DIF...
 

Practica 2 ed c fsm verilog - 24 marzo 2014 (2)

  • 1. DEPARTAMENTO DE TECNOLOGÍA INFORMÁTICA ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA Máquinas de Estados Finitos (FSM) en Verilog Enunciados de Prácticas de Laboratorio Estructura de Computadores v1.03 1 Introducción y objetivos En esta práctica nos basaremos en los conocimientos adquiridos en la práctica anterior. Por tanto, se presupone que el alumno sabe: • Crear un proyecto en el entorno ISE de Xilinx. • Trabajar con módulos Verilog simples, de tipo secuencial y de tipo combinacional. • Trabajar con módulos más complejos definidos de forma estructural mediante la interconexión de instancias de módulos más simples. • Usar módulos de testbench para simular y comprobar el funcionamiento de los módulos diseñados. • Modificar un módulo de testbench para adaptarlo a las pruebas a las que desea someter el módulo a probar. Los objetivos para esta práctica son trabajar con módulos Verilog más complejos correspondientes a la descripción de Máquinas de Estados Finitos (FSM). En concreto, se pretende: • Describir en Verilog de forma estructural un Circuito Secuencial Síncrono (CSS) partiendo del esquema de puertas lógicas y biestables de dicho circuito. • Describir en Verilog de forma procedimental un circuito secuencial síncrono que implemente una Máquina de Estados Finitos (FSM) utilizando como punto de partida únicamente el diagrama de estados de dicha máquina. • Usar y modificar módulos de testbench para simular y verificar el comportamiento de los módulos diseñados.
  • 2. Estructura de Computadores 2 • Hacer uso de las herramientas de síntesis del entorno ISE de Xilinx para comprobar que a partir de la descripción procedimental de un modulo Verilog se obtiene un circuito equivalente. 2 Estudio previo En esta práctica se va a describir en Verilog, de dos formas distintas, el Circuito Secuencial Síncrono (CSS) de la figura 1. Figura 1: Circuito Secuencial Síncrono (CSS) Utilizando las técnicas de análisis vistas en la asignatura CED podríamos analizar el CSS de la figura 2 y obtener el diagrama de estados de la máquina de estados finitos (FSM) que implementa. Dicho diagrama se muestra en la figura 2. Figura 2: Diagrama de estados de la FSM Por tanto, es fácil interpretar que el circuito de la figura 1 es capaz de detectar en la entrada 'x' una secuencia de tres unos seguidos (con solapamiento) y, en ese momento, activar la salida 'z'. La figura 3 nos muestra la forma general de cualquier Circuito Secuencial Síncrono (CSS).
  • 3. Estructura de Computadores 3 Figura 3: Estructura general de un CSS Si reorganizamos los elementos del circuito de la figura 1 para adaptarlos a la forma general de un CSS mostrada en la figura 3, obtenemos un circuito como el que se muestra en la figura 4. Nótese que en el gráfico de la figura 4 no se están mostrando todos las puertas lógicas que forman parte del circuito combinacional, porque es tarea del alumno completarlo, como veremos más adelante. Figura 4: Reestructuración de los elementos del circuito para adoptar la forma general de un CSS
  • 4. Estructura de Computadores 4 3 Descripción estructural de un CSS a partir del circuito Se pretende describir en Verilog el circuito secuencial síncrono de la figura 4 y que, como sabemos, es equivalente al de la figura 1. Realizaremos una descripción Verilog de tipo estructural, instanciando e interconectando módulos . Para esta parte de la práctica se dispone de los seis archivos Verilog detallados a continuación, en la tabla 1: ARCHIVO CONTENIDO TAREA A REALIZAR biestable_JK.v Descripción Verilog de un biestable JK. Estudiar su funcionamiento antes de la sesión de laboratorio. biestable_T.v Descripción Verilog incompleta de un biestable T. Completar la descripción Verilog durante la sesión de laboratorio. circuito_combinacional.v Descripción Verilog incompleta del circuito combinacional de la figura 4. Completar la descripción Verilog durante la sesión de laboratorio. circuito_secuencial.v Descripción Verilog incompleta del circuito secuencial de la figura 4. Completar la descripción Verilog durante la sesión de laboratorio. biestable_T_tb.v Descripción Verilog del modulo de testbench del módulo biestable_T. Usarlo durante la sesión de laboratorio para probar que el módulo biestable_T funciona correctamente. circuito_secuencial_tb.v Descripción Verilog del modulo de testbench del módulo circuito_secuencial. Usarlo durante la sesión de laboratorio para probar que el módulo circuito_secuencial funciona correctamente. Modificarlo durante la sesión de laboratorio para probar nuevas secuencias de entrada. Tabla 1 3.1 Creación del proyecto. Cree un proyecto en el entorno ISE, tal y como aprendió en la primera práctica, dándole el nombre que prefiera. Recuerde que no puede aparecer ningún carácter acentuado en ninguna parte de la ruta de carpetas que conduce al proyecto. Añada al proyecto, de una sola vez, los seis archivos de la tabla 1, salvo que su profesor le indique que debe ir añadiendo los archivos al proyecto conforme los vaya necesitando. 3.2 Descripción Verilog del biestable T Complete el módulo biestable_T presente en el archivo biestable_T.v (fragmento de código 1). Luego utilice el testbench del archivo biestable_T_tb.v para comprobar que funciona correctamente. El aspecto de los primeros 50 ns de la simulación debe ser idéntico al de la figura 5. Fíjese bien en los resultados completos de la simulación y si cree que el biestable T que ha diseñado no funciona correctamente revise el código Verilog y modifíquelo hasta que esté usted conforme con lo que ve en la simulación. Cuando crea que todo es correcto conteste a las siguientes cuestiones sobre la simulación: 1. ¿Cómo se puede apreciar, en la simulación, que la señal de clear (cl) es asíncrona?
  • 5. Estructura de Computadores 5 2. ¿En que instantes (en ns) se pone a 1 el biestable? 3. ¿En qué instantes (en ns) se pone a 0 el biestable sin que sea a causa de la señal de clear (cl)? Para averiguar fácilmente los tiempos que se le preguntan puede hacer click sobre las formas de onda con el ratón. Esto hace que aparezca en esa posición un cursor amarillo, como el que se ve en la figura 5, que le informa del valor del tiempo de simulación en ese instante. De forma similar, al hacer click y arrastrar el ratón sobre las formas de onda aparecen dos cursores y podemos medir diferencias de tiempo. // Biestable T sincronizado por flancos de subida de reloj. // Tiene una señal de clear 'cl' asincrona, activa en baja. module biestable_T( input clk, input T, input cl, // 'cl' es asincrona y activa en baja output reg q ); // Describa el funcionamiento del biestable T de forma // procedimental utilizando un bloque 'always' // ESCRIBA AQUI SU CODIGO // ESCRIBA AQUI SU CODIGO // ESCRIBA AQUI SU CODIGO endmodule Fragmento de código 1: Contenido del archivo biestable_T.v Figura 5: Resultado de simular el testbench biestable_T_tb 3.3 Descripción Verilog del circuito combinacional Complete el módulo circuito_combinacional presente en el archivo circuito_combinacional.v (fragmento de código 2) de forma que su funcionamiento corresponda al del circuito combinacional de la figura 4. Un buen método para no equivocarse en esta tarea sería dibujar primero, sobre el bloque del circuito combinacional de la figura 4, las puertas lógicas que faltan y que hacen que su comportamiento sea equivalente al de la figura 1. Si comete algún error al describir el módulo circuito_combinacional, el error debería detectarse cuando ejecute, más adelante, el testbench del módulo circuito_secuencial que, como ya se intuye en la figura 4, va a contener una instancia del módulo circuito_combinacional.
  • 6. Estructura de Computadores 6 // modulo circuito_combinacional module circuito_combinacional( input x, input q1, input q2, output z, output T1, output J2, output K2 ); // Del esquema del circuito secuencial se ha // sacado la ecuacion de la salida 'z' y se ha // descrito con un 'assign'. assign z = x & q2; // Saque usted de dicho esquema las ecuaciones // de excitacion de los biestables y describalas // todas con varios 'assign' justo a continuacion // ESCRIBA AQUI UN 'assign' // ESCRIBA AQUI OTRO 'assign' // ESCRIBA AQUI OTRO 'assign' endmodule Fragmento de código 2: Contenido del archivo circuito_combinacional.v 3.4 Descripción Verilog del circuito secuencial En este apartado debe completar el módulo circuito_secuencial presente en el archivo circuito_secuencial.v (fragmento de código 3) de forma que su funcionamiento se corresponda con el del circuito secuencial representado en la figura 4. Dispone del esquema de la figura 7 para facilitarle el trabajo. En dicho esquema se muestran las tres instancias de módulos que forman parte del módulo circuito_secuencial. La figura 7 muestra, para evitar errores, los nombres de todos los elementos (los módulos, las instancias, los puertos de entrada y de salida de los módulos y los cables necesarios) de manera idéntica a como aparecen en las diferentes descripciones Verilog que estamos manejando. Cuando haya terminado de modificar el archivo circuito_secuencial.v utilice el testbench del archivo circuito_secuencial_tb.v para comprobar que el módulo circuito_secuencial funciona correctamente. El aspecto de la simulación durante los primeros 150 ns debe ser el de la figura 6. Si la respuesta del circuito a las formas de onda generadas por el testbench no es la adecuada, sin duda es porque ha cometido algún error en este mismo apartado o bien en el apartado anterior (el del módulo circuito_combinacional), por lo que tendrá que averiguar en qué se ha confundido y solventar el error.
  • 7. Estructura de Computadores 7 // modulo circuito_secuencial // // Definido de forma estructural, mediante la interconexion // de instancias de otros modulos previamente definidos. module circuito_secuencial( input clk, input x, input clear, output z ); // Cables necesarios para unir las instancias // de los dos biestables y del circuito combinacional wire cable_T1_T, cable_J2_J, cable_K2_K, cable_q_q1, cable_q_q2; // Instancia del modulo biestable_JK biestable_JK instancia_biestable_JK( .clk(clk), .J(cable_J2_J), .K(cable_K2_K), .cl(clear), .q(cable_q_q2) ); // Instancia del modulo biestable_T // ESCRIBA AQUI SU CODIGO // ESCRIBA AQUI SU CODIGO // ESCRIBA AQUI SU CODIGO // Instancia del modulo circuito_combinacional // ESCRIBA AQUI SU CODIGO // ESCRIBA AQUI SU CODIGO // ESCRIBA AQUI SU CODIGO endmodule Fragmento de código 3: Contenido del archivo circuito_secuencial.v Figura 6: Primera parte del resultado de simular el testbench circuito_secuencial_tb Si piensa que los resultados de la simulación del módulo circuito_secuencial_tb son correctos, conteste a las siguientes preguntas: 1. El testbench del archivo circuito_secuencial_tb.v inyecta al módulo circuito_secuencial una secuencia de ceros y unos sincronizada con el reloj. ¿Cuál es la secuencia completa dígitos binarios que está generando el módulo de testbench en la entrada 'x' para probar si funciona correctamente el circuito secuencial? 2. ¿Cuántos pulsos de nivel alto aparecen en la salida 'z' del circuito_secuencial en respuesta a la secuencia de entrada? ¿Cuánto dura cada pulso (en ns)? 3. ¿Habría sido la salida 'z' distinta si el circuito detector de la secuencia 111 estuviese programado para detectar dicha secuencia de entrada pero sin solapamiento? Indique cómo habrían sido los pulsos que habrían aparecido en la salida 'z' para este mismo testbench.
  • 8. Estructura de Computadores 8 Figura 7: Esquema del módulo circuito_secuencial utilizando “nombres Verilog” 3.5 Modificación del testbench del circuito secuencial Modifique el testbench del archivo circuito_secuencial_tb.v (fragmento de código 4) para comprobar que el modulo circuito_secuencial funciona correctamente cuando recibe la secuencia de entrada 001110111101111100110. Tenga en cuenta que la parte inicial de esa secuencia ya la está generando el testbench actual. Tan solo debe añadir al final del archivo de testbench el código necesario para generar los últimos bits de la secuencia (los nuevos). Si lo hace correctamente, al ejecutar la nueva simulación ésta debe durar 450 ns y el aspecto de la última parte debe ser el de la figura 8. Cuando crea que los resultados de la nueva simulación son correctos, conteste a las siguientes preguntas sobre ella: 1. ¿En que instante de tiempo (en ns) termina el pulso de mayor duración (de nivel alto) que se aprecia en la salida 'z'? 2. ¿Habría cambiado la forma de onda de la salida 'z' si el último pulso de nivel alto de la entrada 'x' hubiese durado 50 ns en lugar de 40 ns? Si es así, indique qué forma habría tenido la salida. Figura 8: La parte final de la simulación del módulo circuito_secuencial_tb, tras las modificaciones
  • 9. Estructura de Computadores 9 `timescale 1ns / 1ps // Modulo de testbench del modulo circuito_secuencial module circuito_secuencial_tb; // datos 'reg' para conectar a las entradas del modulo a probar reg tb_clk; reg tb_x; reg tb_clear; // datos 'wire' para conectar a las salidas del modulo a probar wire tb_z; // Instancia del modulo a probar circuito_secuencial instancia_circuito_secuencial ( .clk(tb_clk), .x(tb_x), .clear(tb_clear), .z(tb_z) ); always begin // always: Siempre generando reloj de periodo 20ns #10; // espero 10ns ... tb_clk = ~tb_clk; // ...y ahora invierto la señal de reloj end initial // initial: solo se ejecuta una vez al inicio begin tb_clk = 0; tb_x = 1'bZ; // Inicialmente 'x' está desconectada (alta impedancia = Z) tb_clear = 1; // Empiezo con el 'clear' asincrono DES-activado. #5; tb_clear = 0; // Activo 'clear' asincrono poco antes del primer flanco de subida. @(posedge tb_clk); @(posedge tb_clk); tb_clear = 1; // DES-activo 'clear' justo después de flanco subida. // Generación se la secuencia de entrada. tb_x = 0; repeat (2) // x=0 durante 2 ciclos. @(posedge tb_clk); tb_x = 1; repeat (3) // x=1 durante 3 ciclos. @(posedge tb_clk); tb_x = 0; repeat (1) // x=0 durante 1 ciclo. @(posedge tb_clk); tb_x = 1; repeat (4) // x=1 durante 4 ciclos. @(posedge tb_clk); tb_x = 0; repeat (1) // x=0 durante 1 ciclo. @(posedge tb_clk); // ESCRIBA AQUI EL NUEVO CODIGO PARA // GENERAR NUEVAS SECUENCIAS DE ENTRADA // AL CIRCUITO SECUENCIAL. $finish; end endmodule Fragmento de código 4: Contenido del archivo de testbench circuito_secuencial_tb.v
  • 10. Estructura de Computadores 10 4 Descripción Verilog de una FSM a partir del diagrama de estados Se pretende describir en Verilog la maquina de estados finitos (FSM) cuyo diagrama de estados se muestra en la figura 2. Esta descripción debe comportarse, como es lógico, de forma idéntica al circuito de la figura 4, pero no la vamos a obtener como hemos hecho anteriormente, a partir de dicho circuito, sino que vamos a obtener el código Verilog directamente, a partir del diagrama de estados, usando la técnica explicada en el tema 1 de EdC. Para esta parte de la práctica se dispone de los archivos Verilog que a continuación se detallan en la tabla 2: ARCHIVO CONTENIDO TAREA A REALIZAR fsm.v Descripción Verilog incompleta de la máquina de estados (FSM) cuyo diagrama de estados se muestra en la figura 2. Completar la descripción Verilog durante la sesión de laboratorio. fsm_tb.v Descripción Verilog del módulo de testbench del módulo fsm. Usarlo durante la sesión de laboratorio para probar que el módulo fsm funciona correctamente. Tabla 2 4.1 Añadir los nuevos archivos al proyecto. Añada al proyecto que ya tiene creado los dos archivos de la tabla 2. Tenga en cuenta que es normal que le aparezcan errores de sintaxis en el panel de Consola y en el panel de Errores, pues el archivo fsm.v está incompleto. 4.2 Descripción procedimental en Verilog a partir del diagrama de estados Complete el modulo fsm presente en el archivo fsm.v (fragmento de código 5) de forma que represente el funcionamiento de una máquina de estados finitos con un diagrama de estados como el de la figura 2 (recuerde la técnica vista en el tema 1 de EdC) Utilice el testbench del archivo fsm_tb.v para comprobar que el módulo fsm funciona correctamente. El testbench fsm_tb le está suministrando la secuencia de entrada 001110111101111100110 al módulo fsm y el comportamiento de dicho módulo debe ser el mismo que tendría el módulo circuito_secuencial pues debe recordar que el diagrama de estados del que hemos partido (el de la figura 2) lo obtuvimos analizando el circuito secuencial de la figura 1. Si observa un comportamiento diferente en el módulo fsm es debido a algún fallo en la descripción procedimental. En ese caso, revise con cuidado lo que ha hecho hasta encontrar el error y arreglarlo. Si la simulación es correcta conteste a las siguientes preguntas: 1. ¿En que instantes (en ns) se producen flancos de subida en la salida 'z' del módulo fsm? 2. ¿En qué instante empieza (en ns) y cuanto dura (en ns) el pulso de nivel alto de mayor duración que genera el módulo de testbench en la entrada 'x'?
  • 11. Estructura de Computadores 11 // Modulo fsm // Descripcion procedimental en Verilog de // una maquina de estados (FSM) obtenida de // forma directa a partir de su diagrama de estados. module fsm( input x, output reg z, input clk, input clear // El 'clear' es asincrono y activo en baja. ); reg [1:0] current_state, next_state; // Complete la declaracion de los estados. parameter A = // RELLENE LO QUE FALTA // RELLENE LO QUE FALTA // RELLENE LO QUE FALTA // Bloque 'always' para generar 'current_state' always @ ( ) // RELLENE LA LISTA DE SENSIBILIDAD if (clear==0) current_state <= A; else current_state <= next_state; // Bloque 'always' para generar 'next_state' y salida 'z' always @ * begin z=0; case (current_state) A: if (x==1) next_state=B; else next_state=A; // RELLENE EL 'case' CON LOS ESTADOS QUE FALTAN // RELLENE EL 'case' CON LOS ESTADOS QUE FALTAN // RELLENE EL 'case' CON LOS ESTADOS QUE FALTAN default: begin z=1'bX; next_state=2'bXX; end endcase end endmodule Fragmento de código 5: Contenido del archivo fsm.v 4.3 Circuito equivalente a la descripción procedimental de la FSM Aunque lo único que hemos hecho hasta ahora con las descripciones Verilog ha sido ejecutar simulaciones, no debemos olvidar que lo que estamos describiendo en Verilog es el funcionamiento de un circuito. Las herramientas de síntesis del entorno de desarrollo ISE de Xilinx son capaces de analizar una descripción Verilog y a partir de ella sintetizar (generar) el diseño de un circuito cuyo funcionamiento sea equivalente al descrito en Verilog. Vamos a seguir una serie de pasos para usar una herramienta de síntesis que nos permita ver el circuito equivalente del módulo fsm que hemos descrito de forma procedimental. Se trata de la herramienta (o proceso) llamado View RTL Schematic
  • 12. Estructura de Computadores 12 Las herramientas o procesos de síntesis están disponibles en la vista de implementación, dentro del panel de diseño, por lo que debe seleccionar ahora dicha vista, de implementación, tal como muestra la primera flecha de la figura 9. Figura 9: Pasos a seguir para ver el esquema gráfico del Top Module Las herramientas o procesos de síntesis solo pueden aplicarse al Top Module de nuestro proyecto, es decir, al módulo de nivel más alto, que es el que contiene a otros módulos y no está contenido en ningún otro. Como nuestro proyecto tiene dos módulos con esas características, el Top Module actual no es el que nosotros queremos, así que tendremos que hacer click con el botón derecho del ratón sobre el módulo fsm y seleccionar en el menú contextual la opción Set as Top module para convertirlo en Top Module. Al hacerlo nos saldrá un mensaje de advertencia como el de la figura 10 al que debemos responder Yes. Si lo hacemos bien, el módulo fsm aparecerá con un icono específico a su izquierda, indicando que es el Top Module de nuestro diseño, tal y como indica la segunda flecha de la figura 9. El siguiente paso es lanzar el proceso View RTL Schematic. Para ello, habiendo seleccionado con un click de ratón el módulo fsm en la jerarquía de módulos de la vista de implementación, nos iremos a la
  • 13. Estructura de Computadores 13 parte de abajo del panel de diseño, al subpanel de procesos, y desplegaremos la rama Synthesize - XST, que nos mostrará el proceso View RTL Schematic. Ejecutamos (Run) el proceso con un doble click del ratón, tal y como indica la tercera flecha de la figura 9 y nos aparecerá el cuadro de diálogo de la figura 11, en el que debemos marcar la opción Start with a schematic of the top-level block y pulsar OK. Si todo va bien se nos habrá abierto una nueva ventana llamada fsm (RTL1) como la marcada con la cuarta flecha de la figura 9 en la que podremos ver el esquema de nivel RT (RTL) del módulo fsm, de momento representando únicamente sus puertos de entrada y de salida. Figura 10: Confirmamos que queremos cambiar el Top Module del proyecto Figura 11: Confirmamos que queremos empezar viendo el esquema del módulo de más alto nivel Haciendo doble click sobre recuadro que representa el módulo fsm se nos abre un nuevo esquema mostrando más detalles sobre el funcionamiento interno de ese módulo. Seguramente tengamos que hacer uso de los iconos que regulan el zoom ( Zoom In, Zoom Out y Zoom to Full View) para poder ver el esquema en su totalidad (de forma análoga a como se hacía en el simulador ISim para ver las formas de onda al tamaño adecuado). Si continuamos haciendo doble click varias veces sobre los nuevos módulos que nos van apareciendo (ajustando siempre el zoom en cada esquema) llegaremos a un punto en el que no podremos adentrarnos más y en el que veremos el diseño a nivel RT (RTL) del circuito que las herramientas de síntesis han obtenido a partir de la descripción Verilog del módulo fsm.
  • 14. Estructura de Computadores 14 El esquema de ese circuito es como el mostrado en la figura 12 y en él se aprecian algunas puertas lógicas y un par de biestables, interconectados formando un circuito secuencial síncrono (CSS). Nótese que si queremos anular un doble click hecho sobre un módulo del esquema y volver atrás, al esquema anterior, podemos hacerlo pulsando el icono Previous Schematic o bien usando la opción del menú View > Previous Schematic Figura 12. Circuito equivalente a la descripción procedimental en Verilog del módulo fsm Un análisis cuidadoso del circuito de la figura 12 nos revelaría que si bien es cierto que el diagrama de estados de la máquina de estados que implementa dicho circuito es idéntico al de la figura 2, vemos que la herramienta de síntesis se ha tomado la libertad de cambiar la asignación de códigos efectuada a los diferentes estados de la máquina. Ha utilizado los códigos binarios 00, 01 y 11 para los estados A, B y C en lugar de los códigos binarios 00, 01 y 10, que son los que seguramente haya usted usado en el módulo fsm del archivo fsm.v. El motivo de esto es, simplemente, que la herramienta de síntesis intenta obtener un circuito funcionalmente equivalente al descrito, pero además pretende cumplir ciertos criterios de optimización (de coste, velocidad, etc.) que aunque no le hayamos indicado expresamente, están ahí. Es para satisfacer esos criterios de optimización por lo que que a veces la herramienta de síntesis hace cosas como la que estamos comentando.