Instituto Politécnico Nacional Escuela Superior de...

16
Instituto Politécnico Nacional Escuela Superior de Cómputo Proyecto SE20070446: “Implementación de algoritmos de segmentación para el procesamiento de huellas dactilares utilizando dispositivos lógicos programables del tipo FPGA”. Director: Julio César Sosa Savedra RESUMEN: En este trabajo se presento la implementación de algoritmos de segmentación para el procesamiento de imágenes en tiempo real. El objetivo fundamental fue implementar algoritmos sobre lenguaje HDL para analizar su efectividad. La herramienta utilizada fue un FPGA, que es un dispositivo VLSI de bajo costo, que posee la flexibilidad de poder configurarlo para aplicaciones a la medida. Los resultados fueron favorables y eso sugiere que es posible implementar todo un sistema completo para la autentificación de una huella dactilar. INDICE I. Sistemas de control de acceso II. Procesamiento de huellas dactilares II.I AFAS (Automated Fingerprint Authentification System) II.II AFAS (Preprocesado Mínimo) III. Arquitecturas usadas para la implementación de AFAS y AFIS III.I Field Programmable Gate Array IV. Segmentación de imágenes IV.I Segmentación de imágenes de huellas dactilares IV.II Segmentación por varianza IV.III Segmentación por imágen direccional IV.III.I La media direccional IV.III.II Imágen direccional IV.IV Segmentación compuesta IV.V Segmentación por umbral IV.V.I Segmentación por umbral global lIV.V.II Segmentación por umbral dinámico IV.V.III Segmentación por umbral compuesto V. Implementación por Hardware V.I Máquina de estados para la lectura de la memoria SRAM de la tarjeta de desarrollo DE2 de Altera. V.II Código en VHDL de la Máquina de estados. VI. Impacto

Transcript of Instituto Politécnico Nacional Escuela Superior de...

Page 1: Instituto Politécnico Nacional Escuela Superior de Cómputosappi.ipn.mx/cgpi/archivos_anexo/20070446_5259.pdf · Ángulo 90° 67.5° 45° 22.5° 0° 157.5° 135° 112.5° Tabla II.

Instituto Politécnico Nacional

Escuela Superior de Cómputo Proyecto SE20070446: “Implementación de algoritmos de segmentación para el procesamiento de huellas dactilares utilizando dispositivos lógicos programables del tipo FPGA”. Director: Julio César Sosa Savedra RESUMEN: En este trabajo se presento la implementación de algoritmos de segmentación para el procesamiento de imágenes en tiempo real. El objetivo fundamental fue implementar algoritmos sobre lenguaje HDL para analizar su efectividad. La herramienta utilizada fue un FPGA, que es un dispositivo VLSI de bajo costo, que posee la flexibilidad de poder configurarlo para aplicaciones a la medida. Los resultados fueron favorables y eso sugiere que es posible implementar todo un sistema completo para la autentificación de una huella dactilar. INDICE I. Sistemas de control de acceso II. Procesamiento de huellas dactilares II.I AFAS (Automated Fingerprint Authentification System) II.II AFAS (Preprocesado Mínimo) III. Arquitecturas usadas para la implementación de AFAS y AFIS III.I Field Programmable Gate Array IV. Segmentación de imágenes IV.I Segmentación de imágenes de huellas dactilares IV.II Segmentación por varianza IV.III Segmentación por imágen direccional IV.III.I La media direccional IV.III.II Imágen direccional IV.IV Segmentación compuesta IV.V Segmentación por umbral IV.V.I Segmentación por umbral global lIV.V.II Segmentación por umbral dinámico IV.V.III Segmentación por umbral compuesto V. Implementación por Hardware V.I Máquina de estados para la lectura de la memoria SRAM de la tarjeta de desarrollo DE2 de Altera. V.II Código en VHDL de la Máquina de estados. VI. Impacto

Page 2: Instituto Politécnico Nacional Escuela Superior de Cómputosappi.ipn.mx/cgpi/archivos_anexo/20070446_5259.pdf · Ángulo 90° 67.5° 45° 22.5° 0° 157.5° 135° 112.5° Tabla II.

I. Sistemas de control de acceso A grosso modo los sistemas de control de acceso basados en identificación y/o autenticación se pueden clasificar en:

Figura 1. Sistemas de control de acceso. Una tabla comparativa entre las diferentes características que manejan los sistemas biométricos es la siguiente.

Ojo (Iris)

Ojo (Retina)

Huellas dactilares

Geometría de la mano

Escritura y firma Voz Cara

Fiabilidad Muy alta Muy alta Alta Alta Media Alta Alta

Facilidad de uso Media Baja Alta Alta Alta Alta Alta

Prevención de ataques

Muy alta Muy alta Alta Alta Media Media Media

Aceptación Media Media Media Alta Muy alta Alta Muy alta

Estabilidad Alta Alta Alta Media Baja Media Media

Tabla I. Comparativa de características biométricas II. Procesamiento de huellas dactilares Los sistemas procesadores de huellas dactilares, que actualmente cumplen las perspectivas de autenticación e identificación, son: AFAS (Automated Fingerprint Authentification System) y AFIS (Automated Fingerprint Identification System), siendo este último más robusto, debido al uso de técnicas que requieren más tiempo de procesamiento (FBI). Un ejemplo de la parte medular del funcionamiento de un sistema tipo AFAS se muestra en la siguiente figura:

Page 3: Instituto Politécnico Nacional Escuela Superior de Cómputosappi.ipn.mx/cgpi/archivos_anexo/20070446_5259.pdf · Ángulo 90° 67.5° 45° 22.5° 0° 157.5° 135° 112.5° Tabla II.

II.I AFAS (Automated Fingerprint Authentification System)

Figura 2. Diagrama de flujo general de un sistema tipo AFAS.1

II. AFAS (Preprocesado Mínimo)

Figura 3 Diagrama de flujo general de un sistema tipo AFAS mínimo

1 “Sistema de autenticación de huella dactilar”. M. en C. Victor Hugo García Ortega

Page 4: Instituto Politécnico Nacional Escuela Superior de Cómputosappi.ipn.mx/cgpi/archivos_anexo/20070446_5259.pdf · Ángulo 90° 67.5° 45° 22.5° 0° 157.5° 135° 112.5° Tabla II.

III. Arquitecturas usadas para la implementación de AFAS y AFIS - Personal Computer (Computadoras Personales) - Digital Signal Processors (Procesadores Digitales de Señales) - Field Programmable Gate Array (Arreglo de compuertas Programables por el usuario) Diversos algoritmos de procesamiento de huellas dactilares se han desarrollado sobre las primeras dos arquitecturas, sin embargo, ventajas tales como el bajo costo y el procesamiento dedicado (especialmente de manera concurrente, característica que distngue al hardware), fueron las principales razones por las que se eligió una arquitectura del tipo FPGA. III.I Field Programmable Gate Array La arquitectura de un FPGA, figura 4, se caracteriza por tener una alta densidad de arreglos de compuertas AND-OR, flip-flops, registros y terminales de E/S interconectadas entre si. La cualidad de estas interconexiones es poder ser reconfiguradas miles de veces por el usuario, mediante diferentes esquemas de programación, en éste proyecto se usará el lenguaje de descripción de hardware VHDL.

Figura 42. Arquitectura interna de una FPGA. IV. Segmentación de imágenes La segmentación divide una imagen en sus partes correspondientes u objetos, con la meta de simplificar y/o cambiar la representación de la imagen en algo más significativo y fácil de analizar. El nivel de división depende del problema a resolver, y termina cuando los objetos de interés hayan sido aislados. Para imágenes monocromáticas los algoritmos de segmentación se basan en una de las 2 propiedades básicas de los valores de nivel de gris. a) Discontinuidad: El método divide la imagen basándose en los cambios bruscos de nivel de gris. Sus principales áreas de interés son la detección de puntos aislados, líneas y bordes de una imagen. b) Similaridad: Sus principales métodos están basados en la segmentación por umbral, crecimiento de regiones y en la división y fusión de regiones.

2 FPGA.gif Instituto de Biocomputación y Física de Sistemas Complejos

Page 5: Instituto Politécnico Nacional Escuela Superior de Cómputosappi.ipn.mx/cgpi/archivos_anexo/20070446_5259.pdf · Ángulo 90° 67.5° 45° 22.5° 0° 157.5° 135° 112.5° Tabla II.

IV.I Segmentación de imágenes de huellas dactilares En el procesamiento de imágenes de huellas dactilares usualmente se realizan 2 procesos de segmentación, que son: 1.- Remover las partes que no llevan información válida en la imagen de la huella dactilar (Mejoramiento de imagen). 2.- Separar claramente las regiones que pertenecen a los valles de las regiones que pertenecen a las colinas (Binarización). Para el mejoramiento de la imagen, tenemos a la segmentación por varianza y la segmentación por imagen direccional así mismo su combinación llamada segmentación compuesta. IV.II Segmentación por varianza En general, la varianza de los niveles de gris pertenecientes al fondo y/o a regiones uniformes es muy pequeña, y la varianza en regiones donde se encuentra la imagen de la huella dactilar en buenas condiciones es alta. Así pues, al establecer un umbral UMVAR para un cierto bloque, si la varianza es menor que el umbral establecido, eso indica que pertenece al fondo (mc), de lo contrario indica que se trata de la huella dactilar (bc). La varianza fue calculada mediante la ecuación (1).

(1)

Figura 5. Diagrama de flujo para la segmentación por varianza

Page 6: Instituto Politécnico Nacional Escuela Superior de Cómputosappi.ipn.mx/cgpi/archivos_anexo/20070446_5259.pdf · Ángulo 90° 67.5° 45° 22.5° 0° 157.5° 135° 112.5° Tabla II.

IV.III Segmentación por imagen direccional En primera instancia, la imagen direccional es una matriz de direcciones, las cuales representan la orientación de un valle o colina en cada posición dentro de la imagen de la huella dactilar, además ayuda a determinar la estructura global de la huella al obtener la dirección de cada píxel, y de ésta manera ubicar estructuras clave únicas en cada huella dactilar para autenticar o identificar a una persona, estructuras conocidas como core y delta, ejemplos de estos se muestran en la figura 6.

Figura 6 Estructuras core y delta.3

Estos puntos son necesarios para hacer la clasificación correcta de las huellas dactilares, asi como para realizar la extracción de minucias, es decir, estos puntos singulares son los puntos de referencia a partir de los cuales se determinan los rasgos de cada minucia (posición, orientación, etc) Las direcciones suelen ser visualizadas en un espacio de 2 o 3 dimensiones para su representación. En ese espacio, las direcciones son representadas por puntos en la circunferencia de un círculo o en la superficie de una esfera respectivamente. Algunas veces se necesita saber la orientación de una línea no dirigida (por ejemplo en las huellas dactilares); tales observaciones pueden ser descritas como "ejes" en vez de direcciones y son conocidas como datos axiales. Al representar datos axiales en la superficie de una hiperesfera las líneas no dirigidas son extendidas para cortar a la hiperesfera, de tal manera que no se hace distinción entre los dos puntos opuestos sobre el diámetro de ésta. Alternativamente, los datos axiales pueden ser representados como un conjunto de puntos sobre la superficie de una semi-hiperesfera. Este tipo de representación es útil cuando se requiere realizar ciertas operaciones con ángulos, por ejemplo, la media aritmética entre los ángulos 1° y 359° es 180°, mientras que la media angular de estos ángulos es 0°. IV.III.I La media direccional Dado un cierto ángulo, éste puede ser representado como un vector en un círculo de radio unitario, como se muestra en la figura 7. Supongamos ciertos ángulos θ1,....θn, los cuales son medidos desde un eje O-X en sentido contrario a las manecillas del reloj. Se pueden ver a los ángulos θi como una representación del vector unitario O-Pi, formando el ángulo θi con ele eje x en la dirección positiva, donde Pi es el punto de θi sobre el círculo unitario con i=1,...,n.

3 The Science of Fingerprints. Classification and Uses FBI John Edgar Hoover, Fig 25

Page 7: Instituto Politécnico Nacional Escuela Superior de Cómputosappi.ipn.mx/cgpi/archivos_anexo/20070446_5259.pdf · Ángulo 90° 67.5° 45° 22.5° 0° 157.5° 135° 112.5° Tabla II.

( )1

2 2 2R C S= +

0´ arctan SxC =

0´2 2xπ π

− < <

0

0

0

0

( 0, 0)

( 0, 0), ( 0, 0)

2 ( 0, 0)( 0, 0)

0 ( 0, 0)

( 0, 0)23 ( 0, 0)2

x S C

x C S C S

x S Cx S C

S C

S C

S C

π

ππ

π

π

′ ⇒ > > ′ + ⇒ < < < > ′ + ⇒ < >= ⇒ == < ⇒ == > ⇒ > == ⇒ < ==

Figura 7. Representación de un ángulo sobre el círculo unitario Dados los puntos Pi sobre la cirunferencia de radio unitario que corresponden a los ángulos θi, i=1,...,n. Entonces la media direccional o angular x0 de θ1,...,θn es definida como la dirección resultante de los vectores unitarios OP1,...,OPn. Las coordenadas cartesianas de Pi son (cosθ,senθ), donde i=1,...,n, de tal manera que el centro de gravedad de estos puntos es (C,S) y R la magnitud del vector resultante:

(2), (3), (4) Por consiguiente la media direccional x0 es: (5) Donde , (6) IV.III.II Imagen direccional Aquí se calcula la orientación local de los valles o colinas. Una aproximación común para encontrar las direcciones de las colinas en la huella es el uso de cortes (slits), donde se estima una aproximación discreta de la dirección de un valle o colina. Para cada píxel C, los valores de los píxeles en la imagen I(x,y), son sumados. Por ejemplo S2 = I(x+1,y-2) + I(x+2,y-4) + I(x-1,y+2) + I(x-2,y+4). Para cada píxel se calculan 8 diferentes cortes. La dirección asignada al píxel C está dada por:

(7)

Como se puede observar, cada corte se encuentra a una separación de 22.5° del siguiente; dichos cortes son de hecho datos axiales, ya que no nos interesa la dirección, es decir, el ángulo θ y θ + π representan a la misma dirección. Así los ocho ángulos de cada corte están en el intervalo [0°,180°], tal como se muestra en la tabla.

1

1 cos( )n

i

C in

θ=

= ∑1

1 s ( )n

i

S en in

θ=

= ∑

8

min1

min

3| 4( ) 8

|

i max max ii

i

i S S C S S Sdir C

i S S deotraforma=

= ⇒ + + >=

= ⇒

Page 8: Instituto Politécnico Nacional Escuela Superior de Cómputosappi.ipn.mx/cgpi/archivos_anexo/20070446_5259.pdf · Ángulo 90° 67.5° 45° 22.5° 0° 157.5° 135° 112.5° Tabla II.

Corte 1 2 3 4 5 6 7 8

Ángulo 90° 67.5° 45° 22.5° 0° 157.5° 135° 112.5°

Tabla II. Ángulo de cada corte Después de obtener la dirección de cada píxel se realiza el cálculo de la media direccional tomando bloques de 15X15 píxeles. Dado que tenemos datos axiales, cada ángulo se expresa como un vector de la forma (cos2θ,sen2θ) de tal manera que los datos se distribuyan en el intervalo [0°,360°] y se pueda aplicar la definición de la media direccional. A partir de la imagen direccional, se utiliza el histograma de las direcciones de cada píxel pertenecientes a un bloque para segmentarlo. Del estudio de estos histogramas se establecen las siguientes condiciones para su segmentación:

Si el valor del pico más grande en el histograma excede algún umbral UMMAXPICO, entonces la región claramente pertenece a la imagen de la huella dactilar.

Si al diferencia entre el pico mas grande y el más pequeño en el histograma es menor que algún umbral UMDIFPICOS, entonces la región claramente pertenece al fondo.

Si la varianza de direcciones (calculada como la suma de los cuadrados de los valores del histograma para todas las direcciones) es más grande que algún umbral UMVARDIR, entonces la región pertenece a la imagen de la huella dactilar.

Este método presenta algunas limitaciones para regiones totalmente uniformes, donde el resultado llega a ser indefinido. Sin embargo, éste método es muy bueno para imágenes ruidosas, con poco contraste y con o sin mejora. Por lo tanto, este tipo de segmentación aísla adecuadamente regiones ruidosas dentro de la imagen. En secciones anteriores se utilizó la segmentación por imagen direccional en las regiones secas y húmedas para determinar si en esos bloques existía información direccional, de ser así el bloque se toma como perteneciente a la huella. El diagrama de flujo para la segmentación por imagen direccional se muestra en la figura 8.

Figura 8. Algoritmo de segmentación por imagen direccional

Page 9: Instituto Politécnico Nacional Escuela Superior de Cómputosappi.ipn.mx/cgpi/archivos_anexo/20070446_5259.pdf · Ángulo 90° 67.5° 45° 22.5° 0° 157.5° 135° 112.5° Tabla II.

IV.IV Segmentación compuesta El método de segmentación por varianza localiza y elimina regiones uniformes y el método de segmentación por imagen direccional falla en estas regiones. Además, el primer método no elimina regiones ruidosas y el segundo si lo hace. Por estas razones el método compuesto combina los métodos de segmentación basados en información de dirección y varianza para determinar regiones inválidas. La combinación es realizada de la siguiente manera: Sea Akl(A,B) y Bkl(A,B) los bloques obtenidos por la segmentación de una imagen por el método direccional y el método de varianza respectivamente y sea Vkl la varianza en niveles de gris de los bloques de la imagen. Si Ckl(A,B) es el arreglo de bloques que representan a la imagen segmentada por el método compuesto, entonces Ckl(A,B) puede ser obtenida según: Si Vkl < UMVAR entonces Ckl(A,B)=Bkl(A,B) (8) De lo contrario Ckl(A,B)=Akl(A,B) (9) El umbral UMVAR es elegido de tal manera que se corresponda con regiones uniformes, lo que asegura que el método de varianza llega a ser efectivo sólo en regiones uniformes. El diagrama de flujo para realizar este propósito se presenta en la figura 9.

Figura 9. Algoritmo de segmentación compuesta

Resultados experimentales: En la figura 10 se puede apreciar la imagen original y cada una de las imágenes que se han expuesto en los apartados previos.

Page 10: Instituto Politécnico Nacional Escuela Superior de Cómputosappi.ipn.mx/cgpi/archivos_anexo/20070446_5259.pdf · Ángulo 90° 67.5° 45° 22.5° 0° 157.5° 135° 112.5° Tabla II.

Figura 10. Resultados de distintos tipos de segmentación Una vez obtenidos los bloques que llevan información válida de la imagen, se procede a separar claramente las regiones que pertenecen a los valles, de las regiones que pertenecen a las colinas. Esto se hace binarizando la imagen a través del método de segmentación por umbral. Los algoritmos seleccionados para la binarización de la imagen de huella dactilar son: segmentación por umbral global, segmentación por umbral dinámico y segmentación por umbral compuesto. IV.V Segmentación por umbral Se puede contemplar como una operación que implica realizar comprobaciones frente a función T de la forma:

T=T[x,y,p(x,y),f(x,y)] (10) Donde f(x,y) es el nivel de gris del punto (x,y) y p(x,y) representa alguna propiedad local de ese punto (como la media del nivel de gris de una cierta vecindad centrada en (x,y)). IV.V.I Segmentación por umbral global Sea f(x,y) el histograma de una imagen en niveles de gris, compuesta por objetos oscuros sobre un fondo claro (histograma bimodal), para dividir estos modos se elige un umbral T, de tal forma que la imagen segmentada g(x,y) se define como: (11) El diagrama de flujo propuesto para realizar la segmentación por umbral global se presenta en la figura 11. IV.V.II Segmentación por umbral dinámico En éste caso el umbral se adapta localmente al tipo de imagen en una vecindad de puntos (x,y). Dicho umbral M dependerá de la media del histograma f(x,y), de una ventana cuadrada que se desplaza sobre la imagen, ambos, tamaño y desplazamiento definidos inicialmente. (12)

Page 11: Instituto Politécnico Nacional Escuela Superior de Cómputosappi.ipn.mx/cgpi/archivos_anexo/20070446_5259.pdf · Ángulo 90° 67.5° 45° 22.5° 0° 157.5° 135° 112.5° Tabla II.

Figura 11. Diagrama de flujo que realiza la segmentación por umbral global.

Resultados experimentales: Relación imagen a ruido alta:

Relación imagen a ruido baja:

Figura 18

Figura 12 Resultados de la segmentación global y dinámica (Relación Imagen a ruido).

Page 12: Instituto Politécnico Nacional Escuela Superior de Cómputosappi.ipn.mx/cgpi/archivos_anexo/20070446_5259.pdf · Ángulo 90° 67.5° 45° 22.5° 0° 157.5° 135° 112.5° Tabla II.

IV.V.III Segmentación por umbral compuesto La segmentación por umbral compuesto, combina la segmentación con umbral global para imágenes de buena calidad y la segmentación por umbral dinámico para imágenes de mala calidad. El diagrama a flujo que representa esta estrategia es el mostrado en la figura 13. Este método se utiliza después de realizar un filtrado, donde se tienen regiones de mala calidad. La determinación de estas regiones de mala calidad se hace usando el método de segmentación por varianza, en donde los bloques de mala calidad se marcan para que posteriormente sean nuevamente filtrados.

Figura 13. Segmentación por umbral compuesto4 La segmentación por varianza es un algoritmo de segmentación que se aplica tanto en la binarización como en el mejoramiento de la imagen. V. Implementación por Hardware Antes de la implementación sobre un lenguaje de descripción de hardware todos los procesos y algoritmos se realizaron y programaron en C++ Builder. De esto se obtuvo un software que realizaba todos los procesos. Después de eso se inició con la implementación de los algoritmos de segmentación mediante VHDL,

4 “Sistema de autenticación de huella dactilar”. M. en C. Víctor Hugo García Ortega

Page 13: Instituto Politécnico Nacional Escuela Superior de Cómputosappi.ipn.mx/cgpi/archivos_anexo/20070446_5259.pdf · Ángulo 90° 67.5° 45° 22.5° 0° 157.5° 135° 112.5° Tabla II.

compilándose y sintetizando los programas sobre la FPGA Cyclone II, la cual se localiza en la tarjeta de desarrollo DE2 de Altera, figura 14. La tarjeta de desarrollo DE2 de Altera, que contiene una FPGA fue elegida minuciosamente por su alta densidad de compuertas y periféricos integrados en la tarjeta, tales como memorias SRAM y DRAM, interfaces RS-232, Ethernet, USB, etc.

Figura 14. Tarjeta de desarrollo DE2, de Altera5

La imagen original de la huella dactilar se almacenará temporalmente en las localidades de la SRAM de 16 bits, un píxel en la parte baja y un píxel contiguo en la parte alta, para la ejecución de la lectura y escritura de y hacia la SRAM, se diseño una máquina de estados la cual gestionará adecuadamente el acceso a la imagen de la huella dactilar por parte del FPGA. V.I Máquina de estados para la lectura de la memoria SRAM de la tarjeta de desarrollo DE2 de Altera.

Figura 20 Máquina de estados de lectura y escritura de la SRAM

Donde: WL,WH,RL,RH Son señales que inician la escritura (W) y lectura (R) de la localidad de memoria en la SRAM especificando la parte alta (H) o baja (L) de dicha localidad. 5 http://www.altera.com

Q1

Q5

Q2

Q6

Q4

Q3

Q0

WL WL RL RL

WH WH

WL, WH

RH RH

RL, RH

WL,WH,RL,RH

Page 14: Instituto Politécnico Nacional Escuela Superior de Cómputosappi.ipn.mx/cgpi/archivos_anexo/20070446_5259.pdf · Ángulo 90° 67.5° 45° 22.5° 0° 157.5° 135° 112.5° Tabla II.

Q0 : Q6 Son los estados mediante los cuales se desarrolla la operaciòn de lectura o escritura, en cada estado se fijan los valores de las señales de control (OE, CE, WE, UB, LB, ADDRSS, DATAIN, DATAOUT) entre el FPGA y la SRAM, los cuales se especifican a continuaciòn. Q0 : Estado base, OE=CE=WE=UB=LB=1. Q1 : Lectura baja, ADDRSS,OE=CE=LB=0. Q2 : Lectura alta, ADDRSS,OE=CE=UB=0. Q3 : Escritura alta, ADDRSS,OE=1,WE=CE=UB=0. Q4 : Escritua baja, ADDRSS,OE=1,WE=CE=LB=0. Q5 : Lectura, DATAIN Q6 : Escritura, DATAOUT

V.II Código en VHDL de la Máquina de estados. library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; -------------------------------------------------------------------------------- --ENTIDAD entity STMSRAM is Port ( OSC_CLK: in STD_LOGIC; ADDRS : OUT STD_LOGIC_VECTOR (17 DOWNTO 0); DATA : INOUT STD_LOGIC_VECTOR (15 DOWNTO 0); DATAINL: IN STD_LOGIC_VECTOR (7 DOWNTO 0); DATAINH: IN STD_LOGIC_VECTOR (7 DOWNTO 0); DATAOUT: OUT STD_LOGIC_VECTOR (7 DOWNTO 0); CTRLBUS: OUT STD_LOGIC_VECTOR (4 DOWNTO 0); --SRAM CONTROL SIGNALS: OE,CE,WE,UB,LB CTRLOP : OUT STD_LOGIC_VECTOR (3 DOWNTO 0); --OPERATION CONTROL SIGNALS: WL,WH,RL,RH CLR : in STD_LOGIC); end STMSRAM; -------------------------------------------------------------------------------- --ARQUITECTURA architecture A_STMSRAM of STMSRAM is TYPE ESTADO IS (Q0,Q1,Q2,Q3,Q4,Q5,Q6); --ESTADOS SIGNAL EDO_ACTUAL, EDO_FUTURO : ESTADO; SIGNAL CLK : STD_LOGIC; --SEÑAL DE RELOJ DIVIDIDA SIGNAL QU : INTEGER RANGE 0 TO 100000; --CONTADOR DE FLANCOS SIGNAL CONT : STD_LOGIC_VECTOR (17 DOWNTO 0) := "00" & X"0000"; -- AUXILIAR DE ADDRSS begin --------------------------------------------------------------------------------- --PROCESO PARA DIVIDIR LA FRECUENCIA DE RELOJ DE 50 MHZ (OSC_CLK) A 500 HZ (CLK) --------------------------------------------------------------------------------- DIV : PROCESS ( OSC_CLK , CLR ) BEGIN IF (CLR = '1') THEN QU <= 0; ELSIF( OSC_CLK'EVENT AND OSC_CLK='1') THEN QU<=QU+1;

Page 15: Instituto Politécnico Nacional Escuela Superior de Cómputosappi.ipn.mx/cgpi/archivos_anexo/20070446_5259.pdf · Ángulo 90° 67.5° 45° 22.5° 0° 157.5° 135° 112.5° Tabla II.

IF( QU = 100000 ) THEN --100 000 CLK <= NOT CLK; END IF; END IF; END PROCESS DIV; --------------------------------------------------------------------------------- --PROCESO PARA CAMBIAR DE ESTADO ACTUAL AL ESTADO FUTURO --------------------------------------------------------------------------------- TRANSICION : PROCESS ( CLK, CLR ) BEGIN IF ( CLR = '1' ) THEN EDO_ACTUAL <= Q0; ELSIF ( CLK'EVENT AND CLK = '1' ) THEN EDO_ACTUAL <= EDO_FUTURO; END IF; END PROCESS TRANSICION; --------------------------------------------------------------------------------- --AUTÓMATA DE ESTADOS --------------------------------------------------------------------------------- AUTOMATA : PROCESS ( EDO_ACTUAL ) BEGIN CASE EDO_ACTUAL IS WHEN Q0 => CTRLBUS <= '1' & X"F"; IF (CTRLOP = "0000") THEN --CICLO EDO_FUTURO<=Q0; ELSIF (CTRLOP = "1000") THEN --WL EDO_FUTURO<=Q4; ELSIF (CTRLOP = "0100") THEN --WH EDO_FUTURO<=Q3; ELSIF (CTRLOP = "0010") THEN --RL EDO_FUTURO<=Q1; ELSIF (CTRLOP = "0001") THEN --RH EDO_FUTURO<=Q2; END IF; WHEN Q1 => ADDRSS <= CONT; --RL CTRLBUS <= '0' & X"2"; EDO_FUTURO<=Q5; WHEN Q2 => ADDRSS <= CONT; --RH CTRLBUS <= '0' & X"1"; EDO_FUTURO<=Q5; WHEN Q3 => ADDRSS <= CONT; --WH CTRLBUS <= '1' & X"1"; EDO_FUTURO<=Q6; WHEN Q4 => ADDRSS <= CONT; --WL CTRLBUS <= '1' & X"2"; EDO_FUTURO<=Q6; WHEN Q5 => DATAINL <= DATA (7 DOWNTO 0); DATAINH <= DATA (15 DOWNTO 8); CONT <= CONT +1; WHEN Q6 => DATA(15 DOWNTO 8) <= DATAOUT; DATA(7 DOWNTO 0) <= DATAOUT; CONT <= CONT +1; END CASE; END PROCESS AUTOMATA; end A_STMSRAM; NOTA: Debido al limitado espacio para el reporte se procede a realizar un ajuste y eliminar imágenes como código.

Page 16: Instituto Politécnico Nacional Escuela Superior de Cómputosappi.ipn.mx/cgpi/archivos_anexo/20070446_5259.pdf · Ángulo 90° 67.5° 45° 22.5° 0° 157.5° 135° 112.5° Tabla II.

VI. Impacto Este trabajo permite vislumbrar la posibilidad para desarrollar un equipo tecnológico que pueda competir con los existentes en el mercado. Actualmente existen sistemas de autenticación e identificación. Sin embargo son costosos y como es normal la información con que son desarrollados, así como los algoritmos utilizados son resguardados. Por tal razón este trabajo, que pertenece a un programa de investigación, sirve para compararlo con otra estrategia utilizada en un trabajo paralelo, el cual utiliza DSP. Así pues, una vez analizados ambos trabajos será posible proponer una segunda etapa o continuación del sistema para obtener un producto final.