Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lab3 Cronometro Attached PDF
Lab3 Cronometro Attached PDF
1. Introduccin y objetivos
Las mquinas de estado finitas (FSM) son fundamentales en el diseo circuitos digitales
secuenciales . Con ellas se consigue implementar algoritmos complejos existiendo procedimientos para
obtener el cdigo HDL de manera sistemtica. Utilizaremos una descripcin llamada en la bibliografa
descripcin cannica de mquinas de estado.
Los objetivos de esta sesin de laboratorio son realizar la implementacin de mquinas de estado
mediante un procedimiento sistemtico, facilitando as la codificacin HDL. Se realizar lo siguiente;
Rev. 1.269
Sistemas Digitales Avanzados 2
El objetivo es generar un pulso de un ciclo de duracin cuando un botn se pulse, independiente del
tiempo que est el botn pulsado. Puesto que el reloj de la placa funciona a 50Mhz cualquier pulsacin
realizada en un botn durar multitud de pulsos de reloj, con este sistema, se detecta una pulsacin
larga usando su flanco de subida, independientemente del tiempo que tarde el botn en soltarse. En la
figura 1 se muestra el mdulo a disear cuyo diagrama de estados es el mostrado en la figura 2.
reset
btn Detector
pulse
Flanco
ck
!btn
1.1. Realice un testbench con varios pulsos de varios ciclos de duracin y comprube si la salida
genera un nico pulso en cada flanco de subida. No se olvide de realizar un reset inicial.
1.2. Busque en Internet un diseo en Verilog de un detector de flancos ms simple que su diseo.
Se recomienda realizar la bsqueda en ingls.
3. Diseo de un cronmetro
Ahora se pretende disear un cronmetro con dos modos de funcionamiento: cronmetro y
Sistemas Digitales Avanzados 3
temporizador. Para el control del mismo se utilizar el detectores de flancos conectados cada uno de los
botones disponibles en la placa de desarrollo.
El funcionamiento de este contador se puede resumir indicando los valores que tomarn cada una de las
salidas BCD:
Dgito BCD1 y BCD0: Corresponden a los segundos toma valores 0-5 y 0-9 respectivamente.
Dgito BCD3 y BCD1: Corresponden a los minutos ambos toman valores 0-9, por tanto se puede
llegar 99 minutos ya que no tenemos dgitos para indicar las horas.
4 4 4 4
UP RESET
CONT SEXAGESIMAL
DW
mm:ss
LD
4 4 4 4
CLK
BCD3 BCD2 BCD1 BCD0
2. Cree un nuevo modulo llamado contador_bcd correspondiente a la figura 3. Respete los nombres
de la conexiones para que el testbech suministrado opere correctamente.
2.1. Considere en el contador que los dos ltimos dgitos variarn de 00 a 59 mientras que los
dos primeros desde 00 a 99.
2.2. Utilice el testbech contador_bcd_tb.v para comprobar su diseo. Observe si hay errores en la
salida de texto del simulador. En caso de encontrar errores, en las formas de onda de la
simulacin hay una seal llamada error que se activa durante el error detectado, puede utilizarla
para buscar los errores.
2.3. El test anterior es incompleto, slo comprueba los valores en modo ascendente. Complete el
cdigo para comprobar todos los valores en modo descendentes.
2.4. Contemple en su diseo la llegada a cero del contador en modo descendente. Se propone
bloquearlo en cero cuando se alcance este valor.
Sistemas Digitales Avanzados 4
Por otro lado la Unidad de Control no es ms que una mquina de estados secuencial conectada a las
seales de control de todos los elementos que forman la Unidad de Datos. Esta mquina secuencial se
encarga de activar seales de la Unidad de Datos ciclo a ciclo de reloj. As, consigue realizar
operaciones con los componentes de la unidad de datos, tras una secuencia determinada de activacin
de seales en la Unidad de Datos, habr terminado la operacin para la que estaba diseada.
Siguiente esta metodologa, el diseo del cronmetro se dividir en dos mdulos denominados
unidad_datos y unidad_control. Ambos estarn interconectados siguiendo el esquema mostrado en la
figura 4. La Unida de Control recibir ordenes del usuario a travs de los pulsadores y la Unidad de
Datos mostrar en el display los minutos y segundos pudiendo recibir datos desde los conmutadores .
reset
reset reset
4
start up_bcd up_bcd an[3:0]
dw_bcd dw_bcd 7
seg[6:0]
set
ld_bcd ld_bcd
dp
cl_bcd cl_bcd
clear
8
sw[7:0]
mode
Generador
de segundos clk clk
0 0
8 sw[7:0]
4 4 4 4
up reset
CONT SEXAGESIMAL
dw
mm:ss
ld
4 4 4 4
clk
4
reset reset an[3:0]
7
seg[6:0]
w_display
dp
16
d_in[15:0]
Display
Controller
clk
3. Aada al proyecto los componentes del mdulo controlador de display diseado en el laboratorio
anterior. No aada el mdulo principal ni el fichero UCF.
3.1. Debe modificar el mdulo display para que admita carga de datos del exterior mediante un
BUS. El interfaz del mdulo debe quedar:
3.2. Modifique el modo de escritura en la memoria del display. La escritura debe ser nicamente
disparada por el reloj externo en el flanco positivo, el resto de seales no debe aparecer en la
lista de sensibilidad.
4. Cree un nuevo mdulo llamado unidad_datos que incluya todas las seales mostradas en la figura
4.
4.1. Instancie el mdulo display, el mdulo contador, interconecte los dos componentes y la E/S
del mdulo correctamente.
4.2. Al aadir el contador sexagesimal diseado anteriormente considere que slo tiene una seal
reset. Debe conectarla correctamente ya que la unidad de datos recibe dos seales reset y cl_bcd,
ambas inicializan el contador.
4.3. La seal de escritura del display debe fijarla a 1 para conseguir escritura continua en el
display.
Sistemas Digitales Avanzados 6
No se confunda con el generador de pulsos, ste genera un pulso de un ciclo de reloj de duracin cada
segundo, no una seal cuadrada de un segundo de perodo.
--
clear
mode
clear
CLEAR2
MODE_UP MODE_DOWN
CLEAR1 cl_bcd=1
mode
--
cl_bcd=1
set
start start start start
--
SET_BCD
RUN_UP RUN_DW
ld_bcd=1
5. Cree un nuevo mdulo llamado unidad_control con las conexiones E/S indicadas en la figura 4 e
implemente la mquina de estados de la figura 6.
5.2. Utilice el testbench del fichero unidad_control_tb.v para comprobar la mquina de estados
opera correctamente.
6.1. Las seales E/S son: input start,set,clear,mode,clk, output [3:0] an, output [6:0]
Sistemas Digitales Avanzados 7
6.3. Para conectar los pulsadores a la unidad de control se utilizar el detector de flanco
diseado al principio de este laboratorio. Adalo al proyecto e instancie el detector 4 veces, una
para cada pulsador. Debe conectar cada una de las 4 salidas del detector a las seales de entrada
de la unidad de control.
6.5. Utilice el fichero suministrado segundero.v. Este fichero contiene un generador de un pulso
de reloj cada segundo en base a un reloj de 50Mhz. Debe instanciarlo y conectar su salida a la
seal de entrada de la Unidad de Control llamada segundo.
6.6. Por ltimo se recomienda eliminar el divisor de frecuencia existente en el mdulo display.
Debe sustituirlo por un mdulo simular al que acaba de aadir (segundero.v). Con esto evitar
dejar seales del contador sin conectar.
7. Para la implementacin conecte los botones como se indica en la figura 7. Implemente el diseo y
utilice la combinacin de botones correcta para generar seal reset en el sistema.
set start
mode clear