Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Laboratorio Electronica - Nro1
Laboratorio Electronica - Nro1
DE
TECNOLOGA ELECTRNICA
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;
Implementacin de una pequea mquina de estados para deteccin de flancos.
Implementacin de una mquina de estados para control de un cronmetro.
Implementacin completa de un cronmetro usando la metodologa de diseo basada en Unidad
de Datos y Unidad de Control.
Contenido
Descripcin
Controlador de display.
Debe completarlo
Generador de pulsos
Rev. 1.269
Contenido
Descripcin
Basys2 con los Pads de la FPGA.
Detector
Flanco
pulse
ck
Figura 1. Esquema del detector de flancos.
!btn
!btn
BTN_UP
pulse=0
btn
BTN_UP2
pulse=1
--
BTN_DOWN
pulse=0
btn
3. Diseo de un cronmetro
Ahora se pretende disear un cronmetro con dos modos de funcionamiento: cronmetro y
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 ncleo de este diseo es un contador en sexagesimal capaz de realizar la cuenta de minutos y
segundos, tanto en modo ascendente como descendente. Este contador, mostrado en la figura 3, consiste
en 4 salidas BCD. Las salidas BCD representan en decimal los minutos (en los dos dgitos ms
significativos) y los segundos (en los dos dgitos menos significativos), por tanto, el formato de salida es
mm:ss.
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.
DIN3 DIN2 DIN1 DIN0
4
UP
DW
LD
4
RESET
CONT SEXAGESIMAL
mm:ss
CLK
BCD3 BCD2 BCD1 BCD0
Figura 3. Diagrama de bloques Contador Sexagesimal con salida BCD.
reset
up_bcd
up_bcd
an[3:0]
dw_bcd
dw_bcd
seg[6:0]
ld_bcd
ld_bcd
cl_bcd
cl_bcd
sw[7:0]
Generador
de segundos
Unidad de
control
clk
dp
mode
segundo
Unidad de
datos
clk
5
0
0
4
sw[7:0]
reset
up
CONT SEXAGESIMAL
mm:ss
dw
ld
clk
reset
an[3:0]
reset
seg[6:0]
w_display
16
4
7
dp
d_in[15:0]
Display
Controller
clk
Figura 5. Diagrama de bloques de la Unidad de Datos
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.
clear
mode
clear
MODE_UP
CLEAR2
MODE_DOWN
cl_bcd=1
CLEAR1
cl_bcd=1
mode
--
set
start
start
start
start
--
SET_BCD
RUN_UP
RUN_DW
ld_bcd=1
segundo / up_bcd=1
segundo / dw_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.1. Asigne al estado MODE_UP el valor binario 000.
5.2. Utilice el testbench del fichero unidad_control_tb.v para comprobar la mquina de estados
opera correctamente.
set
mode
start
clear