Está en la página 1de 21

c 

 c 

Realizaremos paso a paso un sencillo ejemplo de entretenimiento para aprender a programar nuestra
FPGA, para ello usaremos la tarjeta de Xilinxs, Spartan III Starter Kit.

 

Se trata de implementar un sencillo videojuego que ponga a prueba los reflejos del jugador. El objetivo
del juego se trata de atrapar a los escurridizos bits que irán apareciendo de forma aleatoria en los LED
(LD0, LD1, LD2). Para ello habrá que accionar los pulsadores (BTN0, BTN1, BTN2) mientras los LED
correspondientes estén todavía encendidos. La partida se iniciará tras pulsar el Reset del sistema (BTN3)
y durará 30 segundos. Los led permanecerán quietos durante 0.25 segundos antes de pasar a su siguiente
configuración.

El visualizador de cuatro dígitos mostrará en todo momento el número de bits atrapados desde el
comienzo de la partida.No será válido dejar los pulsadores permanentemente actuados (emplear
monoestable no redisparable en estas entradas, por ejemplo, versiones basadas en el circuito antirrebote
que se menciona en las sugerencias).

Para generar la secuencia pseudoaleatoría se empleará un LFSR (Linear FeedBackShiftRegister). Los


circuitos LFSR se utilizan en infinidad de sistemas electronicos para generar secuencias pseudoaleatorias
con un periodo garantizado arbitrariamente largo, de forma simple y eficiente. Consiste en un registro de
desplazamiento formado por una serie de biestables conectados en serie con realimentación XOR de sus
salidas. A continuación puede verse un ejemplo de un LFSR de 5 bits.

La elección de las salidas reañimentadas es fundamental para conseguir una máxima longitud de la
secuencia sin repeticiones. Para este trabajo emplearemos un LFSR de 31 bits realimentando las salidas
2 y 30 (numerandolas desde cero), lo que generará secuencias sin repeticiones de aproximadamente
2.200 millones de números. Utilizaremos las tres de menor peso como patrón para encender los led.

Una característica de los LFSR es que quedan bloqueados si su contenido es cero. Por ello es necesario
inicializarlos con una semilla (un valor distinto de cero).

Mejoras realizadas:

Inclusión de varios niveles de dificultad, aumentando y disminiyundo el tiempo que los leds permanecen
quietos. Esta seleccion se ha realizado mediante los interruptores delizantes.
Incluir varios niveles de dificultad aumentando o disminuyendo el número de leds que pueden
encenderse a la vez. Para ello emplearemos una tabla de búsqueda o lookup de ocho elementos que
contendrían los led a encender. La selección se realizará mediante los interruptores deslizantes.

Métodos empleados:

Usar contadores BCD con acarreo y permiso para almacenar la puntuación. El contador sólo contará en
los flancos de subida de se señal de reloj cuando el permiso esté a 1. El acarreo valdrá 1 mientras el
contador se halle en su valor máximo y 0 para el resto de valores posibles. El accareo de cada contador
será el permiso del siguiente.

Emplear un único decodificador de 7 segmentos y la técnica de multiplexación (ver manual) para


controlar los cuatro dígitos de la placa para encender un número.

Usar un prescaler o divisor que genere a partir de los 50MHz disponibles en la placa las frecuencias
necesarias para la aplicación.

Incluir circuitos antirrebote en las entradas conectadas a pulsadores (ver "lenguaje Templates"-
>"VHDL"->"SynthesisTemplates"->"Debouncecircuit" en la herramienta Xilinx ISE).

:   

Primeramente vamos a explicar el procedimiento lineal que sigue el sistema para realizar el videojuego.

El juego no comienza hasta que pulsemos el botón 3, lo que quiere decir que el sistema está siempre
esperando a que se pulse dicho botón.

Antes de pulsar el botón 3 deberemos seleccionar el tiempo de juego de cada partida así como la
dificultad del juego, ya sea con la velocidad en que aparecen los leds o si pueden aparecer 1 o varios leds
a la vez, estas opciones de juego las seleccionaremos con los deslizadores de la tarjeta, tal y como
aparece a continuación:

Duración de juego:

SW1 SW0
10 SEG 0 0
30 SEG 0 1
40 SEG 1 0
60 SEG 1 1

Velocidad de los leds:

SW3 SW2
1 HZ 0 0
2 HZ 0 1
4 HZ 1 0
8 HZ 1 1

Número de leds:

SW4
UN LED 1
VARIOS LED 0
Hay que tener en cuenta que 0 será el deslizador hacia abajo y 1 será hacia arriba.

Se sugiere que para una mayor comprensión y seguimiento del proyecto puede bajarse el archivo
"disposición ordenada de bloques y señales", el cual se puede encontrar en el punto Download de este
mismo link. Es recomendable a la hora de hacer una aplicación en una FPGA se siga un orden
establecido en bloques y señales que se haya hecho previamente sobre papel, ya que este paso nos hará
ahorrar tiempo a la hora de pasarlo a código.

V 

Una vez seleccionado las opciones de nuestro juego pulsaremos el botón 3, dicho botón será el
encargado de iniciar o activar el componente j    
 , el cual mantendrá un pulso a
nivel alto el tiempo que hayamos seleccionado en el juego mediante los deslizadores SW0 y SW1,
cuando acabe el tiempo de juego volverá a poner a nivel bajo el pulso con la consecuencia de la
finalización del juego.

Este pulso será a su vez el que active el componente j  


  esté será el encargado se
sacar un tren de pulsos a la frecuencia que hemos seleccionado previamente mediante los deslizadores
SW2 y SW3, el cual actúa como habilitación a los monoestables, tanto el monoestable de la salida
aleatoria como el monoestable de los pulsadores.

El componente   j


 recibe la habilitación del tren de pulsos del selector de
frecuencia y la salida de la semilla producida por el componente j
 el cual actúa como
³simulador´ de alguien que pulsa otros pulsadores distintos a los nuestros, ya que nosotros pulsamos
unos botones (BTN0, BTN1, BTN2) cuya señal llega al componente   y es activado por el
tren de pulsos del selector de frecuencia.

Por lo tanto ya tenemos dos pulsaciones, una producida por la máquina (LEDs) y otra producida por
nosotros mismos, lo que hacemos es comparar dichas pulsaciones para ver si han sido iguales mediante
el componente  


La semilla generada es aleatoria con lo que hay si queremos que se encienda sólo un led hay que
codificar la señal de la semilla mediante el componente 



Aquí por tanto tenemos dos procesos en paralelo.

1.- Comparador:

Este comparará lo pulsado por el jugador con el resultado de la salida aleatoria y dará un pulso alto si la
comparación es correcta.

2.- Codificador + comparador:

La salida aleatoria la pasamos por el codificador con lo que sólo se encenderá un led. La salida del
codificador irá a parar a la entrada del comparador como si fuese la nueva salida aleatoria pero que en
este caso es sólo un led, para luego comparar la nueva salida aleatoria con lo pulsado por el jugador y
dar un pulso alto si la comparación es correcta.

Tenemos un proceso en paralelo, ¿entonces como sabemos que salida nos interesa y que comparador nos
interesa?, es aquí donde entra en juego el deslizador SW4 y el componente     


, dicho multiplexor tiene como entrada controladora el SW4 y como entradas las entradas y salidas
del codificador y la comparación, si el SW4 es cero seleccionaremos el proceso paralelo del comparador
y si SW4 es uno, entonces seleccionaremos el proceso paralelo del codificador + comparador. Las
salidas del multiplexor encienden o apagan los led de la FPGA así como también tiene una salida que
dará un pulso alto si la comparación ha sido correcta.

Disponemos un componente llamado 



 el cual cuenta los pulsos que nos llega del
multiplexor encender leds, los cuales son los aciertos que el jugador a realizado.

Dicha suma se saca por los display gracias a los componentes    
  y 



 , el conmutador enciende de forma continuada sólo un determinado display habilitándolo
durante un periodo de tiempo y dándole el valor correspondiente de la suma de aciertos.

:    


Vamos a ver más internamente el proceso viendo el código de cada componente.

h  
  

Este componente es el encargado de decir el tiempo del juego, para ello está distribuido en otras 5
entidades, de las cuales 4 son para cada tiempo de juego (10 seg, 30 seg, 40 seg y 60 seg) o la quinta es
un multiplexor de selección de dichos tiempos.

Estos tiempos se realizan mediante un contador de pulsos de reloj de la placa que son 50Mhz que son 20
ns, si queremos un tiempo de 10 segundos (10.000.000.000 ns), entonces no es más que hacer el
siguiente cociente:

10.000.000.000 / 20 = 500.000.000 cuentas

h h 

Entidad que contiene los cinco componentes ya citados anteriormente.

Ê ÊÊÊ  ÊÊ

   
 
  
 
ÊÊ 
 
  h  
  Ê  Ê
 
 
Ê ÊÊÊ  ÊÊ
 

ÊÊ  ÊÊÊ  ÊÊ




  Ê   hÊ



  
 
  
 
  hÊ
 
 
Ê   Ê  

  Ê   Ê



  
 
  
 
  Ê
 
 
Ê   Ê  
  Ê   Ê

   
 
  
 
  Ê
 
 
Ê   Ê  

  Ê   Ê



   
 
  
 
  Ê
 
 
Ê   Ê  

  Ê ÊÊÊ  ÊÊ



  hÊ
  
 
  Ê
  
 
  Ê
  
 
  Ê
  
 

ÊÊ   
 Êh   
  Ê  Ê
 
 
Ê   Ê  


h 
 

 
 

 
 

h  
 

  
 

 


  h  hÊ
    
 !
  hÊ
 h!
  


    Ê
    
 !
  Ê
 !
  


    Ê
    
 !
  Ê
 !
  


  h   Ê
    
 !
  Ê
 h !
  

 ÊÊÊ  ÊÊ


    
ÊÊ  ÊÊ !
  hÊ
 h!
  Ê
 !
  Ê
 !
  Ê
 h !
  Ê  Ê
   


  Ê  Ê


  
Ê  

h   h 

Contador es un acumulador de ciclos de reloj que pone a uno una salida el tiempo de dicho contador.

Ê   hÊ

  
 
  
 
  hÊ
 
 
Ê   hÊ


ÊÊ"Ê  hÊ



 
   # 
$$ 

h
  % 

 
  hÊ

 
   # 
 !!  Ê   !h
"



&$ $$'
 
   #$h$ 
 
& 

&$ $h$ 
 
   #$h$'hh(h 
 
& 

&h% 
 
   #$h$'
 
   #$$ 
 
& 

&h%'h 
 
& 

   
Ê "Ê 

h    

Contador es un acumulador de ciclos de reloj que pone a uno una salida el tiempo de dicho contador.

Ê   Ê

  
 
  
 
  Ê
 
 
Ê   Ê


ÊÊ"Ê  Ê



 
   # 
 

)
  h% 

 
  Ê

 
   # 
 !!
 
   #!)
"



&$ $$'
 
   #$h$ 
 
& 

&$ $h$ 
 
   #$h$'))(h 
 
& 

&)h% 
 
   #$h$'
 
   #$$ 
 
& 

&)h%') 
 
& 

   

endBehavioral;

h    

Contador es un acumulador de ciclos de reloj que pone a uno una salida el tiempo de dicho contador.

Ê   Ê

   
 
  
 
  Ê
 
 
Ê   Ê


ÊÊ"Ê  Ê



 
   # 
 


  ) 


 
  Ê

 
   # 
 !!
 
   #!
"



&$ $$'
 
   #$h$ 
 
& 

&$ $h$ 
 
   #$h$'(h 
 
& 

&) 
 
   #$h$'
 
   #$$ 
 
& 

&)' 
 
& 

   

Ê "Ê 

h    

Contador es un acumulador de ciclos de reloj que pone a uno una salida el tiempo de dicho contador.

Ê   Ê

   
 
  
 
  Ê
 
 
Ê   Ê


ÊÊ"Ê  Ê



 
   # 
 


  h% 

%
  h 

%  h 

 
  Ê

 
   # 
 !!
 
   #!!%
"



&$ $$'
 
   #$h$ 
 
& 

&$ $h$ 
 
   #$h$'(h 
 
& 

&h% 
 
   #$h$'
%%(h 
 
& 


&h% %) 
 
   #$h$'

 
   #$$ 
 
& 

&h% %) 
 
   #$$'
% 
 
& 

&h% % 
 
   #$$'
% 
 
& 

   

Ê "Ê 

h   

ÊÊ Ê  *Ê  ÊÊ


! ÊÊ   Ê
ÊÊ   Ê ÊÊ  

Ê ÊÊÊ  ÊÊ

  hÊ
  
 
  Ê
  
 
  Ê
  
 
  Ê
  
 
ÊÊ   
 Êh   
  Ê  Ê
 
 
Ê ÊÊÊ  ÊÊ
 

ÊÊ"ÊÊÊÊ  ÊÊ


  # 
 

 
  Ê  Ê
  # 
   hÊ
!  Ê
!  Ê
!  Ê
!ÊÊ 
"



&ÊÊ ++'  #  hÊ

 
& 

&ÊÊ +h+'  #  Ê

 
& 

&ÊÊ +h+'  #  Ê

 
& 

&ÊÊ +hh+'  #  Ê


 
& 
   

Ê "Ê 

)  & 


 

Es la entidad encargada de sacar un tren de pulsos a una frecuencia determinada por el usuario mediante
los deslizadores dos y tres.

 h   

Entidad compuesta por un multiplexor cuyas entradas de selección son los deslizadores dos y tres y otra
entidad denominada preescaler encargada de dividir la señal del reloj en un tren de pulsos a la frecuencia
seleccionada por el usuario.

 ÊÊ&ÊÊ Ê 


   
 
"  
 
  ÊÊ  Ê  
 
ÊÊ   
 Êh   
Ê ÊÊ&ÊÊ Ê  

ÊÊ  ÊÊ&ÊÊ Ê 


  Ê ÊÊ&ÊÊ Ê 
  h  
 
  )  
 
    
 
    
 
Ê Ê  
 
ÊÊ   
 Êh   
  ÊÊ  Ê  
 
Ê   Ê  

  Ê  ÊÊÊ
  % '  
 
  ' 
 
  ' 
 
  )' 
 
  h' 
 
Ê   Ê  




 
 

 
 

) 
 

h 
 

  
 


 

 ÊÊ&ÊÊ Ê     


ÊÊ  ÊÊ !
Ê Ê "!
  h h!
  ) )!
   !
   !
  ÊÊ  Ê   
 
   ÊÊÊ    
  % ' !
  h', h!
  )', )!
  ', !
  ',  

  ÊÊ  Ê   

end Structural;

     

Selección de frecuencia de los dependiendo de los deslizadores, cuyas entradas del multiplexor son las
salidas de las diferentes frecuencias del preescaler.

Ê ÊÊ&ÊÊ Ê 


  h  
 
  )  
 
    
 
    
 
Ê Ê  
 
ÊÊ   
 Êh   
  ÊÊ  Ê  
 
Ê ÊÊ&ÊÊ Ê  

ÊÊ"ÊÊÊ&ÊÊ Ê 



  # 
 

 
  ÊÊ  Ê   # 
   h!  )!  !  !Ê Ê!ÊÊ 
"


&Ê Ê$$'
  #$$ 
 
& 

&ÊÊ ++ Ê Ê$h$'  #  h 
 
& 

&ÊÊ +h+ Ê Ê$h$'  #  ) 
 
& 

&ÊÊ +h+ Ê Ê$h$'  #   
 
& 

&ÊÊ +hh+ Ê Ê$h$'  #   

 
& 
   

Ê "Ê 

   
Entidad constituida por un divisor de ocho hercios y divisores de frecuencia a la mitad.

Ê  ÊÊÊ
  % '  
 
  ' 
 
  ' 
 
  )' 
 
  h' 
 
Ê  ÊÊÊ 

ÊÊ ÊÊÊ
  Ê  '
  
 
   
 
Ê   Ê  

  Ê  &ÊÊ   


   
 

 
 
Ê   Ê  


', 
 

', 
 

)', 
 

h', 
 


 




  '    
   % '!
   ', 

 

  &ÊÊ       
 ',!

 ', 

 

  &ÊÊ       
 ',!

 )', 

 

  &ÊÊ       
 )',!

 h', 



  '', 
  '', 
  )')', 
  h'h', 



Ê  

2.3.1 Divisor de frecuencia a la mitad:


Este componente tiene como entrada la salida del divisor de 8Hz, dicha entrada que es un tren de pulsos
la divide cada 4 pulsos para generar un nievo tren de pulsos con la mitad de frecuencia y así
sucesivamente con los continuos divisores de frecuencias ya que están dispuestos en serie unos con los
otros.

Ê  &ÊÊ   


   
 

 
 
Ê  &ÊÊ   

ÊÊ"Ê &ÊÊ   



  # 
$$ 


  h 

 

  # 


"


&$ $h$'(h 
 
& 

&   #$$'  #$h$ 
 
& 

&   #$h$'  #$$ 
 
& 

&' 
 
& 

   

Ê "Ê 

2.3.2 Divisor 8 Hz:

Estos tiempos se realizan mediante un contador de pulsos de reloj de la placa que son 50Mhz que son 20
ns, si queremos un tiempo de 8Hz (125.000.000 ns ), entonces no es más que hacer el siguiente cociente:

125.000.000 / 20 = 6.250.000 cuentas

Si 6.250.000 cuentas las dividimos entre dos para hacer un tren de pulsos y dar un pulso alto cada
6.250.000 cuentas, lo que quiere decir que cada 3.125.000 cuentas invertimos el pulso pasando de alto a
bajo así generamos un pulso de nivel alto cada 8 Hz.

Ê  '
  
 
   
 
Ê  ' 

ÊÊ"Ê '

  # 
$$ 


  % 


 
    # 
!  #!

"


&$ $h$'(h 
 
& 

&h)%   #$$'  #$h$ 
 
& 

&h)%   #$h$'  #$$ 
 
& 

&h)%' 
 
& 



   

Ê "Ê 

  "

Entidad encargada de estabilizar las entradas asincronas y convertirlas en salidas síncronas ya que tiene
como entrada habilitadora la salida del selector de frecuencias.

Ê  ÊÊ
   Ê  
 Ê)   
Ê Ê  
 
    
 Ê)  
 
Ê  ÊÊ 

ÊÊ"Ê ÊÊ


 
Ê Ê!  Ê
Ê
 
"$ Ê Ê$h$Ê    ++ 
Ê  
  Ê$h$Ê    $h$ 
Ê  
  Êh$h$Ê    h$h$ 
Ê  
  Ê)$h$Ê    )$h$ 
Ê  
Ê   
Ê "Ê 

 



Consiste en la implementación del circuito LFSR propuesto en la documentación del trabajo.

Ê  Ê
  
 
  
 
  Ê  
 
  Ê h 
 
  Ê ) 
 
Ê  Ê 

ÊÊ"Ê Ê


 

!


" 
 Ê  

"



&$h$'
+hhhhhhhhhhhhhh+ 

&$h$ $ÊÊ '
)- .h  
 
& 

  Ê  


  Ê hh 
  Ê )) 

   
Ê "Ê 

%     

Componente que como bien dice su nombre compara dos entradas de arrays de vectores de dimensión
tres, cuya salida será un flanco de subida si la comparación es correcta y un flanco de bajada si la
comparación es errónea.

Ê   


      
 Ê)   
     
 Ê)   
    
 
Ê    

ÊÊ"Ê  


 
    !   
"



&      '   $h$ 
   $$ 
 
& 
   
Ê "Ê 

 
&
  

Componente encargado de codificar la señal aleatoria que le llega del LFSR para así encender un único
led.
Ê   
      
 Ê)   
    
 Ê)   
Ê    

ÊÊ"Ê  


 
Ê   
Ê
 
   ++Ê    ++ 
Ê   +h+Ê    ++ 
Ê   +h+Ê    +h+ 
Ê   +hh+Ê    +h+ 
Ê   +h+Ê    +h+ 
Ê   +hh+Ê    +h+ 
Ê   +hh+Ê    +h+ 
ÊÊ   +h+ 
Ê  
Ê  Ê 

Ê "Ê 

/  
    

Este componente es el encargado de realizar la selección de las entradas que le llegan o bien del
monoestable de la salida aleatoria, del monoestable de la salida de los botones y de los comparadores.

  Ê ÊÊ ÊÊ   ÊÊ *ÊÊ Ê Ê ÊÊ    Ê
Ê Ê
 *ÊÊ   Ê 

Ê  Ê ÊÊ 


h  
 
)  
 
"h  
 
")  
 
h  
 
)  
 
 h  
 
 )  
 
ÊÊ   
 
 
 
" 
 
 
 
  
 
Ê  Ê ÊÊ  

ÊÊ"Ê Ê ÊÊ 



  # 
 

"  # 
 

  # 
 

  # 
 


 

  # 
""  # 
  # 
   # 
h!)!"h!")!h!)! h! )!ÊÊ 
"


&ÊÊ $$'
  #h 

  #) 
 
& 


&ÊÊ $$'
"  #"h 

"  #") 
 
& 


&ÊÊ $$'
  #h 

  #) 
 
& 


&ÊÊ $$'
  # h 

  # ) 
 
& 


   
Ê "Ê 

   

Entidad constituida por una serie de componentes denominados sumador de display, sumador de aciertos
y habilitación.

Ê   
Ê  
 
  
 
  Ê  
 Ê)   
  
 Ê   
 h 
 Ê   
 ) 
 Ê   
Ê    

ÊÊ  

  Ê   ÊÊ


   
 
  Ê
Ê
Ê- 
 
 
  
 
Ê   Ê  

  Ê  


   Ê  
 Ê)   
Ê  
 
    
 
Ê   Ê  

  Ê    


 Ê   Ê
Ê
Ê- 
  
 Ê   
Ê   Ê  


    Ê
Ê
Ê- 

 h   Ê
Ê
Ê- 

 )   Ê
Ê
Ê- 


   
 

h   
 


   
 


 


     ÊÊ    
 !
   !
   !
      


      ÊÊ    
 !
 h  !
   !
   h   

ÊÊ     ÊÊ    


 !
 h  !
   )   

Ê       
Ê      !
   

Êh       
Ê    h  !
  h 

Ê)       
Ê    )  !
  ) 

     
  Ê  Ê!
Ê Ê!
       

Ê  
• h   

Contador de pulsos que te llegan de la salida del componente habilitación, el cual tiene una entrada del
botón reset para poner a cero el contador. El sumador está constituido por 3 sumadores encargados cada
uno de realizar hasta un total de 999 aciertos, ya que cuando el sumador de unidad se desborda tiene una
salida de carrier que le llega al siguiente sumador y así sucesivamente.

Ê   ÊÊ
   
 
  Ê
Ê
Ê- 
 
 
  
 
Ê   ÊÊ 

ÊÊ"Ê  ÊÊ

    Ê
Ê
Ê- 

   
$$ 

 
     
   
 Ê!
Ê
 
$ÊÊ  $h$ $$Ê 
   -Ê 
      (h 
  $$ 
Ê  
   -Ê 
  $h$ 
    
Ê  
Ê  

$h$Ê 
    
  $$ 
Ê  

Ê  Ê 

Ê "Ê 

•    

Es un codificador que tiene como entrada la suma de los aciertos y como salida la codificación que le
corresponde a cada número respecto a los displays de la placa.

Ê    
 Ê   Ê
Ê
Ê- 
  
 Ê   
Ê     

ÊÊ"Ê   

 

ÊÊ  



 
ÊÊ  
Ê  
 +h+ 
Ê h 
 +hhhhh+ 
Ê ) 
 +hh+ 
Ê  
 +hh+ 
Ê  
 +hhh+ 
Ê % 
 +hh+ 
Ê  
 +h+ 
Ê / 
 +hhhh+ 
Ê  
 ++ 
Ê - 
 +h+ 
Ê Ê 
 +hhhhhh+ 
Ê Ê 
Ê  Ê 

endBehavioral;

•     ! 

Componente encargado de asegurarnos que el usuario a pulsado algún botón y si el botón a sido pulsado
y se ha producido un acierto, este saca un pulso alto, el cual será contado por el sumador de aciertos.

Ê  
   Ê  
 Ê)   
Ê  
 
    
 
Ê  

ÊÊ"Ê 


 
 ÊÊ!  Ê
Ê
 

&  Ê0++ Ê$h$'   Ê 
Ê  
  Ê++Ê    $$ 
 
& 

Ê  Ê 

Ê "Ê 
-  
 
 #

La disposición de la placa respecto a los display no es tener una un array de conexiones para cada
display, sino tener un solo array de conexiones para los tres display y multiplexar la salida. Para ellos se
realiza un multiplexor que tenga como entradas las señales numéricas de los tres display para luego
conmutarlos a una velocidad que al ojo humano piense que es continuo (aprox 15 fps).

Para dicha conmutación se ha realizado un componente denominado conmutador display el cual ataca a
las entradas de selección del multiplexor de displays.

Ê   
    
 Ê   
 h  
 Ê   
 )  
 Ê   
   
 Ê   
  
 
  
 
  
 
Ê    

ÊÊ"Ê  


 
Ê!!! ! h! )
Ê
 
$h$ $h$ $$Ê     
Ê  
$h$ $$ $h$Ê    h 
Ê  
$$ $h$ $h$Ê    ) 
Ê  
Ê  Ê 

Ê "Ê 

h    
 #

Teniendo en cuenta que los displays se activan mediante lógica negativa ( enable = 0 ), se conmutan
estos cada cierto tiempo, para ellos se ha realizado un contador de pulsos de reloj de la placa.

Ê     


   
 
 
 
" 
 
 
 
Ê      

ÊÊ"Ê    



   
   

  # 
$$ 

"  # 
$h$ 

  # 
$h$ 

 

"


&$ $h$'      (h 

&   )-----'    


 
& 

&   h'


  #$$ 
"  #$h$ 
  #$h$ 

 
& 

&   -----    )'


  #$h$ 
"  #$$ 
  #$h$ 
 
& 

&   h-----'


  #$h$ 
"  #$h$ 
  #$$ 
 
& 

 
& 

   

  # 
""  # 
  # 

Ê "Ê 

a   "# 

Podemos ver que se ha dispuesto un documento anexo en pdf en el apartado descarga de este link, donde
se encuentran las señales, entradas y salidas y bloques de forma ordenada para poder seguir de forma
fácil y sencilla todo el proceso.

También podría gustarte