MULTIPLICACI ´ ON SECUENCIAL EN DISPOSITIVOS L ´ OGICOS PROGRAMABLES Ing. Marcos Funes Este Trabajo de Tesis fue presentado al Departamento de Electr´onica de la Facultad de Ingenier´ ıa de la Universidad Nacional de Mar del Plata el 8 de Octubre de 2007, como requisito parcial para la obtenci´on del t´ ıtulo de Doctor en Ingenier´ ıa. Menci´on Electr´ onica Director: Dr. Daniel Carrica Co-Director: Ing. Mario Benedetti
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
MULTIPLICACION SECUENCIAL EN
DISPOSITIVOS LOGICOS
PROGRAMABLES
Ing. Marcos Funes
Este Trabajo de Tesis fue presentado al Departamento de Electronica
de la Facultad de Ingenierıa de la Universidad Nacional de Mar del Plata
el 8 de Octubre de 2007, como requisito parcial para la obtencion del tıtulo de
A mis colegas en el Laboratorio de Instrumentacion y Control
xvii
Resumen
El objetivo principal de esta tesis fue desarrollar arquitecturas de multiplicado-
res binarios de menor consumo de recursos logicos que las existentes, manteniendo
las prestaciones de velocidad de calculo. El proposito particular fue implementar
las mismas en los dispositivos digitales denominados FPGA (Field Programmable
Gate Array).
Para ello se investigaron las estructuras de multiplicacion del tipo secuencial
que se caracterizan por poseer un consumo de recursos reducido y una velocidad
de procesamiento baja.
Se modelizaron los multiplicadores a partir del desarrollo de ecuaciones que
permiten estimar el consumo de recursos logicos y el desempeno temporal de los
mismos. Se desarrollaron nuevas arquitecturas que se compararon con las exis-
tentes. Se introdujo un nuevo indicador denominado ındice de performance, que
permite cuantificar el costo de un multiplicador para una dada FPGA. Los resul-
tados teoricos se corroboraron con un exhaustivo trabajo experimental mediante
el cual se han validado las ecuaciones obtenidas.
A partir de la validacion de los modelos de los multiplicadores, se determina-
ron los esquemas de mayor desempeno que cumplen con los objetivos deseados.
Ası se arribo a multiplicadores en punto fijo con los que se obtuvo un consu-
mo de recursos hasta 8 veces menor y una velocidad comparable a la de una
arquitectura existente. Los avances se extendieron a la multiplicacion en punto
xviii
flotante, obteniendose esquemas de bajo consumo de recursos y buena velocidad
de procesamiento.
xix
Nomenclatura
1C Complemento a 1
2C Complemento a 2
ALP Arreglo Logico Programable
ASIC Application Specific Integrated Circuit
CLB Configurable Logic Block
CPA Carry Propagate Adder
CPLD Complex Programmable Logic Device
CSA Carry Save Adder
DSP Digital Signal Processor
FA Full Adder
FF Flip Flop
FG Function Generator
FPGA Field Programmable Gate Array
GAL Generic Array Logic
HA Half Adder
LSB Least Significant Bit
LUT Look-up Table
xx
MAC Multiplicador/Acumulador
MP Multiplicador Paralelo
PAL Programmable Array Logic
PE Procesador Elemental
PLD Programmable Logic Device
PROM Programmable Read Only Memory
PS Processing Speed
RCA Ripple Carry Adder
SM Multiplicador Secuencial
SMB4 Multiplicador Secuencial de base 4
SMF Multiplicador Secuencial Fraccionado
SMSC Multiplicador Secuencial de Sumas Consecutivas
SMSR Multiplicador Secuencial Sin entradas Registradas
SR Shift Register
VHDL Very high speed integrated circuit Hardware Description Lan-
guage
fc Maxima frecuencia de reloj
pi Bit i del operando P
P Operando Producto
TBY P CIN to COUT bypass delay
Tc Tiempo de calculo
TCK Perıodo de reloj
TCKO Clock-to-output delay
xxi
TILO F/G inputs to X/Y outputs delay
TOCPY Operand inputs (F1, F2, G1, G4) to COUT delay
tpd Propagation delay
Trd Route delay
TSUM CIN through function generator to X/Y output delay
X, Y Operando Multiplicando y multiplicador respectivamente
xi, yi Bit i del operando Multiplicando y Multiplicador respectivamen-
te
Vmin Velocidad mınima
Vmax Velocidad maxima
Vr(k) Velocidad de referencia para el paso k-esimo
∆t(k) Perıodo de tiempo entre el paso actual y el proximo
xxii
Capıtulo 1
Introduccion
En el Procesamiento Digital de Senales (PDS) se recurre, como operacion
elemental, al producto de dos operandos y la posterior adicion de un tercero,
estructura conocida como MAC (Multiplicador/Acumulador).
Los dispositivos de calculo mas empleados en el PDS son los DSPs (Digital
Signal Processors). Si bien los DSPs son baratos y flexibles, poseen solo una uni-
dad MAC por lo que un proceso aritmetico demanda la ejecucion secuencial de las
operaciones. Como consecuencia, una operacion algorıtmica consume un deter-
minado tiempo de ejecucion y, si fuera necesario utilizar un tiempo de ejecucion
menor, convendrıa adoptar hardware a medida, alternativa proporcionada por los
ASICs (Application-Specific Integrated Circuit) y las FPGAs (Field Programma-
ble Gate Array). Tanto los ASICs como las FPGAs posibilitan la utilizacion de
varias MACs en paralelo, logrando de este modo una notable reduccion del tiempo
de procesamiento. Los ASICs admiten implementar sistemas complejos y resguar-
dan la propiedad intelectual de los procesos debido a que no son copiables. Sin
embargo implican un gran costo de fabricacion por lo que no aceptan errores
en su desarrollo y, consecuentemente, su utilizacion representa un gran riesgo de
produccion.
1
Capıtulo 1. Introduccion 2
En cuanto a las FPGAs, estas combinan la flexibilidad de un DSP con la
velocidad y la densidad de componentes de un ASIC. Las FPGAs poseen una
gran cantidad de recursos logicos, un bajo costo de desarrollo ya que son faciles de
depurar y, fundamentalmente, permiten al disenador corregir errores y actualizar
el diseno. Estas ventajas convierten a las FPGAs en dispositivos apropiados como
procesadores de senales o aceleradores de calculo.
1.1. Estructuras de Multiplicadores
Los multiplicadores se pueden clasificar segun el modo en que ingresan los
operandos [1] [2]. Si ambos operandos ingresan en forma serie se denominan
serie/serie. La mayor ventaja de estos multiplicadores reside en el bajo nume-
ro de entradas/salidas utilizadas y en la bajo consumo de recursos logicos, sin
embargo estos multiplicadores se encuentran limitados a aplicaciones de baja
velocidad [3] [4] [5]. Si solo uno de los operandos ingresa en forma serie, el mul-
tiplicador se denomina serie/paralelo [6]. Este tipo de multiplicadores presentan
un consumo de recursos logicos moderado y son ideales para aplicaciones de velo-
cidad media donde los multiplicadores serie/serie son demasiado lentos. Si ambos
operandos son ingresados en paralelo el tipo de multiplicador es denominado pa-
ralelo/paralelo. Estos ultimos son los que se trataran en esta tesis debido a su
capacidad de procesar los datos a alta velocidad.
Los multiplicadores tambien se pueden clasificar en funcion del algoritmo de
calculo en: suma y desplazamiento, por arbol o contadores. Los multiplicadores
por suma y desplazamiento utilizan el metodo conocido comunmente como lapiz
y papel para calcular el producto. En algunos casos esta tarea se realiza constru-
yendo una celda de procesamiento basica que se repite en un arreglo determinado.
Capıtulo 1. Introduccion 3
La diferencia de procesamiento de estos multiplicadores radica en el tipo de co-
municacion entre estas celdas, que puede ser local (solo existe comunicacion entre
celdas vecinas) o global (existe comunicacion mas alla de la celda vecina). Con el
objetivo de acelerar los productos parciales1 C. Wallace [7] propuso originalmente
una estructura de sumadores, conocida como Arbol de Wallace, donde el retardo
de la suma es proporcional el logaritmo del numero de sumandos. Otro modo de
acelerar los productos parciales consiste en la utilizacion de contadores parale-
los [8] para obtener la suma de los bits que forman las columnas de la matriz de
productos parciales.
Los multiplicadores que realizan el algoritmo de suma y desplazamiento en
forma simultanea son denominados habitualmente multiplicadores paralelos. Es-
tos multiplicadores realizan el producto rapidamente, pero son difıciles de realizar
cuando un dispositivo posee una cantidad de recursos limitada. Este problema se
acentua, cuando el formato de los operandos esta expresado en punto flotante.
Los multiplicadores en punto flotante utilizan tıpicamente multiplicadores para-
lelos para el producto de las mantisas [9] [10]. A medida que se incrementa la
complejidad de la operacion, el consumo de recursos logicos utilizados aumenta
notablemente y consecuentemente los costos de implementacion.
Un esquema de multiplicacion de operandos en paralelo que utiliza una menor
cantidad de recursos logicos es el denominado Shift and Add [11] [12] o secuencial
(SM). Esta reduccion del consumo de recursos se realiza a costa de ejecutar tantas
iteraciones como longitud de palabra posean los operandos [13] [14]. Esto repre-
senta una seria desventaja debido al excesivo tiempo de calculo y por esta razon
han sido excluidos de las aplicaciones tıpicas. Por otro lado, si se puede mejorar
el desempeno en velocidad sin incurrir en la cantidad de recursos que requiere un
1En la multiplicacion de dos numeros enteros de n bits se denomina producto parcial alproducto un bit del multiplicador por el multiplicando.
Capıtulo 1. Introduccion 4
multiplicador paralelo, estos multiplicadores pueden resultar mas ventajosos.
1.2. Objetivos de la tesis
El objetivo principal de esta tesis consiste en el desarrollo de multiplicado-
res con un reducido consumo de recursos logicos, que mantengan un desempeno
aceptable de la velocidad de procesamiento.
En funcion de este objetivo, se caracterizaran las arquitecturas de los multi-
plicadores existentes. Se propondran variantes que incluyan la multiplicacion de
operandos en punto fijo y punto flotante.
1.3. Organizacion de la tesis
Esta tesis esta dividida en cinco capıtulos. El Capıtulo 1 presenta el estado
del arte e introduce aspectos de la tematica de esta tesis. El Capıtulo 2 presenta
conceptos basicos sobre la multiplicacion. Se presentan los esquemas de Multi-
plicadores Paralelos, los cuales se caracterizan y se ensayan con el objetivo de
cuantificar la problematica de consumo de recursos.
El Capıtulo 3 esta dedicado al desarrollo de la propuesta que consiste en la
aplicacion de Multiplicadores Secuenciales al producto binario en punto fijo y en
punto flotante. En este capıtulo se desarrollan diferentes esquemas de Multipli-
cacion Secuencial para los cuales se estima su desempeno en cuanto a la cantidad
de recursos logicos y velocidad de procesamiento.
El Capıtulo 4 esta dedicado a la verificacion experimental. Para ello se ex-
plicita la implementacion practica de los diferentes esquemas desarrollados sobre
algunas familias de FPGAs. El objetivo de este capıtulo es la contrastacion de las
estimaciones obtenidas en el capıtulo anterior con los resultados experimentales.
Capıtulo 1. Introduccion 5
En el mismo se establecen criterios de comparacion, en terminos de performance,
entre los multiplicadores propuestos y otros existentes.
Adicionalmente, se presentan cuatro apendices, a saber:
El Apendice A realiza una breve descripcion de los Dispositivos Logicos Pro-
gramables y sus caracterısticas.
El Apendice B introduce los formatos numericos utilizados en PDS.
El Apendice C describe la aplicacion especıfica de los multiplicadores secuen-
ciales en el Procesamiento Digital utilizado en el area de Control de Movimiento.
En el mismo se aprovechan las prestaciones que brindan los multiplicadores en la
implementacion hardware de un algoritmo de control de posicion.
Finalmente, el Apendice D presenta los trabajos publicados como resultado
del trabajo de tesis.
Capıtulo 2
Arquitecturas de Multiplicadores
2.1. Introduccion
La utilizacion de FPGA en el Procesamiento Digital de Senales (PDS) es su-
mamente ventajosa. Una de las ventajas consiste en la posibilidad de lograr un
hardware a medida que incluya desde la seleccion de la longitud de palabra de
los operandos hasta la ejecucion de los calculos. Un hardware a medida puede
realizar calculos mas rapidamente que uno programable porque pueden disponer-
se varias unidades de calculo en una sola FPGA. Estos multiplicadores pueden
operar independientes de modo de explotar toda la potencial concurrencia de un
algoritmo. Adicionalmente, en la FPGA se pueden ejecutar otros procesos, como
atencion de perifericos, comunicacion, etc. sin interferir con el procesamiento.
En PDS [15] [16] [17] los procesos recurren, como operacion elemental, al
producto de dos operandos y la posterior adicion de un tercero, denominada
MAC (Multiplicador/Acumulador). En una MAC, la multiplicacion demanda una
mayor cantidad de recursos logicos que la adicion.
En este capıtulo se realiza un repaso de conceptos de la multiplicacion de ope-
randos en punto fijo y punto flotante. Luego, para comprender las arquitecturas
6
Capıtulo 2. Arquitecturas de Multiplicadores 7
de los multiplicadores se introducen aspectos relativos a la adicion. Finalmente,
se presentan las estructuras de multiplicadores paralelos y su implementacion en
FPGA.
2.2. Algoritmo de la Multiplicacion
2.2.1. Operandos en punto fijo
Multiplicacion de enteros sin signo
El producto de dos operandos binarios de n bits, un multiplicando, X =n−1∑j=0
xj2j y un multiplicador, Y =
n−1∑j=0
yj2j esta representado por la Ec. (2.1).
P = Y ·X (2.1)
=n−1∑j=0
yj2j ·X (2.2)
=n−1∑j=0
2j · yjX (2.3)
Este producto, para dos operadores binarios de 4 bits sin signo X e Y , se
puede observar en la Tabla 2.1.
Tabla 2.1: Producto de dos operandos de 4 bitsx3 x2 x1 x0
y3 y2 y1 y0
s03 s02 s01 s00 ≡ y0X20
s13 s12 s11 s10 ≡ y1X21
+ s23 s22 s21 s20 ≡ y2X22
s33 s32 s31 s30 ≡ y3X23
p7 p6 p5 p4 p3 p2 p1 p0 ≡ P
producto parcial S = sj,n−1, ..., sj,2, sj,1, sj,0 con j = 0, 1, 2 · n− 1Producto P = p2n−1, ..., p2, p1, p0
Capıtulo 2. Arquitecturas de Multiplicadores 8
El producto P se obtiene como la suma de todos los productos parciales cada
uno desplazado 2j veces a la izquierda con j = 0, ..., n − 1. Este producto es
conocido tambien como metodo del lapiz y papel.
Multiplicacion de enteros con signo
En sistemas de magnitud con signo, la magnitud y el signo son representados
en forma separada. Existen multiples formatos para expresar los numeros con
signo, como por ejemplo Magnitud y Signo, Complemento a 1 (1C) y Comple-
mento a 2 (2C) (ver Seccion B.2.1).
La multiplicacion de dos operandos expresados en Magnitud y Signo se efectua
como un producto de enteros sin signo, y se ejecuta con una funcion XOR para
procesar el signo.
El producto de dos operandos expresados en 1C o 2C se puede efectuar reali-
zando el complemento del operando negativo, multiplicando luego como enteros
sin signo y, finalmente, complementando el resultado si solo uno de ellos hubiese
estado complementado. Este tipo de multiplicacion puede resultar sencillo para
el caso de 1C, pero representa bastante complejidad para el caso de 2C. En este
caso, se puede aplicar el metodo de lapiz y papel siempre que los operandos sean
positivos o que el multiplicando sea negativo y el multiplicador positivo. En am-
bos casos la suma acumulativa de los productos parciales arrojara un resultado
correcto mientras que la acumulacion contemple la extension de signo. Esto es,
si el bit mas significativo es 0, se desplaza el operando introduciendo un 0. En el
caso en que este bit sea 1, el desplazamiento se realiza introduciendo un 1.
Cuando el multiplicador sea negativo se debe realizar una correccion al pro-
cedimiento mencionado que consiste en restar el multiplicando en el ultimo paso,
en vez de adicionarlo.
Capıtulo 2. Arquitecturas de Multiplicadores 9
2.2.2. Operandos en punto flotante
Los sistemas numericos de punto flotante fueron desarrollados para operar
con precision sobre un gran rango dinamico. Sin embargo, este formato numerico
requiere algoritmos aritmeticos mas complejos.
La multiplicacion de dos operandos en punto flotante incluye varias operacio-
nes: obtencion del signo, adicion de los exponentes, multiplicacion de las mantisas
y normalizacion del resultado (Ecs. (2.4 - 2.7)).
C = A×B = SC · 2eC−bias · 1.fC (2.4)
SC = SA ⊕ SB (2.5)
eC = eA + eB − bias (2.6)
1.fC = 1.fA × 1.fB (2.7)
El algoritmo para la multiplicacion en punto flotante se representa de manera
sintetica en la Fig. 2.1.
OR-exclusivaAdición deexponentes
Producto demantisas
RedondeoAjuste de
bias
Bits de signo Exponentes Mantisas
Bit de signo Exponente MantisaOfl.
Normalización
Eta
pa
1E
tapa
2E
tapa
3
Ajuste deexponente
Figura 2.1: Diagrama en bloques de un multiplicador en punto flotante
Capıtulo 2. Arquitecturas de Multiplicadores 10
Las Ecs. (2.4 - 2.7) se realizan en varias etapas, que se describen a continua-
cion:
Etapa 1:
Se adicionan los exponentes eA y eB; si el resultado es menor que la repre-
sentacion, se produce un desbordamiento de capacidad inferior (underflow).
En este caso el resultado de toda la operacion se fija al valor ”cero”. En el
caso de un overflow, el resultado se fija en el maximo numero que el formato
puede representar.
Si el operando C es distinto de cero, se concatena el 1 implıcito a la izquier-
da del fraccional (fA y fB) representado de cada operando y se realiza el
producto entero de los numeros binarios resultantes (Ec. (2.7)).
Si el operando C es distinto de cero, se realiza la operacion XOR de los
signos de los operandos A y B.
Etapa 2:
Se ajusta el bias del exponente. Este ajuste se debe a que cada uno de los
exponentes de los operandos posee un bias (ver Seccion B.2.2) y la adicion
de dos operandos produce un desplazamiento superior al representado por
el formato.
Solo se almacenan los n bits mas significativos del producto entero de la
etapa anterior de longitud 2n bits. Se realiza una operacion de redondeo
sobre la mantisa resultante.
Etapa 3:
Se normaliza el resultado de la mantisa dependiendo del bit mas significativo
del producto de la Ec. (2.7).
Capıtulo 2. Arquitecturas de Multiplicadores 11
Se ajusta el exponente dependiendo de la normalizacion del producto de las
mantisas.
Se conforma el signo, el exponente y la mantisa en el formato representado.
Redondeo
La norma IEEE 754 [18], que trata el formato en punto flotante, especifican
cuatro tipos de redondeo: redondeo al mas cercano, redondeo a +∞, redondeo a
−∞ y redondeo a cero.
Redondeo al mas cercano (al par en caso de empate): El estandar IEEE
recomienda este redondeo por defecto. En este caso se obtiene el valor re-
presentable mas cercano al resultado infinitesimalmente preciso.
Redondeo a +∞: El estandar indica que el valor obtenido debe ser el mas
cercano y no menor que el resultado infinitesimalmente preciso. Basicamente
esto significa que, para un resultado positivo, si los bits a la derecha del LSB
son todos 0, entonces el resultado es correcto. Si por el contrario, cualquiera
de estos bits es 1, entonces se debe adicionar un 1 al LSB.
Redondeo a −∞: Este estandar indica que el valor obtenido debe ser el mas
cercano y no mayor que el resultado infinitesimalmente preciso. Basicamente
esto significa que, para un resultado negativo, si los bits a la derecha del LSB
son todos 0, entonces el resultado es correcto. Si por el contrario, cualquiera
de estos bits es 1, entonces se debe adicionar un 1 al LSB.
Redondeo a cero: En el redondeo a cero el resultado es mas cercano y
no mayor en magnitud que el resultado infinitesimalmente preciso. Este
redondeo se aplica truncando el resultado a la derecha del LSB.
Capıtulo 2. Arquitecturas de Multiplicadores 12
Normalizacion
Si el producto de mantisas de la Ec. (2.7) resulta en el rango 2 ≤ p ≤ 4,
se debe realizar un desplazamiento de normalizacion a la derecha para restaurar
el producto al rango 1 ≤ pr ≤ 2, con el apropiado ajuste del exponente en una
unidad.
2.3. Adicion
2.3.1. Semisumador
El Sumador Parcial (SP) tambien llamado Semisumador de un bit (Half Adder
- HA) adiciona dos operandos de un bit y genera como resultado un operando
de dos bits. El bit menos significativo es el bit suma, que surge de realizar la
operacion de OR-EXC s = a ⊕ b. El bit mas significativo resulta de realizar la
operacion AND, cout = ab. Este bit es llamado bit de acarreo de salida debido al
desborde de la adicion.
La expresion aritmetica de un sumador parcial se puede observar en las Ecs.
(2.8,2.9 y 2.9), a partir de las que se desprende el calculo del bit s y el bit de
acarreo.
2 · cout + s = a + b (2.8)
s = (a + b) mod 2
cout = (a + b)div2 =1
2(a + b− s) (2.9)
En la Fig. 2.2 se puede observar el sımbolo logico y dos posibles implementa-
ciones del HA.
Capıtulo 2. Arquitecturas de Multiplicadores 13
HA
s
cout
a b
(a)
a b
s
cout
(b)
a b
s
cout
(c)
Figura 2.2: Semisumador a) Sımbolo logico, b) y c) arquitectura.
2.3.2. Sumador Total
A diferencia del HA, el sumador total (Full Adder - FA) posee una tercer
entrada denominada bit de acarreo de entrada (cin). Esta entrada es utilizada
para recibir una senal de acarreo de un bit menos significativo.
Las Ecs. (2.10 y 2.11) representan las ecuaciones logicas que gobiernan el
funcionamiento del sumador.
s = a⊕ b⊕ cin (2.10)
cout = ab + acin + bcin (2.11)
Las Ecs. (2.12 - 2.15) representan las ecuaciones aritmeticas correspondientes.
2 · cout + s = a + b + cin (2.12)
s = (a + b + cin) mod 2 (2.13)
cout = (a + b + cin)div2 (2.14)
=1
2(a + b + cin − s) (2.15)
Otra forma de describir el funcionamiento del FA consiste en declarar dos
senales, una senal de generacion (g) y una senal de propagacion (p). La senal g
Capıtulo 2. Arquitecturas de Multiplicadores 14
indica cuando una senal de acarreo 0 o 1 es generada dentro del sumador. La
senal p indica cuando una senal de acarreo de entrada es propagada por el FA sin
cambio hacia el acarreo de salida. Adicionalmente se definen para este sistema
dos senales intermedias de acarreo, c0 y c1, que pueden ser calculadas para el caso
de cin = 0 y cin = 1. De esta manera, la salida de acarreo puede ser expresada
mediante (g, p) o (c0, c1) y la senal de acarreo de entrada puede ser realizada
utilizando compuertas AND-OR o mediante una estructura de multiplexacion.
g = ab (2.16)
p = a⊕ b (2.17)
c0 = ab (2.18)
c1 = a + b (2.19)
s = a⊕ b⊕ cin = p⊕ cin
cout = ab + acin + bcin (2.20)
= ab + (a + b)cin = ab + (a⊕ b)cin
= g + cin
= pg + pcin = pa + pcin
= cinc0 + cinc
1 (2.21)
Se debe tener en cuenta que para el calculo de cout utilizando una estructura
AND-OR, la senal de propagacion puede ser formulada como p = a + b pero para
el calculo del bit de la adicion debe ser implementada como p = a⊕ b.
Un FA puede ser implementado a partir de dos sumadores parciales, compuer-
tas de dos entradas, multiplexores, o arreglos mas complejos. En la Fig. 2.3 se
pueden observar a), el sımbolo del sumador, y dos alternativas de implementacion:
mediante dos semisumadores y mediante compuertas logicas.
Capıtulo 2. Arquitecturas de Multiplicadores 15
Figura 2.3: Sumador total,a) sımbolo logico b) y c) arquitecturas.
2.3.3. Suma por Propagacion de Acarreo
Una suma de propagacion de acarreo (Carry Propagate Adder - CPA) adiciona
dos operandos de n bits A = (an−1, an−2..., a0), B = (bn−1, bn−2..., b0) y una senal
de acarreo de entrada opcional. El resultado esta representado por un operando
de (n + 1) bits que consiste en un operando S = (sn−1, sn−2..., s0) de n bits y una
senal de acarreo de salida.
Las Ecs. (2.22 y 2.23) representan las ecuaciones logicas de cada sumador.
Se puede notar que el acarreo de salida de un bit menos significativo se propaga
hacia un acarreo de entrada de un bit mas significativo.
sj = aj ⊕ bj ⊕ cj (2.22)
cj+1 = ajbj + (a⊕ bj)cj (2.23)
Las Ecs. (2.24 - 2.27) representan las ecuaciones aritmeticas correspondientes.
2n · cout + S = A + B + cin (2.24)
Capıtulo 2. Arquitecturas de Multiplicadores 16
2n · cout +n−1∑j=0
2jsj =n−1∑j=0
2jaj +n−1∑j=0
2jbj + cin (2.25)
=n−1∑j=0
2j(aj + bj) + cin (2.26)
2cj+1 + sj = (aj + bj + cj) (2.27)
donde j = 0, 1, .., n− 1 y c0 = cin y cn = cout.
En la Fig. 2.4 se muestra el sımbolo de este sumador, que puede ser im-
plementado mediante varios FAs, y es comunmente denominado Ripple Carry
Adder (RCA). Se observa que se genera una propagacion de la senal de acarreo
CPA
S
cout
A B
(a)
cin FA
sn-1
cout
an-1 bn-1
(b)
FA
s1
a1 b1
FA
s0
a0 b0
cin...
cn-1c1c2
Figura 2.4: Sımbolo logico de un CPA e implementacion de un RCA.
que depende de la longitud de palabra de los operandos. La propagacion de esta
senal influye directamente en la velocidad de procesamiento del sumador debido
al retardo generado.
2.3.4. Suma Carry-Save
Una suma Carry-Save evita la propagacion del acarreo ubicando a los acarreos
intermedios como salidas en vez de colocarlos en la cadena de propagacion. La
suma de dos operandos de n bits presenta dos dos palabras resultantes, S (suma),
y C (acarreo). Este sumador acepta tres operandos binarios de entrada uno de
los cuales podrıa operar como acarreo de entrada.
Capıtulo 2. Arquitecturas de Multiplicadores 17
Las Ecs. (2.28, 2.29 y 2.30) representan las ecuaciones aritmeticas correspon-
dientes.
2 · C + S = A0 + A1 + A2 (2.28)
n∑i=0
2ici +n−1∑i=0
2isi =2∑
j=0
n−1∑i=0
2iaj,i (2.29)
2ci+1 + si =2∑
j=0
aj,i (2.30)
donde i = 0, 1, .., n− 1.
El CSA se construye a partir de un arreglo lineal de FAs y posee un retardo
constante independiente de la longitud de palabra de los operandos, Fig. 2.5. Este
CSA
s
a0
(a)
c
a2 a1
FA
sn-1cn
a2,n-1a1,n-1
(b)
...
a0,n-1
FA
s0c1
a2,0 a1,0 a0,0
FA
s1c2
a2,1 a1,1 a0,1
Figura 2.5: CSA a) Sımbolo logico y b) implementacion con FAs.
tipo de suma es utilizada en la generacion de arreglos de sumadores e implica la
necesidad de una suma final que aplique los acarreos correspondientes a la suma
resultante.
2.3.5. Suma Multi-operandos
Una suma multi-operando es utilizada en la adicion de m operandos de n
bits, A0, ...., Am−1(m > 2) arrojando un resultado S con una representacion de
(n + [log m]) bits.
S =m−1∑j=0
Aj (2.31)
Capıtulo 2. Arquitecturas de Multiplicadores 18
Un sumador multi-operando puede ser realizado mediante la concatenacion
serie de m − 1 sumadores de Propagacion de Acarreo (o RCAs) o de m − 2
sumadores Carry-Save seguidos de un sumador de Propagacion de Acarreo.
Ambos tipos de sumadores concatenados son similares en cuanto a su es-
tructura logica, y requerimientos de hardware, ası como la longitud de camino
crıtico. La mayor diferencia entre ambas opciones es el arribo de los bits al ultimo
sumador de propagacion.
En el sumador implementado solo con RCAs los bits mas significativos arriban
mas tarde que los menos significativos, debido a la propagacion de la senal de
acarreo. Por otro lado, en el sumador implementado con CSAs, el arribo de los
bits es balanceado, dependiendo la propagacion del acarreo fundamentalmente
del CPA de la ultima etapa, que tıpicamente es un RCA, Fig. 2.6.
CPA
A0 A1
CPA
A2
CPA
sn-1...0
A3
FA
sn
CSA
A2
CPA
S
A3
CSA
A0A1 A2
(a) (b)
Figura 2.6: Sumadores concatenados a) con CPA, b) con CSA.
Otra suma multi-operando es la propuesta por Wallace [7] tambien denomi-
nada arbol de sumadores (o Wallace tree). Esta compuesto de sumadores CSA en
un arreglo de arbol con un CPA final. Esta estructura esta disenada para obtener
un retardo de propagacion mınimo. La estructura de arbol posee tantas secciones
como sean necesarias para reducir el numero de sumandos a solo dos. En la ultima
Capıtulo 2. Arquitecturas de Multiplicadores 19
etapa, se utiliza un CPA rapido que ejecuta la adicion del sumando y el acarreo
final. En la Fig. 2.7 se muestra un arbol de sumadores para m = 9.
CSA
CPA
S
CSA
A0A
1A
2
CSA
A3A
4A
5
CSA
A6A
7A
8
CSA
CSA
CSA
Figura 2.7: Arbol de sumadores para m=9.
2.4. Multiplicadores Paralelos
El multiplicador paralelo (MP) ejecuta el producto de dos operandos si-
multaneamente o en ”paralelo”. Existen numerosos esquemas de MPs y las va-
riantes radican en la forma en que se aborda la ejecucion de los subproductos a
fin de obtener una mayor velocidad de procesamiento.
2.4.1. Multiplicador por Tabla de Look-up
El multiplicador por Tabla de Look-up no realiza calculo, sino que opera como
una memoria. Se concatenan los operandos X e Y constituyendo una direccion
de memoria, Fig. 2.8, cuyo contenido es el valor del producto X · Y previamente
almacenado. Si bien este tipo de multiplicador depende de la velocidad de acceso
a la memoria, es el mas veloz que existe. Su desventaja radica en la cantidad de
Capıtulo 2. Arquitecturas de Multiplicadores 20
recursos logicos que demanda. A modo de ejemplo, un multiplicador de 16 bits
requiere una memoria de 4,294,967,296x32 bits.
XY
DIR
P
VALOR
Figura 2.8: Multiplicador por Tabla de Look-up.
2.4.2. Multiplicador Ripple Carry
El multiplicador paralelo mas difundido se basa en un esquema de propagacion
del acarreo tal como con la suma multi-operandos mediante CPA. Este multipli-
cador es conocido como Multiplicador Ripple Carry. En la Fig. 2.9 se muestra un
ejemplo de este producto para dos operandos de 4 bits.
FA 0FAFAFA
FA 0FAFAFA
x3 x3 x1 x0
x3 x3 x1 x0
x3 x3 x1 x0
FA 0FAFAFA
x3 x3 x1 x0
0
y3
y2
y1
y0
p0p1p2p3p4p5p6p7
Figura 2.9: Multiplicador Ripple Carry de 4 bits.
Capıtulo 2. Arquitecturas de Multiplicadores 21
Una forma de analizar un esquema de MP es a traves de la sıntesis de una uni-
dad denominada PE (Procesador Elemental) que contiene una compuerta AND y
un FA, Fig. 2.10. Cada PE toma un bit de cada operando vıa las entradas ai y bi,
calcula su producto a traves de la compuerta AND, suma el resultado proveniente
de un PE previo a traves de si y el acarreo generado de un PE previo a traves
de ci. El resultado de la suma a la salida es so con el correspondiente acarreo co.
Los operandos son pasados a la salida a traves de ao y bo.
bi
ai
si
ci
bo
so
co
ao
FA
Figura 2.10: PE de un multiplicador Ripple Carry.
El esquema del Multiplicador Ripple Carry representado a partir de los PEs
se puede observar en la Fig. 2.11.
FA
FA FA
FA
FA FA
FAFA
FA
FA FA
FA
FA FA
FAFA
p7 p6 p5 p4 p3 p1 p0p2
x3 x2 x1 x0
y3
y2
y1
y0
Figura 2.11: Esquema de un multiplicador Ripple Carry mediante PEs.
Capıtulo 2. Arquitecturas de Multiplicadores 22
2.4.3. Multiplicador Carry Save
Otro tipo de MP es el generado a partir de un esquema de propagacion del
acarreo como la suma Carry Save, Fig. 2.12. Este esquema busca romper la pro-
pagacion de la cadena de acarreo para disminuir el retardo de cada suma, lo cual
permite acelerar la multiplicacion.
HAHAHA
FAFAFA
x3 x3 x1 x0
x3 x3 x1 x0
x3 x3 x1 x0
FAFAFA
x3 x3 x1 x0
y3
y2
y1
y0
p0p1p2p3p4p5p6p7
FAFAFA
0
Figura 2.12: Multiplicador Carry Save de 4 bits.
Las Figs. 2.13 y 2.14 muestran el PE del multiplicador con propagacion tipo
Carry Save y el multiplicador mediante esta representacion.
bi
ai
si
ci
bo
so
co
ao
FA
Figura 2.13: PE de un multiplicador Carry Save.
Capıtulo 2. Arquitecturas de Multiplicadores 23
x3 x2 x1 x0
y3
y2
y1
y0
FAFA
FAFAFA
FAFAFA
FAFAFA
FA
FA
FAFAFA
p7 p6 p5 p4 p3 p1 p0p2
FAFA
FA
FA
Figura 2.14: Esquema de un multiplicador Carry Save mediante PEs.
2.4.4. Multiplicador Guild
El MP propuesto por H. Guild [19] se muestra en la Fig. 2.16, cuyo PE es el
de la Fig. 2.15.
FA
bi
ai
si
ci
bo
so
co
ao
Figura 2.15: PE de un multiplicador paralelo Guild.
Este multiplicador esta estructurado en cadenas de sumadores para cada bit
del producto, las cuales se encuentran en direccion diagonal desde la esquina
izquierda superior a la derecha inferior. Cada sumador de la cadena recibe un
acarreo de entrada correspondiente a una suma de la cadena previa y envıa su
Capıtulo 2. Arquitecturas de Multiplicadores 24
salida de acarreo a un sumador de una cadena posterior. El multiplicador Guild
se caracteriza por una alta tasa de procesamiento, debido a la utilizacion de
paralelismo y la posibilidad de implementacion pipelines1.
FAFA
FA
FA
FA
FA
FA
FAFA FA
FA FA
FA FA
FA
FA
y3 x3 y2 x2 y1 x1 y0 x0
p7 p6 p5 p4 p3 p1 p0p2
Figura 2.16: Multiplicador paralelo Guild.
1Es una tecnica de aceleracion de procesos que se basa en la introduccion latches o registros enuna apropiada posicion del arreglo para separar la operacion en etapas. Una vez implementada,el sistema incrementa su velocidad de procesamiento como etapas posea.
Capıtulo 2. Arquitecturas de Multiplicadores 25
2.4.5. Multipicador McCanny-McWhinter
Otro esquema de multiplicacion paralelo es el propuesto por J. McCanny
y J. McWhinter [20], Figs. 2.17 y 2.18. En la Fig. 2.18 se puede observar que
el multiplicador esta estructurado en cadenas de sumadores para cada bit del
producto, las cuales se encuentran en direccion vertical. Cada sumador de la
cadena recibe en forma diagonal un acarreo de entrada correspondiente a una
suma de la cadena previa y envıa su salida de acarreo a un sumador de una
cadena posterior. Este multiplicador se caracteriza por presentar comunicacion
local entre las celdas basicas.
FA
bi
ao
si
ci
bo
so
co
ai
Figura 2.17: PE de un multiplicador Mccanny - Mcwhinter.
2.5. Consumo de recursos logicos
2.5.1. Operandos en Punto Fijo
El consumo de recursos logicos (CR) de los Multiplicadores Paralelos mencio-
nados varıa con el esquema utilizado.
Una estimacion de este consumo expresado en terminos de celdas basicas
se realizo para una FPGA de Xilinx. Si se considera que cada CLB (ver Seccion
A.4.1) posee dos funciones de 4 entradas, cada termino de salida generado implica
Capıtulo 2. Arquitecturas de Multiplicadores 26
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
y3
y2
y1
y0 x3
x2
x1
x0
p7 p6 p5 p4 p3 p1 p0p2
Figura 2.18: Multiplicador paralelo Mccanny - Mcwhinter.
Capıtulo 2. Arquitecturas de Multiplicadores 27
el consumo de n2
CLBs. Las Ecs. (2.32 - 2.35) resumen la estimacion de consumo
para las distintas arquitecturas de MPs.
Ripple Carry:
CLB(n) = (n− 1)n +n
2= n2 − n
2(2.32)
Carry Save:
CLB(n) = n(n− 1) +n
2= n2 − n
2(2.33)
Guild:
CLB(n) = n2 (2.34)
McCanny - McWhinter:
CLB(n) = n2 +n(n− 1)
2+
n
2=
3n2
2(2.35)
En la Fig. 2.19 se grafica el consumo de recursos logicos de estos multipli-
cadores. En la misma figura se presenta como referencia la cantidad de recursos
logicos de distintas FPGAs de la serie Spartan de Xilinx.
Se puede concluir que los multiplicadores paralelos, en sus diferentes variantes,
presentan un consumo de recursos elevado que se incrementa cuadraticamente con
la longitud de palabra. De las variantes ejemplificadas, la de McCanny-McWhinter
es la mas onerosa, mientras que las variantes que menos recursos logicos consumen
son la de Ripple Carry y la de Carry Save. En la misma figura se puede observar
Capıtulo 2. Arquitecturas de Multiplicadores 28
tambien que para las FPGAs de menor capacidad solo se pueden implementar
multiplicadores de longitudes de palabra inferiores a 10 bits.
0 5 10 15 20 25 300
500
1000
1500
n
CLB
XCS05
XCS10
XCS20
XCS30
XCS40
Ripple CarryCarry SaveGuildMcCanny
Figura 2.19: Consumo de recursos logicos de MP.
Los fabricantes de FPGAs ofrecen MPs que pueden ser configurados por el
disenador. Por ejemplo Xilinx ofrece dos versiones, una para multiplicadores op-
timizados en el consumo de recursos y otra para optimizados en velocidad [21].
La Fig. 2.20 presenta la informacion de referencia proporcionada por el fabricante
donde se puede observar que aun los multiplicadores optimizados en consumo de
recursos demandan una importante cantidad de los mismos, limitando la aplica-
cion de estos multiplicadores a FPGAs de elevado numero de CLBs.
Implementacion en FPGA
Se realizo la implementacion de multiplicadores paralelos en FPGA. En la
la Tabla 2.2 se muestra el consumo de recursos logicos en terminos de CLBs y
la velocidad de procesamiento de datos en Millones de Operaciones por segundo
(Mops). Se puede notar el notable incremento de consumo de recursos logicos que
Capıtulo 2. Arquitecturas de Multiplicadores 29
100
40
60
50
70
90
80
10
30
20
020050 1000 250
8x8
12x12
16x16MH
zOpt. en velocidad
Optimizado en Recursos
8x8
10x10
12x12
CLBs150
Figura 2.20: Multiplicadores proporcionados por Xilinx.
demanda cada multiplicador cuando se duplica la longitud de palabra. Tal como
se expreso anteriormente, este incremento es tıpicamente cuadratico.
Tabla 2.2: Implementacion de multiplicadores en FPGA.Spartan Virtex Virtex II
Figura 4.15: Velocidad de procesamiento de multiplicadores optimizados en velo-cidad en Virtex II.
Performance de los multiplicadores
A fin de estimar los beneficios que se obtienen con cada variante se utiliza el
ındice de performance propuesto en la Ec. (3.40).
Implementacion en Spartan: En la Fig. 4.16 se grafica el ındice de perfor-
mance para las distintas variantes, luego de su implementacion en una FPGA de
400 CLB’s para el rango de 8 ≤ n ≤ 20 bits. Se puede observar que los mejores
resultados corresponden a los multiplicadores SM y SMSC(SMSR).
En la Fig. 4.17 se grafica el ındice de performance para un rango de 20 ≤ n ≤32 bits. En esta figura se observa que el SM posee el mejor ındice. Adicionalmente
ındice del SMSC(SM) resulta mejor que el del SMSC(SMSR) debido a que con-
sume menor cantidad de recursos y a medida que aumenta la longitud de palabra
de los operandos, la velocidad de procesamiento de ambos multiplicadores se hace
Figura 4.18: Indice de performance de los multiplicadores en Virtex, 8 ≤ n ≤ 20.
En la Fig. 4.17 se grafica el ındice de performance para un rango de 20 ≤n ≤ 32 bits, donde se observa que el ındice de los multiplicadores resulta mas
comparable para las variantes SMSC(SMSR), SMF(SMSR), SMSR y SM. Esto
es debido a que a medida que aumenta la longitud de palabra de los operandos,
el retardo de interconexion de los multiplicadores mas complejos aumenta mas
Figura 4.19: Indice de performance de los multiplicadores en Virtex, 20 ≤ n ≤ 32.
Implementacion en Virtex II: En la Fig. 4.16 se grafica el ındice de per-
formance para las distintas variantes, luego de su implementacion en una FPGA
Virtex II de 1536 CLB’s para el rango de 8 ≤ n ≤ 20 bits. Se puede observar que
el mejor resultado corresponde al SMF(SMSR) y, en menor medida el SMSR Y
EL SMF(SMSR)(salvo para el caso de n = 8, en el cual ambos poseen un mayor
ındice).
En la Fig. 4.17 se grafica el ındice de performance para un rango de 20 ≤n ≤ 32 bits, donde se observa que el ındice de los multiplicadores resulta mas
comparable pero manteniendo la misma relacion que para valores de n < 20.
”FPGA based stepper motor controller”, II Southern Conference on Pro-
grammable Logic. ISBN 84-609-8998-4. Mar del Plata 2006.
5.0.1. Trabajos futuros
La implementacion hardware de algoritmos de control puede resultar de suma
utilidad en el campo de la Electronica de Potencia. Los convertidores de potencia
presentan permanentemente un compromiso entre la velocidad del sistema global
y la complejidad del control. La evolucion de los dispositivos digitales de las
ultimas decadas permitio el avance en el control de estos sistemas, sin embargo
los requerimientos actuales tambien son mayores.
En el campo de logica programable, la capacidad de paralelizacion de tareas
permitirıa aumentar la eficiencia del control de los convertidores, ya sea aumen-
tando la velocidad de procesamiento del sistema utilizando algoritmos de control
y/o modulacion mas sofisticados que mejorarıa la performance del convertidor.
Adicionalmente, el sistema implementado en FPGA permitirıa la generacion de
seguridad y proteccion en la conmutacion de las llaves de los convertidores en
forma independiente de la ejecucion del algoritmo.
En el marco de la investigacion realizada hasta el momento, se propone ex-
pandir los conocimientos adquiridos para el desarrollo e implementacion de los
algoritmos de control destinados a Convertidores de Potencia. Entre las herra-
mientas necesarias, se encuentra la necesidad de desarrollar sumadores en punto
flotante que posean las mismas caracterısticas que los multiplicadores propuestos
Capıtulo 5. Conclusiones 128
en el Capıtulo 3. Los sumadores en punto flotante consumen considerables canti-
dades de recursos logicos, comparables a la de los multiplicadores. Por otro lado,
los algoritmos de control de los convertidores de potencia requieren usualmente
el calculo de funciones trigonometricas. Se pretende desarrollar avances en este
campo mediante la aplicacion de los conocimientos en la ejecucion de algoritmos,
entre los que se encuentra el de CORDIC [30] [31].
Bibliografıa
[1] E. Boemo, E. Juarez, and J. Meneses, “Taxonomıa de multiplicadores,” Proc.VIII DCIS Conference. Univ. of Malaga., pp. 185–190, 1993.
[2] D. Teixeira, A. Susim, and L. Carro, “Comparacion de multiplicadores enfpga,” V Workshop Iberchip, vol. 1, pp. 182–187, Enero 1999.
[3] .Nibouche, A. Bouridarie, and M.Nibouche, “New architectures for serial-serial multiplication,” IEEE, pp. 705–708, 2001.
[4] A. Aggoun, A. Ashur, and M. K. Ibrahimi, “Area-time efticient serial-serialmultipliers,” in IEEE International Symposium on Circuits and Systems,2000.
[5] A. Aggoun, A. Farwan, M. Ibrahim, and A. Ashur, “Radix-2n serialserialmultipliers,” IEE Proc.-Circuits Devices Syst., vol. 151 No. 6, pp. 503–509,2004.
[6] A. Bouridane, M.Nibouche, D. Crookes, and B. Albesher, “A low latency bi-directional serial-parallel multiplier architecture,” IEEE ISCAS 2000, vol. 5,pp. 593–596, May 2000.
[7] C. Wallace, “A suggestion for a fast multiplier,” IEEE Trans. on ElectronicComuters, pp. 14–17, 1964.
[8] L. Dadda, “Some schemes for parallel multipliers,” Alta Frequenza, vol. XX-XIV, N 5, 1965.
[9] N. Shirazi, A. Walters, and P. Athanas, “Quantitative analisis of floatingpoint arithmetic on FPGA based custom computing machines,” Proceedings.IEEE Symposium on FPGAs for Custom Computing Machines, pp. 155–162,1995.
[10] I. W. B. Ligon, S. McMillan, G. Monn, K. Schoonover, F. Stivers, and K. D.Underwood, “A re-evaluation of the practicality of floating-point operationson FPGAs,” Proceedings of IEEE Symposium on FPGAs for Custom Com-puting Machines, pp. 206–215, 1998.
129
Bibliografıa 130
[11] J. L. Hennessy and D. Patterson, Computer Architecture: A Quantitative Ap-proach. San Francisco, California ISBN: 1-55860-329-8: Morgan KaufmannPublishers, Inc., 1996.
[12] J. P. Hayes, Introduccion al Diseno Logico Digital. Wilmington, Delaware,E.U.A: Addison-Wesley Iberoamericana, 1996.
[13] G. E. Ordoez-Fernandez, L. Lpez-Lpez, and J. Velazco-Medina, “Diseo demultiplicadores paralelos de 16 bits en fpgas,” in Proceedings X Taller Iber-chip, 2004.
[14] B. Parhami, Computer Arithmetic: Algorithms and Hardware Design. NewYork, Oxford: Oxford University Press, 2000.
[15] E. Jamro and K. Wiatr, “Constant coefficient convolution implemented infpgas,” in Digital System Design, 2002. Proceedings. Euromicro Symposiumon, 4-6 Sept. 2002, pp. 291–298.
[16] J. B. Evans, C.-J. Chou, and S. Mohanakrishnan, “FPGA implementationof digital filters,” Proc. ICSPAT’93, pp. 1–9, 1993.
[17] R. J. Landry, V. Calmettes, and E. Robin, “High speed IIR filter for xi-linx FPGA,” Proceedings of the 1998 Midwest Symposium on Systems andCircuits, 1998.
[18] I. S. 754, IEEE standard for binary floating-point arithmetic. New York:The Institute of Electrical and Electronics Engineers Inc., 1985.
[19] H. Guild, “Fully iterative fast array for binary multiplication and addition,”Electronic Letters, vol. 5, p. 263, 1969.
[20] J. McCanny and J. McWhirter, “Completely iterative, pipelined multiplierarray suitable for VLSI,” IEE Proceedings, Part G - Electronic Circuits andSystems, vol. 129, pt. G, no. 2, Apr. 1982, p. 40-46., vol. 129, pp. 40–46,Apr. 1982.
[22] L. Louca, T. A. Cook, and W. H. Johnson, “Implementation of IEEE singleprecision floating point addition and multiplication on FPGAs,” ProceedingsIEEE Symposium on FPGAs for Custom Computing Machines, pp. 107–116,1996.
[23] A. Jaenicke and W. Luk, “Parameterised floating-point arithmetic on fpgas,”in Acoustics, Speech, and Signal Processing, 2001. Proceedings. (ICASSP’01). 2001 IEEE International Conference on, vol. 2, 7-11 May 2001, pp.897–900vol.2.
Bibliografıa 131
[24] M. A. Jimnez, N. G. Santiago, and D. T. Rover, “Development of a scalableFPGA-based floating point multiplier,” Proceedings of the Fifth CanadianWorkshop on Field-Programmable Devices, pp. pp. 145 – 150, 1998.
[25] G. Aty, A. Hussein, I. Ashour, and M. Mones, “High-speed, area-efficientfpga-based floating-point multiplier,” in Microelectronics, 2003. ICM 2003.Proceedings of the 15th International Conference on, 9-11 Dec. 2003, pp.274–277.
[26] B.New, “Estimating the performance of XC4000E adders and counters,”Xilinx, Tech. Rep. Xapp 018, 1996.
[27] The Programable Logic Data Book 1999. Xilinx, 1999.
[28] S. Ghosh, Hardware Description Languages Concepts and Principles. 445Hoes Lane, P.O. Box 1331 Piscataway, NJ 08855-1331: IEEE Press, 1999.
[29] E. Villar, L. Teres, S. Olcoz, and Y. Torroja, VHDL Lenguaje Estandar deDiseno Electronico. Madrid: McGraw Hill, 1997.
[30] J. E. Volder, “The CORDIC Trigonometric Computing Technique,” IRETransactions on Electronic Computers, vol. EC-8, pp. 330–334, 1959.
[31] M. Kharrat, M. Loulou, and N. M. andL. Kamoun, “A new method to im-plement cordic algorithm,” in The 8th IEEE International Conference onElectronics, Circuits and Systems, vol. 2, 2001, pp. 715–718.
[39] R. Bossart, H. Braun, F. Chautard, M. Comunian, J. Delahaye,J.C.Godot, I. Kamber, J. Madsen, L. Rinolfi, S. Schreiber, G. Suberlucq,I. Wilson, and W. Wuensch, “Performances obtained with the cern linearcollider test facility,” in Proc. European Particle Accelerator Conference-EPAC’94, London, UK, July 1994, pp. 680–682. [Online]. Available:http://accelconf.web.cern.ch/AccelConf/
[40] W. Coosemans and H. Mainaud, “Pre-alignment of clic using the double-wiremethod,” European Organization of Nuclear Research (CERN), Tech. Rep.343, July 1997, CLIC-NOTE 343.
[41] P. Poirier, “Lalignement dynamique submicrometrique de sections accele-ratrices,” Memoire de soutenance du Diplome de Recherche Specialisee enSciences, Universite Louis Pasteur de Strasbourg, September 1991.
[42] D. Carrica, R. Pittin, and M. Benedetti, “Control subsystem hardware of thehigh performance electronics for alignment regulation on the CLIC 30GHzmodules,” CERN Publication (European Laboratory for Particle Physics),Ginebra, Suiza., vol. CTF 99-09, March 1999.
[43] J. Crook, “Low cost microprocessor based speed control,” in Proceedingsof the Thirteeth Annual Symposium, Incremental Motion Control Systemand Devices, B. C. Kuo, Ed., Incremental Motion Control System Society.Champaign, Illinois: Board of Trustees of the University of Illinois, May 1984,pp. 25–30.
[44] Z. Kang and S. Qu, “A new methodology for using single microprocessor tocontrol DC stepper motors,” in Proceedings of the IEEE International Confe-rence on Industrial Technology, I. of Electrical & Electronics Engineers Staff,Ed. Piscataway, NJ, USA: IEEE Press, Dec. 1994, pp. 543–545.
[45] D. O. Carrica and S. A. Gonzalez, “Algoritmo eficiente para la generacionde perfiles de velocidad en el accionamiento simultaneo de multiples motorespaso a paso,” in ANALES VIII Reunion de Trabajo en Procesamiento de laInformacion y Control, RPIC’99, vol. 1. Mar del Plata, Argentina: Facultadde Ingenieria, U.N.M.d.P., Sept. 23–25, 1999, pp. 118–122.
[46] P. Acarnley, Stepping Motors: A Guide to Modern Theory and Practice,4th ed., ser. IEE Control Engineering Series, no. 63. London, U.K.: Pe-ter Peregrinus Ltd, Dec. 2002.
[47] T. Kenjo and A. Sugawara, Stepping Motors and their Microprocessor Con-trols, 2nd ed., ser. Monographs in Electrical and Electronic Engineering.Oxford, U.K.: Oxford University Press, 1995.
[48] B. Robert, F. Alin, and C. Goeldel, “Aperiodic and chaotic dynamics in hy-brid step motor-new experimental results,” in Proceedings of the IEEE In-ternational Symposium on Industrial Electronics-ISIE’2001, 2001, pp. 2136–2141.
[49] M.-C. Pera, B. Robert, and C. Goeldel, “Nonlinear dynamics in electrome-chanical systems-application to a hybrid stepping motor,” Electromotion,vol. 7, no. 1, pp. 31–42, Jan./Mar. 2000.
Bibliografıa 133
[50] N. Acosta, C. Collado, and K. Larsen, “Metricas para la generacion de mul-tiplicadores paralelos en FPGA.” Proc. of VII Workshop Iberchip., 2001.
[51] N. Acosta, E. Todorovich, C. Collado, and K. Larsen, “Multiplicadores pa-ralelos: Estado del arte y analisis de su materializacion en FPGA.” Proc. ofVI Workshop Iberchip., pp. 158–168, 2000.
[52] A. Booth, “A signed binary multiplication technique,” Quartelly J. of Mech.Appl. Math., vol. 4 Part 2, 1951.
[53] S. Brown, “FPGA architectural research: A survey,” Design & Test of Com-puters, IEEE, vol. 13, pp. 9–15, 1996.
[54] S. Brown and J. Rose, “FPGA and CPLD architectures: A tutorial,” Design& Test of Computers, IEEE, vol. 13, pp. 42–57, 1996.
[55] D. Carrica, R. Pittin, W. Coosemans, and M. Benedetti, “Active alignmentelectronic system for CLIC 30 GHz modules in CTF2,” CERN Publication,CLIC Nro. 361, November 1998.
[56] T.-S. Chang and C.-W. Jen, “Hardware-efficient implementations for discre-te function transforms using LUT-based FPGAs,” Computers and DigitalDesigns - IEE Proceedings, vol. 146, Issue 6, p. 309, 1999.
[57] C. Dick and F. Harris, “FPGA signal processing using sigma-delta modula-tion,” F. IEEE Signal Processing Magazine, vol. Volume: 17 Issue: 1, pp. 20–35, Jan. 2000.
[58] F. Elguibaly, “A fast parallel multiplier-accumulator using the modifiedbooth algorithm,” IEEE Transactions on Circuits and Systems - II: Analogand Digital Signal Processing, vol. 47, no. 9, pp. 902–908, September 2000.
[59] M. Funes, D. Carrica, and M. Benedetti, “Floating point multipliers withreduced fpga area,” vol. 1, 2006, pp. 59–66.
[60] ——, “Multiplicadores de punto flotante para estructuras FPGA,” vol. 1,2002, p. 40.
[61] ——, “Multiplicadores secuenciales para estructuras FPGA,” vol. Vol. II,2001, pp. 646–651.
[62] A. A. Gray and S. D. Hoy, “Parallel adaptive equalizer employing sub-convolution: VLSI architecture realized in a field programmable gate array,”2003 MAPLD International Conference, 2003.
[63] R. W. Hix and R. L. Haggard, “Comparative design methodologies for FPGAbased computer arithmetic,” Proceedings of the Twenty-Ninth SoutheasternSymposium on System Theory, pp. 374–378, 1997.
Bibliografıa 134
[64] B. Lee and N. Burgess, “Parameterisable floating-point operations on FP-GA,” Conference Record of the Thirty-Sixth Asilomar Conference on Signals,Systems and Computers, pp. 1064–1068, 2002.
[65] L. Mintzer, “Large FFT’s in a single FPGA,” ICSPAT, 1996.
[66] K. Rajagopalan and P. Sutton, “A flexible multiplication unit for an FP-GA logic block,” The 2001 IEEE International Symposium on Circuits andSystems, 2001. ISCAS 2001, vol. vol. 4, pp. 546–549, 2001.
[67] C. Souani, M. Abid, and R. Tourki, “An FPGA implementation of the floa-ting point addition,” Industrial Electronics Society IECON ’98. Proceedingsof the 24th Annual Conference of the IEEE, vol. 3, pp. 1644–1648, 1998.
[68] P. F. Stelling, C. U. Martel, V. G. Oklobdzija, and R. Ravi, “Optimal circuitsfor parallel multipliers,” IEEE Transactions on Computers, vol. 47, no. 3,pp. 273–285, March 1998.
[69] P. F. Stelling and V. G. Oklobdzija, “Optimal designs for multipliers andmultiply-accumulators,” Proceedings of the 15th IMACS World Congress onScientific Computation, Modeling, and Applied Mathematics, vol. 4, pp. 739–744, August 1997.
[70] M. Thornton, J. Gaiche, and J. Lemieux, “Tradeoff analysis of integer mul-tiplier circuits implemented in FPGAs,” Communications, Computers andSignal Processing IEEE Pacific RIM Conference, pp. 301–304, 1999.
[71] E. Todorovich, G. Sutter, N. Acosta, E. Boemo, and S. Lopez-Buedo, “Re-lacion entre velocidad y consumo en FPGAs,” VII Workshop Iberchip, pp.1–6 CD Browser, 2001.
[72] B. Von Herzen, “Signal processing at 250mhz using high-performanceFPGA’s,” IEEE Transactions on Very Large Scale Integration(VLSI) Systems,, vol. 6, Issue 2, pp. 238–246, 1998.
[73] The Programable Logic Data Book. Xilinx, 2000.
[74] R. Zimmermann, Binary Adder Architectures for Cell-Based VLSI and theirSynthesis. Swiss Federal Institute of Technology, 1997.
[75] M. Lu, Arithmetic and Logic in Computer Systems. Wiley-Interscience,2004.
[76] U. Meyer-Baese, Digital Signal Processing with Field Programmable GateArrays. Springer-Verlag, 2001.
[77] A. Gaffar, W. Luk, P. Cheung, and N. Shirazi, “Customising floating-pointdesigns,” in Symposium on Field-Programmable Custom Computing Machi-nes. IEEE, 2002, pp. 315 – 317.
Bibliografıa 135
[78] J. Knopman, E. Fernandes, and A. Mesquita, “Implementation of hardwarestructures through configurable logic,” in EUROMICRO 94. System Archi-tecture and Integration. Proceedings of the 20th EUROMICRO Conference.,5-8 Sept. 1994, pp. 125–130.
[79] M. Louie and M. Ercegovac, “Multiplication and inner product with fieldprogrammable gate arrays,” in VLSI Signal Processing, VII, 1994., [Works-hop on], 26-28 Oct. 1994, pp. 246–255.
[80] R. Lysecky and F. Vahid, “A configurable logic architecture for dynamichardware/software partitioning,” in Design, Automation and Test in EuropeConference and Exhibition, 2004. Proceedings, vol. 1, 16-20 Feb. 2004, pp.480–485Vol.1.
[81] T. Miyamori and U. Olukotun, “A quantitative analysis of reconfigurablecoprocessors for multimedia applications,” in FPGAs for Custom ComputingMachines, 1998. Proceedings. IEEE Symposium on, 15-17 April 1998, pp. 2–11.
[82] T.Noll, “Carry-save arithmetic for high-speed digital signal processing,” inCircuits and Systems, 1990., IEEE International Symposium on, 1-3 May1990, pp. 982–986vol.2.
[83] S. Shah, A. Al-Khalili, and D. Al-Khalili, “Comparison of 32-bit multipliersfor various performance measures,” in Microelectronics, 2000. ICM 2000.Proceedings of the 12th International Conference on, 31 Oct.-2 Nov. 2000,pp. 75–80.
[84] N. Vassiliadis, S.Nikolaidis, S. Siskos, and D. Soudris, “The effect of theinterconnection architecture on the fpga performance and energy consum-ption,” in Electrotechnical Conference, 2004. MELECON 2004. Proceedingsof the 12th IEEE Mediterranean, vol. 1, 12-15 May 2004, pp. 213–216Vol.1.
[85] J. S. Walther, “A Unified Algorithm for Elementary Functions,” in Procee-dings of the Spring Joint Computer Conference, 1971.
[86] X. Wang and S. Ziavras, “A configurable multiprocessor and dynamic loadbalancing for parallel lu factorization,” in Parallel and Distributed ProcessingSymposium, 2004. Proceedings. 18th International, 26-30 April 2004, p. 234.
[87] L. Wayne and J. Allan, “Parameterised floating-point arithmetics on FP-GAs,” in International Conference on Speech, and Signal Processing, Vol.IEEE, 2001, pp. 897–900.
[88] W. W. Yu and S. Xing, “Fixed-point multiplier evaluation and design withfpga,” in Proc. SPIE Vol. 3844, p. 153-161, Reconfigurable Technology: FP-GAs for Computing and Applications, Aug. 1999, pp. 153–161.
Apendices
136
Apendice A
Dispositivos Logicos
Programables
A.1. Introduccion
Desde finales de la decada de los ’60, los equipos electronicos digitales se
han construido utilizando circuitos integrados (CI) que realizan funciones logicas
basicas, realizados en pequena o mediana escala de integracion. A medida que los
sistemas se volvieron mas complejos, exigiendo un numero mas elevado de fun-
ciones logicas, se genero la necesidad de utilizar circuitos disenados a medida que
solo sirven para una aplicacion. Estos circuitos especıficos, o ASIC (Application
Specific Integrated Circuit), se producen con las especificaciones proporcionadas
por el usuario.
Los equipos realizados con ASICs ocupan menos espacio, son mas fiables,
consumen menos energıa y resultan mas baratos que los equipos equivalentes
realizados con CI de funcion logica basica cuando se fabrican en grandes series.
Otra de las ventajas que tienen las ASICs radica en que el diseno es muy difıcil
de copiar protegiendo la propiedad intelectual. Sin embargo poseen un alto costo
137
Apendice A. Dispositivos Logicos Programables 138
de desarrollo y su empleo solo se justifica para volumenes de produccion muy
elevados. El tiempo necesario para el desarrollo y la construccion de una ASIC es
considerable ya que puede oscilar de unos meses a unos anos.
A.2. PLD
Un dispositivo que permitio reducir algunos costos de diseno surgio con la
generacion del PLD (Programmable Logic Device). Un PLD es un dispositivo
cuyas caracterısticas pueden ser modificadas y almacenadas mediante programa-
cion. La sıntesis de estos dispositivos esta fundamentada en el hecho que una
funcion booleana cualquiera puede ser expresada como una suma de productos.
El dispositivo programable mas simple es una PAL (Programmable Array
Logic). El circuito interno de una PAL consiste en un arreglo, o matriz, de com-
puertas AND y un arreglo de compuertas OR. El arreglo AND es programable
mientras que el OR generalmente es fijo. Mediante una matriz de conexiones se
seleccionan las entradas que seran conectadas al arreglo AND, cuyas salidas son
conectadas al arreglo OR y de esta manera se obtiene una funcion logica en forma
de suma de productos.
La matriz de conexiones de un PLD es una red de conductores distribuidos en
filas y columnas con un fusible en cada punto de interseccion. Con estos recursos
se implementan las funciones logicas deseadas mediante un software especial y
un programador. La sıntesis de las ecuaciones logicas se realiza mediante el que-
mado del fusible en cada punto de interseccion de los pines de entrada con las
compuertas.
Posteriormente, el fusible se reemplazo por una celda CMOS electricamen-
te borrable (EECMOS) creandose ası una Matriz Generica Programable (GAL,
Generic Array Logic). Un GAL en su forma basica es un PLD con una matriz
Apendice A. Dispositivos Logicos Programables 139
AND reprogramable, una matriz OR fija y una logica de salida programable me-
diante una macrocelda. Esta estructura permite implementar cualquier funcion
logica como suma de productos con un numero de terminos definido. Mediante
la programacion se activa o desactiva cada celda EECMOS y se puede aplicar
cualquier combinacion de variables de entrada, o sus complementos, a una com-
puerta AND para generar cualquier operacion producto que se desee. La celda
activada conecta su correspondiente interseccion de fila y columna, y una celda
desactivada desconecta la interseccion. Las celdas se pueden borrar y reprogramar
electricamente.
A.3. CPLD
Un CPLD (Complex Programmable Logic Device) extiende el concepto de
un PLD a un mayor nivel de integracion ya que permite implementar sistemas
con un mejor desempeno porque utilizan menor espacio y reducen costos. Un
CPLD esta formado con multiples bloques logicos, cada uno similar a un PLD.
Estos bloques logicos se comunican entre sı utilizando una matriz programable
de interconexiones (PIM). Esta matriz permite unir los pines de entrada/salida
a las entradas del bloque logico, o las salidas del bloque logico a las entradas de
otro bloque logico o inclusive a las entradas del mismo (Fig. A.1).
La mayorıa de los CPLDs usan una de dos configuraciones para esta matriz:
interconexion mediante arreglo de celdas EECMOS o interconexion mediante mul-
tiplexores. La primera se basa en una matriz de filas y columnas con una celda
programable de conexion en cada interseccion. Al igual que en el GAL esta celda
puede ser activada para conectar/desconectar la correspondiente fila y columna.
Esta configuracion permite una total interconexion entre las entradas y salidas
del dispositivo o bloques logicos.
Apendice A. Dispositivos Logicos Programables 140
BloquesI/O
36
I/O/GTS
I/O/GSR
I/O/GCK
I/O
I/O
I/O
I/O
2 or 4
1
I/O
I/O
I/O
I/O
3
Bloque deFunciones 1
Macroceldas1 to 18
36
36
18
18
18
18
36
Matr
izP
rogra
mable
de
Inte
rconexio
nes
Bloque deFunciones 2
Macroceldas1 to 18
Bloque deFunciones 3
Macroceldas1 to 18
Bloque deFunciones N
Macroceldas1 to 18
Figura A.1: Diagrama en bloques de un CPLD
En la interconexion mediante multiplexores, existe un multiplexor por cada
entrada al bloque logico. Las vıas de interconexion programables son conectadas
a las entradas de un numero de multiplexores por cada bloque logico. Las lıneas
de seleccion de estos multiplexores son programadas para permitir que sea selec-
cionada unicamente una vıa de la matriz de interconexion por cada multiplexor la
cual se propagara a hacia el bloque logico. Cabe mencionar que no todas las vıas
son conectadas a las entradas de cada multiplexor. La capacidad de interconexion
se incrementa usando multiplexores de mayor tamano, permitiendo que cualquier
combinacion de senales de la matriz de interconexion pueda ser interconectada
con cualquier bloque logico.
En ambos casos, la capacidad de interconexion provoca que disminuya el
desempeno del dispositivo debido al aumento de consumo de energıa y el tamano
del componente.
Apendice A. Dispositivos Logicos Programables 141
A.4. FPGA
Los Arreglos Logicos Programables (ALPs) o Field Programmable Gate Arrays
(FPGAs) surgieron en los ’80, como solucion a las excesivas demoras del desarro-
llo convencional de circuitos integrados digitales. Ademas, esta tecnologıa consti-
tuyo una alternativa a la costosa implementacion de circuitos integrados especıfi-
cos (ASICs). A pesar de estas importantes ventajas la utilizacion extensiva de los
FPGAs comenzo recien en la decada de los ’90.
La arquitectura de una FPGA consiste en arreglos de varias celdas logicas
las cuales se comunican unas con otras mediante canales de conexion verticales y
horizontales como se muestra en la Fig. A.2.
CL B CL B CL B CL B
CL B CL B CL B CL B
CL B CL B CL B CL B
CL B CL B CL B CL B
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
Figura A.2: Distribucion de bloques de una FPGA de Xilinx
La estructura de las celdas logicas y las formas en que estas pueden ser interco-
nectadas, tanto salidas como entradas de la celda, varıan de acuerdo al fabricante.
En general una celda logica tiene menos funcionalidad que la combinacion de su-
mas de productos y macroceldas de un CPLD.
La estructura de las celdas se ve fuertemente influida por la tecnologıa utili-
zada para fabricar la FPGA. Una FPGA que tiene una gran cantidad de canales
Apendice A. Dispositivos Logicos Programables 142
de interconexion tiende a tener pequenas celdas logicas con muchas entradas y
salidas en comparacion con el numero de compuertas que tiene la celda. Sin em-
bargo, una FPGA que tiene una estructura pequena en canales de interconexion
tiende a tener celdas logicas con pocas entradas y salidas en comparacion con el
numero de compuertas que hay en la celda.
La tecnologıa de interconexion se puede clasificar en dos tipos, antifusibles
o RAM estatica (SRAM). Las FPGAs con gran cantidad de canales de interco-
nexion utilizan una tecnologıa de antifusibles que generan una conexion cuando
son programados, no permitiendo la reutilizacion de la FPGA. La tecnologıa de
antifusibles es utilizada por empresas tales como Cypress [32], Actel [33] y Qui-
cklogic [34].
Por otro lado, para FPGAs con pocos canales se realiza la interconexion con
tecnologıa SRAM. La primera FPGA fue introducida por Xilinx [35] en el ano
1985 y era basada en RAM estatica. Esta FPGA cada vez que se aplica la ten-
sion de alimentacion se re-programa con la informacion que lee desde una PROM
(Programmable Read Only Memory) de configuracion externa. Una FPGA basa-
da en SRAM admite un numero ilimitado de re-programaciones sin necesidad de
borrados previos. En la Fig. A.3 se puede observar la matriz de interconexion de
una FPGA de Xilinx. En detalle se puede observar el conjunto de los 6 transis-
tores de paso que permiten la interconexion de las celdas. Una vez programada
la FPGA, una memoria SRAM mantiene el estado de conexion o desconexion de
cada uno de estos transistores.
A medida que se realiza la interconexion de las lıneas, comunmente denomi-
nadas rutas, se van adicionando retardos en la trayectoria recorrida. Este efecto
debe ser tomado en cuenta en las herramientas de programacion para diseno y
ajuste de las FPGA, de manera que el software sea capaz de establecer las co-
nexiones mas cortas posibles y luego realizar el trazado de esas conexiones, para
Apendice A. Dispositivos Logicos Programables 143
PSM
CLB CLB
PSM PSM
PSM PSM PSM
8 Simples
2 Dobles
3 Longs
3 Largas
2 Dobles
2 Dobles3 Largas3 Largas2 Dobles 8 Simples
Transistores de paso
Figura A.3: Matriz de interconexion de una FPGA de Xilinx
ası optimizar el rendimiento del dispositivo.
Este mismo tipo de tecnologıa es ademas utilizado por Altera [36], Lucent
Technologies [37] y Atmel [38] entre otros.
A.4.1. Celdas Logicas
Otra consecuencia de los recursos de interconexion se presenta con el tamano
de las celdas. Si las celdas logicas son demasiado pequenas sucede que se debe
utilizar un gran numero de estas en cascada para poder implementar funciones
logicas grandes. Estas celdas en general resuelven funciones elementales de dos o
tres variables (denominadas de grano fino) y presentan como desventaja que cada
celda logica en cascada agrega un tiempo de retardo en la funcion implementada.
A medida que el tamano de la celda logica aumenta, sucede lo contrario.
En este tipo de celdas logicas, que resuelven funciones elementales de cuatro o
mas variables de entrada (denominadas de grano grueso), es posible implementar
funciones logicas de varios terminos con pocas celdas logicas. Entre las FPGA con
celdas de grano grueso se encuentran las de Xilinx y algunas familias de Altera,
la que tambien ofrece algunas familias con celdas de grano medio. Fabricantes
como Actel ofrecen FPGAs de grano fino.
Apendice A. Dispositivos Logicos Programables 144
La celda basica de una FPGA de la serie FLEX10K de Altera, denominada
LE (Logic Element), es una celda de grano medio que posee una LUT (Look-up
Table) de 4 entradas y un Fliplop. La LUT puede ser configurada tambien como
una LUT de 3 entradas y una logica de acarreo rapido. El conjunto de ocho LEs
se encuentran dispuestas en un arreglo denominado LAB (Logic Array Block).
Adicionalmente cada fila posee un EAB (Embeded Array Block) que puede ser
configurado como un elemento de 2048x1 hasta 256x8 de memoria. Estos LAB y
EAB se encuentran interconectados a traves de buses de alta velocidad de 100 a
300 lıneas por columna.
To LAB LocalInterconnect
Carry-In
ClockSelect
Carry-Out
Look-Up
Table
(LUT)
Clear/
Preset
Logic
Carry
Chain
Cascade
Chain
Cascade-In
Cascade-Out
To FastTrackInterconnect
Programmable
Register
PRN
CLRN
DQ
ENA
Register Bypass
Chip-WideReset
data1
data2
data3
data4
labctrl1labctrl2
labctrl3
labctrl4
Figura A.4: Descripcion de un LE de una FPGA FLEX10K de Altera
Un ejemplo de una celda basica de Xilinx denominado CLB (Configurable
Logic Block) se puede observar en la Fig. A.5. Estos CLBs estan compuestos por
dos LUTs (F y G) con las cuales se pueden generar funciones logicas de cuatro
variables independientes, o bien una funcion logica combinada (H) de 5 variables.
Cada LUT cuenta con logica aritmetica dedicada para la propagacion rapida de
acarreo a celdas vecinas. Cada CLB cuenta ademas con dos Flipflops con los
cuales se pueden registrar las salidas combinacionales. Xilinx posee cinco niveles
de interconexion, que va desde la conexion entre dos CLBs, a conexiones largas
Apendice A. Dispositivos Logicos Programables 145
que atraviesan toda la FPGA. Cada CLB puede ser utilizado como un elemento
de 16x2 a 31x1 de memoria.
G4
G
H1
F
G4
G3G3
G2G2
G1
D Y
Y
X
S R
CK
E C
Q
G1
S R
H1
IN
G
H
L ogic
Function
of
G1-G4
L ogic
Function
of
F -G-H1
Multiplexer Controlled
by Configuration P rogram
G-L U T
F4F4
F3F3
F2F2
F1F1
K
E C
G
L ogic
Function
of
F1-F4
F -L U T
H-L U T
A
B
D X
S R
CK
E C
Q
Figura A.5: Descripcion de un CLB de una FPGA XC4000 de Xilinx
En la Fig. A.6 se muestra un ejemplo de los recursos logicos de algunas FPGAs
de Xilinx. En la misma el fabricante presenta la cantidad de celdas basicas, el
maximo contenido de memoria que se puede generar y la cantidad de Flip-flops
que contiene cada modelo.
A.4.2. Recursos dedicados
Los fabricantes de FPGAs generan en los dispositivos algunos recursos dedi-
cados a mejorar el desempeno de los mismos. Ejemplo de ello se puede observar
sobre la serie XC4000 de Xilinx, la cual cuenta con lıneas de comunicacion glo-
bal, seleccion de velocidad de acceso de buffers de salidas y logica de acarreo para
acelerar y condensar funciones arimeticas.
Las lıneas de comunicacion globales estan disenadas para distribuir senales
de reloj o que poseen un gran fan out. Estas lıneas poseen un retardo mınimo y
pueden ser accedidas mediante la utilizacion de buffers especiales.
Resumen En este trabajo se presenta el estado del arte de multiplicadores se-cuenciales orientado a su implementacion en FPGA. Se presentan estimacionesde consumo de recursos logicos y de comportamiento temporal que permitencontrastar las caracterısticas de los multiplicadores presentados.
1. Introduccion
La multiplicacion es una de las operaciones escenciales en el procesamiento aritmeti-co. Adicionalmente, es una de las tareas que mas recursos logicos consume. Decadasatras cuando la arquitectura del multiplicador era estudiada para su implementacionen circuitos de procesadores o unidades aritmeticas de calculo, el consumo de recursoscircuitales era aceptado por la necesidad de realizar los calculos mas rapidamente.
Actualmente, la utilizacion de las FPGAs permite el diseno personalizado de sis-temas de procesamiento, lo cual ha masificado la aplicacion de los mismos. La imple-mentacion en una FPGA de una unidad de calculo con un gran consumo de recursoslogicos obliga a utilizar una FPGA de gran tamano, lo que implica un mayor costo deproduccion. Con el objeto de reducir el consumo de recursos logicos Funes et. al [1]propusieron la utilizacion del esquema de multiplicacion Shift and Add [2], [3] , de-nominado tambien Multiplicador Secuencial (SM), para sistemas basados en FPGA.Este multiplicador ejecuta un producto en forma secuencial y se caracteriza por uti-lizar una cantidad reducida de recursos logicos. Como contra-partida por su entidadsecuencial, este multiplicador demanda un perıodo mayor para ejecutar un producto.Existen variantes del multiplicador SM que reducen este perıodo a costa de un mayorconsumo de recursos logicos [6].
En este trabajo se explicitan las ecuaciones que determinan los parametros carac-terısticos que describen el comportamiento de multiplicadores secuenciales implemen-tables en FPGA. Adicionalmente se presenta un estudio comparativo de los multipli-cadores secuenciales, sustentado en las ecuaciones mencionadas.
** Este trabajo fue subsidiado por la Universidad Nacional de Mar del Plata (ING-15/G130),CONICET, y por la Agencia Nacional de Promocion Cientifica y Tecnologica (BID1201/OC-AR 2002), Argentina
2. Multiplicadores secuenciales
Dados dos operandos, un multiplicando X =n−1∑j=0
xj2j , y un multiplicador Y =
n−1∑j=0
yj2j , el Cuadro 1 muestra el proceso de multiplicacion para n = 4. El SM realiza el
producto de este cuadro en forma secuencial, acumulando un producto parcial yiX (i =0, 1, 2, 3) al resultado acumulado de la iteracion anterior con el debido desplazamientode un bit entre ambos.
Cuadro 1.
x3 x2 x1 x0
y3 y2 y1 y0
s03 s02 s01 s00 ≡ y0X20
s13 s12 s11 s10 ≡ y1X21
+ s23 s22 s21 s20 ≡ y2X22
s33 s32 s31 s30 ≡ y3X23
p7 p6 p5 p4 p3 p2 p1 p0 ≡ P
Existen dos versiones dependiendo del sentido de los valores a acumular, con des-plazamiento a la izquierda o con desplazamiento a la derecha. En la multiplicacion condesplazamiento a la izquierda se debe contar con un acumulador de longitud 2n bits.En este caso los productos parciales yjX son adicionados al resultado acumulado conun desplazamiento de un bit (21) hacia la izquierda, respecto al anterior. El algoritmose puede analizar a partir de la Ec. (1), donde p(j) es el producto parcial de la iteracionj.
p(j + 1) = 2p(j) + y(n−1)−jX con p(0) = 0 (1)
En la multiplicacion con desplazamiento a la derecha los productos parciales yjX sonadicionados al resultado acumulado con un desplazamiento de un bit (2−1) hacia laderecha respecto al anterior.
El algoritmo se observa en la Ec. (2).
p(j + 1) = (p(j) + yjX2n)2−1 con p(0) = 0 (2)
Debido a que el desplazamiento a la derecha genera un primer producto parcial mul-tiplicado por 2−n se debe pre-multiplicar y0X por 2n para compensar el efecto deldesplazamiento. Esta pre-multiplicacion se puede efectuar facilmente, almacenandop(j) en el segmento mas significativo de un registro de 2n bit.
La implementacion hardware del algoritmo de la multiplicacion con desplazamientoa la derecha se puede observar en la Fig. 1. El multiplicador Y y la acumulacion delos productos parciales p(j) son almacenados en registros de desplazamiento. El bit yj
del multiplicador es el bit menos significativo existente en el registro Y en la iteracionj. El mismo es utilizado en el producto yjX seleccionando 0 o X en la suma.
El multiplicador SM requiere n iteraciones para la ejecucion del producto y unaiteracion previa para la carga de los operandos. Por lo tanto este multiplicador puederealizar un producto en un perıodo T = (n + 1)TCK , donde n es la longitud de losoperandos y TCK el perıodo de reloj aplicado sobre el multiplicador.
ADD
X
Producto
desplazamiento
N
N
Y
Parcialacarreo
0N-12N-1 N
0N-1
desplazamiento
0N-1
NN
Figura 1. SM con desplazamiento a la derecha.
2.1. Multiplicador secuencial sin entradas registradas
El multiplicador secuencial sin entradas registradas (SMSR) es una variante delmultiplicador SM de desplazamiento a la derecha. El objetivo del SMSR es la sim-plificacion del esquema de multiplicacion evitando la carga paralelo de los registrosdel multiplicador y del multiplicando. El SMSR no carga los operandos, por lo que noexiste la demora propia del ciclo de carga, lo cual constituye una ventaja. Por lo tanto,este multiplicador realiza el producto en un T = nTCK . En la Fig. 2 se puede observarun esquema del SMSR, el cual utiliza un sumador de n bits y realiza la seleccion delos bits yj mediante un multiplexor de n entradas.
ADD
X
Producto
desplazamiento
N
N
Y
Parcialacarreo
0N-12N-1 N
NN
N
MUX
Control
Figura 2. SMSR.
El control del multiplicador, que no se muestra en esta figura, consiste en uncontador que ejecuta la seleccion de los yj y que a su vez mantiene el numero deiteracion realizada. La inicializacion del multiplicador se realiza limpiando el registroProducto Parcial y el contador, y es requisito para este multiplicador que los datosse encuentren presentes durante todo el ciclo de la multiplicacion, tal como en unmultiplicador paralelo tradicional.
2.2. Multiplicador SM de base 4 o superior
Esta variante de multiplicacion secuencial, reduce la cantidad de iteraciones enbase a la representacion numerica.
Un numero binario de n-bits puede ser representado como un numero de n2 -dıgitos
de base 4 o n3 -dıgitos de base 8. De este modo, es posible realizar un producto en
menor tiempo de calculo si se ejecuta una multiplicacion de un dıgito por vez en lugarde hacerlo bit a bit.
La expresion general para este tipo de multiplicacion es la de la Ec. (3):
p(j + 1) = (p(j) + yjXrn)r−1 con p(0) = 0 (3)
En el caso de la multiplicacion en base 4, se debe conformar el producto parcial [yj+1
yj ]2X y adicionarlo al resultado de la iteracion anterior. Mientras que en la multi-plicacion de base 2 cada producto parcial esta representado por el valor 0 o por unaversion desplazada de X, en la multiplicacion de base 4 el producto parcial toma losvalores 0, X, 2X o 3X. El metodo mas directo para la ejecucion de esta multiplicacionse realiza mediante una asignacion pre-calculada de los productos parciales.
Un diagrama de este tipo de multiplicador se muestra en la Fig. 3. En el mismose debe considerar que mientras los tres primeros valores de los productos parcialesse pueden utilizar en forma directa, el valor 3X requiere un tiempo adicional para laejecucion del calculo de X +2X. Ademas, se debe considerar que el valor pre-calculadode 3X puede exceder el rango de X, por lo que el multiplexor y el sumador utilizadodeben ser de n+1 bits. Una alternativa consiste en reemplazar 3X por−X y generar un
N
N
N
N+1
ADD
Producto Parcial
desplazamiento 2 bits
N+1
N
Yacarreo
0N-12N-1 N
X
0
2X
3X
1
MUX
2
N+1
Figura 3. Multiplicador SM base 4.
acarreo que modifique al siguiente dıgito. Este set de dıgitos es afectado por el acarreosegun el Cuadro 2, en el cual, cy(j − 1) es el acarreo correspondiente a la iteracionanterior, cy(j) es el acarreo que se genera por el evento actual, y2j−1 e y2j son los bitsseleccionados en cada iteracion que generan una salida de los valores [0,−X,X, 2X].Esta alternativa demanda al final de la iteracion n
2 una nueva iteracion, si el ultimodıgito de base 4 genero un bit de acarreo. En la Fig. 4 se muestra el esquema de estemultiplicador. En la misma se observa que requiere una mayor cantidad de recursoslogicos que un SM. Entre estos se puede citar que requiere de un sumador de n + 1o n + 2 bits, pre-calcular 3X o -X, y un multiplexor que conmuta los valores 0, X,2X y 3X etc. Los esquemas de multiplicacion de base 4 ejecutan un producto en n
2iteraciones, sin embargo se requiere un ciclo adicional para cargar los registros con losoperandos. El perıodo de procesamiento para estos multiplicadores es de T = (n
debiendo adicionar otro ciclo si se considera la variante -X, con lo cual el perıodo esde T = (n
2 + 2)Tck.
2.3. Multiplicador secuencial fraccionado
El multiplicador secuencial fraccionado (SMF) es una variante cuyo objetivo esmejorar la velocidad de ejecucion. Dado que el perıodo TCK no se puede reducir masalla del lımite impuesto por la logica, una mayor velocidad de ejecucion se puedeobtener reduciendo el numero de iteraciones. Dicha reduccion se puede obtener frac-cionando la sumatoria de la Ec. (4).
P =n−1∑j=0
X2j · yj (4)
obteniendo la Ec. 5:
P =k−1∑j=0
X2jyj +n−1∑j=k
X2jyj (5)
La primer semi-sumatoria realiza su proceso en k · TCK y la segunda en (n− k) · TCK
y para el caso particular en que k = n2 , el perıodo de procesamiento para la ejecucion
de cada producto sera T = n2 · TCK .
Se debe considerar que la suma de las dos semi-sumatorias de la Ec. (5) requiere ununico sumador de 2n− k debido a que la primer semi-sumatoria se encontrara despla-zada k veces de la segunda. Por otro lado, dicha suma agrega un retardo tR debido a lalogica involucrada. Este retardo se puede considerar menor o igual que TCK , tomandocomo pauta que el retardo de involucrado en la adicion de los productos parcialeses inferior al retardo definido para un multiplicador SM. Por lo tanto, el perıodo deprocesamiento para este multiplicador estara dado por T = (n
2 + 1) · TCK .
X[n:0] X[n:0]
Y[m/2:0] Y[m:m/2+1]
Y[m:0] x X[n:0]
m/2 nx
MultiplicadorShift and Add
Acumulación
m/2 nx
Figura 5. Diagrama de operacion de un SMF.
En la Fig. 5, se observa el esquema del SMF, donde dos multiplicadores secuen-ciales realizan sus productos simultaneamente y, un perıodo de tiempo despues, susresultados son adicionados.
La aplicacion practica del SMF se puede realizar en base a un SM tradicional o aun SMSR. La utilizacion del SM implica que se deben cargar los datos en los registros,por lo que se requieren n
2 + 2 iteraciones. Por lo que se justifica solo la utilizacion deeste esquema para multiplicadores cuya longitud de palabra haga despreciables las dositeraciones a n
2 . En el caso del SMF basado en un SMSR, el producto se realiza enT = (n
2 + 1) · TCK iteraciones.En cuanto al consumo de recursos logicos, este multiplicador requiere dos multipli-
cadores de n× m2 bits, que comparten el bloque de control, y un sumador de n + 3m
4bits. El control requiere menos recursos debido a que debe realizar menos iteraciones.
2.4. Multiplicacion por sumas consecutivas
Otra opcion para reducir el numero de iteraciones sin tener que pre-computarmultiplos de los operandos, consiste en realizar dos subproductos en forma consecu-tiva. Esta variante es similar al SMbase4 ya que basicamente opera con dıgitos de 2bits. El multiplicador por sumas consecutivas (SMSC) realiza en cada iteracion dossubproductos consecutivos como se puede observar en la Ec. (6).
P = 2n−1
n2−1∑j=0
(yjX22j−(n−1)+ yj+1X22j+1−(n−1))
(6)
La suma de los dos subproductos de la Ec. (6) genera un TCK superior al de unmultiplicador secuencial debido al acarreo de los dos sumadores. Sin embargo, paraciertas longitudes de palabras el incremento en el retardo se ve minimizado contra laventaja de reducir a la mitad la cantidad de ciclos en el perıodo de procesamiento.
El perıodo de procesamiento para la ejecucion de un producto depende del esquemaen que se basa el SMSC. En el caso de un SMSC basado en un SM el perıodo deprocesamiento se reduce a T = (n
2 + 1) · TCK . En el caso de uno basado en un SMSR,el perıodo de procesamiento resulta de T = n
2 · TCK .Un esquema del SMSC basado en SM se muestra en la Fig. 6, donde se observa
que con cada iteracion se realiza la suma en forma consecutiva de dos subproductos,yjX · 2j + yj+1X · 2j+1 de la Ec. (6). El esquema del SMSC basado en el SMSR se
N
ADD
Producto Parcial
desplazamiento 2 bits
Y0N-12N-1 N 1
N-1
ADD
LSB
acarreo
acarreo
X0N-1
N
N
Figura 6. Ejemplo de un SMSC(SM).
muestra en la Fig. 7. En cuanto al consumo de recursos logicos, estos multiplicadores
N
ADD
Producto
desplazamiento 2 bits
0N-12N-1 N
N-1
ADD
LSB
acarreo
acarreo
N
X
Y[bits impares]N
N/2
MUX
Control
Y[bits pares]N
N/2
MUX
Parcial
Figura 7. Ejemplo de un SMSC(SMSR).
duplican el consumo de recursos en cuanto a sumadores y a la logica combinacionalque genera el producto yjX. El control requiere menos recursos debido a que deberealizar menos iteraciones.
3. Evaluacion de los parametros
3.1. Consumo de recursos logicos
El consumo de recursos se puede expresar en terminos de CLBs, compuestos pordos generadores de funciones (FG) y dos FlipFlops (FF). Cada multiplicador estacompuesto por bloques tal como, sumadores, multiplexores, contadores y componen-tes basicos. Estos bloques poseen un consumo de recursos acotado, que en algunoscasos son funcion de la longitud de palabra de los operandos, n. Ejemplo de ello sepresenta en un contador de modulo-n. El mismo es un contador binario de log2 n bitsque utiliza n FFs (FlipFlops) y al menos la misma cantidad de FGs (Function Ge-nerators), consumiendo como mınimo log2(n)
2 CLB’s. En caso de un multiplexor, esteesta conformado solo por logica combinacional que requiere de al menos n− 1 FGs detres entradas. Esto genera un consumo de recursos de n−1
2 CLBs para una longitudde n-bit entradas. El consumo de recursos logicos de un sumador depende del tipo desumador seleccionado. El sumador indicado para la implementacion de los multipli-cadores en las FPGAs seleccionadas, es el sumador de ripple-carry. En este caso, unsumador utiliza n+2 FGs (n
2 +1 celdas basicas) considerando las salidas de acarreo ydesborde. En el caso en que la salida de un sumador deba ser registrada, el consumode recursos logicos en terminos de CLBs es el mismo dado que los FFs son nativos decada celda basica.
A partir de estos conceptos basicos, se desarrollan las ecuaciones que definen elconsumo de recursos logicos en terminos de CLBs para los multiplicadores presentados,Ecs. (7 - 14).
CRSM (n) = 2n +log2 n
2+
52
(7)
CRSMSR(n) = 2n +log2 n
2+
32
(8)
CRSMbase4a(n) =72n +
log2 n
2+ 4 (9)
CRSMbase4b(n) =72n +
log2 n
2+
72
(10)
CRSMFSM(n) =
154
n +log2
n2
2+ 5 (11)
CRSMFSMSR(n) =
154
n +log2
n2
2+ 3 (12)
CRSMSCSM (n) = 3n +log2
n2
2+
72
(13)
CRSMSCSMSR(n) = 3n +
12
log2
n
2+ 2 (14)
3.2. Comportamiento temporal
El comportamiento temporal de los multiplicadores presentados depende de dosfactores: el retardo inherente de las compuertas logicas y/o registros, y el impuesto
por la interconexion entre las mismas. En la mayorıa de los circuitos realizados enFPGA el desempeno de los mismos no puede ser estimado hasta despues de ser imple-mentado debido a que los retardos de interconexion recien se conocen una vez realizadaesta tarea. Sin embargo, en el caso de sumadores y contadores que utilizan recursos de-dicados de logica de acarreo es posible estimar un desempeno temporal aproximado [7].El perıodo mınimo de reloj que se puede utilizar con los multiplicadores presentadosdepende del retardo de propagacion de la ruta mas crıtica.
Las Ecs. (15-19) resumen el retardo de propagacion de esta ruta expresados enns para los multiplicadores presentados tomando como referencia los retardos de unaFPGA de Xilinx de la familia Spartan [8]. Cabe destacar que el retardo de propaga-cion define el maximo reloj utilizable para un dado multiplicador. En el caso de losmultiplicadores implementados a partir de un SM o un SMSR, el retardo es el mismo,siendo la diferencia entre ambos el numero de iteraciones necesarias para ejecutar unproducto.
tSM (n) =n
4+ 8,3 (15)
tSMbase4a(n) =n
4+ 14,2 (16)
tSMbase4b(n) =n
4+ 12,5 (17)
tSMF (n) =n
4+ 8,45 (18)
tSMSC(n) =n
4+ 13,15 (19)
4. Comparacion de los multiplicadores
A partir de las Ecs. (7 - 19) se realizo una comparacion de los multiplicadorespresentados. En la Fig. 8 se muestra el consumo estimado de recursos logicos de losmultiplicadores. Se puede observar que los multiplicadores optimizados en velocidadsacrifican el consumo de recursos logicos a costa de obtener una mayor velocidad deprocesamiento. Los multiplicadores del tipo SMSC son los que consumen la menorcantidad de recursos, mientras que los del tipo SMF poseen un consumo entre un 30 yun 40 % mayor. Por otro lado, los multiplicadores de base 4 poseen un consumo entreun 15 y un 20 % mayor.
La velocidad de procesamiento (PS [Mflop])se obtiene como resultado de dividirla frecuencia maxima de trabajo por el numero de ciclos que requiere realizar unaoperacion N , PS = fck
N . La misma se expresa en millones de operaciones por segundo.En la Fig. 9 se muestra una comparacion de las velocidades de procesamiento de losmultiplicadores. En la misma se puede observar que el SMF(SMSR) presenta la mayorvelocidad de procesamiento para todo n. Adicionalmente, la variante SMF(SM) salvopara el caso de n = 8, posee una buena velocidad de procesamiento aunque inferior ala del SMF(SMSR) debido a que requiere de una iteracion adicional. El SMSC(SMSR)posee una buena velocidad de procesamiento para n < 14 bits, pero para n mayoreses similar a la del SMbase4(-X). Se observa tambien que las otras variantes presentanvelocidades inferiores a las del SMF(SMSR), pero superiores a la del SMbase4(3X).
Figura 9. Velocidad de procesamiento de los multiplicadores.
4.1. Performance de los multiplicadores
A fin de estimar los beneficios de cada variante, se propone un unico indicador, elındice de performance p, definido por la Ec. (20) donde la Velocidad de Procesamientoesta definida en Millones de Operaciones por Segundo y el Area como la fraccion derecursos utilizados para una determinada FPGA, (Total de la FPGA = 1).
p =Velocidad de Procesamiento [Mops]
Area(20)
En la Fig. 10 se muestra el ındice en el intervalo 8 ≤ n ≤ 20 para una FGPA de400 CLB’s, en la cual se puede observar que los multiplicadores SM y SMSC(SMSR)obtienen el mejor desempeno. En la Fig. 11 se muestra el ındice para el intervalo20 ≤ n ≤ 32 donde observa que el mayor valor lo comparten los multiplicadores SMy SMSC(SM). Esto se debe a que el SCSC(SM) consume menor cantidad de recursosque el SMSC(SMSR) y, a medida que aumenta n, la velocidad de procesamiento deambos multiplicadores se hace mas parecida.
En este trabajo se presento un estudio comparativo de multiplicadores secuencialesdestinados a su implementacion en FPGA. Se presentaron las estimaciones de consu-mo de recursos logicos y de comportamiento temporal que permiten contrastar lascaracterısticas de los multiplicadores presentados.
A partir de estas comparaciones se puede observar que el SM, el SMSR y los SMSCson los multiplicadores que mejor balancean la relacion entre consumo de recursos logi-cos y velocidad de procesamiento. Resultando el SMSR el optimo para aplicaciones
donde se busca una reducida cantidad de recursos logicos, y el SMSC en aplicacio-nes donde ademas de las restricciones de recursos se requiere una alta velocidad deprocesamiento.
Referencias
1. Funes, M., Carrica, D., Benedetti, M.: Multiplicadores secuenciales para estructuras FP-GA. IX Reunion de Trabajo en Procesamiento de la Informacion y Control. Vol. II (2001)646–651
2. Hennessy, J.L., Patterson, D.: Computer Architecture: A Quantitative Approach. MorganKaufmann Publishers, Inc., San Francisco, California ISBN: 1-55860-329-8 (1996)
4. Thornton, M., Gaiche, J.D.and Lemieux, J.: Tradeoff analysis of integer multiplier circuitsimplemented in FPGAs. Communications, Computers and Signal Processing IEEE PacificRIM Conference (1999) 301–304
5. Teixeira, D., Susim, A., Carro, L.: Comparacion de multiplicadores en fpga. V WorkshopIberchip 1 (Enero 1999) 182–187
6. Parhami, B.: Computer Arithmetic: Algorithms and Hardware Design. Oxford UniversityPress, New York, Oxford (2000)
7. New, B.: Estimating the performance of XC4000E adders and counters. Technical ReportXapp 018, Xilinx (1996)
8. : The Programable Logic Data Book. Xilinx (2000)
XII Reunion de Trabajo en Procesamiento de la Informacion y Control, 16 al 18 de octubre de 2007
Estudio comparativo de multiplicadores secuencialesimplementados en FPGA
Resumen— En este trabajo se presenta un es-tudio comparativo de multiplicadores secuencialesorientado a su implementacion en FPGA. Se exponenlos resultados de las implementaciones, las que permi-ten contrastar las caracterısticas de los multiplicado-res presentados.
Palabras Clave— Multiplicadores, Secuencia-les, FPGA, Recursos logicos, Velocidad de procesa-miento.
I. INTRODUCCION
La multiplicacion es una de las operaciones escen-ciales en el procesamiento aritmetico. Adicionalmente,es una de las tareas que mas recursos logicos consume.Decadas atras cuando la arquitectura del multiplicadorera estudiada para su implementacion en circuitos de pro-cesadores o unidades aritmeticas de calculo, el consumode recursos circuitales era aceptado por la necesidad derealizar los calculos mas rapidamente.
Actualmente, la utilizacion de las FPGAs permite el di-seno personalizado de sistemas de procesamiento, lo cualha masificado la aplicacion de los mismos. La implemen-tacion en una FPGA de una unidad de calculo con un granconsumo de recursos logicos obliga a utilizar una FPGAde gran tamano, lo que implica un mayor costo de pro-duccion. Con el objeto de reducir el consumo de recursoslogicos Funes et al. (2001) propusieron la utilizacion delesquema de multiplicacion Shift and Add (Hennessy andPatterson, 1996), (Hayes, 1996) , denominado tambienMultiplicador Secuencial (SM), para sistemas basados enFPGA. Este multiplicador ejecuta un producto en formasecuencial y se caracteriza por utilizar una cantidad redu-cida de recursos logicos. Como contrapartida por su en-tidad secuencial, este multiplicador demanda un perıodomayor para ejecutar un producto. Existen variantes delmultiplicador SM que reducen este perıodo a costa de unmayor consumo de recursos logicos (Parhami, 2000).
En este trabajo se presenta un estudio comparativo delos multiplicadores secuenciales y algunas variantes delos mismos optimizadas en velocidad, con el objetivo deobtener buenas alternativas para la utilizacion de multi-plicadores en FPGA sin comprometer los recursos del
sistema desarrollado. Resultados experimentales permi-ten distinguir las caracterısticas de cada uno de los multi-plicadores presentados.
II. Multiplicador secuencial
Dados dos operandos, un multiplicando X =n−1∑j=0
xj2j , y un multiplicador Y =n−1∑j=0
yj2j , el Cuadro
1 muestra el proceso de multiplicacion para n = 4. ElSM realiza el producto de este cuadro en forma secuen-cial, acumulando un producto parcial yiX (i = 0, 1, 2, 3)al resultado acumulado de la iteracion anterior con el de-bido desplazamiento de un bit entre ambos.
Cuadro 1:x3 x2 x1 x0
y3 y2 y1 y0
s03 s02 s01 s00 ≡ y0X20
s13 s12 s11 s10 ≡ y1X21
+ s23 s22 s21 s20 ≡ y2X22
s33 s32 s31 s30 ≡ y3X23
p7 p6 p5 p4 p3 p2 p1 p0 ≡ P
Existen dos versiones dependiendo del sentido de losvalores a acumular, con desplazamiento a la izquierda ocon desplazamiento a la derecha.
En la multiplicacion con desplazamiento a la izquierdase debe contar con un acumulador de longitud 2n bits.En este caso los productos parciales yjX son adicionadosal resultado acumulado con un desplazamiento de un bit(21) hacia la izquierda, respecto al anterior. El algoritmose puede analizar a partir de la Ec. (1), donde p(j) es elproducto parcial de la iteracion j.
p(j + 1) = 2p(j) + y(n−1)−jX con p(0) = 0 (1)
En la multiplicacion con desplazamiento a la derechalos productos parciales yjX son adicionados al resultadoacumulado con un desplazamiento de un bit (2−1) haciala derecha respecto al anterior.
El algoritmo se observa en la Ec. (2).
XII Reunion de Trabajo en Procesamiento de la Informacion y Control, 16 al 18 de octubre de 2007
p(j + 1) = (p(j) + yjX2n)2−1 con p(0) = 0 (2)
Debido a que el desplazamiento a la derecha generaun primer producto parcial multiplicado por 2−n se debepre-multiplicar y0X por 2n para compensar el efecto deldesplazamiento. Esta pre-multiplicacion se puede efec-tuar facilmente, almacenando p(j) en el segmento massignificativo de un registro de 2n bit.
La implementacion hardware del algoritmo de la mul-tiplicacion con desplazamiento a la derecha se puede ob-servar en la Fig. 1. El multiplicador Y y la acumulacionde los productos parciales p(j) son almacenados en re-gistros de desplazamiento. El bit yj del multiplicador esel bit menos significativo existente en el registro Y enla iteracion j. El mismo es utilizado en el producto yjXseleccionando 0 o X en la suma.
ADD
X
Producto Parcial
desplazamiento
n
n
Yacarreo
0n-12n-1 n
0n-1
nn
Figura 1: SM con desplazamiento a la derecha.
Si bien ambos algoritmos presentados realizan n su-mas y n desplazamientos, las sumas realizadas con el al-goritmo de desplazamiento a la izquierda requieren unsumador del doble de tamano respecto del algoritmo dedesplazamiento a la derecha. Esto se debe a que el aca-rreo de la suma se debe extender hacia los bits mas signi-ficativos. Por lo tanto, el algoritmo mas utilizado es el dedesplazamiento a la derecha.
El multiplicador SM requiere n iteraciones para la eje-cucion del producto y una iteracion previa para la cargade los operandos. Por lo tanto este multiplicador puederealizar un producto en un perıodo T = (n + 1)TCK ,donde n es la longitud de los operandos y TCK el perıodode reloj aplicado sobre el multiplicador.
A. Multiplicador secuencial sin entradasregistradas
El multiplicador secuencial sin entradas registradas(SMSR) es una variante del multiplicador SM de despla-zamiento a la derecha. El objetivo del SMSR es la simpli-ficacion del esquema de multiplicacion evitando la cargaparalelo de los registros del multiplicador y del multipli-cando, para lo cual, los datos deben permanecer establesdurante toda la operacion. Existiendo esta condicion, elSMSR no carga los operandos, por lo que no existe lademora propia del ciclo de carga, lo cual constituye unaventaja. Por lo tanto, este multiplicador realiza el produc-to en un T = nTCK .
En la Figura 2 se puede observar un esquema delSMSR, el cual utiliza un sumador de n bits y realiza laseleccion de los bits yj mediante un multiplexor de n en-tradas.
ADD
X
Producto
desplazamiento
n
n
Y
Parcialacarreo
0n-12n-1 n
nn
n
MUX
Control
Figura 2: SMSR.
El control del multiplicador, que no se muestra en laFigura 2, consiste en un contador que ejecuta la seleccionde los yj y que a su vez mantiene el numero de iteracionrealizada. La inicializacion del multiplicador se realizalimpiando el registro Producto Parcial y el contador, y esrequisito para este multiplicador que los datos se encuen-tren presentes durante todo el ciclo de la multiplicacion,tal como en un multiplicador paralelo tradicional.
B. Multiplicador SM de base 4 o superiorEsta variante de multiplicacion secuencial, reduce
la cantidad de iteraciones en base a la representacionnumerica.
Un numero binario de n-bits puede ser representadocomo un numero de n
2 -dıgitos de base 4 o n3 -dıgitos de
base 8. De este modo, es posible realizar un producto enmenor tiempo de calculo si se ejecuta una multiplicacionde un dıgito por vez en lugar de hacerlo bit a bit.
La expresion general para este tipo de multiplicaciones la de la Ec. (3):
p(j + 1) = (p(j) + yjXrn)r−1 (3)
con p(0) = 0.En el caso de la multiplicacion en base 4, se debe con-
formar el producto parcial [yj+1 yj ]2X y adicionarlo alresultado de la iteracion anterior. Mientras que en la mul-tiplicacion de base 2 cada producto parcial esta represen-tado por el valor 0 o por una version desplazada de X , enla multiplicacion de base 4 el producto parcial toma losvalores 0, X , 2X o 3X . El metodo mas directo para laejecucion de esta multiplicacion se realiza mediante unaasignacion pre-calculada de los productos parciales.
Un diagrama de este tipo de multiplicador se muestraen la Fig. 3. En el mismo se debe considerar que mien-tras los tres primeros valores de los productos parcialesse pueden utilizar en forma directa, el valor 3X requie-re un tiempo adicional para la ejecucion del calculo deX + 2X . Ademas, se debe considerar que el valor pre-calculado de 3X puede exceder el rango de X , por lo queel multiplexor y el sumador utilizado deben ser de n + 1bits.
XII Reunion de Trabajo en Procesamiento de la Informacion y Control, 16 al 18 de octubre de 2007
n+2
n+2
n+2
n+2
ADD
Producto Parcial
desplazamiento 2 bits
n+2
n
Yacarreo
0n-12n-1 n
X
0
2X
3X
1
MUX
2
n+2
Figura 3: Multiplicador SM base 4.
Una alternativa consiste en reemplazar 3X por −X ygenerar un acarreo que modifique al siguiente dıgito. Esteset de dıgitos es afectado por el acarreo segun el Cuadro2, en el cual, cy(j − 1) es el acarreo correspondiente a laiteracion anterior, cy(j) es el acarreo que se genera porel evento actual, y2j−1 e y2j son los bits seleccionadosen cada iteracion que generan una salida de los valores[0,−X, X, 2X]. Esta alternativa demanda al final de laiteracion n
2 una nueva iteracion, si el ultimo dıgito de base4 genero un bit de acarreo.
Cuadro 2: Codificacion de los bits del multiplicadorcy(j − 1) y2j−1 y2j salida(j) cy(j)
El diagrama de este multiplicador se puede observar enla Fig. 4.
n+1
n+1
n+1
n+1
ADD
Producto Parcial
desplazamiento 2 bits
n+1
n
Yacarreo
0n-12n-1 n
X
0
2X
-X
1
MUX
2
n+1
FF
acarreo
y y +cy2j-1 2j
Figura 4: Variante del SM base 4.
En la Fig. 4 se puede observar que este esquema re-quiere una mayor cantidad de recursos logicos que un
SM. Entre estos se puede citar que requiere de un suma-dor de n + 1 o n + 2 bits, pre-calcular 3X o -X, y unmultiplexor que conmuta los valores 0, X, 2X y 3X etc.
Los esquemas de multiplicacion de base 4 ejecutan unproducto en n
2 iteraciones, sin embargo se requiere un ci-clo adicional para cargar los registros con los operandos.El perıodo de procesamiento para estos multiplicadoreses de T = (n
2 + 1)Tck debiendo adicionar otro ciclo sise considera la variante -X, con lo cual el perıodo es deT = (n
2 + 2)Tck.Estas variantes se pueden extender a multiplicado-
res de bases superiores, pero la estructura del multipli-cador se vuelve compleja debido a que se debe pre-computar una mayor cantidad de valores y consecuen-temente el numero de iteraciones deja de ser menor quen2 +1. Por ejemplo, para un producto de base 8, se debenpre-computar los valores de 3X, 5X y 7X , o solo pre-computar 3X y utilizar un esquema de acarreo similar alde la Fig. 4 para convertir a 5X , 6X y 7X en−3X ,−2Xy −X .
C. Multiplicador secuencial fraccionadoEl multiplicador secuencial fraccionado (SMF) es una
variante cuyo objetivo es mejorar la velocidad de ejecu-cion. Dado que el perıodo TCK no se puede reducir masalla del lımite impuesto por la logica, una mayor veloci-dad de ejecucion se puede obtener reduciendo el numerode iteraciones. Dicha reduccion se puede obtener fraccio-nando la sumatoria de la Ec. (4).
P =n−1∑j=0
X2j · yj (4)
Si se fracciona la sumatoria, entonces el producto sepuede realizar como la suma de dos semi-sumatorias:
P =k−1∑j=0
X2jyj +n−1∑j=k
X2jyj (5)
El producto resultante utilizando como base la de unSM con desplazamiento a la derecha esquema se puedeobservar en la Ec. (6).
P = 2n−1
k∑j=0
X · 2j−(n−1)yj +n−1∑j=k
X · 2j−(n−1)yj
(6)
La primer semi-sumatoria realiza su proceso en k·TCK
y la segunda en (n − 1 − k) · TCK . Si las dos semi-sumatorias se llevan a cabo al mismo tiempo y se sumansus resultados con el debido desplazamiento, el perıodode proceso estara dado por:
k · TCK si k > (n− 1)− ko
((n− 1)− k) · TCK si k < (n− 1)− k
y para el caso particular en que k = n2 , el perıodo de pro-
cesamiento para la ejecucion de cada producto sera T =n2 · TCK .
XII Reunion de Trabajo en Procesamiento de la Informacion y Control, 16 al 18 de octubre de 2007
Se debe considerar que la suma de las dos semi-sumatorias de la Ec. (6) requiere un unico sumador de2n − k debido a que la primer semi-sumatoria se encon-trara desplazada k veces de la segunda. Por otro lado, di-cha suma agrega un retardo tR debido a la logica invo-lucrada. Este retardo se puede considerar menor o igualque TCK , tomando como pauta que el retardo de involu-crado en la adicion de los productos parciales es inferioral retardo definido para un multiplicador SM. Por lo tan-to, el perıodo de procesamiento para este multiplicadorestara dado por T = (n
2 + 1) · TCK .
X[n:0] X[n:0]
Y[m/2:0] Y[m:m/2+1]
Y[m:0] x X[n:0]
m/2 nx
SM
Acu
mu
laci
ón
m/2 nx
Figura 5: Diagrama de operacion de un SMF.
En la Fig. 5, se observa el esquema del SMF, dondedos multiplicadores secuenciales realizan sus productossimultaneamente y, un perıodo de tiempo despues, sus re-sultados son adicionados.
La aplicacion practica del SMF se puede realizar enbase a un SM tradicional o a un SMSR. La utilizacion delSM implica que se deben cargar los datos en los regis-tros, por lo que se requieren n
2 +2 iteraciones. Por lo quese justifica solo la utilizacion de este esquema para mul-tiplicadores cuya longitud de palabra haga despreciableslas dos iteraciones a n
2 . En el caso del SMF basado enun SMSR, el producto se realiza en T = (n
2 + 1) · TCK
iteraciones.En cuanto al consumo de recursos logicos, este multi-
plicador requiere dos multiplicadores de n× m2 bits, que
comparten el bloque de control, y un sumador de n + 3m4
bits. El control requiere menos recursos debido a que de-be realizar menos iteraciones.
D. Multiplicacion por sumas consecutivas
Otra opcion para reducir el numero de iteraciones sintener que pre-computar multiplos de los operandos, con-siste en realizar dos subproductos en forma consecutiva.Esta variante es similar al SMbase4 ya que basicamenteopera con dıgitos de 2 bits. El multiplicador por sumasconsecutivas (SMSC) realiza en cada iteracion dos sub-productos consecutivos como se puede observar en la Ec.(7).
P = 2n−1
n2−1∑j=0
(yjX22j−(n−1)+ yj+1X22j+1−(n−1))
(7)
La suma de los dos subproductos de la Ec. (7) generaun TCK superior al de un multiplicador secuencial debi-do al acarreo de los dos sumadores. Sin embargo, paraciertas longitudes de palabras el incremento en el retardose ve minimizado contra la ventaja de reducir a la mitadla cantidad de ciclos en el perıodo de procesamiento.
El perıodo de procesamiento para la ejecucion de unproducto depende del esquema en que se basa el SMSC.En el caso de un SMSC basado en un SM el perıodo deprocesamiento se reduce a T = (n
2 +1) ·TCK . En el casode uno basado en un SMSR, el perıodo de procesamientoresulta de T = n
2 · TCK .Un esquema del SMSC basado en SM se muestra en la
Fig. 6, donde se observa que con cada iteracion se realizala suma en forma consecutiva de dos subproductos, yjX ·2j + yj+1X · 2j+1 de la Ec. (7).
n
ADD
Producto Parcial
desplazamiento 2 bits
Y0n-12n-1 n 1
n-1
ADD
LSB
acarreo
acarreo
X0n-1
n
n
Figura 6: Ejemplo de un SMSC(SM).
El esquema del SMSC basado en el SMSR se muestraen la Fig. 7.
n
ADD
Producto
desplazamiento 2 bits
0n-12n-1 n
n-1
ADD
LSB
acarreo
acarreo
n
X
Y[bits impares]n
n/2
MUX
Control
Y[bits pares]n
n/2
MUX
Parcial
Figura 7: Ejemplo de un SMSC(SMSR).
En cuanto al consumo de recursos logicos, estos mul-tiplicadores duplican el consumo de recursos en cuanto asumadores y a la logica combinacional que genera el pro-ducto yjX . El control requiere menos recursos debido aque debe realizar menos iteraciones.
III. Comparaciones
Los multiplicadores presentados en secciones anterio-res se implementaron en una FPGA Spartan XCS30 deXilinx (The Programable Logic Data Book, 2000). Ca-da una de las variantes de los multiplicadores se imple-mento en primera instancia mediante captura esquemati-ca y posteriormente en Lenguaje de Descripcion de Hard-ware (VHDL) (Ghosh, 1999)- (Villar et al., 1997).
XII Reunion de Trabajo en Procesamiento de la Informacion y Control, 16 al 18 de octubre de 2007
Todos los circuitos han sido evaluados segun los recur-sos logicos consumidos, la velocidad de procesamiento yun ındice de performance.
A. Recursos logicosLa cantidad de recursos logicos o area de utilizacion
de la FPGA se puede cuantificar en CLBs, compuestoscada uno por dos generadores de funciones (FG) y dosFlipFlops (FF).
En la Fig. 8 se muestran los resultados de los multi-plicadores en cuanto al consumo de CLBs. En la mismase puede observar que el numero de CLBs aumenta enforma lineal con n para todos los multiplicadores.
En la misma se puede observar la diferencia notablede consumo de recursos entre los multiplicadores SM,SMSR y los multiplicadores optimizados en velocidad.En el caso particular del SMbase4(-X), este posee un con-sumo que duplica al del SM. Esto se debe fundamental-mente a que se sacrifican recursos para obtener mayorvelocidad.
Si se comparan entre sı los multiplicadores optimiza-dos en velocidad, se puede observar que el SMSC(SM) esel multiplicador que posee el menor consumo de recursoslogicos. Por otro lado, el multiplicador SMF(SMSR) re-quiere una mayor cantidad de recursos que los restantesmultiplicadores.
B. Velocidad de procesamientoLa velocidad de procesamiento fd, se expresa en mi-
llones de operaciones por segundo Mops, y se obtienecalculando la inversa del producto del retardo de propa-gacion del camino crıtico por el numero de ciclos querequiere realizar una operacion, fd = 1
tpdN . El retardode propagacion tpd se obtiene a partir de la herramien-ta de programacion de FPGA de Xilinx, Foundation 3.1i,Timimg Analyzer. A partir de los datos sumnistrados secalcula el peor caso de temporizacion del diseno.
En la Fig. 9 se presentan los resultados experimentalesde la velocidad de procesamiento de los multiplicadores.
En esta figura se pueden observar los resultados obteni-dos por cada multiplicador. En la misma, la variante delmultiplicador SMF(SMSR) es la que obtiene la mayor ve-locidad. Por otro lado, se puede observar que el multipli-cador SMSC(SMSR) posee una relacion mas balanceadaentre consumo de recursos logicos y velocidad de proce-samiento.
Los multiplicadores SM y SMSR como se esperaba,poseen una velocidad de procesamiento inferior debido ala cantidad de ciclos de reloj necesarios para ejecutar unproducto.
C. PerformanceSe establece un ındice de performance de manera de
poder evaluar el desempeno global del sistema imple-mentado en la FPGA, incluyendo tanto el concepto deconsumo de recursos como de velocidad de procesamien-to. En la Ec. (8) se define el ındice de performance p.
p =Velocidad de Procesamiento [Mops]
Area(8)
En esta ecuacion, la Velocidad de Procesamiento es-ta definida en Millones de Operaciones por Segundo yel Area como la fraccion de recursos utilizados para unadeterminada FPGA, (Total de la FPGA = 1). Este ındicepretende poder comparar la performance de distintos ti-pos de multiplicadores para su utilizacion en una FPGAdesignada.
En la Fig. 10 se grafica el ındice de performance pa-ra un rango de 8 < n < 20 bits. En la misma se puedeobservar que el mayor ındice lo comparten los multipli-cadores SM y SMSC(SMSR). Una forma de interpretareste resultado es analizando una posible aplicacion deestos multiplicadores. Dado el caso en que una aplica-cion requiere realizar un cierto numero de productos enun mismo instante, este indica que resulta tan eficienteutilizar arreglos paralelos de multiplicadores SMSR co-mo realizar todos los productos mas rapidamente en unsolo SMSC(SMSR).
XII Reunion de Trabajo en Procesamiento de la Informacion y Control, 16 al 18 de octubre de 2007
En la Fig. 11 se grafica el ındice de performance paraun rango de 20 < n < 32 bits. En esta figura se puedeobservar que el mayor ındice lo comparten los multiplica-dores SM y SMSC(SM). Esto se debe a que el multiplica-dor SMSC(SM) consume menor cantidad de recursos queel SMSC(SMSR) y a medida que aumenta la longitud depalabra de los operandos, la velocidad de procesamientode ambos multiplicadores se hace mas parecida.
IV. CONCLUSIONES
En este trabajo se presento un estudio comparativo demultiplicadores secuenciales los cuales constituyen unabuena alternativa para la utilizacion en FPGA. Se presen-taron resultados experimentales que permiten distinguirlas caracterısticas de cada uno de los multiplicadores pre-sentados.
A partir de estas caracterısticas se puede observar queel SM y los SMSC son los multiplicadores que mejorbalancean la relacion entre consumo de recursos logi-cos y velocidad de procesamiento. Resultando el optimoel primero para aplicaciones de muy reducida cantidadde recursos logicos, y el segundo en aplicaciones dondeademas de las restricciones de recursos se requiere incre-mentar la velocidad de procesamiento.
REFERENCIAS
Funes, M., D. Carrica and M. Benedetti (2001). Mul-tiplicadores secuenciales para estructuras FPGA. IXReunion de Trabajo en Procesamiento de la Informa-cion y Control. Vol. II, 646–651.
Hennessy, John L. and David Patterson (1996). Compu-ter Architecture: A Quantitative Approach. MorganKaufmann Publishers, Inc.. San Francisco, CaliforniaISBN: 1-55860-329-8.
Parhami, Behrooz (2000). Computer Arithmetic: Algo-rithms and Hardware Design. Oxford UniversityPress. New York, Oxford.
Teixeira, Denis, Altamiro Susim and Luigi Carro (1999).Comparacion de multiplicadores en fpga. V WorkshopIberchip 1, 182–187.
The Programable Logic Data Book
The Programable Logic Data Book (2000). Xilinx.
Thornton, M.A. and J.V Gaiche, J.D.and Lemieux (1999).Tradeoff analysis of integer multiplier circuits im-plemented in FPGAs. Communications, Computersand Signal Processing IEEE Pacific RIM Conferencepp. 301–304.
Villar, E., L. Teres, S. Olcoz and Y. Torroja (1997). VHDLLenguaje Estandar de Diseno Electronico. McGrawHill. Madrid.
Floating Point Multiplierswith Reduced FPGA Area
M. Funes, D.Carrica, and M. Benedetti
Laboratorio de Instrumentacion y ControlUniversidad Nacional de Mar del Plata, Argentina
Abstract. FPGA based Floating Point Multipliers demand abundant logicalresources. This paper presents a sequential structure of floating-point multi-plier requiring a reduced number of resources. The proposed architecture wasevaluated theorically and experimentally achieving a substantially good per-formance.
1 INTRODUCTION
Many computationally-intensive applications found in Digital Signal Processing (DSP)employ the parallel processing capability of Field Programmable Gate Arrays (FPGAs)to obtain a high processing speed [4] [5]. FPGAs combine the flexibility of a general-purpose, programmable digital signal processor with the speed and density of a customhardware implementation. A digital processing implementation into a target FPGAshould be optimized in terms of logic resources consumption.to achieve a good perfor-mance and cost-effectiveness.
Digital Signal Processing mainly involves multiply operations which can be eitherfix or floating point, depending on the operand-range. The latter is used to reduceoverflow problems often observed in fixed point formats. A number expressed in floatingpoint format consist of a sign bit S, a biased exponent e of r bits and the fractional fof n bits. These elements express a number given by the following equation:
op = (−1)S × 2e−bias × 1.f (1)
Floating point multiplications involve sign setting, e exponent addition (with biascorrection) and mantissa product (including the leading bit). The latter is performed asan integer multiplication and is the most logic resources consummer. Furthermore, themultiplication is often executed in parallel way, that is, by developing simultaneouslythe product shown in Eq.(2):
p = 1.fx × 1.fy =n∑
i=0
[yi × (1xn−1..x3x2x0)] · 2i (2)
�� This work was supported by the Universidad Nacional de Mar del Plata (ING-15/G130) andthe Agencia Nacional de Promocion Cientıfica y Tecnologica (BID 1201/OC-AR 2002).Theauthors are with the Department of Electronics, Universidad Nacional de Mar del Plataand CONICET, Argentina.
where 1.fx = {xn..x2x0} and 1.fy = {yn · · · y2y0} are mantissas of n + 1 bits, and xn
and yn both ’1’.There are two key factors of the FPGA multiplier design, the processing speed
and used area. There exists a tradeoff between logic resources and processing speed.Some multiplier schemes increase the processing speed but also increases the logicconsumption [9]. Increments in the FPGA used area reduce the maximum operatingfrequency. Consequently there exist a technological boundary where increasing of theimplementation complexity does not lead to an increment in the processing speed.Several authors studied and proposed different parallel schemes of FPGA Floating-Point Multipliers in order to reduce logic consumption [10] [8] [3].
This article proposes a novel floating-point multiplier leading to a meaningful areareduction without relegating much processing speed. An estimation of the logic re-sources consumption of the proposed scheme is generated in order to evaluate itsconsumption against the often used by parallel multipliers. Latter, the multiplier wasimplemented on several platforms and evaluated in terms of logical resources andspeed. Finally, the proposed multiplier is compared with multipliers referenced in theliterature.
2 Proposed Multiplier
This paper suggests the utilization of a Sequential Multiplication (SM) to reduce thelogic resources consumption. This multiplication algorithm executes a product usinga single adder, Eq. (3):
p = 2n−1
[n−1∑i=0
yiX · 2i−n+1
](3)
This adder performs successive accumulations of subproducts shifted by the corre-sponding value.
Some schemes can be found in literature like the multiplier of Hennesy shown inFigure 1 [7]. In each multiply step, the multiplier performs two tasks. First if theleast-significant bit of Y is 1, register X is added to P , otherwise ”00...00” is addedto P . Finally, the result will be stored back into P . The registers P and Y are shiftedright, the carry bit of the sum is moved into the high-order bit of P and the low-orderof P is moved into register Y . After N steps, the result is in the 2n-bit register PY .
The integer multiplication result has a 2n-bits wordlength, but floating-point mul-tiplication only needs the n-most significant bits of the result wich are stored in registerP . Consequently, there is no need in shifting bits into register Y of an integer multipli-erdesigned for floating point multiplication. This lead to simplified integer multipliershown in Fig. 2. This scheme is based on a stage counter and the multiplexer to executethe partial products. In this scheme, the partial product is added to the last shiftedresult and is stored in the corresponding output registers.
The product normalization depends on the integer multiplication result. This resultis a n-bit word plus a carry bit. If this carry bit is ‘1’, the result must be rightshiftedto be normalized. This operation can be achieved with the existing resources, addingan extra clock pulse and setting the non-feedback add input to zero.
ADD
X
YP
SHIFT
nn1
n
Fig. 1. Shift and Add multiplier.
MUX
COUNTER
ADD FF´s
X[n:0]
P[n-1:0]Y[n:0]
P[n:1]
carry
Fig. 2. Integer sequential multiplier.
Biased exponent of the product result is given by
ep = ex + ey − bias + carry (4)
This operation is performed by adding the biased exponents (ex,ey) and the number−bias + carry expressed in two´s complement. In order to reduce logic the numbers(−bias + 0) and (−bias + 1) are precalculated and added to ex + ey according to thecarry value.
After the design structure is defined, the logic resources consumption of the pro-posed floating point multiplier can be estimated. The logic resources consumption ina FPGA can be expressed in terms of it basic logic cells. Each basic cell contains twoFlip Flop (FF) that can be used to store a function generator output (FG). However,the storage elements and function generators can also be used independently.
Each component of the multiplier can be analized in terms of its function, inputand output nets, and if its outputs must be registered. Furthermore, in the design thereare many macro components like adders, multiplexers, counters, and primitive compo-nents. A n-module counter is a binary of at least log2 n bits counter. Consequently ituses n FFs and almost the same quantity of FGs. Then, the n-module counter consumslog2(n)
2 basic cells. A n-bit multiplexer is combinational logic which it needs at leastlog2(n) stages of three input FGs. The multiplexer used in the design has a registered
output in the last stage resulting in a component that consums
log2 n�
i=1(n·2−i)
2 for n-bit
inputs. The logic consumption of the n-bit adder depends of the adder seleted. Usu-ally, the often used adder is the ripple carry adder wich optimize the fast carry logicprovided by the manufacturers in each basic cell. In this case, a n-bit adder use n + 2FGs (n
2 + 1 basic cell) considering the carry and the overflow output. If the outputof the used adder must be registered, the logic consumption estimation is the samebecause the FFs are native of each basic cell.
Equation 5 summaries the estimated logic resources consumption of the PFPMexpressed in terms of basic cells of a n-bit wordlength mantissa including the leadingbit implied on the representation 1.f . This equation take in consideration the FGs andFFs that can be merged together into a same cell.
PFPM(n, r) =
log2 n+1∑i=1
(n · 2−i)
2+
log2(n + 1)2
+ n +132
+ r (5)
3 Comparison of the FPGA area
The logic resources used by the PFPM is compared with floating point multiplier wichare based on fixed point multipliers reported in the literature. For this purposes, thefloating point multiplier structure was designed considering the integer multiplier as aninterchangeable unit. Several parallel multipliers with a reported logic consumptionwere selected [2]. The integer multiplier and their respective logic consumption forfloating point multiplication implementation are: Guild scheme with a high throughputdue to the use of parallelism and pipelining, Eq. (6). Second, a McCanny - McWhirtermultiplication scheme with local communication between its basic cells, Eq. (7). Third,a Carry Save unit with constant delay in the carry chains Eq. (8) and fourth a RippleCarry multiplication unit which take advantage of the fast carry logic nets providedby the manufacturer. Eq. (9). For this estimation it was considered the effect of thelogic not used by the n less significant bits of the integer multiplication, but the logicconsumption reduction in this multipliers was neglected due to its little difference (lessthan 5 %).
Guild(n, r) =625
n2 +2320
n + 8 + r (6)
McCanny(n, r) =8710
n− 39 + r (7)
CarrySave(n, r) = 7n− 27 + r (8)
RippleCarry(n, r) =7310
n− 32 + r (9)
Figure 3 shows a comparison of the logic resources consumption for the selectedmultipliers with a typical 8 bit exponent (r = 8). The horizontal lines in the samefigure indicates the amount of avaiable basic cells in several Spartan FPGAs of XilinxInc. [1]. It can be observed the small of logic resources needed for the PFPM in contrastto the parallel multipliers applied to the floating point multiplication. The PFPM canbe implemented in all platforms for any mantissa wordlength, while for other schemesthe implementation is restricted to larger FPGAs. Besides, the proposed scheme makepossible the implementation of several multipliers in the same FPGA.
0 5 10 15 20 25 30 35 40 450
100
200
300
400
500
600
Wordlength
CLB
XCS05
XCS10
XCS20
XCS30GuidMacCannyCarry SaveRipple CarryProposed
Fig. 3. Logic consumption comparation.
4 Experimental results
The proposed multiplier was implemented on the three most extended Xilinx plat-forms: Spartan, Virtex and Virtex II. The evaluation of the proposal in the severalFPGAs allow the verification of the Eq.(5) and the exploration of the benefits of thedifferent FPGA series to improve a better performance. The design was evaluated interms of logical resources , minimum clock period and Processing Speed (PS).
Figure 4 shows the experimental results for the Spartan series. It can be observedthat the difference between the implementation and the estimation, Eq. (5) is less than5 %. The delay constrain in the implementation depends on the feedback between theadder inputs and the registered outputs shown in the bottom of the Figure 2. Thistiming determines the maximum clock speed TCK , which, along the n + 1 pulses,determines the multiplier processing speed PS = 1
(n+1)·TCK.
Figures 5 and 6 show the experimental results for Virtex and Virtex II series,respectivelly. In these figures it can be observed the logic resources consumption forboth implementations.
A comparative analyisis is shown in Figure 7 where the logic resources and theprocessing speed are despicted for all the implementations. It can be observed in thisfigure that the logic resource estimation is comfirmed with the experimental resultsfor each index n. Also it can be observed the improvement of the utilization of atechnology among the others.
5 10 15 20 25 300
2
4
6
8
n
PS
[Mflo
p]
5 10 15 20 25 3020
30
40
50
60
70
80
n
CLB
Estimation resultsExperimental results
Fig. 4. Spartan series PFPM implementation
5 10 15 20 25 300
5
10
15
20
25
30
n
PS
[Mflo
p]
5 10 15 20 25 3020
30
40
50
60
70
80
n
CLB
Estimation resultsExperimental results
Fig. 5. Virtex series PFPM implementation
5 10 15 20 25 300
10
20
30
40
n
PS
[Mflo
p]
5 10 15 20 25 3020
30
40
50
60
70
80
n
CLB
Estimation resultsExperimental results
Fig. 6. Virtex II series PFPM implementation
5 10 15 20 25 300
5
10
15
20
25
30
35
n
PS
[Mflo
p]
5 10 15 20 25 3020
30
40
50
60
70
80
n
CLB
Estimation resultsExperimental results SpartanExperimental results VirtexExperimental results Virtex II
Fig. 7. Performance evaluation
5 Conclusion
This work addresses a novel floating-point multiplier wich can be easily implementedon several FPGA series. The proposed design, based on a sequential multiplication,provides a meaningful area reduction. This feature is useful not only to increase thesystem speed with parallel processing but also to simply add more taps to an algorithm.A function of the logic used by the proposed scheme was calculated allowing theestimation of the logic resources consumption for a given design.
The theoretical behavior was contrastated with the implementation for severalFPGA series with less than a 5% of difference in the logic consumption. The experi-mental results shown also the difference in processing speed between a FPGA seriesamong the other. This results allow the exploration of the benefics of select a differentFPGA series to improve a better performance in a given design.
References
1. The Programable Logic Data Book. Xilinx, 2000.2. N. Acosta, E. Todorovich, C. Collado, and K. Larsen. Multiplicadores paralelos: Estado
del arte y analisis de su materializacion en FPGA. Proc. of VI Workshop Iberchip., pages158–168, 2000.
3. GH. A. Aty, Aziza I. Hussein, I.S. Ashour, and M. Mones. High-speed, area-efficientFPGA-based floating-point multiplier. pages 274–277, 2003.
4. T.-S. Chang and C.-W. Jen. Hardware-efficient implementations for discrete functiontransforms using LUT-based FPGAs. Computers and Digital Designs - IEE Proceedings,146, Issue 6:309, 1999.
5. Chris Dick and Fred Harris. FPGA signal processing using sigma-delta modulation. IEEESIGNAL PROCESSING MAGAZINE, pages 20–35, 2000.
6. John P. Hayes. Introduccion al Diseno Logico Digital. Addison-Wesley Iberoamericana,Wilmington, Delaware, E.U.A, 1996.
7. John L. Hennessy and David Patterson. Computer Architecture: A Quantitative Approach.Morgan Kaufmann Publishers, Inc., San Francisco, California ISBN: 1-55860-329-8, 1996.
8. Manuel A. Jimenez, Nayda G. Santiago, and Diane T. Rover. Development of a scalableFPGA-based floating point multiplier. Proceedings of the Fifth Canadian Workshop onField-Programmable Devices, pages pp. 145 – 150, 1998.
9. III Walter B. Ligon, Scott McMillan, Greg Monn, Kevin Schoonover, Fred Stivers, andKeith D. Underwood. A re-evaluation of the practicality of floating-point operations onFPGAs. Proceedings of IEEE Symposium on FPGAs for Custom Computing Machines,pages 206–215, 1998.
10. Nabeel Shirazi, Al Walters, and Peter Athanas. Quantitative analisis of floating pointarithmetic on FPGA based custom computing machines. Proceedings. IEEE Symposiumon FPGAs for Custom Computing Machines, pages 155–162, 1995.
PERFORMANCE EVALUATION OF FPGAFLOATING POINT MULTIPLIERS
Funes, Marcos ∗,∗∗ Carrica, Daniel O. ∗
Benedetti, Mario ∗
∗ L.I.C., Universidad Nacional de Mar del Plata,CONICET
Abstract: The implementation of FPGA-based floating Point multipliers requirethe availability of huge logical resources, constraining their use in some applica-tions. The use of sequential multipliers instead of standard parallel multipliersreduce the area allocated on the FPGA. A comparison of sequential multiplieragainst parallel ones is developed. A performance index is introduced to comparethe obtained results.
Keywords: multiplication, floating point arithmetic, field programmable gatearrays, signal processing
1. INTRODUCTION
Many computationally-intensive applications foundin Digital Signal Processing (DSP) employ theparallel processing capability of Field Program-mable Gate Arrays (FPGAs) to obtain a highprocessing speed (Chang and Jen, 1999)(Dick andHarris, 2000). FPGAs combine the flexibility ofa general-purpose, programmable digital signalprocessor with the speed and density of a customhardware implementation. A digital processingimplementation into a target FPGA should be op-timized in terms of logic resources consumption toachieve a good performance and cost-effectiveness.
Digital Signal Processing mainly involves multi-ply operations which can be either fix or float-ing point, depending on the operand-range. Anoperand expressed in floating point format consist
0 This work was supported by the Universidad Nacional deMar del Plata (ING-15/G130) and the Agencia Nacionalde Promocion Cientıfica y Tecnologica (BID 1201/OC-AR2002).The authors are with the Department of Electronics,Universidad Nacional de Mar del Plata and CONICET,Argentina.
of a sign bit S, a biased exponent e of r bits andthe fractional f of n bits. These elements expressa number given by the following equation:
OP = (−1)S × 2e−bias × 1.f (1)
Floating point multiplications involve sign setting,e exponent addition (with bias correction), man-tissas product (including the leading bit) withrounding and normalization (IEEE754, 1985).The mantissas product is performed as an integermultiplication. This multiplication is often per-formed in a parallel way and is the most logicresources consumer operation.
The great consumption of resources leads to thefollowing problems:
• Greater FPGA are necessary.• More expensive FPGA are required.• Difficulty to implement several multipliers in
one FPGA.
Ligon et al assesed the practical implementationof several floating point multipliers in a XilinxXC4000 series, requiring bigger FPGAs to usemore than one multiplier in the same chip (Ligon
AADECA 2006 – XXº Congreso Argentino de Control Automático28 al 30 de Agosto de 2006 - Buenos Aires, Argentina.
et al., 1998). Other authors studied and proposeddifferent parallel schemes of FPGA Floating-PointMultipliers in order to reduce logic consump-tion (Shirazi et al., 1995) (Jimenez et al., 1998.).These authors proposed custom formats and sev-eral methods prioritizing a reduced logic resourcesconsumption. Some other results were presentedby Aty et al over more recently FPGAs (Aty etal., 2003). Floating point multipliers based on Vir-tex II embedded parallel multipliers with severallevel of pipelining were presented by authors likeLee and Burgess (Lee and Burgess, 2002).
Other contributions proposed the use of sequentialmultipliers instead of standard parallel multipli-ers in order to reduce the area allocated on theFPGA, balancing the economy on resources withthe processing speed (Funes et al., 2002)(Funes etal., 2006). The performance achieved a substan-tial reduction in terms of logical blocks with anacceptable calculation rate.
In this paper, a comparative analysis of a se-quential scheme against other parallel ones is car-ried out. Section 3 deals with an evaluation con-cerned the logical resources consumption. Section4 presents a global index which includes both thelogical resources and the processing speed. Thecomparison of schemes from different authors isperformed using this index.
2. SEQUENTIAL FLOATING POINTMULTIPLIER
The sequential scheme (SM) like the Shift andAdd algorithm reduce the logic resources con-sumption, Fig.1 (Hennessy and Patterson, 1996).This scheme is based on a control stage and themultiplexer to execute the partial products. Inthis scheme, the partial product is added to thelast shifted result and is stored in the correspond-ing output registers.
ADD
X
Partial Product
shift
n
n
Y
carryn-1 0
nn
n
MUX
Controlnormalization
rounding
Fig. 1. Integer sequential multiplier.
The rounding mode implemented in this multi-plier is round to nearest even. This means alwaysround to nearest, and in the case of a tie roundto even. Then, when rounding, this system adds12 to the least significant bit of the desired result
2n bit product
N discarded bits
1 * * * * *
0 0 0 0 1 00...0
Overflow
* * * * * *
0 1 * * * *
0 0 0 0 0 10...0
No Overflow
0 1 * * * *
Round
Product
Truncation
1 * * * * *
Overflow
* * * * * * * * * *
No Overflow
No Round
n bit result
Normalize
Fig. 2. Rounding and normalization.
and then truncates by removing the bits to theright of the LSB. The rounding scheme is shownin Fig.2. Whenever the product result in the range4 ≥ product ≥ 2 a normalization is executed, withan appropiate adjustment of the exponent.
3. LOGICAL RESOURCES COMPARISON
The logic resources used by the SM are comparedwith those from parallel multipliers. The parallelmultipliers included in the comparison are: (a)Guild scheme with a high throughput due to theuse of parallelism and pipelining, (b) McCanny -McWhirter multiplication scheme with local com-munication between its basic cells, (c) Carry Saveunit with constant delay in the carry chains and(d) a Ripple Carry multiplication unit which takeadvantage of the fast carry logic nets provided bythe manufacturer (Acosta et al., 2000). Equations(2), (3), (4) and (5) show the logic resources con-sumption of the Guild, McCanny - McWhirter,Carry Save and Ripple Carry, respectively.
Guild(n, r) =625
n2 +2320
n + 8 + r (2)
McCanny(n, r) =8710
n− 39 + r (3)
CarrySave(n, r) = 7n− 27 + r (4)
RippleCarry(n, r) =7310
n− 32 + r (5)
The logic resources consumption of the sequentialscheme is expressed by Eq. (6):
SM(n, r) =
log2 n+1∑i=1
(n2−i)
2+
log2(n + 1)2
+n+172
+r
(6)
Eq. (6) can be reduced to eq.(7).
SM(n, r) =4932
n + 9 + r (7)
AADECA 2006 – XXº Congreso Argentino de Control Automático28 al 30 de Agosto de 2006 - Buenos Aires, Argentina.
Figure 3 shows a comparison of the logic resourcesconsumption for the selected multipliers with atypical 8 bit exponent (r = 8). The horizontallines in the same figure indicates the amountof available basic cells in several Spartan FP-GAs of Xilinx Inc. (The Programable Logic DataBook, 2000). It can be observed the small of logicresources needed for the SM in contrast to theparallel multipliers applied to the floating pointmultiplication. The SM can be implemented inall platforms for any mantissa word length, whilefor other schemes the implementation is restrictedto larger FPGAs. Besides, the proposed schememake possible the implementation of several mul-tipliers in the same FPGA.
SM
Fig. 3. Logic consumption comparison.
4. PERFORMANCE EVALUATION
In order to evaluate the overall performance aperformance index p is defined as follows:
p =Processing Speed [Mflops]
Area(8)
where the Processing Speed is defined in Millionof Floating-Point Operations per second and theArea as the used fraction with respect to the totalresources available (Full FPGA = 1). This indexis useful in the selection of a multiplier for a givendesign because allows to compare several kinds ofmultipliers and wordlengths.
Figure 4 illustrates the p bar diagram correspond-ing to the Sequential Floating Point Multiplier(SM) and reported multipliers implemented in theXCS20 FPGA for several wordlengths.
For 18-bit format, the SM reduces at least fourtimes the logic area if compared to the reportsby other authors (Shirazi et al., 1995; Jimenez etal., 1998.; Aty et al., 2003; Ligon et al., 1998).Fig.4 shows that the best index score is reachedwith SM. Also, this figure depicts the performance
Wordlength Format
Per
form
ance
ShiraziJimenez
Aty
SM
Jimenez
SM
Ligon
SM
Fig. 4. Spartan multipliers performance
of 24-bit multipliers. Although the speed of themultiplier proposed by (Jimenez et al., 1998.)is similar to that of SM, logical resources getnotoriously reduced in the latter, thus renderinga significantly higher performance.
For 32-bit format, the SM utilizes 13% of theFPGA. The better performance index obtainedwith SM results from the differences of the de-signs: the 3-stage Booth-based multiplier pro-posed by (Ligon et al., 1998) is characterized byits fast speed, but it consumes 82% of the FPGA.If compared, despite being half slower, the SMconsumes 5 times less. The proper multiplier se-lection depends, in this case, on the type of projector FPGA size.
Figure 5 shows the performance index for themultipliers implemented in Virtex II FPGA. For18-bits format, the SM achieves superior perfor-mance to that proposed in the literature (Shiraziet al., 1995; Jimenez et al., 1998.; Aty et al., 2003).In addition to the decreasing level of logical re-sources employed, the proposed design is faster.For 32-bits, the difference is small and the per-formance index for the SM results from its lowlogical resource consumption. On the other handthe high performance of the 32-bit multiplier (Leeand Burgess, 2002) result from its high processingspeed. For these multipliers the applicability de-pends on the design constraints, i.e., less area orhigh speed.
5. CONCLUSION
This work compares the sequential multiplieragainst several parallel ones. The sequential mul-tiplier provides a meaningful area reduction withan acceptable calculation rate.
A performance index rendering an effective eval-uation of multipliers is also introduced in thispaper. The sequential multiplier is compared withthose reported by some authors and assessed in
AADECA 2006 – XXº Congreso Argentino de Control Automático28 al 30 de Agosto de 2006 - Buenos Aires, Argentina.
Aty
SM
SMLee
Wordlength Format
Per
form
ance
Fig. 5. Virtex II multipliers performance
terms of its performance index. The multiplierhas demonstrated to be superior to some reportedmultipliers in term of this performance index.
REFERENCES
IEEE754, IEEE Std (1985). IEEE standard for bi-nary floating-point arithmetic. The Instituteof Electrical and Electronics Engineers Inc..New York.
Acosta, N., E. Todorovich, C. Collado andK. Larsen (2000). Multiplicadores paralelos:Estado del arte y analisis de su material-izacion en FPGA.. Proc. of VI WorkshopIberchip. pp. 158–168.
Aty, GH. A., Aziza I. Hussein, I.S. Ashourand M. Mones (2003). High-speed, area-efficient FPGA-based floating-point multi-plier. pp. 274–277.
Chang, T.-S. and C.-W. Jen (1999). Hardware-efficient implementations for discrete functiontransforms using LUT-based FPGAs. Com-puters and Digital Designs - IEE Proceedings146, Issue 6, 309.
Dick, Chris and Fred Harris (2000). FPGA sig-nal processing using sigma-delta modulation.IEEE SIGNAL PROCESSING MAGAZINEpp. 20–35.
Funes, M., D. Carrica and M. Benedetti (2002).Multiplicadores de punto flotante para estruc-turas FPGA. Proceedings XVIII CongresoArgentino de Control Automatico 1, 40.
Funes, M., D. Carrica and M. Benedetti (2006).Floating point multipliers with reduced fpgaarea. Proceedings II Southern ProgrammableLogic Conference ISBN 84-609-8998-4 1, 59–66.
Hayes, John P. (1996). Introduccion al DisenoLogico Digital. Addison-Wesley Iberoameri-cana. Wilmington, Delaware, E.U.A.
Hennessy, John L. and David Patterson (1996).Computer Architecture: A Quantitative Ap-proach. Morgan Kaufmann Publishers, Inc..
San Francisco, California ISBN: 1-55860-329-8.
Jimenez, Manuel A., Nayda G. Santiago and Di-ane T. Rover (1998.). Development of a scal-able FPGA-based floating point multiplier.Proceedings of the Fifth Canadian Workshopon Field-Programmable Devices pp. pp. 145 –150.
Lee, B. and N. Burgess (2002). Parameterisablefloating-point operations on FPGA. Confer-ence Record of the Thirty-Sixth AsilomarConference on Signals, Systems and Comput-ers pp. 1064–1068.
Ligon, III Walter B., Scott McMillan, Greg Monn,Kevin Schoonover, Fred Stivers and Keith D.Underwood (1998). A re-evaluation of thepracticality of floating-point operations onFPGAs. Proceedings of IEEE Symposium onFPGAs for Custom Computing Machinespp. 206–215.
Shirazi, Nabeel, Al Walters and Peter Athanas(1995). Quantitative analisis of floating pointarithmetic on FPGA based custom comput-ing machines. Proceedings. IEEE Symposiumon FPGAs for Custom Computing Machinespp. 155–162.
The Programable Logic Data Book (2000). Xilinx.
AADECA 2006 – XXº Congreso Argentino de Control Automático28 al 30 de Agosto de 2006 - Buenos Aires, Argentina.
Novel FPGA based Floating Point Multiplier:Consecutive-Sums Sequential Multiplier
M. Funes, D. Carrica, M. Benedetti, P. Donato
Laboratorio de Instrumentacion y ControlUniversidad Nacional de Mar del Plata, Argentina
Abstract. FPGA based Floating Point Multipliers of Parallel type demandabundant logical resources. On the other hand, Sequential type, required re-duced logic resources but al the expense of a worse processing speed. This paperpresents a new sequential structure of floating-point multiplier with a betterprocessing speed keeping on a reduced number of resources.
1 INTRODUCTION
Many applications in Digital Signal Processing (DSP) employ the parallel processingcapability of Field Programmable Gate Arrays (FPGAs) to obtain a high processingspeed [1] [2]. FPGAs combine the flexibility of a general-purpose, programmable digitalsignal processor with the speed and density of a custom hardware implementation.However, a FPGA digital processing implementation presents a great logic resourcesconsumption which should be optimized because the great consumption leads to thefollowing problems:
– Greater FPGA and more expensive are necessary.– Difficulty to implement several multipliers in one FPGA.
Several authors studied and proposed different parallel schemes of FPGA Floating-Point Multipliers in order to reduce logic consumption [3] [4] [5]. On the other hand,a previous work proposed the use of sequential multipliers instead of standard par-allel multipliers in order to reduce logic consumption [6]. This article proposes theconsecutive-sums sequential multiplier which achieves more speed than the obtainedin [6] maintaining the same speed vs logic resources figure. The multiplier was imple-mented on several platforms and evaluated in terms of logical resources and speed.Finally, the proposed multiplier was compared with the previous sequential scheme.
?? This work was supported by the Universidad Nacional de Mar del Plata (ING-15/G130) andthe Agencia Nacional de Promocion Cientıfica y Tecnologica (BID 1201/OC-AR 2002).Theauthors are with the Department of Electronics, Universidad Nacional de Mar del Plataand CONICET, Argentina.
2 Floating Point Multiplication
A floating point format consists of a sign bit s, a biased exponent e of r bits and thefractional f of n bits whose value is expresed by (1):
OP = (−1)S × 2e−bias × 1.f (1)
Floating point multiplications involve sign setting, e exponent addition (with biascorrection) and mantissa product (including the leading bit) [7]. The latter is per-formed as an integer multiplication and is the most logic resources consumer.
Exclusive - ORExponentAddition
MantissasProduct
RoundingBias
Adjustment
Exponent Mantissa
Ofl.
Normalization
Sign
Exponent MantissaSign
ExponentAdjustment
Fig. 1. Floating Point Multiplication.
Furthermore, the multiplication is often executed in parallel way, Eq.(2):
p = 1.fx × 1.fy =n∑
i=0
[yi × (1xn−1..x2x1x0)] · 2i (2)
where 1.fx = {xn..x1x0} and 1.fy = {yn · · · y1y0} are mantissas of n + 1 bits, and xn
and yn are both ’1’.
2.1 Consecutive Sum Sequential Multiplier
The utilization of a Sequential Multiplication (SM) to reduce the logic resources con-sumption of the mantissas product was proposed by Funes et al. [6]. This multiplicationexecutes the product using only one adder, Eq. (3):
p = 2n−1
[n−1∑i=0
yiX · 2i−n+1
](3)
The processing speed of the SM depends on the clock frequency and the number ofiterations. The consecutive-sums sequential multiplier (SMSC) can reduce the numberof iterations by performing the addition of two subproducts at the same time, as shownin the Eq. (4).
p = 2n−1
n2−1∑j=0
(yjX22j−(n−1)+ yj+1X22j+1−(n−1))
(4)
Thus, the processing period is T = n2 · TCK , being TCK the clock period and n
the mantissa wordlength. The multiplier scheme of a fixed point SMSC multiplier isshown in Fig. 2.
n
ADD
Partial
2 bits shift
0n-12n-1 n
n-1
ADD
LSB
carry
carry
n
X
Y[odd bits]n
n/2
MUX
Control
Y[even bits]n
n/2
MUX
Product
Fig. 2. Consecutive sum sequential multiplier (SMSC).
2.2 Rounding and Normalization
The multiplier rounds the mantissas to +∞. This means always round to the theclosest to and no less than the infinitely precise result. Then, when rounding, thissystem adds 1
2 to the least significant bit of the desired result and then truncates byremoving the bits to the right of the LSB. There are three possible rounding operationswhich then occur. The first one is no rounding if the value of all the bits to the rightof the round bit is 0 or The second one is or the result is negative. To consider thefirst case, this operation can be computed storing in a register if any of the discardedbits was a ’1’. If the register value is 0 the the result of the mantissas product is justthe truncation of the least significant bits. The second case is after the computationof the result sign. The other two rounding operations depends on the most significantbit of this product as seen in Fig. 3.
2n bits product
n bits discarted
1 * * * * *
0 0 0 0 100...0
Overflow
* * * * * *
No Overflow
0 1 * * * *
Rounding
Product
Truncation
1 * * * * *
* * * * * * * * * *
No rounding
n bit product
Normalization
0 0 0 0 0 10...0+
1 * * * * *
No Overflow
Rounding
Fig. 3. Rounding and normalization.
When rounding, the system rounds by default in the last iteration and check theresult. If the result is in the range 1 ≤ p ≤ 2, the result is correctly rounded. But if theresult is in the range 4 ≥ rounded product ≥ 2, a normalization shift of 1 to the right isthen necessary to restore the rounded product to the range 2 ≥ rounded product ≥ 1,with a proper adjustment of the exponent. After the normalization, there are two casesin which the rounded results is correct and two other that need a correction.
The first case occurs when the LSB of the truncated product of n-th iteration was a”1”, because the 2−n addition propagates to the nearest significant bits. Consequentlythis is equivalent to add 2−n to a non-rounded result after normalization. The othercase occurs when the LSB of the truncated result was a ”0”, because the 2−n additiondoesn’t propagates to the nearest significant bits. The result after normalization isequivalent to a truncation. Then, a new rounding operation is required. The Table 1shows an example of the second case.
Table 1. Rounding error of the normalized product.
Fig. 4 shows the mantissas product with the rounding and normalization scheme.In this figure it can be observed the control unit that performs the multiplicationiterations besides the rounding and normalization tasks.
LSB
n
ADD
Partial Product
2 bits shift
0nn+1
n-1ADD
carry
carry
n
X
Y[odd bits]n
n/2
MUX
Control
Y[even bits]n
n/2
MUX
Default rounding
Result0nn+1
Post-normalization rounding
Exponent correction
1 bit shift
Normalization
Sign
discarded bit
Fig. 4. Mantissa product scheme.
3 Experimental results
The proposed multiplier was implemented in VHDL [8] [9]. The mantissa wordlengthwas parameterized while the exponent was fixed (e = 8). The design evaluated interms of logical resources and Processing Speed (PS) was implemented on two Xilinxplatforms: Spartan and Virtex. The evaluation of the proposal in the several FPGAsallows the exploration of the benefits of the different FPGA series to improve a betterperformance.
In the Spartan series, the basic cell of logic is denominated Configurable Logic Block(CLB), each of one contains two 4-input Function generators and two Flip Flops. TheVirtex series rename the CLB as a slice and each CLB contains two slices. In this work,the logic resources consumption is unified into an unique unit denominated Basic Cell,witch contains the same logic as a Spartan CLB.
The processing speed is a function of the number of iterations of the multiplierand the maximum clock frequency. The maximum clock frequency is limited by thepropagation delay of the critical path.
In order to evaluate the performance of the proposed scheme, the SMSC float-ing point multiplier was compared with a SM scheme with the same rounding andnormalization scheme. Figs. 5 and 6 present the logic resources and processing speedcomparison for a Spartan and Virtex series respectively. In this figures, it can be ob-served the relation between the processing speed obtained in contrast with the logicresources consumed.
5 10 15 20 25 300
5
10
15
n
PS
[Mflo
p]
5 10 15 20 25 300
20
40
60
80
100
120
n
CLB
Experimental results SMSCExperimental results SM
Fig. 5. Spartan series implementation, comparison
5 10 15 20 25 300
5
10
15
20
25
30
n
PS
[Mflo
p]
5 10 15 20 25 300
20
40
60
80
100
120
n
Bas
ic c
ells
Experimental results SMSCExperimental results SM
Fig. 6. Virtex series implementation, comparison
To evaluate the processing speed-logic consumption relation, Figs. 7 and 8 showthe performance of the proposal vs. SM based scheme for the Spartan (XCS20) andVirtex (XV300) implementation. The performance index p is defined as follows:
p =Processing Speed [Mflops]
Area(5)
where the Processing Speed is expressed in Million of Floating-Point Operations persecond and the Area is the fraction used resources vs. total resources of a FPGA.
15 20 25 30 35 400
10
20
30
40
50
60
70
80
90
100
n
p
Experimental results SMSCExperimental results SM
Fig. 7. Spartan series implementation, performance index
These figures show that the performance is as good as the SM based scheme, withthe benefits of a better processing speed.
4 Conclusion
This work addresses a novel floating-point multiplier witch can be easily implementedon several FPGA series. The proposed design, based on a consecutive sums sequentialmultiplication, provides an optimization in the processing speed with the goal of areduced logic resources consumption. The performance obtained was experimentallyassessed, achieving a substantial increment in the calculation rate.
5 10 15 20 25 300
200
400
600
800
1000
1200
1400
1600
1800
2000
n
Per
form
ance
inde
xExperimental results SMSCExperimental results SM
Fig. 8. Virtex series implementation, performance index
References
1. Chang, T.S., Jen, C.W.: Hardware-efficient implementations for discrete function trans-forms using LUT-based FPGAs. Computers and Digital Designs - IEE Proceedings 146,Issue 6 (1999) 309
2. Dick, C., Harris, F.: FPGA signal processing using sigma-delta modulation. IEEE SIG-NAL PROCESSING MAGAZINE (2000) 20–35
3. Shirazi, N., Walters, A., Athanas, P.: Quantitative analisis of floating point arithmeticon FPGA based custom computing machines. Proceedings. IEEE Symposium on FPGAsfor Custom Computing Machines (1995) 155–162
4. Jimenez, M.A., Santiago, N.G., Rover, D.T.: Development of a scalable FPGA-basedfloating point multiplier. Proceedings of the Fifth Canadian Workshop on Field-Programmable Devices (1998.) pp. 145 – 150
6. Funes, M., Carrica, D., Benedetti, M.: Floating point multipliers with reduced fpga area.Proceedings II Southern Programmable Logic Conference ISBN 84-609-8998-4 1 (2006)59–66
7. 754, I.S.: IEEE standard for binary floating-point arithmetic. The Institute of Electricaland Electronics Engineers Inc., New York (1985)
8. Villar, E., Teres, L., Olcoz, S., Torroja, Y.: VHDL Lenguaje Estandar de DisenoElectronico. McGraw Hill, Madrid (1997)
9. Ghosh, S.: Hardware Description Languages Concepts and Principles. IEEE Press, 445Hoes Lane, P.O. Box 1331 Piscataway, NJ 08855-1331 (1999)
10. Ligon, I.W.B., McMillan, S., Monn, G., Schoonover, K., Stivers, F., Underwood, K.D.:A re-evaluation of the practicality of floating-point operations on FPGAs. Proceedingsof IEEE Symposium on FPGAs for Custom Computing Machines (1998) 206–215
11. Lee, B., Burgess, N.: Parameterisable floating-point operations on FPGA. ConferenceRecord of the Thirty-Sixth Asilomar Conference on Signals, Systems and Computers(2002) 1064–1068
120 IEEE/ASME TRANSACTIONS ON MECHATRONICS, VOL. 8, NO. 1, MARCH 2003
Novel Stepper Motor Controller Based on FPGAHardware Implementation
Daniel Carrica, Senior Member, IEEE, Marcos A. Funes, and Sergio A. González, Member, IEEE
Abstract—This paper proposes a novel stepper motor controllerbased on field programable gate arrays, showing a remarkable per-formance. The system provides a combination between a novel al-gorithm and programmable logic to achieve both high speed andhigh precision on a compact hardware.
Index Terms—Field programable gate arrays (FPGA), motioncontrol, stepper motor.
I. INTRODUCTION
I N HIGH precision stepper motor applications, it is neces-sary to use motors with small steps whose size is imposed
by the required resolution. Another alternative is the techniqueof microstepping, where the motor step size is further reducedby means of control. As microsteps are related to very little dis-placements, a great quantity of microsteps are required to getthe total displacement. Total displacement should be executedin an acceptable time. As a consequence, the time between mi-crosteps should be reduced. A high-speed data transmission be-tween controller and driver is mandatory when indexing in mi-crostepping mode of operation.
Furthermore, open loop applications are much less expensivethan close loop ones due to encoders. If open loop is chosen,velocity profiles have to be used in order to avoid the step loseeffect.
A general system for the commanding of a stepper motor isshown in Fig. 1. There are three functions: 1) the velocity pro-file generation block; 2) the indexer; and 3) the power drivers.Blocks (1) and (2) are embedded in what we named controller.
After velocity profiles are generated, they have to be trans-lated into pulse intervals by the indexer. Each index pulsemeans that the motor must increment its rotor position in onestep/microstep, hence the name indexer. This block functionsas a velocity-to-time translator. This block is unique to thecommanding of incremental motion devices since other types
Manuscript received November 26, 2001; revised October 16, 2002. Recom-mended by Technical Editor K. Ohnishi. This work was supported in part by theUniversidad Nacional de Mar del Plata under Grant ING-15/G064 and in partby the Agencia Nacional de Promoción Científica y Tecnológica under GrantBID 1201/OC-AR 2000.
D. Carrica is with the Department of Electronics, National University of Mardel Plata, Mar del Plata, Argentina. He is also with He is also with the CentroAustral de Investigaciones Científicas (CADIC), Tierra del Fuego, Argentina.
M. A. Funes is with the Department of Electronics, National University ofMar del Plata, Mar del Plata, Argentina.
S.A. González is with the Laboratorio de Instrumentación y Control, De-partment of Electronics, National University of Mar del Plata, Mar del PlataArgentina. He is also with the Comision de Investigaciones Cientificas (CIC),Buenos Aires, Argentina (e-mail: [email protected]).
Digital Object Identifier 10.1109/TMECH.2003.809160
Fig. 1. Complete control system.
of motors can be commanded just by applying the velocityprofile in form of current or voltage [1], [2].
The implementation of the controller of Fig. 1 can be per-formed by two alternatives: off-line or on-line schemes.
A. Off-Line
In the off-line schemes the timing of the steps/microsteps iscalculated prior the movement [3], [4]. The velocity profile andthe time space between pulses are calculated and then storedin some kind of memory media bundled into the hardware, i.e.,ROM or even hard drives.
A disadvantage of these schemes is that they require an im-portant hardware volume, composed of memories and timers.This volume is proportional to the quantity of motors and theextension and precision of displacements.
B. On-Line
An intelligent system carries out the operation of calculatingthe index pulses through a time lagging sequence generation al-gorithm. In Fig. 2 a flowchart of one basic scheme can be seen.This flowchart contains two main blocks: construction,where the velocity profile is actually developed, and cal-culation, where the time between the current step and the next iscalculated. That is, is the velocity profile generation and
is the indexer of Fig. 1. Often a common block is sharedbecause a single equation computes both the velocity profile andthe . For example, (1) and (2) express a typical algorithmfor a trapezoidal profile [5].
(1)step
(2)
where is the resulting speed, is the maximum speedof the motor, is the total number of steps or microsteps,isthe acceleration of the trapezoidal profile and is the timeof the -th step.
CARRICA et al.: NOVEL STEPPER MOTOR CONTROLLER BASED ON FPGA HARDWARE 121
Fig. 2. On-line algorithms.
These schemes as well as the off-line ones make use of timersfor obtaining the indexed pulses. Since it is necessary one timerper motor, this approach is often discouraged when multiple mo-tors have to be commanded by a single processor.
Another important disadvantage is the computing time, re-quired to compute (1). imposes a practical limit to the speed.Moreover, not only but the timer resolution, , affect themaximum speed as in (3)
(3)
Current timer resolutions are small enough to discard theat the equation. Therefore, (3) turns into (4).
(4)
Standard algorithms fail to reach high speeds, mainly becausethe computing time, . In order to resolve the goal is toprovide a new algorithm with a more effective step generationprocedure without timers.
II. PROPOSEDALGORITHM
The proposed algorithm can be explained as follows. In orderto estimate the time , it is assumed that is times
, since it is an accurate way of measuring time without usingtimers. Therefore, the proposed algorithm has to do the fol-lowing functions during each iteration:
1) Let
Fig. 3. Flow chart of the algorithm.
2) Assume
(5)
where is a positive integer number.3) Verify if assumed allows the wished . Thus, it
means
(6)
where is the reference velocity at theth step.4) If the verification is true, then execute the new step/mi-
crostep. If not, then increment and repeat the process. (points2, 3, and 4)
(7)
From (5) it can be seen that the resolution of is . Theequality in(6) is not possible because of this resolution. Equa-tion (6) becomes the comparison stated in(8)
(8)
Eliminating the division in (8) is mandatory for reducing theiteration time. Therefore a simple contraction as in (9) is pre-ferred
(9)
The new algorithm is based on (5), (7), and (9).in (5) hasthe same meaning as in (4), but with a considerable smaller mag-nitude, since the computations here are very straightforward. It
122 IEEE/ASME TRANSACTIONS ON MECHATRONICS, VOL. 8, NO. 1, MARCH 2003
Fig. 4. Intended velocity profile.
is experimentaly demonstrated that aten times less than inconventional algorithms is achieved.
To conclude, the algorithm consists basically on a periodicaccumulative sum until the intended velocity is reached. Fig. 3shows the flowchart of a system that implements (5), (7) and(9). The velocity profiles block was previously executed.
From (5), resolution of the new algorithm is sinceis an integer. resolution in the new algorithm arises to a
velocity quantization problem because velocity is the inverse of, (6). Since the term is a multiple of and ,
it turns out that the speed commanded has the following char-acteristics:
......
(10)
As an example, Fig. 4 shows a trapezoidal profile which startsat and has a maximum . In order to keep track of theintended speed (in discontinuous line), the system commands aninitial value of . This results in an initial speed ofwhich is the closest possible speed to the intended initial speed,
. At , changes to 6. As a consequence a higher speedof occurs. At , produces a commanded speedof . It then follows that at time the commanding speedis which equals the intended velocity profile.
The quantification effect is more remarkable at higher speedswhen times are smaller as . The effect can also be ex-plained since intermediate speeds cannot take place between
and , or between and , nor amongand , etc.
Fig. 5. FPGA based control system.
Therefore, an algorithm has been developed which requiresneither timers nor lookup tables and can work for much higherspeeds. It’s disadvantage is the quantification effect which de-pends on the magnitude of . With current DSP technology, aminimun s is obtainable. This magnitude producesa quantification level of 2000 steps at speeds arround 15 000steps/s, which shows the importance of the problem.
III. H ARDWARE IMPLEMENTATION
In order to reduce the computing time, a hardware imple-mentation is proposed. The algorithm presented in Section II issimple enough to be executed by a custom hardware. Hardwareimplementation permits multiple parallel tasks, thus, providingan effective way of implementing true parallelism which allowsa great reduction of computing time because operations such asthe reference profile generation, multipication and indexationcan be executed in separate blocks and can run independentlyones of the others.
Equations (5) and (9) are replaced by (11) . Although, thismeans no changes in the algorithm, it reduces the pair ofmultiplications to only one. This fact allows an efficient hard-ware implementation without performance demerit. Hardwareimplementation of (5) and (9) is presented in Fig. 5, wherethe block diagram of the controller is shown. The COUNTER,wich counts clock periods, represents the execution of (5).
The hardware implementation of (11) is carried out by theMULTIPLIER and the COMPARATOR
(11)
When the inequation is satisfied, a new step is commanded.The signal is then fed to the DRIVER INTERFACE, which com-mands the pulses to the driver of each motor phase. Fig. 5 showsa four phase motor.
The clock period of hardware implementation is equiva-lent to the computing time in the software execution of the algo-rithm of Section II. The clock period defines the time resolu-tion of the controller. As can be well reduced in hardware ap-
CARRICA et al.: NOVEL STEPPER MOTOR CONTROLLER BASED ON FPGA HARDWARE 123
Fig. 6. Position and velocity profile with the FPGA based system.
proach, the quantizacion effect on the mechanical velocity willbe negligible.
Standard implementation of a multiplier is accomplish by acombinatorial structure. This approach is very good regardingthe time because it presents a minimum delay imposed bythe logic gates, but it involves a great number of logic resources,which increase proportionally with the multiplier word length.As an example, a 16 16 bits product requires the 90% of a10 000 logic gates FPGA [6], [7]. In order to overcome theFPGA area problem, a sequential arquitecture for the multiplieris proposed [8], [9]. This approach allows an effective area re-duction of 10 times, but with a greater, i.e., 16 clock pulsesfor a 16-bit word multiplier. However, with a 40 MHz clock,time is only 400 ns which remains neglicted for system perfor-mance. As a consequence, a sequential multiplier was adopted,which permited the implementation of the algorithm in a FPGAof 6000 logic gates.
A trapezoidal profile is generated, with several parameters,such as acceleration, minimum and maximum speed, and stepquantity. The controller decides how the profile must be basedon these parameters, and generates a reference profile to drivethe stepper motor.
As a conclusion, a new controller based on a novel algorithmimplemented by hardware was proposed. The new system pro-vides a good combination to achieve both high speed and highprecision motion on a compact hardware. Furthermore, this con-troller can easily drive full, half and micro-step mode applica-tions due to the flexibility and the reduced computing time withthe FPGA implementation.
IV. EXPERIMENTAL RESULTS
To evaluate the performance of the system, the developed al-gorithm was implemented in a Xilinx FPGA XC4006–3. Thisdevice can run at synchronous system clock rates up to 80 MHzand has a capacity 6000 logic gates. A hybrid stepping motorwas used in the experiments. Motor characteristics: 400 step/rev,inertial moment 1310 kg m , 10 N m. Noaditional load was connected.
Fig. 7. Velocity profile with the FPGA based system.
The position measures were obtained through an incre-mental optical encoder ELAP-E521 with a resolution of 1024pulses/rev whose inertial moment is 10 kg m . It wascoupled through an HELICAL-WA25 with an inertial momentof 10 kg m .
The position curve was obtained by reading the encodersignal with a high resolution timer. The position was off linederived to obtain the speed profile.
The muliplier works with a 40-MHz clock rate, which yielda multiplication time of 400 ns. ns was adopted, wichremains negligible in relation to the motor speed.
The stepper motor must develop a 12 000 step displacementfollowing a reference trapezoidal profile with charasteristics:
stepss, stepss and a max accel-eration stepss .
The resultant speed and position profiles can be seen in Fig. 6.The low time allows an almost continuous profile and veryhigh speeds, higher than those generated by standard softwarealgorithms. Due to the characteristic of the profile, the steppermotor passes through resonance area [5]. This effect can be ob-served at low speeds in the profiles.
Fig. 7 shows a complete profile obtained at high speeds withfull step. Note the continuity at all the effective speed range.
Fig. 8 shows a complete profile obtained for a microstepingapplication. The stepper motor used in this experiment wasa SLO-SYN KML093F14C5 whose characteristics are: 200step/rev, holding torque 816 N cm and a rotor inertia3.32 kg cm . The position values were obtained throughan optical incremental encoder with a resolution of 500pulses/rev. The microstep drive module used was an SLO-SYNMD808, configured to produce 2000 pulses/rev. As a con-sequence, the system must generate a high velocity profilewith stepss, stepss and a maxacceleration stepss . The time adopted forthe application was 400 ns in order to reduce the speed jumpsat to 1000 steps/s, so the speed jump remains under 5%of . This effect can be observed as a ripple component atthe top of the profile.
124 IEEE/ASME TRANSACTIONS ON MECHATRONICS, VOL. 8, NO. 1, MARCH 2003
Fig. 8. Velocity profile for microsteping application.
The system achieved very high speed that was unreachablewith standard algorithms executed by a processor. Furthermorethe new controller does not require the timers, wich are necesaryin conventional systems, and the processor was replaced by aFPGA of similar size and equivalent cost.
V. CONCLUSION
A novel algorithm with reduced quantity of operations wasintroduced. This algorithm implemented on FPGA allows a sub-stantial decrease of the equivalent processing time developed byclassic velocity controllers. As a consecuence, the stepper motorcan reach very high speeds never obtained with standard algo-rithm based systems.
Due to the system architecture, one FPGA can drive severalstepper motors simultaneously without increasing the procesingtime. It can drive three stepper motors with current 6000 gatesFPGAs. This advantage make the system very convenient sinceit allows the increase of the number of motors, simply using alarger FPGA.
REFERENCES
[1] B. K. Bose, Ed.,Modern Power Electronics. New York: IEEE Press,1992.
[2] J. V. Wyk, H. Skudelny, and A. Müller-Hellmann, “Power electronics,control of the electromechanical energy conversion process and someapplications,”Proc. Inst. Elect. Eng., vol. 133, no. 6, pp. 369–399, Nov.1986.
[3] J. Crook, “Low cost microprocessor based speed control ,” inProc. 13thAnnu. Symp. Incremental Motion Control System and Devices, P. B. Kuo,Ed., Champaign, IL, May 1984, pp. 25–30.
[4] Z. Kang and S. Qu, “A new methodology for using single micropro-cessor to control DC stepper motors,” inProc. IEEE Int. Conf. IndustrialTechnology, Dec. 1994, pp. 543–545.
[5] T. Kenjo and A. Sugawara, “Stepping motors and their micropro-cessor controls,” inSer. Monographs in Electrical and ElectronicEngineering. Oxford, U.K.: Oxford Univ. Press, 1994.
[6] The Programmable Logic Data Book, Xilinx, San Jose, CA, 1999.[7] (2000) Xilinx Core Generator Tools . Xilinx. [Online]. Available:
http://www.xilinx.com/products/logicore/coregen/index.htm[8] E. Boemo, E. Juárez, and J. Meneses, “Taxonomía de multiplicadores,”
in Proc. 8th DCIS Conf., 1993, pp. 185–190.[9] J. L. Hennessy and D. Patterson,Computer Architecture: A Quantitative
Approach. San Francisco, CA: Morgan Kaufmann, 1996.
Daniel Carrica (M’84–SM’00) was born in Do-lores, Argentina, in 1958. He received the engineerdegree from the National University of Mar del Plata(UNMdP), Mar del Plata, Argentina, in 1984 andthe M.Sc. degree in electronics from the UniversidadPolitécnica de Madrid, Madrid, Spain, in 1992.
In 1984, he joined the Department of Electronics,National University of Mar del Plata (UNMdP), asa Research Assistant. From 1990 to 1991, he was anAssociate Scientist at the European Organization forNuclear Research (CERN), Geneva, Switzerland.
From 1994 to 1996, he was Head of the Department of Electronics, UNMdPwhere he is currently an Associate Professor. He is also with the Centro Australde Investigaciones Científicas (CADIC), Tierra del Fuego, Argentina. Hiscurrent research interests include motion control and power electronics.
Professor Carrica is a Vice President of the Joint Chapter of Argentina IEEESection.
Marcos A. Funes was born in Mar del Plata,Argentina in 1974. In 1999, he received his degreein electronic engineering from the UniversidadNacional de Mar del Plata (UNMdP), Argentina andjoined the Laboratorio de Instrumentación y Control,(UNMdP) as research assistant.
Since 2000, he is Assistant Professor and is cur-rently working toward his Ph.D degree at UNMdP.His current research interests include high densityprogrammable logic devices and digital signalprocessing.
Sergio A. González(M’01) was born in Mar delPlata, Argentina, in 1972. He obtained the electronicengineering degree from the National University ofMar del Plata (UNMdP), Mar del Plata, Argentina,in 1999, where he is currently working toward thePh.D. degree.
Since 1999, he has been an Assistant Professorof control systems at the School of Engineering,UNMdP. Currently, he is a Research Assistant at theLaboratorio de Instrumentación y Control, UNMdP.His research interests include hardware design,
digital signal processing, motion control and electromechanical systemsdynamics.
Mr. González is a Member of the International Federation of Automatic Con-trol.
FPGA based stepper motor controller
Sergio A. Gonzalez1, Marcos A. Funes1,2, and Daniel Carrica1,2
1 Laboratorio de Instrumentacion y ControlUniversidad Nacional de Mar del Plata, Argentina
Abstract. This paper proposes a novel stepper motor controller basedon Field Programable Gate Arrays, showing a remarkable performance.The system provides a combination between a novel algorithm developedby the authors in a previous work and programmable logic to achieveboth high speed and high precision on a compact hardware.
1 Introduction
Several motion control applications in which a load must be moved preciselyinvolve high speed positioning of stepper motors. When multiple stepper motorsmust be controlled, conventional control algorithms fail to produce a high speedstep rate. This problem arose in the simultaneous control and velocity profilegeneration of up to 6 stepper motors in the alignment system of the CERNCompact Linear Collider (CLIC) application [1–3]. The precise positioning of themotors require the use of velocity profiles, which must be adjusted to a certainperformance in speed and acceleration as well as the dynamics of the system inorder to guarantee motion without step-loss. An intelligent system carries outthe operation of calculating the index pulses through a time lagging sequencegeneration algorithm. For example, (1) and (2) express a typical algorithm for atrapezoidal profile [4].
∆t(k) =2√
V 2max − 2 (N − k − 1) a +
√V 2
max − 2 (N − 1) a(1)
V(k) =1 step∆t(k)
(2)
where V(k) is the resulting speed, Vmax is the maximum speed of the motor, N isthe total number of steps or microsteps, a is the acceleration of the trapezoidalprofile and ∆t(k) is the time of the k-th step.
⋆⋆ This work was supported by the Universidad Nacional de Mar del Plata (ING-15/G130) and the Agencia Nacional de Promocion Cientıfica y Tecnologica (BID1201/OC-AR 2002).The authors are with the Department of Electronics, Universi-dad Nacional de Mar del Plata and CONICET, Argentina.
2 Sergio A. Gonzalez, Marcos A. Funes, and Daniel Carrica
These schemes as well as the off-line ones make use of timers for obtaining theindexed pulses. Since it is necessary one timer per motor, this approach is oftendiscouraged when multiple motors have to be commanded by a single processor.
Another important disadvantage is the computing time Tc, required to com-pute (1). Tc imposes a practical limit to the speed. Moreover, not only Tc butthe timer resolution, Tr, affect the maximum speed as in (3):
Vmax =1
Tr + Tc(3)
Current timer resolutions are small enough to discard the Tr at the equation.Therefore, (3) turns into (4).
Vmax=1Tc
(4)
Standard algorithms fail to reach high speeds, mainly because the computingtime, Tc. In order to resolve Vmax the goal is to provide a new algorithm with amore effective step generation procedure without timers.
2 Proposed algorithm
The proposed algorithm was introduced in a previous work [5]. The algorithmconsists basically on a periodic accumulative sum until the intended velocityis reached. Fig. 1 shows the basic flowchart of a system that implements thisalgorithm.
From Fig. 1, ∆t(k) resolution of the new algorithm is Tc since nk is an in-teger. ∆t(k) resolution in the new algorithm arises to a velocity quantizationproblem because velocity is the inverse of ∆t(k). Since the term ∆t(k) is a mul-tiple of Tc and nk > 1, it turns out that the speed commanded has the followingcharacteristics:
Vk(n) =
1∆tk
=1
nk · Tc=
Vmax; nk = 1Vmax
2 ; nk = 2...
...Vmax
K ; nk = K
(5)
As an example, Fig. 2 shows a trapezoidal profile which starts at Vmin and hasa maximum Vmax. In order to keep track of the intended speed (in discontinuousline), the system commands an initial value of nk = 7. This results in an initialspeed of Vmax/7 which is the closest possible speed to the intended initial speed,Vmin. At t1, nk changes to 6. As a consequence a higher speed of Vmax/6 occurs.At t2, nk = 5 produces a commanded speed of Vmax/5. It then follows thatat time t6 the commanding speed is Vmax which equals the intended velocityprofile.
The quantification effect is more remarkable at higher speeds when ∆t(k)
times are smaller as Tc. The effect can also be explained since intermediate
FPGA based stepper motor controller 3
t( )=n Tk k c
t( )k
th
D
D
Fig. 1. Flow chart of the algorithm
speeds cannot take place between Vmax and Vmax/2. Neither between Vmax/2and Vmax/3, nor among Vmax/3 and Vmax/4, etc.
Therefore, the algorithm developed does not require neither timers nor look-up tables and can work at higher speeds. It’s disadvantage is the quantificationeffect which depends on the magnitude of Tc. With current DSP technology, aminimum Tc = 6µs is obtainable. This Tc magnitude produces a quantificationlevel of 2000 steps at speeds around 15000 steps
s , which shows the importance ofthe problem.
3 Hardware implementation
In order to reduce the computing time, a hardware implementation is proposed.The algorithm presented in Section 2 is simple enough to be executed by a cus-tom hardware. Hardware implementation permits multiple parallel tasks, thus,providing an effective way of implementing true parallelism which allows a greatreduction of computing time because operations such as the reference profile
4 Sergio A. Gonzalez, Marcos A. Funes, and Daniel Carrica
Fig. 2. Intended velocity profile
generation, multiplication and indexation can be executed in separate blocksand can run independently ones of the others.
The equations of Fig. 1 are replaced by (6). Although, this means no changesin the algorithm, it reduces the pair of multiplications to only one. This fact al-lows an efficient hardware implementation without performance demerit. Hard-ware implementation of Fig. 1 is presented in Fig. 3, where the block diagramof the controller is shown.
The hardware implementation of (6) is carried out by the MULTIPLIER andthe COMPARATOR.
VR · nk > 1Tc
(6)
When the inequality is satisfied, a new step is commanded. The signal is thenfed to the DRIVER INTERFACE, which commands the pulses to the driver ofeach motor phase. Fig. 3 shows a 4 phases motor.
The clock period Tc of hardware implementation is equivalent to the com-puting time in the software execution of the algorithm of Section 2. The clock
FPGA based stepper motor controller 5
period Tc defines the time resolution of the controller. As Tc can be well reducedin hardware approach, the quantization effect on the mechanical velocity will benegligible.
Standard implementation of a multiplier is accomplish by a combinatorialstructure. This approach is very good regarding the Tc time because it presentsa minimum delay imposed by the logic gates, but it involves a great number oflogic resources, which increase proportionally with the multiplier word length. Asan example, a 16×16 bits product requires the 45% of a 20000 logic gates FPGA[6] [7]. In order to overcome the FPGA area problem, a sequential architecture forthe multiplier is proposed [8] [9]. A sequential multiplier allows an effective areareduction of 10 times, but with a greater Tc, i.e. 16 clock pulses for a 16-bit wordmultiplier. However, a second approach using a fast scheme of the sequentialmultiplication (8 pulses per multiplication) achieve a Tc time of only 200 nswith a 40MHz clock. As a consequence, the quantization problem is minimizedand with the current scheme high speed profiles can be achieved to performmicrostepping applications. Also, the proposed scheme require the 12% of thelogic area allowing the implementation of several multipliers in the same FPGA.
A trapezoidal profile is generated, with several parameters, such as acceler-ation, minimum and maximum speed, and step quantity. The controller decideshow the profile must be based on these parameters, and generates a referenceprofile to drive the stepper motor.
Reference velocityprofile generator
MULTIPLIER
DRIVERINTERFACE
VRnk
COMPARATOR
V 1/TR Cx nk ³
COUNTER
ClockTc
PowerDrivers
Steppermotor
VR
x nk
16
1616
16
1/TC
Fig. 3. FPGA based control system
6 Sergio A. Gonzalez, Marcos A. Funes, and Daniel Carrica
As a conclusion, a new controller based on a novel algorithm implemented byhardware was proposed. The new system provides a good combination to achieveboth high speed and high precision motion on a compact hardware. Furthermore,this controller can easily drive full, half and micro-step mode applications due tothe flexibility and the reduced computing time with the FPGA implementation.
4 Experimental results
The alignment control system of the CERN Compact Linear Collider (CLIC),must regulate the position of the girders and quadruples with a 10µm precision,so that the trajectory of the beam evolves aligned with the axial axis of cavitiesand quadruples, despite the multiple perturbations that affect the position. Thedisplacement of girders and quadruples is performed through incremental motionmotors. The girders that support the cavities are moved by three motors, whilethe quadruples are moved by five motors, all coupled by ball and socket joints,as schematically shown in Fig. 4. In the 4 sections, there is a grand total of70 motors along a distance of 5.6m. Stepper motors are suitable for precisepositioning in CLIC since motors with small step size are commonly available.The developed algorithm was tested on a prototype hardware where 6 motorsmust be controlled simultaneously, it has communication capacity with otherhierarchic systems in order to produce the complete motion profile through allthe sections.
vertical
motor
girder
horizontal
motor
x
z
vertical
motor
vertical
motor
vertical
motor
vertical
motor
horizontal
motor
horizontal
motor
y2
y1
quadrupole
: pivot
Fig. 4. Motor layout in the girders and in the quadruples
To evaluate the performance of the system, the developed algorithm wasimplemented in a Xilinx FPGA XCS20-4. This device can run at synchronoussystem clock rates up to 80MHz and has a capacity 10000 logic gates. A hybridstepping motor was used in the experiments. Motor characteristics: 400 step
rev ,inertial moment 13 · 10−7 kg m2, Tret = 33 · 10−7 N m. No additional load wasconnected.
FPGA based stepper motor controller 7
1 2 3 4 5 60
50
100
150
Position profile
Pos
ition
, [R
EV
]
Time, [s]
1 2 3 4 5 60
20
40
60
80
Velocity profile
Spe
ed, [
RE
V/s
]
Time, [s]
Fig. 5. Position and velocity profile with the FPGA based system
The position measures were obtained through an incremental optical encoderELAP-E521 with a resolution of 1024 pulses per revolution whose inertial mo-ment is 2.5 · 10−6 kg m2. It was coupled through an HELICAL-WA25 with aninertial moment of 2.3 · 10−6 kg m2 .
The position curve was obtained by reading the encoder signal with a highresolution timer. The position was off line derived to obtain the speed profile.
The multiplier works with a 40MHz clock rate, which yield a multiplicationtime of 200 ns. was adopted, which remains negligible in relation to the motorspeed.
The stepper motor must develop a 60000 step displacement following a refer-ence trapezoidal profile with characteristics: Vmin = 500 steps
s , Vmax = 36000 stepss
and a max acceleration amax = 16000 stepss2 .
The resultant speed and position profiles can be seen in Fig. 5. The lowTc time allows an almost continuous profile and very high speeds, higher thanthose generated by standard software algorithms. Due to the characteristic ofthe profile, the stepper motor passes through resonance area [4]. This effect canbe observed at low speeds in the profiles.
8 Sergio A. Gonzalez, Marcos A. Funes, and Daniel Carrica
10 20 30 40 50 600
50
100
150
Position profile
Pos
ition
, [R
EV
]
Time, [s]
0 10 20 30 40 50 600
10
20
30
40Velocity profile
Spe
ed, [
RE
V/s
]
Time, [s]
Fig. 6. Position and velocity profile for microstepping application.
Fig. 6 shows a complete profile obtained for a microstepping application. Thestepper motor used in this experiment was a SLO-SYN KML093F14C5 whosecharacteristics are: 200 step
rev , holding torque Thold = 816N cm and a rotor inertia3.32 kg cm2. The position values were obtained through an optical incrementalencoder with a resolution of 500 pulses per revolution. The microstep drivemodule used was an SLO-SYN MD808, configured to produce 2000 pulses perrevolution. As a consequence, the system must generate a high velocity profilewith Vmax = 72000 steps
s . The Tc time adopted for the application was 200 ns inorder to reduce the speed jumps under 5 % of Vmax. This effect can be observedas a ripple component at the top of the profile.
The system achieved very high speed that was unreachable with standardalgorithms executed by a processor. Furthermore the new controller does not re-quire the timers, which are necessary in conventional systems, and the processorwas replaced by a FPGA of similar size and equivalent cost.
FPGA based stepper motor controller 9
5 Conclusions
A novel algorithm with reduced quantity of operations was introduced. This al-gorithm implemented on FPGA allows a substantial decrease of the equivalentprocessing time developed by classic velocity controllers. As a consequence, thestepper motor can reach very high speeds never obtained with standard algo-rithm based systems.
Due to the system architecture, one FPGA can drive several stepper motorssimultaneously without increasing the processing time. It can drive three steppermotors with current 10000 gates FPGAs. This advantage make the system veryconvenient since it allows the increase of the number of motors, simply using alarger FPGA.
References
1. W. Coosemans and H. Mainaud, “Pre-alignment of clic using the double-wiremethod,” European Organization of Nuclear Research (CERN), Tech. Rep. 343,July 1997, CLIC-NOTE 343.
2. H. Braun, “Experimental results and technical research and development at CTFII,”in Proc. European Particle Accelerator Conference-EPAC2000, Vienna, Austria,June 20–30, 2000, pp. 48–52. [Online]. Available: http://accelconf.web.cern.ch/accelconf/e00/
3. P. Poirier, “Lalignement dynamique submicrometrique de sections acceleratrices,”Memoire de soutenance du Diplome de Recherche Specialisee en Sciences, UniversiteLouis Pasteur de Strasbourg, September 1991.
4. T. Kenjo and A. Sugawara, Stepping Motors and their Microprocessor Controls,2nd ed., ser. Monographs in Electrical and Electronic Engineering. Oxford, U.K.:Oxford University Press, 1995.
5. D. O. Carrica and S. A. Gonzalez, “Algoritmo eficiente para la generacion de perfilesde velocidad en el accionamiento simultaneo de multiples motores paso a paso,” VIIIReunion de Trabajo en Procesamiento de la Informacion y Control., Vol. I , 1999,pp. 118–122.
6. The Programable Logic Data Book. Xilinx, 2000.7. “Core generator,” http://www.xilinx.com/products/logicore/coregen/index.htm,
2000.8. M. Funes, D. Carrica, and M. Benedetti, “Multiplicadores secuenciales para es-
tructuras FPGA,” IX Reunion de Trabajo en Procesamiento de la Informacion yControl., vol. Vol. II, pp. 646–651, 2001.
9. J. L. Hennessy and D. Patterson, Computer Architecture: A Quantitative Approach.San Francisco, California ISBN: 1-55860-329-8: Morgan Kaufmann Publishers, Inc.,1996.