You are on page 1of 7

Anlisis, Estudio e Implementacin de Divisores Paralelos y Secuenciales de 16 bits Usando FPGAs

John Michael Espinosa-Duran, Jaime Velasco-Medina, Mario E. Vera-Lizcano Grupo de Bio-Nanoelectrnica, Escuela EIEE Universidad del Valle, A.A. 25360, Cali, Colombia E-mail: michaele, jvelasco, mario@univalle.edu.co
RESUMEN Este artculo presenta una comparacin entre diferentes arquitecturas bsicas en hardware para divisores paralelos y secuenciales de N bits usando FPGAs. La divisin es una operacin fundamental en aplicaciones de procesamiento digital de seales tal como compresin de video. Entonces, las arquitecturas para implementar en hardware la divisin son diseadas teniendo en cuenta los parmetros de diseo tales como velocidad y rea. En este caso, los divisores son implementados en VHDL usando la herramienta Quartus II versin 4.1sp2 Web Edition Full, y estos son sintetizados sobre una FPGA EP2S15FA84C3 de la familia Sratrix II y el CPLD EPM570T100C3 de la familia MAX II, ambos de Altera 1. INTRODUCCIN La operacin de divisin es ms compleja que las operaciones de adicin, sustraccin o multiplicacin. Inicialmente en algunos procesadores, la divisin era llevada a cabo mediante rutinas de software las cuales bsicamente, realizan la divisin como una secuencia de sustracciones y desplazamientos. Sin embargo, los microprocesadores de alto desempeo, disponen de divisores implementados en hardware para incrementar la velocidad de las operaciones aritmticas. De otro lado, hace algunos aos era muy difcil realizar diseos complejos, para volmenes pequeos o medianos de produccin. Sin embargo, el vertiginoso avance de la tecnologa permite realizar fcilmente diseos complejos y de bajo costo, es decir, es posible disear sistemas embebidos totalmente a medida para una aplicacin dada, y an para volmenes muy pequeos, usando dispositivos FPGAs[10]. En este contexto, los procesadores embebidos son cada da ms utilizados para diferentes aplicaciones. Por lo tanto, los principales bloques funcionales del procesador deben ser optimizados para los diferentes parmetros de diseo. Por ejemplo, en procesamiento digital de seales, tal como compresin de video, el bloque funcional que realiza la divisin debe ser de alto desempeo. Sin embargo, en dispositivos porttiles para telefona celular, los principales criterios de diseo son relacionados con el rea y la potencia disipada [1]. En el caso de diseo digital basado en FPGAs, es importante mencionar que disear el bloque funcional para la divisin utilizando la megafuncin de Altera no siempre es la mejor alternativa de diseo. Teniendo en cuenta las consideraciones anteriores, este artculo presenta una comparacin entre diferentes arquitecturas bsicas en hardware para la divisin considerando los parmetros de diseo tales como rea y velocidad. El artculo esta organizado de la siguiente manera, en la seccin 2 se presenta una descripcin de las arquitecturas bsicas en hardware de los divisores paralelos y secuenciales de N bits. En la seccin 3 se presentan los resultados de simulacin y las tablas de comparacin para los divisores implementados, y en la seccin 4 se presentan las conclusiones y el trabajo futuro. 2. ARQUITECTURAS BSICAS En esta seccin se presenta una breve descripcin de cada una de las arquitecturas en hardware para los divisores paralelos y secuenciales considerados en este trabajo. 2.1 Arquitecturas para Divisores Paralelos 2.1.1 Divisor con restauracin de 2N-N bits La principal consideracin para implementar en hardware los divisores basados en el algoritmo con restauracin es que dados dos enteros N y D tal que N < D (normalizados tal que N=0.N0N1N2N3N4N5 y D=0.D0D1D2), existen dos enteros nicos Q y R (normalizados tal que Q = 0.Q0Q1Q2 y R = 0.R0R1R2R3R4R5) que satisfacen la ecuacin: 2N = BQ +

R. La propiedad que justifica la utilizacin del algoritmo con restauracin se fundamenta en el reflejo de la propiedad N < D, al residuo y el divisor, es decir R < D. En este caso, el circuito ms simple para implementar la divisin binaria debe acomodar metdicamente el divisor con relacin al dividendo y realizar una resta. Si el valor del residuo es cero o positivo, se determina el bit del cociente como 1, y el residuo se ampla con otro bit del dividendo, entonces el divisor se acomoda y se efecta otra resta. Por otra parte, si el valor del residuo es negativo, se determina el bit del cociente como 0, y el dividendo se restaura sumndole de nuevo el divisor, y entonces este divisor se acomoda para otra resta [2]. El algoritmo con restauracin para la divisin se puede entender mediante el ejemplo mostrado en la Figura 1. Dividendo Cociente 11011001 (217), Divisor 10011 (19), Residuo 1011 (11) 1000 (8)

P = A.B + A.C + B.C = A.(B + C ) + B.C S = AD + A.B.C + ABC + A.B.C.D + A.B.C.D = A. D + (B C ) + A.D(B C ) Donde se observa que:

S = A B C , si S = A, si

D=0 D=1

10011 1011) 11011001 1011 0101 0000 1010 0000 10100 1011 10011 1011 1000

Cociente Dividendo Divisor Dividendo reducido Divisor 0 por ser mayor que el dividendo reducido Dividendo reducido Divisor 0 por ser mayor que el dividendo reducido Dividendo reducido Divisor desplazado Dividendo reducido Divisor desplazado Residuo

Figura 2. Divisor paralelo con restauracin para N=3 bits: versin 2 El circuito calcula los cocientes Q = 0.Q0Q1Q2 y los residuos R = 0.R0R1R2R3R4R5 de N=0.N0N1N2N3N4N5 para D=0.D0D1D2 bajo la premisa que N < D. Por ejemplo, para 3 bits, N=0.100011 y D=0.101, entonces Q=0.111 y R=0.000000.

Figura 1. Divisin binaria basada en el algoritmo con restauracin Por lo visto en el ejemplo anterior, el algoritmo consiste en: Realizar una resta entre el dividendo y el divisor, pero desde el bit ms significativo (MSB). Si el MSB del resultado es uno (1) entonces en el cociente se coloca un cero (0) y se adiciona el siguiente bit del dividendo y se desplaza el divisor, pero si el MSB del resultado es cero (0), entonces se coloca un uno (1) en el cociente y se deja el resultado, y se desplaza el divisor. Todo lo anterior se hace N (nmero de bits del divisor) veces. Una arquitectura para el divisor con restauracin se muestra en la Figura 2. En este caso, se utiliza la celda RC como celda bsica, la cual se muestra en la Figura 3 [3], donde las ecuaciones que controlan este restador son: Figura 3. Celda bsica RC para la divisin con restauracin.

2.1.2 Divisor sin restauracin de 2N-N bits La principal consideracin para implementar en hardware divisores basados en el algoritmo sin restauracin es que dados dos enteros N y D tal que D N < D, existen dos enteros nicos Q y R que satisfacen la ecuacin: 2N=(2Q1)B + R. Esta ecuacin puede ser re-escrita como: 2N + 2D = 2BQ + B + R (teniendo en cuenta la normalizacin N=D0.D1D2D3D4D5D6D7, D=0.D1D2D3D4 Q=Q0.Q1Q2Q3, R=.000R4R5R6R7) . Es conocido por el teorema de la divisin de enteros que, dados dos enteros (2N + 2D) y 2D, se puede encontrar un nico cociente Q y un nico residuo (B + R) que satisfagan la ecuacin anterior y reflejando la propiedad al residuo (D R < D). En conclusin, la principal consideracin para este algoritmo es que los dos nmeros (enteros positivos) satisfagan la siguiente condicin: 0 N < D [3]. Es posible mejorar la divisin basada en el algoritmo sin restauracin evitando la necesidad de restaurar el dividendo despus de una resta sin xito, es decir, si el resultado es negativo. La divisin basada en el algoritmo sin restauracin se puede entender mediante el ejemplo mostrado en la Figura 4. Dividendo Cociente 1000 (8), 10 (2), Divisor Residuo 11 (3) 10 (2)

cociente y se suma el resultado con el divisor desplazado; si es cero (0), entonces se coloca un uno (1) en el cociente y se resta el resultado con el divisor desplazado. Despus de realizar N desplazamientos si el bit MSB es uno (1), entonces se suma el resultado y el divisor no desplazado, pero si es cero (0) no se hace ninguna operacin [4]. En la Figura 5 se muestra un arreglo que implementa la divisin basada en el algoritmo anterior. El diagrama mostrado en la Figura 6 es la celda bsica CD usada por el divisor basado en el algoritmo sin restauracin.

Figura 5. Divisor paralelo sin restauracin: N=4bits

0010 00011) 00001000 00011 111100 00011 111110 00011 000010 00011 11111 00011

00010

Cociente Dividendo Resta (1er ciclo) MSB = 1, entonces 0 en cociente y se suma, desplazando el Divisor Divisor desplazado (2do ciclo) MSB = 1, entonces 0 en cociente y se suma, desplazando el Divisor Divisor desplazado (3do ciclo) MSB = 0, entonces 1 en cociente y se resta, desplazando el Divisor Divisor desplazado (4to ciclo) MSB = 1, entonces 0 en coc. y se suma el Divisor. Si MSB = 0, entonces 1 en cociente y no se hace ninguna operacin. Residuo

Figura 6. Celda bsica CD para la divisin sin restauracin La celda bsica CD de la Figura 6, es en esencia un circuito sumador-restador, el cual utiliza la seal C como seal de control para seleccionar el tipo de operacin a realizar. La operacin (suma o resta) a transferir en el paso isimo es determinada por el valor lgico de la seal C que est disponible en el paso i1. 2.1.3 Divisor Parametrizado: Megafuncin lpm_divide Altera provee una librera de Megafunciones conocida como Librera de Mdulos Parametrizados (LPM). Para la

Figura 4. Divisin binaria basada en el algoritmo sin restauracin. Desde el ejemplo anterior se observa que en el primer ciclo se realiza la resta entre el dividendo y el divisor, pero desde el bit MSB. Si el bit MSB del resultado es uno (1), entonces se coloca un cero (0) en el

operacin de divisin, dispone de la Megafuncin lpm_divide, la cual es un bloque parametrizado y es descrito en un lenguaje de alto nivel [5]. El diagrama de la Megafuncin se puede observar en la Figura 7.

Estado0: Estado1: Estado2: Estado3:

Cargar (0, dividendo) en D, cargar divisor en d Desplazar D a la izquierda Dhigh Dhigh-(0, d) Si Dmsb = 0 entonces Dlsb 1 Si Dmsb = 1 entonces Dlsb 0 Estado4: Desplazar D a la izquierda Estado5: Si Dmsb = 0 entonces Dhigh Dhigh-(0, d) Si Dmsb = 1 entonces Dhigh Dhigh+ (0, d) Si Estado3-Estado5 no se han repetido n-1 veces ir a Estado3 Estado6: Si Dmsb = 0 entonces Dlsb 1 Si Dmsb = 1 entonces Dhigh Dhigh + (0,d) y Dlsb 0 2.2.2 Divisor secuencial basado en el algoritmo con restauracin

Figura 7. Divisor parametrizado: megafuncin lpm_divide de 16 bits. 2.2 Arquitecturas para Divisores Secuenciales En la Figura 8, se muestra el diagrama de bloques del datapath para un divisor secuencial [6]. En este caso, es posible implementar en hardware divisores secuenciales basados en el algoritmo con y sin restauracin.

El datapath del divisor secuencial basado en el algoritmo con restauracin utiliza el siguiente algoritmo para disear la unidad de control:

Estado0: Estado1: Estado2: Estado3:

Cargar (0, dividendo) en D; cargar divisor en d Desplazar D a la izquierda Dhigh Dhigh-(0, d) Si Dmsb = 0 entonces Dlsb 1 Si Dmsb = 1 entonces Dlsb 0, Dhigh Dhigh + (0, d) Si Estado1-Estado3 no se han repetido n veces ir a Estado1

3. RESULTADOS DE SIMULACIN En esta seccin, se presentan los resultados de simulacin para los divisores implementados en hardware con N = 16. En este caso, los parmetros de diseo tenidos en cuenta son: velocidad o frecuencia mxima y rea o nmero de elementos lgicos. Adicionalmente, la potencia de disipacin para los diferentes divisores es presentada [7]. Los dispositivos utilizados son la FPGA EP2S15F484C3 de la familia Stratix II y el CPLD EPM570T100C3 de la familia MAX II, ambos de Altera. Figura 8. Diagrama de bloques del datapath del divisor secuencial. 2.2.1 Divisor secuencial basado en el algoritmo sin restauracin El datapath del divisor secuencial basado en el algoritmo sin restauracin utiliza el siguiente algoritmo para disear la unidad de control: 3.1 Divisores Paralelos: Los resultados de compilacin usando QUARTUS II 4.1sp2 Web Edition Full, y considerando la optimizacin en velocidad y rea, son presentados en las Tablas 1 y 2, respectivamente.

QUARTUS II 4.1sp2 Web Edition Full

Optimizacin en Velocidad STATRIX II EP2S15F484C3 MAX II EPM570T100C3 Frecuencia Mxima (MHz) 16.888 24.607 24.643 48.630 Nmero de LEs 313 128 224 386

Divisor paralelo de 16 bits

Frecuencia Mxima (MHz) 20.245 26.814 30.003 92.36

Nmero de ALUTs 368 105 125 379

Megafuncin (lpm_divide) Con Restauracin Sin Restauracin Megafuncin: pipeline de 4 etapas

Tabla 1. Divisores paralelos optimizados en velocidad usando QUARTUS II 4.1 sp2 Web Edition Full.

QUARTUS II 4.1sp2 Web Edition Full

Optimizacin en Area STATRIX II EP2S15F484C3 MAX II EPM570T100C3 Frecuencia Mxima (MHz) 14.481 24.607 21.932 48.790 Nmero de LEs 304 128 153 387

Divisor paralelo de 16 bits

Frecuencia Mxima (MHz) 20.826 27.661 28.481 91.491

Nmero de ALUTs 303 105 124 360

Megafuncin (lpm_divide) Con Restauracin Sin Restauracin Megafuncin: pipeline de 4 etapas

Tabla 2. Divisores paralelos optimizados en rea usando QUARTUS II 4.1 sp2 Web Edition Full. Desde las Tablas 1 y 2, sin tener en cuenta los resultados de la Megafuncin lpm_divide implementada con arquitectura pipeline de cuatro etapas, podemos concluir que el divisor con restauracin y sin restauracin con respecto a la Megafuncin lpm_divide de Altera, son una buena alternativa para realizar la operacin de divisin; siendo de ellos el mas rpido, con una frecuencia mxima de 30MHz, el divisor sin restauracin implementado sobre una Stratix II; y el mas pequeo, con 105 ALUTs, el divisor con restauracin implementado sobre la Stratix II. Todas implementaciones propuestas por nosotros presentan una buena frecuencia de operacin y utilizan menor rea que la Megafuncin de Altera. Los resultados de simulacin para los divisores paralelos usando QUARTUS II 4.1sp2 Web Edition Full, son mostrados en las Figuras 12a, 12b y 12c

Figura 12a. Simulacin del divisor paralelo con restauracin

Figura 12b. Simulacin del divisor paralelo sin restauracin.

Figura 12c. Simulacin de la megafuncin lpm_divide sin pipeline. 3.2 Divisores Secuenciales Los resultados de compilacin para los divisores secuenciales usando QUARTUS II 4.1sp2 Web Edition Full, y considerando optimizacin en velocidad y rea y sintetizados sobre una FPGA FLEX10K EPF10K70RC240-4, son presentados en las Tablas 3 y 4, respectivamente. QUARTUS II 4.1sp2 Web Edition Full Divisor secuencial de 16 bits Divisor secuencial con restauracin Divisor secuencial sin restauracin Optimizacin en Velocidad Frecuencia Mxima (MHz) 0,31 0,29 Nmero de Elementos Lgicos (LE) 121 129

Tabla 1. Divisores secuenciales optimizados en velocidad usando QUARTUS II versin 4.1sp2 Web Edition Full.

QUARTUS II 4.1sp2 Web Edition Full Divisor secuencial de 16 bits Divisor secuencial con restauracin Divisor secuencial sin restauracin

Optimizacin en rea Frecuencia Mxima (MHz) 0,31 0,30 Nmero de Elementos Lgicos (LE) 106 113

Tabla 2. Divisores secuenciales optimizados en rea usando QUARTUS II versin 4.1sp2 Web Edition Full. Desde las Tablas 3 y 4 podemos concluir que las diferentes implementaciones en hardware para los divisores secuenciales presentan resultados similares. Sin embargo, para el caso de optimizacin en rea, estos utilizan menor rea pero con similar frecuencia de operacin que para el caso de optimizacin en velocidad. Los resultados de simulacin para los divisores secuenciales usando QUARTUS II 4.1sp2 Web Edition Full, son mostrados en las Figuras 13a y 13b.

Figura 13a. Simulacin detallada del divisor secuencial con restauracin.

Figura 13b. Simulacin detallada del divisor secuencial sin restauracin. 4. CONCLUSIONES Y TRABAJO FUTURO Este trabajo presenta una comparacin entre arquitecturas bsicas en hardware, las cuales implementan la operacin aritmtica de divisin .os divisores paralelos y secuenciales de 16 bits, fueron diseados usando VHDL y sintetizados dispositivos lgicos programables de Altera, el Stratix II EP2S15F484C3, el MAX II EPM570T100C3 y la FLEX10K EPF10K70RC240-4 Los resultados de simulacin obtenidos permiten presentar las siguientes conclusiones: Se demostr que la Megafuncin lpm_divide de Altera no es la mas adecuada forma de implementar la divisin. Los divisores paralelos sin y con restauracin, utilizan menor rea que la megafuncin lpm_divide (en todas sus versiones), por tanto podemos decir que son una excelente alternativa aplicaciones de DSP y procesamiento en tiempo real. El software Quartus II versin 4.1sp2 Web Edition Full de Altera, presenta mejor capacidad de sntesis, lo cual permite que los diseos alcancen una mayor frecuencia de operacin (velocidad) y usen un menor rea (ALUTs o LEs) Los divisores secuenciales, presentan una ventaja con respecto a los paralelos: poca rea; sin embargo, el resultado de la divisin es obtenido despus de un nmero N de ciclos de reloj. El divisor implementado a partir de la megafuncin lpm_divide usando arquitectura pipeline de 4 etapas, presenta el mejor desempeo desde el punto de vista de velocidad. Sin embargo, presenta la desventaja que consume una gran cantidad de rea. En el rea de este, pueden llegar a caber hasta tres de los divisores propuestos por nosotros. Se presentan algunas arquitecturas de divisores paralelos cuyos resultados muestran que son una opcin viable para sistemas embebidos y aplicaciones de DSP. El trabajo futuro, ser orientado a disear divisores de alta velocidad considerando nuevos algoritmos y arquitecturas tales como divisores basados en el algoritmo SRT [8] y en usar pequeas tablas de bsqueda [9]. 5. AGRADECIMIENTOS Este trabajo ha sido patrocinado por Altera Corporation a travs del Programa Universitario. Los autores dan especial agradecimientos a Mrs. Ralene Marcoccia de Altera Corporation. 6. BIBLIOGRAFA [1] V.C. Hamacher, Z.G. Vranesic y S.G.Zaky, Organizacin de Computadoras, Mc Graw Hill. [2] W. Stallings, Organizacin y Arquitectura de Computadores, Prentice Hall. [3] M. Davio, Digital Systems with Algorithm Implementation, John Wiley & Sons. [4] M. Morris Mano. Arquitectura de Computadoras, Prentice Hall, Prentice Hall. [5] lpm_divide Megafunction User Guide. Altera Corporation. September 2004 [6] D.A. Paterson y S.L. Hennessy, Computer Organization and Design: the Hardware / Software Interface, Morgan Kaufmann Publishers. [7] AN074: Evaluating Power for Altera Devices. Altera Corporation. July 2001. [8] David L. Harris, Stuart F. Oberman. Mark A. Horowitz. SRT Division Architectures and Implementations. 2000. [9] Jong-Chul Jeong, Woo-Chan Park, Woong Jeong, Tack-Don Han, Moon-Key Lee, A Cost-Effective Pipeline Divider with a Small Lookup Table. IEEE Transactions on Computers. Vol. 56, No. 4. April 2004. [10] Ordoez, G., Velasco-Medina, J., Vera-Lizcano, M. E. Comparacin de Divisores Paralelos y Secuenciales de 16-Bits usando FPGAs. XI Iberchip 2005. Marzo 2005.

You might also like