Вы находитесь на странице: 1из 174

UNIVERSIDAD DE VIGO

ESCUELA TCNICA SUPERIOR DE INGENIEROS


DE TELECOMUNICACIN

PROYECTO FIN DE CARRERA

IMPLEMENTACIN EN FPGA DE UN ALGORITMO DE


MODULACIN VECTORIAL PARA CONVERTIDORES
DE POTENCIA MULTINIVEL Y MULTIFASE
APLICABLE A PROPULSIN ELCTRICA

Autor: Paula Campo Hortas


Tutores: Luis Jacobo lvarez Ruz de Ojeda
scar Lpez Snchez

CURSO 2006-2007

PROYECTO FIN DE CARRERA

IMPLEMENTACIN EN FPGA DE UN ALGORITMO DE


MODULACIN VECTORIAL PARA CONVERTIDORES
DE POTENCIA MULTINIVEL Y MULTIFASE
APLICABLE A PROPULSIN ELCTRICA
ALUMNO

Paula Campo Hortas


TUTORES

Luis Jacobo lvarez Ruz de Ojeda


scar Lpez Snchez

MIEMBROS DEL TRIBUNAL

PRESIDENTE

SECRETARIO

VOCAL

CALIFICACIN

Vigo, a ____ de _________de 2007

RESUMEN
El presente Proyecto Fin de Carrera tiene como principal objetivo la
implementacin en una FPGA de un algoritmo de modulacin multifase y multinivel
aplicable a convertidores apropiados para sistemas de propulsin elctrica de muy alta
potencia, concretamente, en el campo de la propulsin en barcos elctricos.
La tcnica de modulacin empleada es la modulacin por vector espacial
[SVPWM (Space Vector Pulse Width Modulation)] multidimensional para
convertidores electrnicos de potencia de cualquier nmero de niveles y fases. Dicha
modulacin se basa en la representacin de un sistema multifase (P fases) de tensiones
mediante vectores de dimensin P (la dimensin es acorde con el nmero de fases)
ubicados en un espacio multidimensional, y en llevar a cabo una aproximacin de
dichos vectores mediante la integracin en un nico vector de los vectores que se
encuentran en su entorno ms prximo.
Este algoritmo de modulacin destaca por su eficacia y por su bajo coste
computacional independientemente del nmero de niveles del convertidor. Adems, no
utiliza funciones trigonomtricas ni tablas de bsqueda y es apropiado para
implementaciones hardware en tiempo real.
En este proyecto, la implementacin del algoritmo se ha realizado mediante una
FPGA de Xilinx montada sobre una placa de desarrollo de Digilent. Para realizar la
implementacin se ha utilizado la herramienta de Xilinx denominada Foundation ISE.
El algoritmo se ha descrito mediante el lenguaje de descripcin hardware VHDL.
Para realizar la sntesis del cdigo VHDL se ha empleado la herramienta XST de
Xilinx y para realizar la verificacin del funcionamiento del algoritmo mediante
simulaciones, se ha utilizado la herramienta ModelSim XE III de Mentor Graphics.

PALABRAS CLAVE

Convertidores de tensin.

FPGA.

Modulacin vectorial.

Multinivel.

Multifase.

Propulsin elctrica.

PWM.

SVPWM.

VHDL.

Agradecimientos
A mis padres. Los debo mencionar en primer lugar por ser los primeros en todo.
Sin lugar a duda, son las personas ms importantes en mi vida y a las que ms cosas
tengo que agradecer.
Quiero darles las gracias por el apoyo que me han dado desde el primer da de
carrera. Gracias a sus constantes nimos, gracias a la confianza depositada en m,
gracias por no haber faltado ni un solo da durante estos aos. Sin vosotros nunca
hubiese llegado aqu. Gracias.

A mi abuela, que s que esperabas con mucha ansia que llegase este da. Espero
que ests tan orgullosa de m como yo de ti.

A mi familia. Por haberme apoyado en determinados momentos clave a lo largo


de la carrera. Especialmente, mi hermano y mi abuelo Jess.

A mis amigos. Otro punto fundamental en mi carrera. Qu sera de m sin


vosotros De verdad, muchsimas gracias por vuestro apoyo y por los buenos
momentos que me habis hecho pasar. Gracias por estar ah cada da para lo bueno y
para lo malo. Gracias por hacerme disfrutar cada maana desde el primer momento que
entraba por la puerta de la facultad. Sin vosotros, no hubiese podido guardar los
recuerdos tan bonitos que me llevo. Tras estos aos, adems de llevarme un ttulo, me
llevo unos amigos inolvidables. No creo que haya mayor recompensa que esa.

A mis nias. Por estar siempre ah y por haberme tolerado tantas pocas de
exmenes.

Por ltimo, quiero agradecer la ayuda que me han prestado para realizar este
proyecto mis tutores Jacobo y scar. Gracias a ellos, he llevado a cabo esta difcil tarea.

A mis padres

10

NDICE GENERAL
1. INTRODUCCIN Y OBJETIVOS...15

2. CONVERTIDORES MULTINIVEL....19
2.1. Introduccin a los convertidores multinivel...19
2.2. Topologas de los convertidores multinivel...21
2.2.1. Convertidores por enclavamiento de diodos...22
2.2.2. Convertidores de condensadores flotantes..23
2.2.3. Convertidores de puentes H con conexin en cascada....25
2.2.4. Equivalencias...27

3. ALGORITMOS DE MODULACIN..29
3.1. Introduccin....29
3.2. Modulacin vectorial PWM...30
3.2.1. PWM por vector espacial para convertidores trifsicos..30

4. ALGORITMO DE MODULACIN PWM POR VECTOR ESPACIAL


MULTIFASE MULTINIVEL...........................................................41
4.1. Introduccin41
4.2. Desarrollo del algoritmo.42
4.2.1. Formulacin del algoritmo..42
4.2.2. Descomposicin del algoritmo....44
4.2.3. Algoritmo multifase de dos niveles.46

5. IMPLEMENTACIN HARDWARE DEL ALGORITMO DE


MODULACIN51
5.1. Saturador....55
5.2. Modulador de 6 fases y 5 niveles...57
5.3. Generador de secuencia..84
5.4. Generador de salidas....101

11

6. VERIFICACIN DEL FUNCIONAMIENTO DEL SISTEMA DE


MODULACIN..107
6.1. Simulaciones mediante Modelsim107
6.2. Pruebas en el prototipo de laboratorio..119

7. CONCLUSIONES Y LNEAS FUTURAS127


7.1. Lneas futuras...128

APNDICES.131
A. Introduccin a las FPGAs..131
B. Familia Spartan 3 de FPGAs de Xilinx..139
C. Placa de desarrollo S3 de Digilent basada en la FPGA XC3S200 de
Xilinx.163

BIBLIOGRAFA173

12

13

14

1. INTRODUCCIN Y OBJETIVOS

La mayora de los sistemas elctricos de velocidad variable utilizan motores


trifsicos. Sin embargo, puesto que todos estos sistemas incluyen un convertidor
electrnico de potencia, el nmero de fases del motor puede ser ms de tres. Las
ventajas ms importantes de usar un motor multifase en vez de uno trifsico son:

Una mejora de la fiabilidad y una mayor tolerancia a fallos.

Mayor eficiencia.

Menor rizado y mayor densidad de par.

Menor potencia por fase, debido a una corriente por fase ms baja
sin necesidad de un aumento de la tensin.

Mayor modularidad.

Caractersticas del ruido mejoradas.

Por otra parte, la tecnologa del convertidor multinivel se basa en la sntesis de


una forma de onda de voltaje a partir de varios niveles de tensin continua. Cuando el
nmero de niveles de tensin aumenta, la seal de tensin sintetizada a la salida tiene
ms escalones, produciendo una forma de onda que aproxima mejor la referencia. Las
ventajas ms importantes de usar un inversor multinivel son:

Capacidad de manejar altas tensiones con dispositivos de voltaje


limitado.

Baja distorsin armnica.

Menores prdidas de conmutacin.

Incremento de la eficiencia.

Buena compatibilidad electromagntica.

Aunque la tecnologa multinivel, y las mquinas multifase se han estudiado


ampliamente, parece haber poca investigacin en la aplicacin de estos convertidores
multinivel a las mquinas multifase. Aqu se ha integrado un inversor multinivel con un
motor multifase demostrando que combinaba las ventajas de ambas tecnologas.
En un inversor en fuente de tensin, el mecanismo empleado para sintetizar la
tensin de salida es la modulacin. La tcnica de modulacin empleada determina el
aprovechamiento de los recursos de su bus de continua, la calidad y linealidad de la
tensin de salida, el rizado de la corriente, las perdidas de potencia de conmutacin, etc.
15

La operacin en modo conmutado de los convertidores electrnicos de potencia


ha posibilitado la obtencin de sistemas de alta eficiencia y elevada densidad de
potencia, siendo la modulacin por anchura de pulsos (PWM Pulse Width
Modulation) la tcnica

bsica de procesamiento de energa empleada en estos

convertidores.
Fue en 1986 cuando Van der Broek [2] propuso una tcnica de modulacin
avanzada conocida como modulacin por vector espacial (SVM Space Vector
Modulation), desde entonces se ha extendido el uso de esta tcnica en aplicaciones
modernas de electrnica de potencia.
La implementacin digital de la modulacin por vector espacial se basa en los
siguientes pasos:

La determinacin de la posicin del vector de referencia del


sistema de conversin de potencia.

El clculo del tiempo de aplicacin de cada uno de los vectores


generadores que aproximan la referencia.

La eleccin de la secuencia correcta de estos vectores.

La traduccin de dichos tiempos en seales de disparo para los


interruptores de potencia del convertidor.

La naturaleza relativamente compleja de estos algoritmos obliga al empleo de


sistemas digitales de procesado de seal. El continuo incremento de la velocidad de
conmutacin de los transistores de potencia y el aumento de las prestaciones de los
circuitos digitales de procesado de seal (DSPs [DSP (Digital Signal Processor)] y
FPGAs) hace que la investigacin en algoritmos de modulacin, cada vez ms rpidos
y eficientes, sea un campo en continuo desarrollo.
En este tipo de trabajos suelen emplear procesadores digitales de seal (DSP)
para la implementacin del algoritmo de control y del algoritmo de modulacin del
convertidor. Su empleo se extiende a sistemas con o sin neutro, con cargas no
equilibradas, con terceros armnicos, etc.
Sin embargo, en este proyecto, el algoritmo de modulacin se implementar en
una FPGA para descargar de dicha tarea al sistema en el que se implementar el
algoritmo de control. La FPGA empleada pertenece a la familia de bajo coste Spartan
3, fabricada por Xilinx. Para el diseo del algoritmo se emplear la herramienta
Foundation ISE de Xilinx para sntesis de sistemas digitales con FPGAs.

16

En este proyecto el algoritmo de control se implementar en un microprocesador


Power-PC, con la ayuda de la herramienta DSPACE para ordenadores personales y una
placa de desarrollo basada en un Power-PC ms un DSP.
Por tanto, podemos decir que los objetivos del presente proyecto son:

Disear un algoritmo de modulacin vectorial para un convertidor

continua-alterna de 5 niveles y 6 fases.

Disear la implementacin hardware del algoritmo anterior,

mediante el lenguaje de descripcin hardware VHDL.

Sintetizar e implementar la descripcin en VHDL del algoritmo

mediante la herramienta Foundation ISE de Xilinx, para obtener el archivo


necesario para programar el algoritmo en la FPGA elegida.

Simular el funcionamiento del algoritmo mediante el programa

Modelsim.

Comprobar el funcionamiento del algoritmo en una aplicacin

real en el laboratorio. La comprobacin se realiza conectando la placa de


desarrollo basada en la FPGA al convertidor real.

17

SISTEMAS DE PROPULSIN ELCTRICA


Los convertidores multinivel multifase son buenos candidatos para el uso en
sistemas de propulsin de muy alta potencia, tales como la propulsin elctrica de
barcos.
Para controlar la velocidad del barco, hay que controlar la velocidad del motor.
Y para ello, es necesario un sistema de control de velocidad para poder inyectar
corrientes de frecuencia variable.
La figura 1.1 muestra el diagrama de bloques de control de velocidad tpico para
un motor de seis fases donde la diferencia entre la velocidad de referencia y la velocidad
actual determina las corrientes del motor. Las tensiones de referencia del motor son
generadas por el regulador de corriente basado en la diferencia obtenida entre las
corrientes demandadas y las corrientes de referencia. El bloque modulador PWM
generar las seales de control apropiadas para que sintetice esta referencia de tensin.

Figura 1.1. Arquitectura de control del sistema a disear.

El presente proyecto se ocupa del diseo y de la implementacin del bloque


PWM que se basa en un algoritmo de modulacin por vector espacial, donde, a partir de
las tensiones de referencia se generan las seales de disparo de los transistores que
forman el convertidor.

18

2. CONVERTIDORES MULTINIVEL
2.1. Introduccin a los convertidores multinivel
Los convertidores multinivel en fuente de tensin ofrecen beneficios en
aplicaciones de alta potencia, siendo la ms importante la capacidad de sintetizar formas
de onda de tensiones con

contenidos armnicos ms bajos que los convertidores

CC/CA de dos niveles. La forma ms fcil de entender los convertidores CC/CA


multinivel consiste en considerarlos como sintetizadores de tensin. La tensin alterna
de salida de valor elevado, se sintetiza a partir de diferentes niveles de tensin continua
de entrada, de valor ms pequeo, secuenciando adecuadamente el accionamiento de los
interruptores del convertidor.
Las caractersticas funcionales de los CC/CA multinivel le otorgan una serie de
ventajas, as, la disposicin de la tensin continua de entrada en mltiples niveles
permite aumentar varias veces la tensin de trabajo del convertidor. El empleo de
mayores tensiones permite aumentar la potencia del convertidor sin necesidad de
incrementar la corriente, conteniendo las perdidas en conduccin y, por tanto,
mejorando el rendimiento del convertidor. Estos convertidores presentan frecuencias
efectivas de conmutacin a la salida ms altas que los convertidores convencionales de
dos niveles, ya que optimizando adecuadamente la estrategia de control, se puede
reducir notablemente la frecuencia individual de conmutacin de cada interruptor, lo
que implica una disminucin de las prdidas de conmutacin y el consiguiente aumento
de la eficiencia. La tensin de salida obtenida con un convertidor CC/CA multinivel
presenta un contenido armnico inferior a la obtenida con un convertidor CC/CA
convencional de potencia equivalente; por ltimo, mencionar que la corriente de entrada
absorbida presenta una distorsin armnica baja. En definitiva, de modo general podra
decirse que con los convertidores multinivel se consiguen mejores formas de onda de
tensin y corriente de salida al aumentar el nmero de niveles de tensin continua. Otro
punto a favor de las tecnologas multinivel es su contribucin a la reduccin de la
polucin armnica en la red, tan demandada en los ltimos tiempos por gobiernos e
instituciones, con el objeto de preservar la calidad de la red.
Como inconvenientes de estos equipos convertidores est la necesidad de
emplear un nmero elevado de interruptores, que incrementan la complejidad del
sistema. Es necesario disponer de diferentes niveles de tensin continua de entrada, que
19

han de obtenerse mediante varias fuentes de tensin o bien mediante el empleo de


condensadores.
Dos factores, al margen de otros, se han mostrado como fundamentales en el
desarrollo de la tecnologa de los convertidores multinivel. Por un lado el avance de la
tecnologa de materiales semiconductores (IGBTs, IGCTs, etc.) han posibilitado la
realizacin de convertidores multinivel con mejores prestaciones en potencia y
frecuencia de conmutacin. Por otro lado debido a la complejidad de los algoritmos de
control y modulacin de este tipo de convertidores ha sido fundamental el fuerte
desarrollo experimentado por los sistemas digitales configurables y de proceso de seal
(DSPs, FPGAs, PLDs), cada vez con ms capacidad de clculo, mayor velocidad de
proceso, elevado nmero de perifricos integrados y bajo coste.

Figura 2.1. Sistema de convertidor multinivel.

En la figura 2.1 se representa un convertidor multinivel donde el modulador


determina el estado de los interruptores del convertidor.
La figura 2.2 muestra las distintas formas de onda de la tensin que se obtienen
cuando el nmero de niveles empleados es 2, 3, 5 y 9, respectivamente.

20

Figura. 2.2. Tensin de salida para distintos nmeros de niveles.

2.2. Topologas de los convertidores multinivel


Actualmente el desarrollo de los convertidores multinivel se centra en tres
topologas bsicas, aunque existen otras muchas:

Convertidor por enclavamiento de diodos (Diode-Clamped Converter).

Convertidor con condensadores flotantes (Flying-Capacitor Converter).

Convertidor de puentes H con conexin en cascada (Cascade Full-Bridge

Converter).

CONVERTIDORES MULTINIVEL

CONVERTIDOR
POR
ENCLAVAMIENTO
DE DIODOS

CONVERTIDOR
CON
CONDENSADORES
FLOTANTES

CONVERTIDOR
DE PUENTES H
CON CONEXIN
E N CA S CA D A

OTRAS
TOPOLOGAS

Figura 2.3. Clasificacin de los convertidores multinivel.


El algoritmo de modulacin diseado funciona para cualquiera de estas
topologas dadas, aunque en el laboratorio para las pruebas, como se explicar
posteriormente, hemos utilizado un convertidor de puentes H con conexin en cascada.
A continuacin, vamos a mostrar la topologa de cada tipo de convertidor junto
con una tabla que nos proporcionar los niveles de tensin que se obtienen segn las
21

seales de disparo que reciba. Tablas fundamentales para el desarrollo del algoritmo,
pues nos proporcionarn las seales de disparo que se deben generar segn el nivel de
tensin que se quiera alcanzar.

2.2.1. Convertidores por enclavamiento de diodos


Un convertidor por enclavamiento de diodos de n niveles divide el bus de
continua por medio de n-1 condensadores produciendo n niveles de tensin.
La figura 2.4 muestra una fase de esta topologa para el caso de cinco niveles.
En esta representacin, la nomenclatura

Ti a

es usada para identificar los

semiconductores as como los posibles niveles lgicos que los interruptores pueden
tomar (1=on y 0=off).

Figura 2.4. Topologa de una fase de un convertidor por enclavamiento de diodos para cinco
niveles

La tabla 2.1 muestra los posibles niveles, estado de los interruptores y las
tensiones de salida correspondientes para el convertidor de la figura 2.4.

22

TABLA 2.1
Accionamiento de interruptores para el convertidor por enclavamiento de diodos de cinco niveles

sa

T1a

T2a

T3a

T4a

Vsa

Vsa (*)

VC1

VC1 + VC2

2Vdc

VC1 + VC2 + VC3

3Vdc

VC1 + VC2 + VC3 + VC4

4Vdc

Vdc

(*)VC = Vdc / i = 1, 2,3, 4


i

2.2.2. Convertidores de condensadores flotantes


El nivel de tensin en este tipo de convertidores es similar al existente en el
convertidor por enclavamiento de diodos. La tensin de fase de un convertidor de n
niveles tiene a su vez n niveles de salida incluyendo el nivel de referencia, y la tensin
de lnea tiene (2n-1) niveles.
La figura 2.5 muestra la estructura de una fase de esta topologa para el caso de
cinco niveles.

Figura. 2.5. Topologa de una fase de un convertidor de condensadores flotantes para


cinco niveles.

23

La tabla 2.2 muestra los posibles niveles, estado de los interruptores y las
tensiones de salida correspondientes para el convertidor de la figura 2.5.
TABLA 2.2
Accionamiento de interruptores en un convertidor de condensadores flotantes de cinco niveles.

sa

T1a

T2a

T3a

T4a

Vsa

VC a

Vsa (*)
0

Vdc

VC a VC a

Vdc

VC a VC a

Vdc

VC a VC a

Vdc

VC a

2Vdc

VC a VC a + VC a

2Vdc

VC a VC a + VC a

2Vdc

VC a VC a

2Vdc

2Vdc

VC a VC a

2Vdc

VC a

3Vdc

VC a VC a + VC a VC a
4

VC a VC a + VC a

3Vdc

VC a VC a + VC a

3Vdc

VC a VC a

3Vdc

VC a

4Vdc

(*)VC a = iVdc / i = 1, 2, 3, 4
i

24

2.2.3. Convertidores de puentes H con conexin en cascada


(Cascade Full-Bridge Converter)
Esta topologa se basa en la conexin en serie de inversores monofsicos con
fuentes de alimentacin continua independientes.
Dado que cada etapa puede generar tres tensiones a su salida (Vdc, 0, -Vdc), la
suma de stas genera una tensin de salida VFn que puede tomar cinco valores distintos
(2 Vdc, Vdc, 0, -Vdc, -2 Vdc).
La figura 2.6 muestra la estructura de una fase de esta topologa para el caso de
cinco niveles.

Figura 2.6. Topologa de una fase de un convertidor de cinco niveles con puentes H con
conexin en cascada

La tabla 2.3 muestra los posibles niveles, estado de los interruptores y las
tensiones de salida correspondientes para el convertidor de la figura 2.6.

25

TABLA 2.3
Accionamiento de interruptores en convertidor de puentes H con conexin en cascada de cinco niveles.

sa

TLa1

TLa2

TRa1

TRa2

Vsa

Vsa (*)

Vdca 2 Vdca 1

2Vdc

Vdca 2

Vdc

Vdca 1

Vdc

Vdca 2

Vdc

Vdca 1

Vdc

Vdca 1 Vdca 2

Vdca 2 Vdca 1

Vdca 1

Vdc

Vdca 2

Vdc

Vdca 1

Vdc

Vdca 2

Vdc

Vdca 2 + Vdca 1

2Vdc

w1 (*)Vdcia = Vdc / i = 1, 2,3, 4

26

2.2.4. Equivalencia entre convertidores


TABLA 2.4
Equivalencia entre el estado de los interruptores en un convertidor de condensadores flotantes y un
convertidor de puentes H con conexin cascada
Convertidor de condensadores flotantes

sa

T1a

T2a

T3a

T4a

TLa1

TLa2

T R1

T R2

sa

Convertidor de puentes H con conexin cascada

27

28

3. ALGORITMOS DE MODULACIN

3.1. Introduccin
El objetivo de este apartado es mostrar una panormica de las estrategias de
conmutacin multinivel ms empleadas, centrndose en la modulacin concreta
empleada en nuestro caso.
La eleccin de una tcnica de modulacin u otra depende de los factores que
caractericen la aplicacin, como son, entre otros:

Nivel de potencia a controlar

Dispositivos semiconductores empleados

Requisitos de la carga

Caractersticas de la forma de onda de salida (distorsin,

amplitud, frecuencia, etc.)


La figura 3.1 muestra una clasificacin de las estrategias de conmutacin
empleadas en los convertidores multinivel, en funcin de la frecuencia de conmutacin
de los interruptores.
Los objetivos principales de las estrategias de conmutacin para convertidotes
CC/CA son, aparte de regulacin de la amplitud y frecuencia de salida, la minimizacin
de los contenidos armnicos de la tensin de salida del inversor y el equilibrado de las
tensiones instantneas de las capacidades del convertidor, si la topologa del convertidor
as lo requiere.

Figura 3.1. Clasificacin bsica de los mtodos de modulacin multinivel.

29

3.2. Modulacin vectorial PWM


En este proyecto, se va a utilizar la tcnica de modulacin por ancho de pulso
por vector espacial SVPWM (Space Vector Pulse Width Modulation) generalmente
llamada modulacin vectorial. Su principal caracterstica es que se sustituye todo el
sistema multifase por un solo vector en el que la amplitud de la onda de tensin queda
reflejada en el mdulo del vector y la frecuencia queda reflejada en su velocidad de
giro. Esto permite emplear dicho vector para estudiar tanto los regmenes estacionarios
como los regmenes dinmicos en dichos sistemas.
La modulacin vectorial o SVPWM de convertidores en fuente de tensin VSC
(Voltage Source Converter) constituye una poderosa herramienta para el desarrollo y
control de los convertidores de continua a alterna (inversores) y de los convertidores de
alterna a continua (rectificadores).
La modulacin basada en los vectores espaciales de tensin SVPWM es bien
conocida y ampliamente utilizada en convertidores CC/CA convencionales (que son los
trifsicos-multinivel). Si bien, en sistemas multifase su aplicacin est poco extendida
debido a la complejidad de los algoritmos SVPWM clsicos.
En la modulacin por vector espacial cada uno de los posibles estados del
convertidor se representa mediante un vector de tensin, y el conjunto de todos estos
vectores de estado configura el diagrama vectorial de tensiones del convertidor.
La modulacin SVPWM multifase usa vectores de dimensin superior a tres,
difciles de representar sobre el plano. Por tanto, para hacer una explicacin ms
intuitiva y para una mejor comprensin, vamos a proceder a la explicacin de los
conceptos bsicos de la modulacin vectorial para el caso de los convertidores
trifsicos.

3.2.1. PWM por vector espacial para convertidores trifsicos.


A. Principios bsicos de la modulacin por vector espacial
La tcnica de modulacin por vector espacial se basa en la representacin del
sistema trifsico de tensiones de referencia por medio de un vector o fasor espacial, el
cual gira con la misma velocidad angular que los vectores que lo definen.
Sea un sistema trifsico de tensiones figura 3.2, donde se cumplen las siguientes
igualdades:

30

Va = V sen( w1 t )
V = V sen( w t 120 )
b

(3.1)

Vc = V sen( w1 t 240 )

Figura. 3.2

Se define el vector espacial de este sistema trifsico por la expresin (3.2).


2
V = (Va + aVb + a 2 Vc )
3

(3.2)

2
j
3

a=e
El vector espacial queda definido en el plano por su componente sobre el eje real V , y
su componente sobre el eje imaginario V , figura 3.3.

Figura 3.3

La actuacin sobre los transistores del rectificador se har de tal forma que las
tensiones de entrada al mismo, Va , Vb , Vc , sigan a las tensiones de referencia Va* , Vb* , Vc*
Tanto el sistema trifsico de tensiones de entrada como de tensiones de
referencia, puede ser representado por el vector espacial correspondiente V o V * .

31

Este principio bsico, es igualmente aplicable a rectificadores e inversores


trifsicos tanto en fuente de corriente como en fuente de tensin.
En la modulacin clsica se dispone de tres referencias, una por fase y se
controlan los interruptores de cada una de las ramas de forma independiente a los de las
otras.
En un convertidor trifsico, un cambio en una rama del puente afecta a la tensin
de las otras dos ramas. Con la modulacin clsica sta situacin ni sus consecuencias
son tenidas en consideracin, ya que cada rama conmuta de forma independiente con
respecto a las otras dos.
Como consecuencia de lo expuesto anteriormente, sera interesante analizar el
sistema trifsico de referencia en su conjunto y no como tres sistemas monofsicos
independientes.
Con el control por vector espacial se controlan las tres ramas conjuntamente a
partir de la posicin del vector espacial de referencia. Una vez determinado el vector
espacial de referencia, y dependiendo del estado presente de los interruptores se acta
sobre dichos interruptores.

B. Modulacin por vector espacial en un convertidor en fuente de tensin.


En la figura 3.4 se presenta un convertidor en fuente de tensin trabajando como
inversor.

Figura 3.4

Dependiendo del estado de los dispositivos de potencia (corte o saturacin), se


pueden presentar ocho situaciones diferentes, figura 3.5.
Se ha representando el estado de los transistores de una rama por medio de una
variable binaria i (i = a, b, c), de forma tal que cuando el transistor superior de la rama i
est en saturacin i = 1, cuando el transistor inferior de la rama i est en saturacin

32

i=0. Teniendo en cuenta la variable binaria i que define el estado de una rama y la
figura 3.5, en la tabla 3.1 se muestra el estado del inversor en funcin de i.
A partir del inversor representado en la figura y teniendo presente la definicin
de la variable i se obtienen las siguientes expresiones.
Van = a Vdc + VNn
Vbn = b Vdc + VNn

(3.3)

Vcn = c Vdc + VNn


Para un sistema equilibrado de tensiones se tiene:
Van + Vbn + Vcn = 0 = ( a + b + c ) Vdc + 3VNn
(3.4)
A partir de (3.4) se obtiene (3.5).
1
VNn = ( a + b + c ) Vdc
(3.5)
3
A partir de las ecuaciones obtenidas anteriormente la tensin de entrada por fase
del convertidor se expresa en (3.6).
1
Van = ( a ( a + b + c )) Vdc
3
1
Vbn = ( b ( a + b + c )) Vdc
3
1
Vcn = ( c ( a + b + c )) Vdc
3

(3.6)

Tabla 3.1

Estado del inversor

Valor de [ a , b , c ]

[ a , b , c ] = [1, 0, 0]

[ a , b , c ] = [1,1, 0]

[ a , b , c ] = [0,1, 0]

[ a , b , c ] = [0,1,1]

[ a , b , c ] = [0, 0,1]

[ a , b , c ] = [1, 0,1]

[ a , b , c ] = [1,1,1]

[ a , b , c ] = [0, 0, 0]

33

Figura 3.5

En la tabla 3.2 se representa el valor de la tensin de fase de entrada Va , Vb , Vc ,


para cada uno de los ocho posibles estados del rectificador; tambin se obtienen las
componentes sobre el eje real e imaginario del vector espacial V, V .
La relacin que liga las componentes real e imaginaria del vector espacial con
las componentes trifsicas viene dada por la transformacin de Clarke (3.7).

1
1

V
2
2

=
3 0
3
V

1 V
a
2
Vb
3
V

2 c

(3.7)

34

Tabla 3.2

Estado
del
inversor

Patrn de
conmutacin
[ a , b , c ]

Van

Vbn

Vcn

[ a , b , c ] = [1, 0, 0]

2
Vdc
3

1
Vdc
3

1
Vdc
3

[ a , b , c ] = [1,1, 0]

1
Vdc
3
1
Vdc
3
2
Vdc
3

1
Vdc
3
2
Vdc
3
1
Vdc
3

2
Vdc
3
1
Vdc
3
1
Vdc
3

1
Vdc
3
2
Vdc
3
0

2
Vdc
3
1
Vdc
3
0

[ a , b , c ] = [0,1, 0]

[ a , b , c ] = [0,1,1]

[ a , b , c ] = [0, 0,1]

[ a , b , c ] = [1,1,1]

1
Vdc
3
1
Vdc
3
0

[ a , b , c ] = [0, 0, 0]

[ a , b , c ] = [1, 0,1]

2
Vdc
3
Vdc

Vdc

Vdc

Vdc

2
0

2
Vdc
3
V
dc
6
Vdc
6
0
0

Vdc

Vdc

2
2
0
0

Los ocho posibles estados del inversor son representados en el diagrama


vectorial de la figura 3.6, las componentes del vector espacial sobre el eje real e
imaginario estn detalladas en la tabla 3.2.
Se puede apreciar que hay dos vectores nulos correspondientes a los estados
siete y ocho del convertidor, adems hay seis vectores no nulos que forman los ejes del
hexgono, cuyo valor en mdulo con la transformacin de Clarke elegida viene dada
por la siguiente ecuacin:

V =

2
Vdc
3

(3.8)

Los ocho vectores son denominados vectores espaciales bsicos. Los seis
vectores no nulos definen seis sectores cada uno de ellos de 60.

35

Figura 3.6

El objetivo de la modulacin por vector espacial es aproximar el vector tensin


de referencia por una combinacin de los ocho vectores bsicos que estn definidos por
los ocho posibles estados del convertidor.
La modulacin ptima se obtendr cuando se consiga aproximar al mximo la
tensin de entrada con su componente fundamental. sto se consigue cuando se
cumplan los siguientes puntos:

El periodo de conmutacin es mucho menor que el periodo de la

componente fundamental.

nicamente se utilizan los vectores bsicos adyacentes al vector

de referencia.

La secuencia de vectores bsicos tendr un orden adecuado para

minimizar el nmero de conmutaciones de los transistores.


Sea el sistema trifsico de tensiones de referencia Va* , Vb* , Vc* , cuyo vector
espacial es el vector V * de la figura 3.7.
En el instante analizado el vector espacial se encuentra en el sector I formando
un ngulo con el vector bsico V1, tal como se indica en la figura 3.13. En esta
situacin y para cumplir con los puntos anteriormente enumerados, la secuencia de
vectores bsicos en un periodo partiendo de un vector bsico nulo ha de ser: V8 , V1 , V2 ,
V7 , V 2 , V 1 , V 8 .

36

Figura 3.7

En la figura 3.8 se representa el patrn de conmutacin [a, b, c]


correspondiente al vector V * en esta situacin en funcin del tiempo para un periodo de
conmutacin.

Figura 3.8

En la tabla 3.3 se expresan los estados del rectificador, los vectores bsicos
asociados a cada uno de estos estados y la duracin de los mismos para la mitad del
periodo de conmutacin.

37

Tabla 3. 3. Correspondiente al sector I

Estado del
inversor
8

Vector bsico

Duracin

V8

T0 / 2

V1

T1

V2

T2

V7

T0 / 2

Asumiendo que la frecuencia de conmutacin es mucho mayor que la frecuencia


a la que gira el vector espacial, se puede asumir que durante un periodo de conmutacin
el vector espacial mantiene constante su posicin. En esta situacin el valor medio del
vector espacial se puede expresar en funcin de los vectores bsicos (3.9), donde se
utiliza nicamente la mitad del periodo de conmutacin.

V* =

T
T
1
(V8 0 + V1 T1 + V2 T2 + V7 0 )
(3.9)
T
2
2
( )
2
Teniendo en cuenta que V8 y V7 son vectores nulos, la ecuacin anterior se puede

expresar de la siguiente manera.


V* =

1
(V1 T1 + V2 T2 )
(3.10)
T
( )
2
Proyectando los vectores bsicos y el vector de referencia sobre los ejes alfa y

beta, la ecuacin anterior se convierte en

V * cos

T
2
2
=
Vdc T1 +
Vdc cos(60 ) T0
2
3
3

T
2
=
Vdc s en(60 ) T2 int eg
2
3
vr = vi + v f / vi = integ(vr ) P

V * sen

V * cos

T
2
2
=
Vdc T1 +
Vdc cos(60 ) T2
2
3
3

(3.11)

T
2
V sen =
Vdc s en(60 ) T2
2
3
*

Despejando T1 y T2 se obtiene

38

T1 =

T2 =

T0 =

V*
2
Vdc
3
V*

T se n(60 )

2 se n(60 )

T
se n( )

2 2 se n(60 )

(3.12)

2
V
3 dc
Y finalmente T0 es igual a
T
T1 T2
2

(3.13)

39

40

4. ALGORITMO DE MODULACIN PWM POR VECTOR


ESPACIAL MULTIFASE MULTINIVEL
Una vez vistos los principios bsicos sobre la modulacin vectorial para
convertidores de potencia, procedemos a describir en el presente captulo el algoritmo
de modulacin que ser implementado fsicamente mediante un dispositivo de lgica
programable FPGA.

4.1. INTRODUCCIN
La mayora de los sistemas elctricos de velocidad variable utilizan motores
trifsicos. Sin embargo, puesto que todos estos sistemas incluyen un convertidor
electrnico de potencia, el nmero de fases del motor puede ser ms de tres.
Las ventajas ms importantes de usar un motor multifase en vez de uno trifsico son:

Una mejora de la fiabilidad y una mayor tolerancia a fallos.

Mayor eficiencia.

Menor rizado y mayor densidad de par.

Menor potencia por fase, debido a una corriente por fase ms baja
sin necesidad de aumentar la tensin.

Mayor modularidad.

Caractersticas del ruido mejoradas.

Por otra parte, la tecnologa del convertidor multinivel se basa en la sntesis de


una forma de onda de voltaje a partir de varios niveles continuos de tensin. Cuando el
nmero de niveles de tensin aumenta, la seal de tensin sintetizada a la salida tiene
ms escalones, produciendo una forma de onda que aproxima la referencia. Las ventajas
ms importantes de usar un inversor multinivel son:

Capacidad de manejar altas tensiones con dispositivos de voltaje


limitado.

Baja distorsin armnica.

Menores prdidas de conmutacin.

Incremento de la eficiencia.

Buena compatibilidad electromagntica.

41

Aunque la tecnologa multinivel, y las mquinas multifase, se han estudiado


ampliamente, parece haber poca investigacin en la aplicacin de estos convertidores
multinivel a las mquinas multifase.
Recientemente ha sido demostrado que la integracin de un inversor multinivel
con un motor multifase combina las ventajas de ambas tecnologas.
El algoritmo implementado en el presente proyecto es un algoritmo
multidimensional SVPWM para convertidores multifase multinivel. Este algoritmo est
formulado en un espacio multidimensional y se puede utilizar con convertidores con
cualquier nmero de niveles o fases. Es importante destacar que el coste de clculo del
mtodo es bajo e independiente del nmero de niveles del convertidor. Adems, no
utiliza funciones trigonomtricas ni tablas de bsqueda y es apropiado para
implementaciones hardware en tiempo real.
La tcnica propuesta optimiza la secuencia de conmutacin minimizando el
nmero de conmutaciones en sistemas de multifase multinivel.
El algoritmo propuesto ha sido probado con xito tanto por simulacin como
usando un prototipo de laboratorio como comprobaremos en un posterior captulo
analizando los resultados obtenidos de las pruebas.
Es importante destacar que este es el primer algoritmo SVPWM propuesto para
sistemas multifase multinivel apropiado para implementaciones en tiempo real.

4.2. DESARROLLO DEL ALGORITMO


4.2.1. Formulacin del algoritmo
Debido al hecho de que los estados de conmutacin de cualquier topologa de
convertidor de potencia es un conjunto discreto de estados, el SVPWM se utiliza para
aproximar un vector de tensin de referencia Vr por medio de una secuencia de vectores
espaciales Sl = {Vg1,Vg 2, ..., Vgl } durante cada ciclo de modulacin. Para lograr una sntesis
apropiada del vector de referencia, cada vector generador Vgk debe ser aplicado durante
un intervalo Tk de acuerdo con la siguiente ley de modulacin:
l

Vr = Vgk Tk

(4.1)

k =1

donde la suma de los intervalos debe ser igual al periodo de modulacin T:


l

T
k =1

=T

(4.2)

42

El vector de referencia indica la tensin de referencia para cada una de las fases
del convertidor, mientras que cada vector generador indica el estado de conmutacin de
cada fase del convertidor.
T

Vr = Vr1 , Vr2 ,..., VrP P


T

Vgk = Vgk1 , Vgk2 ,..., VgkP P

(4.3)
(4.4)

Por lo tanto, el vector de referencia y los vectores generadores pertenecen al


espacio multidimensional P , donde P es el nmero de fases del convertidor.
En la mayora de los convertidores multinivel ms habituales, tales como el
convertidor por enclavamiento por diodos, el convertidor de condensadores flotantes o
los convertidores de puente H en cascada, el nivel de salida de cada fase Vg es un
mltiplo entero del escaln de tensin VDC .
VDC = nVDC / n

(4.5)

Por lo tanto, los vectores y los tiempos de conmutacin se pueden escalar usando
el paso de tensin y el perodo de conmutacin respectivamente para adimensionalizar
las ecuaciones (7.1) y (7.2):
Vr
P
VDC

vr =

vgk =

Vgk
VDC

tk =

Tk
T

(4.6)

(4.7)

(4.8)

Es importante destacar que los nuevos vectores generadores adimensionales vgk


pertenecen al espacio vectorial P .
Sustituyendo las expresiones anteriores en las ecuaciones (4.1) y (4.2), la ley de
modulacin puede ser rescrita en trminos de las nuevas variables adimensionales
como:
l

vr = vgk tk

(4.9)

k =1

t
k =1

=1

(4.10)

Si se expresan los vectores de referencia y de conmutacin como sigue:


43

vr = v1r , vr2 ,..., vrP

2
vgk = v1gk , vgk
,..., vgkP

(4.11)
T

(4.12)

Entonces las ecuaciones (4.9) y (4.10) pueden ser rescritas en forma matricial
como:

1 1
1 1
vr vg 1
v 2 = v 2
r g1

P v P
vr g 1

1
vg 12
vg 22

vg 2P

1
t
vg 1l 1
t
vg l2 2


t
P
vg l l

(4.13)

El sistema anterior de ecuaciones lineales constituye la ley de modulacin, la


cual debe ser resuelta por el algoritmo multifase multinivel SVPWM. La solucin a este
sistema incluye tres pasos principales:
1.

Rellenar de forma adecuada la matriz de coeficientes con


nmeros enteros.

2.

Calcular los tiempos de conmutacin resolviendo el sistema lineal

3.

Extraer la secuencia de vectores espaciales a partir de los


coeficientes de la matriz.

El algoritmo multinivel SVPWM puede ser simplificado mediante su


descomposicin en la suma de un desplazamiento y un sistema de dos niveles SVPWM
con el mismo nmero de fases.

4.2.2. Descomposicin del algoritmo


Descomponiendo el vector de referencia en la suma de su parte entera y su parte
decimal:

vr = vi + v f / vi = integ(vr ) P

(4.14)

44

El nuevo vector vi pertenece al mismo espacio P que los vectores generadores


( vgk ), por lo que podra ser sintetizado directamente con uno de ellos. La parte decimal
de vr todava pertenece al espacio P y no se puede sintetizar directamente mediante
un solo vector generador ( vgk ), sino que ha de ser generado como una secuencia de
vectores, pero teniendo en cuenta que ahora las componentes del vector de referencia
estn acotadas en el intervalo [0, 1).
Por otra parte, desplazando todos los vectores de conmutacin la distancia dada
por vi se obtiene un nuevo sistema de vectores de conmutacin:
vdk = vgk vi

(4.15)

Expresando estos vectores como:


vi = vi1 , vi2 ,..., viP

v f = v1f , v 2f ,..., v Pf

(4.16)

vdk = v1dk , vdk2 ,..., vdkP

(4.17)
T

(4.18)

Y substituyendo la ecuacin (4.15) en (4.13), se obtiene la nueva expresin para


la ley de modulacin:

1 0 1
1 1 1
vr vi vd 1
v 2 = v 2 v 2
r i d1

P P v P
vr vi d 1

1 1
t1
vd 12 vd 1l
t
vd 22 vd l2 2


t
vd 2P vd lP l

(4.19)

Finalmente escribiendo la ecuacin (6.14) como:

1 0 1
1 1 v1
vr vi f
v 2 = v 2 + v 2
r i f

P P P
vr vi v f

(4.20)

Y comparando las ecuaciones (4.19) y (4.20) se obtiene la siguiente relacin


entre la parte decimal de la referencia y los vectores de conmutacin desplazados:

45

1 1
1 1
v f vd 1
v 2 = v 2
f d1

P P
v
v f d 1

vd 12
vd 22

vd 2P

1
t1
vd 1l
t2
vd l2


t
vd lP l

(4.21)

Este nuevo sistema de ecuaciones tiene la misma forma que la ley general
modulacin (4.13). Pero, en este caso, las componentes del vector v f estn acotadas al
intervalo [0, 1) y, por lo tanto, slo el subconjunto de vectores generadores con los
componentes cero o uno es suficiente para realizar la aproximacin de la referencia.
Consecuentemente, esta nueva ecuacin representa un modulador de dos niveles donde
el vector de referencia es v f y el campo de vectores generadores es el sistema de
vectores generadores vdk desplazado.
Resumiendo, la ecuacin (4.19) demuestra que un modulador SVPWM multifase
multinivel se puede realizar a partir de la suma de un desplazamiento y de un SVPWM
de dos niveles con el mismo nmero de fases. La figura 4.1 muestra un diagrama de
bloques del modulador implementado.

Figura 4.1. Diagrama de bloques del SVPWM multifase multinivel

4.2.3. Algoritmo multifase de dos niveles


Una vez que se ha descompuesto el problema, el algoritmo multifase de dos
niveles de SVPWM ha de cumplir la ley de modulacin dada en (4.21). Para obtener un
sistema exactamente determinado de ecuaciones lineales, la matriz de coeficientes de

46

esa ley de modulacin debe ser una matriz cuadrada. Por lo tanto, la longitud de la
secuencia del vector de conmutacin Sl es:
l = P +1

(4.22)

Y el sistema lineal particular que ha de ser resuelto es el siguiente:

1 1
1 1
v f vd 1
v 2 = v 2
f d1

P P
v
v f d 1

1
d2
2
d2

P
d2

1
t1
vd 1P +1
t
vd 2P +1 2


t
vd PP +1 P +1

(4.23)

El objetivo del algoritmo de modulacin de dos niveles es encontrar una


secuencia de vectores de conmutacin. Para ello, la matriz de coeficientes del sistema
(4.23) ha de rellenarse con nmeros enteros que permitan una posterior resolucin del
sistema. Ha de tenerse en cuenta que el sistema lineal representa un modulador de dos
niveles, por lo tanto, solamente los valores cero y uno pueden ser utilizados como
nmeros enteros para completar la matriz de coeficientes. Adems, la seleccin de los
coeficientes debe ser hecha teniendo en cuenta que los tiempos de conmutacin deben
ser siempre nmeros positivos.
Hay mltiples posibilidades para rellenar la matriz de coeficientes. Sin embargo,
la seleccin de estos coeficientes tiene una incidencia directa en el funcionamiento del
sistema de potencia. As, las prdidas de conmutacin se reducen si los valores de los
coeficientes se eligen de manera que los vectores de conmutacin consecutivos de la
secuencia sean adyacentes. Es decir, solamente un coeficiente es diferente en dos
columnas consecutivas de la matriz. El mtodo empleado para el clculo de los
coeficientes se explica a continuacin.
La ecuacin (4.23) se puede escribir de una forma simplificada como:

1
v = Dt
f

(4.24)

Calculando una matriz de permutacin P que ponga los elementos del vector de
referencia v f en orden ascendente:

1 1
P =
v f v f

(4.25)

donde

47

1 > v1f v kf 1 v kf v Pf 0

(4.26)

Y multiplicando ambos lados de la ecuacin (4.24) por esta matriz P de


permutacin se obtiene la ecuacin siguiente:

1
v = D t
f

(4.27)

D = PD

(4.28)

donde

Una matriz de coeficientes D que hace este nuevo sistema de ecuaciones


lineales exactamente determinado, con las columnas consecutivas adyacentes, es la
matriz triangular superior siguiente:

1 1 1 1
1 1 1

D =

0
1

(4.29)

Adems, como se ver luego, los tiempos de conmutacin obtenidos con esta
matriz de coeficientes son siempre positivos.
Una matriz de permutacin es siempre una matriz ortogonal inversible y su
inversa es la matriz traspuesta
P 1 = PT

(4.30)

Por lo tanto, la matriz de coeficientes D de la ley de modulacin de dos niveles,


puede ser obtenida resolviendo (4.28) como:
D = PT D

(4.31)

La matriz de permutacin aplica una serie de operaciones elementales por filas


al vector columna v f . De la misma forma, la matriz PT aplica el conjunto inverso de
operaciones elementales a la matriz D y, por lo tanto, el nmero de unos y de ceros en
cada columna no cambia. Entonces, despus de la transformacin, los vectores
consecutivos de la secuencia siguen siendo adyacentes y el nmero de conmutaciones
contina minimizado. Debido a que la solucin t es la misma para ambos sistemas
lineales, (4.24) y (4.25), puede ser calculado usando cualquiera de ellos. La segunda

48

opcin es la mejor porque, en ese caso, la solucin es trivial como se muestra en el


siguiente sistema:

1 v1f k = 1

k 1 k

tk = v f v f 2 k P
P

v f k = P + 1

(4.32)

Todos los intervalos calculados por medio de las expresiones anteriores son
siempre positivos porque las coordenadas del vector v f estn en orden ascendente, as
que obedecen a la expresin (4.26).
En resumen, la matriz D resuelve la ley de modulacin de dos niveles
obteniendo tiempos de conmutacin positivos y minimizando el nmero de
conmutaciones. La secuencia de vectores de conmutacin de dos niveles se puede
extraer directamente de esa matriz. La figura 4.2 muestra el diagrama de bloques del
SVPWM multifase de dos niveles del algoritmo.

Figura 4.2. Diagrama de bloques del SVPWM mulifase de 2 niveles

49

50

5. IMPLEMENTACIN HARDWARE DEL ALGORITMO


DE MODULACIN
Una vez descrito el algoritmo de modulacin por vector espacial bidimensional,
el paso siguiente consiste en llevar a cabo una descripcin de la realizacin prctica del
mismo. Como ya se ha mencionado anteriormente, la implementacin del algoritmo se
realiza mediante una FPGA de la familia Spartan 3 de Xilinx, utilizando para la
descripcin del algoritmo el lenguaje de descripcin hardware VHDL. Se dispone de las
herramientas software de desarrollo Foundation ISE de Xilinx y Modelsim de Mentor
Graphics.
Vamos a realizar la explicacin de todo el sistema de una forma jerrquica.
Empezaremos explicando el sistema global (top) y poco a poco nos centraremos en la
explicacin individual de cada uno de los bloques y los circuitos que lo forman.

Figura 5.1. SVPWM

La figura 5.1 muestra el diagrama completo del sistema. Por una parte, est el
algoritmo de control, implementado mediante el DSPACE, que es el que genera los 6
vectores. DSPACE es el conjunto formado por un entorno software para Matlab y una
placa de desarrollo basada en un microprocesador Power-PC y un DSP. Por otra parte,
est el algoritmo de modulacin implementado en la FPGA, que es la parte
correspondiente a este proyecto fin de carrera. ste se comunica con el DSPACE a
travs de una interfaz de comunicaciones, que tambin es diseada en el presente
proyecto. Por ltimo, el IGBT, que es el convertidor que acta segn la activacin o

51

desactivacin de los transistores, transistores que se regulan segn las seales que
genera el modulador implementado en la FPGA.
Por tanto, procedemos a explicar ahora cmo hemos realizado el modulador para
que realice el algoritmo de modulacin explicado en el captulo anterior y, a partir de
los vectores entregados por el DSPACE, genere las seales correspondientes para
regular los transistores del IGBT.
En primer lugar, es importante aclarar que el sistema se ha diseado de forma
que funcione a cuatro frecuencias de conmutacin distintas. Estas frecuencias de
conmutacin (seleccionadas por el usuario desde el exterior) definen cuatro perodos de
conmutacin distintos a introducir en las seales de disparo, por lo que modifican los
clculos a realizar en el algoritmo en todo el proceso concerniente a la obtencin de los
ciclos de conmutacin de los vectores.
Para ello, se ha diseado el bloque de la figura 5.2. La funcin de este bloque es
la de generar el reloj que va a controlar al modulador segn la frecuencia que elija el
usuario. El usuario podr hacer la seleccin mediante dos interruptores (SW2 y SW3)
segn la siguiente tabla 5.1:
SW3 SW2

FREC

Ts

10 kHz

100 s

5 kHz

200 s

2 kHz

500 s

1 kHz

1 ms

Tabla 5.1

Figura 5.2

Podemos ver en la figura 5.3 el modulador con todas sus seales de entrada, que
incluyen los seis vectores de referencia de 12 bits cada uno y otras seales de
sincronizacin que recibe del DSPACE a travs de la interfaz de comunicaciones.

52

Esta figura representa el bloque principal del sistema a


disear, es decir, el algoritmo de modulacin. Existe una seal de
entrada adicional, denominada select_dead_time, que, al igual
que la frecuencia de conmutacin, es una opcin a elegir por el
usuario. Mediante el interruptor SW7 de la placa de desarrollo, el
usuario podr elegir si la generacin de las seales de salida se
realiza con tiempos muertos (SW7 =1) o sin tiempos muertos
(SW7= 0).
Analizando el

bloque modulador, podemos ver en la

figura 5.4 los bloques principales que lo forman, es decir, el


esquema general de la implementacin del algoritmo.

Figura 5.3. Modulador

53

Figura 5.4. Interconexin de los bloques principales del circuito que forman el modulador.

A continuacin vamos a explicar cada uno de los bloques que forman el


modulador: sus seales de entrada y salida, su funcin, la forma en que se han
implementado y los circuitos que los componen:
5.1. SATURATE. El saturador.
5.2. MODULATOR6P5N. El modulador de 6 fases y 5 niveles.
5.3.PHASES_SEQUENCE_GENERATOR. El generador de secuencia.
5.4. SIGNAL_GENERATOR. El generador de las seales de disparo iniciales.
5.5. OUTPUTS GENERATOR. El generador de las salidas del sistema, es decir,
las seales de disparo y sus complementarias junto con los tiempos muertos.

54

5.1 SATURADOR
FUNCIN
La funcin de este bloque, como su propio
nombre indica es la de saturar, es decir, limitar los
valores de la entrada a un nmero menor que 4
(011,111111111 en binario, expresado con 12 bits,
3 de ellos enteros y 9 decimales).
Por tanto, debe analizar cada uno de los 6
vectores que entran e impedir que la parte entera sea
mayor que 3 (011 en binario). Si la parte entera es
4, 5, 6 7 (son los nicos valores mayores que 3 que
se pueden formar con 3 bits) debe saturar el vector al
mximo valor representable que ser el de parte
entera 011 con la mxima parte decimal
111111111, es decir, 011,111111111.

ENTRADAS

Figura 5.5.

clk: reloj del circuito.


reset: puesta en estado inicial del circuito.
init_process: cuya activacin indicar el comienzo del funcionamiento del
bloque y, en general del sistema global, pues el saturador es el primer bloque de nuestro
sistema. Esta seal de inicio de proceso viene siendo el end_capture que entrega el
dspace una vez que tienen los seis vectores capturados.
VA, VB, VC, VD, VE, VF (11:0). Estos vectores nos los entrega el dspace y son
los vectores con los que tiene que empezar a trabajar nuestro sistema. Estn formados
por 12 bits, los 3 bits ms significativos forman la parte entera del vector y los 9 bits
menos significativos forman la parte decimal.
Recordamos que el dspace es el bloque sobre el que empieza a funcionar nuestro
sistema y que no tenemos que generar. Ya se dispone de este bloque para la realizacin
del proyecto.

55

SALIDAS
VsatA, VsatB, VsatC, VsatD, VsatE, VsatF(11:0): los seis vectores de 12 bits de
entrada saturados.
end_process: seal indicadora del fin de funcionamiento del bloque y que los
vectores saturados estn dispuestos a la salida. Adems, esta seal implica el
funcionamiento del siguiente bloque (modulator6p5n).

ESQUEMA Y DISEO
El diseo del bloque se basa en analizar el bit ms significativo de cada vector.
Si es 1, significa que la parte entera de dicho vector es mayor que 3 (011) y, por
tanto, hay que entregar a la salida el valor mximo, que es el valor constante:
011,111111111.
Sin embargo, si el bit ms significativo es 0, a la salida hay que entregar el
mismo vector de la entrada, puesto que ya se dispone de un vector de parte entera menor
o igual que 011.
Un ciclo despus de haber obtenido los 6 vectores a la salida, se genera la seal
end_process, que indica el fin del proceso.

COMPONENTES NECESARIOS
Para llevar a cabo la implementacin de este bloque en una FPGA se han
necesitado:

8 registros:

2 registros de 1 bit.

6 registros de 12 bits)

56

5.2. MODULADOR 6 FASES 5 NIVELES


FUNCIN
Este bloque es la parte fundamental de todo el sistema,
pues es el que genera los vectores con los que trabajarn
prcticamente los dems bloques.
La funcin de este bloque es, a partir de los 6 vectores
de entrada, calcular los 7 valores de tiempos y los 7 valores de
cada una de las 6 fases para esos instantes de tiempo. Por tanto,
generar para cada fase, 7 valores que se correspondern con
cada uno de los 7 tiempos. La obtencin de estos vectores se
explicar cuando se analicen los circuitos que componen el
bloque modulador.
Por tanto, entrega 42 valores (0, 1, 2, 3 o 4) que
corresponden a 7 vectores por cada una de las 6 fases. Adems,
entrega otros 7 valores que son el tiempo que

Figura 5.6.

tiene que estar activo cada nivel.

ENTRADAS
clk: reloj del circuito.
reset: puesta en estado inicial del circuito.
init_process: es la seal de inicio del proceso. Esta seal es el end_process del

modulador de 6 fases y 2 niveles. La finalizacin de dicho bloque implica el comienzo


de ste.
VsatA, VsatB, VsatC, VsatD, VsatE, VsatF(11:0) : Estos seis vectores de 12 bits
son los entregados por el primer bloque de nuestro sistema que es el saturador. Estos
vectores de 12 bits estn formados por una parte entera, los 3 bits ms significativos del
vector, y una parte decimal, los 9 bits menos significativos del vector.

SALIDAS
t1, t2, t3, t4, t5, t6, t7(9:0): siete vectores tiempo de 10 bits.
P1, P2, P3, P4, P5, P6(20:0): seis fases de 21 bits, 21 bits obtenidos de asignar
un valor de fase de 3 bits por cada tiempo, en total 21 bits.

57

ESQUEMA Y DISEO
Este bloque se disea a partir de la interconexin de dos bloques de una
jerarqua inferior: modulator6p2n y add_integer_part.
Estos dos bloques operarn de forma secuencial. Cuando el saturador
(saturate) genera el end_process, implica el comienzo de nuestro primer bloque
modulator6p2n. Cuando ste finaliza, ya se disponen a la salida los 7 tiempos
calculados y, adems, generar la seal de fin de proceso (end_process) que implicar la
activacin de la seal de inicio de proceso (init_process) del bloque add_integer_part.
Cuando este bloque termina y, consecuentemente, se obtienen las 6 fases calculadas,
este bloque activa la seal de fin de proceso. Por tanto, el end_process de este proceso y
del bloque global modulator6p5n vendr marcado por el end_process del
add_integer_part.
En la figura 5.7 vemos el esquema empleado anteriormente para la explicacin
del algoritmo de modulacin. En ella se pueden ver los bloques principales que lo
componen, que son por un lado el modulador ms pequeo de 5 fases y 2 niveles
(SVPWM 2L 5P en la figura) y por otro lado el add_integer_part (matrix
concatenation en la figura).

Figura 5.7. Estructura del modulador 6 fases 5 niveles

En la siguiente figura, se ven grficamente las interconexiones entre las entradas


y salidas de los bloques diseados para realizar el modulador de 5 niveles, adems de
las entradas comunes a los dos como son clk y reset.

58

Figura 5.8. Bloques que componen al modulador de 6 fases y 5 niveles

COMPONENTES NECESARIOS
Para llevar a cabo la implementacin de este bloque en una FPGA, los
componentes necesarios fueron, como caba esperar, la suma de los componentes
necesarios para la realizacin de cada uno de los bloques individuales que lo forman.
Por tanto, hemos necesitado:

1 sumador de 3 bits

1 restador de 10 bits

3 contadores ascendentes de 3 bits

114 registros

59 registros de 1 bit

6 de 3 bits

12 de 7 bits

13 de 10 bits

12 de 12 bits y 12 de 21 bits

2 multiplexores 8 a 1

1 de 3 bits

1 de 7 bits

59

1 comparador de 9 bits

4 multiplexores 8 a 1

2 de 10 bits

1 de 3 bits

1 de 7 bits

Explicaremos a continuacin la realizacin de cada uno de los dos bloques de


forma individual.

60

5.2.1. MODULADOR 6 FASES 2 NIVELES


FUNCIN
Estamos ante el bloque ms importante del
algoritmo, puesto que es el que hace las funciones
principales del modulador de 5 niveles.
La funcin de este bloque es generar los 7
vectores tiempo y los 6 vectores de la secuencia a
partir de las entradas recibidas y tras la activacin
de la seal de inicio del proceso. Tras la obtencin
de estos vectores, debe entregarlos a la salida del
bloque junto con la seal indicadora de fin del
proceso.

ENTRADAS
clk: reloj del circuito.
reset: puesta en estado inicial del circuito.
init_process: es la seal de inicio del proceso.

Esta seal es enviada por el modulador de 6 fases


y 5 niveles que engloba a este modulador.
VdecimalA, VdecimalB, VdecimalC,
VdecimalD, VdecimalE, VdecimalF(8:0): seis
vectores de 9 bits, correspondientes a las partes
decimales de los seis vectores que salen del
saturador.
Figura 5.9.

SALIDAS
VseqA, VseqB, VseqC, VseqD, VseqE, VseqF(6:0): seis vectores de 7 bits.
t1, t2, t3, t4, t5, t6, t7(9:0): 7 vectores tiempo de 10 bits.
end_process: la seal que indica el fin del funcionamiento del bloque y que los
vectores de secuencia y los tiempos estn dispuestos a la salida.

61

ESQUEMA Y DISEO
En la figura 5.10, vemos el esquema empleado anteriormente en la explicacin
del algoritmo de modulacin para este modulador de 2 niveles. En ella se pueden ver los
bloques principales que la componen, que son por un lado el bloque order (sort en la
figura) que ordena los vectores de mayor a menor y genera unos identificadores para
saber cul era el orden original de dichos vectores. Por otra parte, la parte superior de la
figura (double) se corresponder con el bloque time_generator y es la que coge esos
vectores ordenados y restndolos entre ellos obtendr 7 vectores de tiempo. La parte
inferior de la figura ser realizada por el bloque inverse_order y lo que hace es, a
partir de los identificadores que guardaron el orden, reordena las filas de una matriz

Figura 5.10. Estructura del modulador de 6 fases y 2 niveles.

triangular inferior y entrega esos valores. Las salidas de este bloque son de gran
importancia y se explicar posteriormente su funcin.
Por tanto, este bloque se disea a partir de la interconexin de los tres siguientes
bloques que se explicarn a continuacin: order, time_generator e inverse_order.
Estos tres bloques operarn de forma secuencial. Cuando nuestro bloque
(modulator6p2n) recibe la seal de inicio (init_process), activa el bloque order con
la correspondiente seal de incio de ese bloque. Cuando este bloque termina y,
consecuentemente, se obtienen las partes decimales de los vectores ordenadas de menor
a mayor, este bloque activa la seal de fin de proceso, seal que, a su vez, activa el

62

inicio de los bloque time_generator e inverse_order. Estos bloques generarn los


vectores tiempo y los vectores de secuencia, respectivamente, vectores que son las
salidas finales de nuestro modulador.
De los dos bloques, time_generator tarda ms en calcular y generar los
vectores de tiempo que inverse_order los vectores de secuencia. Por tanto, el
end_process de este proceso y del bloque global modulator6p2n vendr marcado por
el end_process del time_generator.
En la figura 5.11, se ven grficamente las interconexiones entre las entradas y
salidas de los bloques, adems de las entradas comunes a los tres como son clk y reset.

Figura 5.11. Interconexin de los boques que forman el modulador 6P2N

COMPONENTES NECESARIOS
Para llevar a cabo la realizacin de este bloque funcional, los componentes
necesarios, como caba esperar, fueron la suma de los componentes necesarios para la
realizacin de cada uno de los bloques individuales que lo forman. Por tanto, hemos
necesitado:

1 restador de 10 bits

63

1 contador ascendente de 3 bits

73 registros

30 registros de 1 bit

13 de 10 bits

12 de 12 bits

6 de 3 bits12 de 7 bits

1 comparador de 9 bits.

2 multiplexores de 10 bits 8 a 1

Explicaremos a continuacin la realizacin de cada uno de los bloques de forma


individual.

64

ORDER
FUNCIN
Este bloque debe de aadir un identificador (3
bits) a cada uno de los vectores de entrada para
guardar la posicin que tienen inicialmente. A
continuacin, tiene que ordenarlos de menor a mayor,
quedando ordenadas las partes decimales y
desordenados los identificadores asignados (pues no
estarn en el orden en el que entraron).

ENTRADAS
clk: reloj del circuito.
reset: puesta en estado inicial del circuito.

Figura 5.12.

init_process: es la seal de inicio del proceso y cuya activacin indicar el comienzo

del funcionamiento del bloque.


VA, VB, VC, VD, VE, VF (8:0): son las entradas globales del modulador de 2
nivleles. Son las partes decimales que entran desordenadas pero saturadas. Vienen dadas
por el modulador 6 fases y 5 niveles pero son seales que ya vienen del saturador.

SALIDAS
VordA, VordB, VordC, VordD, VordE, VordF(11:0): 6 vectores de 12 bits cuyas
partes decimales (los 9 bms) estn ordenadas de menor (VordA) a mayor (VordB).
end_process: seal indicadora del fin de funcionamiento del bloque y que los
vectores ordenados estn dispuestos a la salida.

ESQUEMA Y DISEO
El algoritmo que he utilizado para lograr la ordenacin de los vectores, se basa
en el uso de 2 contadores:
1. Uno que se utiliza para controlar un multiplexor. La salida del
contador es el selector del multiplexor. Entonces, segn el valor del selector
(salida del contador) se van seleccionando vectores de 2 en 2 (VA con VB, VB
con VCy VE con VF). Para cada seleccin se intercambian las posiciones o no
de los vectores segn sea el primero mayor que el segundo o no.

65

2. Otro contador que lleva cuenta de la repeticin del proceso anterior.


Es decir, el primer contador debe volver a realizar el recorrido de nuevo con los
6 vectores de 2 en 2. Vectores que ahora han cambiado de posicin (si antes han
resultado mayores que su vecino) y ahora tienen vecinos nuevos que pueden ser o no
mayores que ellos.
Por tanto, este segundo contador dar cinco vueltas que son las necesarias para
el peor de los casos. Este caso se da cuando el ltimo vector (VF) es el menor, por lo
tanto, intercambiar siempre su posicin con el vecino anterior hasta situarse en la
primera posicin.
Tras finalizar las 5 vueltas del contador 2, habremos terminado.
Este bloque est compuesto de una unidad de control y una unidad operativa que
pasaremos a describir a continuacin.

Figura 5.13. Interconexin de los bloques que forman al bloque order.

UNIDAD DE CONTROL Y UNIDAD OPERATIVA


La unidad de control se basa en una mquina de estados que enva seales a la
unidad operativa y tambin las recibe de sta, para lograr hacer el algoritmo explicado
anteriormente.

66

Figura 5.14. Unidad operativa y unidad de control del bloque order

La siguiente figura muestra el diagrama de estado utilizado para realizar la


unidad de control

67

@ELSE

RESET
STAT E0
init_process='1'

STAT E1
load_vectors<='1';

STAT E5
reset_ctr<='1';

STAT E11

STAT E9
change='1'

@ELSE

STAT E3
changer<='1';

STAT E2
ce_ctr<='1';

@ELSE

STAT E4

ctr_eq_4='1'
@ELSE
STAT E8
ce_ctr_loops<='1';
ctr_loops_eq_4='1'
STAT E7
assig<='1';

STAT E10

STAT E6
end_process<='1';

Figura 5.15. Diagrama de estado de la unidad de control del bloque order.

68

Vamos a explicar el significado de cada una de las seales que enva y recibe la
unidad de control hacia y desde la unidad operativa.

Seales que entrega la mquina de estados (unidad de control):

LOAD: para cargar en registros los vectores a ordenar(VA...VF)

RESET_CTR: para reiniciar el contador de comparaciones. Este

contador tiene que contar cinco comparaciones. Pues comparamos cada vector a
ordenar con su consecutivo y se intercambiarn en caso necesario.

CE_CTR: para activar el contador de comparaciones.

CE_CTR_LOOPS: para activar el contador de vueltas (1 vuelta

cada 5 comparaciones).El nmero mximo de vueltas ser cinco y ser cuando el


menor vector est en la ltima posicin (en VF).
CHANGER: indicador de que los vectores comparados estn en

orden incorrecto y hay que cambiarlos de orden (primero el menor).


ASSIG: es la orden para asignar los vectores ordenados a las

o
salidas.

Seales que se envan a la mquina de estados (unidad de control):


CHANGE: salida del comparador que indica que un vector es

mayor que el otro y hay que cambiarlos; momento cuando la mquina de


estados enva la orden CHANGER.
CTR_EQ_4: seal que indicar si ha terminado la cuenta del

primer contador, que es el que tiene que contar cinco comparaciones por cada
vuelta (contar hasta cuatro porque el 0 ya es la primera comparacin).
CTR_LOOPS_EQ_4: Seal que indicar si ha terminado la

cuenta del segundo contador, que es el que tiene que contar cinco vueltas (son
cinco comparaciones por cada vuelta. Contar cuatro, pues con el contador a 0
ya hace la primera vuelta).

COMPONENTES NECESARIOS
Para llevar a cabo la realizacin de este bloque funcional hemos necesitado:

2 contadores de 3 bits

27 registros

15 registros de 1 bit

12 registros de 12 bits

1 comparador de 9 bits
69

TIME GENERATOR
FUNCIN
Este bloque debe de generar los 7 tiempos durante los
cuales debe estar activo cada uno de los 7 valores de cada fase (7
valores que nos va a dar el bloque inverse_order_generator).
La obtencin de estos tiempos se hace de la siguiente
manera:
Se debe restar 1(que es el valor1000000000 en binario
con 10 bits, 9 de ellos decimales) menos el ltimo

Figura 5.16.

vector (que es la mayor de las partes decimales) y se


correspondera con el tiempo1 (t1); luego, ste vector se resta con el penltimo vector
(que es el 2 ms mayor), obtenindose t2 y as sucesivamente hasta restar el primer
vector (la parte decimal ms pequea) con 0
obtenindose t7. Por tanto:
t1= 1-decimalF.
t2=decimalF-decimalE.
t3=decimalE-decimalD.
t4=decimalD-decimalC.
t5=decimalC-decimalB.
t6=decimalB-decimalA.
t7=decimalA-0
Para entender mejor el funcionamiento de
dicho bloque, observemos la figura 5.17:

ENTRADAS
Figura 6.15.

clk: reloj del circuito.


reset: puesta en estado inicial del circuito.
init_process: es la seal de inicio del

Figura 5.17. Generador de los vectores

proceso cuya activacin indicar el comienzo


del funcionamiento del bloque.
decimalA, decimalB, decimalC, decimalD, decimalE, decimalF (8:0): son los
vectores ordenados que nos entrega el bloque order. Estamos trabajando pues, con las
partes decimales (9 bits), desde decimalA (menor) a decimalF (mayor).

70

SALIDAS
t1, t2,, t7(9:0): las salidas sern, por tanto, 7 vectores tiempo de 10 bits. El
BMS siempre ser 0, pues los tiempos se forman con vectores de 9 bits y, por tanto,
resultarn de 9 bits tambin. Pero este dcimo bit surge, como se ha explicado antes,
para formar el valor entero 1 que se utiliza para obtener el t1.
end_process: seal que indica el fin del funcionamiento del bloque y que los
tiempos estn dispuestos a la salida.
No nos hace falta utilizar bit de signo porque los vectores siempre nos van a
venir ordenados de order y restaremos del mayor obteniendo siempre un resultado
positivo.

ESQUEMA Y DISEO
Compuesto por la unidad operativa y la unidad de control correspondientes que
podemos ver en la siguiente figura.

Figura 5.18. Interconexin de los bloques que forman al bloque time_generator.

UNIDAD DE CONTROL (time_generator_ctrl_unit)


Es la que pone en funcionamiento el bloque cuando
recibe la seal init_process.
Tras recibir un impulso en la seal init_process, la
unidad de control activar la seal load. Esta seal le indica
a la unidad operativa que guarde los vectores de entrada
(decimalA,..,decimalF) en registros aadindoles un 0 por la izquierda, es decir,
vectores de 10 bits. La adiccin de este bit a mayores es porque la primera resta es t1=1-

71

@ELSE

RESET

decimalF. Como la parte decimal son 9 bits, para

STATE0

formar el entero 1 necesitaremos un bit a mayores que

init_process='1'

representar la parte entera.


Tras load=1 se pasa al siguiente estado. En

STAT E9
load='1';

este momento, la unidad de control va pasando por una


serie de estados, en cada uno de los cuales cambia el

STAT E1
selector <= "000";
en<='1';

valor de la seal selector y activa la seal en.


Selector la utiliza para activar los multiplexores
que seleccionarn los vectores a restar y en (enable)
habilitar el almacenamiento del resultado de la resta en
los correspondientes registros.

STAT E2
selector<="001";
en<='1';

Tras recorrer todos los estados, se activa la seal


end_process que indica el final de este bloque, es decir,
los tiempos estn generados y puestos en la salida del

STAT E3
selector<="010";
en<='1';

bloque. Decir que, antes de la activacin de esta seal,


se deja un estado anterior para que esta seal se active
STAT E4

un ciclo despus de disponer las salidas.


Es una simple unidad de control basada en un

selector<="011";
en<='1';

diagrama de estados como se puede observar en la


figura 5.19 donde de un estado a otro slo se vara el

STAT E5
selector<="100";
en<='1';

valor del selector.

STAT E6
selector<="101";
en<='1';

STAT E8
selector<="110";
en<='1';

STAT E10

STAT E7
end_process<='1';

Figura 5.19. Diagrama de estado de la unidad de control del bloque


time_generator.

72

UNIDAD OPERATIVA (time_generator_op_unit)


Este bloque funciona con las seales recibidas de la
unidad de control.
Vamos a ver qu hace la unidad operativa con cada
una de las seales que recibe de la unidad de control.
Al recibir la seal load=1 carga en registros (AF)
las 6 entradas (decimalA,,decimalF) aadindole 1 bit por
la izquierda que representar la parte entera.
Tras esto empieza a recibir los distintos valores de
selector, valores que cambian el valor de dos multiplexores
que seleccionan los dos vectores a restar.

Figura 5.20.

Pasan por un restador, y la salida de ste es la salida correspondiente del bloque


global (t1 t2 t7) segn el valor de selector y gracias a la activacin de la seal en
que lo permite.
En la figura 5.21 se pueden apreciar los seis biestables para cargar las seis partes
decimales, los dos multiplexores, el restador y los buferes de salida.

73

Figura 5.21

COMPONENTES NECESARIOS
Para llevar a cabo la realizacin de este bloque funcional hemos
necesitado:

1 restador de 10 bits

24 registros

11 registros de 1 bit

13 registros de 10 bits
2 multiplexores de 10 bits 8 a 1.

74

INVERSE_ORDER
FUNCIN
La funcin de inverse_order es desordenar
una matriz triangular inferior 6*7(6 filas y 7
columnas) tal como indican los identificadores del
orden.
La matriz triangular inferior tendr en la
primera columna todo ceros. Dicha matriz ser:

Figura 5.22

(5.1)

ENTRADAS
clk: reloj del circuito.
reset: puesta en estado inicial del circuito.
init_process: es la seal de inicio del proceso cuya activacin indicar el
comienzo del funcionamiento del bloque.
idA, idB, idC, idD, idE, idF(2:0): los seis identificadores de los vectores
ordenados de menor a mayor que salen del bloque order.

SALIDAS
VseqA, VseqB, VseqC, VseqD, VseqE, VseqF: sern seis vectores (las filas de la
matriz triangular) de 7 bits. Siendo VseqA la primera fila de dicha matriz y VseqF la
ltima.

ESQUEMA Y DISEO
Formado por la unidad operativa y la unidad de control dispuestas tal como
indica la figura 5.23.

75

Figura 5.23. Interconexin de los bloques que forman al bloque inverse_order.

UNIDAD DE CONTROL(inverse_order_ctrl_unit)
Es la que pone en funcionamiento el bloque
cuando recibe la seal init_process.
Tras recibir un impulso en la seal
init_process, la unidad de control activar la seal
load. Esta seal le indica a la unidad operativa que
convierta los identificadores (vectores de 3 bits que
entran) en nmeros enteros para luego usarlos como
ndice del vector. A continuacin, activar la seal

Figura 5.24

matrix, esta seal le indica a la unidad operativa que debe desordenar la matriz
triangular inferior tal como le indican los identificadores.
Por ltimo, enva la seal assig que indica la asignacin de esa matriz obtenida a
la salida. Salida que sern seis vectores de 7 bits (VseqAVseqF).
En la figura 5.25 se muestra el grafo de estados diseado para realizar este
bloque. Se observa la activacin secuencial de load, matrix, assig y la vuelta al inicio
donde quedar en espera hasta la prxima activacin de init_process.

76

@ELSE

RESET
ST AT E0

init_process='1'
ST AT E1
load<='1';

ST AT E2
matrix<='1';

ST AT E3
assig<='1';

Figura 5.25. Diagrama de estado de la unidad de control del bloque inverse_order.

UNIDAD OPERATIVA(inverse_order_op_unit)
Este bloque funciona con las seales recibidas
de la unidad de control.
Este bloque consta de una simple unidad
operativa basada en tres procesos activados segn la
seal recibida de la unidad de control.

Al recibir la seal load, la unidad operativa


carga en unos registros los identificadores
convertidos a enteros.

Luego, cuando recibe la seal matrix, tiene que


cargar en otros registros las filas de la matriz de
salida. Esto lo hace de la siguiente forma: el
primer identificador es el nmero de la fila de la
matriz de salida, fila donde tiene que ir la primera fila

Figura 5.26

de la matriz triangular inferior. El segundo identificador contiene un nmero que


es la fila donde tiene que ir la segunda fila de la matriz triangular inferior. As
sucesivamente hasta el ltimo identificador que contendr el nmero de fila

77

donde se debe colocar la ltima fila de la matriz triangular.


Estamos, as desordenando la matriz triangular tal como indican los
identificadores.

Por ltimo, se recibe la seal assig, que lo que hace es asignar los valores de los
registros cargados en el paso anterior a las salidas del bloque funcional.

COMPONENTES NECESARIOS
Para llevar a cabo la realizacin de este bloque funcional hemos necesitado:

22 registros

4 registros de 1 bit

6 de 3 bits

12 de 7 bits

78

5.2.2. ADD_INTEGER_PART
FUNCIN
Este es el otro bloque que, junto con el modulador de 2
niveles que acabamos de analizar, forma el modulador de 5
niveles.
Las entradas a este bloque son seis partes enteras
formadas por 3 bits; as, por ejemplo, 3 sera 011. Por otra
parte, nos entran seis vectores de secuencia. Cada vector est
formado por 7 bits. Estos seis vectores son las filas de una
matriz 6x7.
La funcin de este bloque es sumarle a cada fila de esa
matriz la parte entera correspondiente. As, a la primera fila de la
matriz (VseqA) debemos sumarle la primera parte entera. Por

Figura 5.27

tanto, a cada una de las 7 columnas de la primera fila se le sumara


la primera parte entera (VintegerA), a cada columna de las 7 columnas de la segunda fila
se le sumara la segunda parte entera parte entera (VintegerB), y as sucesivamente hasta
llegar a la ltima fila.
Es importante destacar que cada columna est compuesta de 1 bit y la parte
entera que sumamos consta de 3 bits. Por tanto, tras cada suma se obtiene un resultado
de 3 bits resultando la fila de la matriz final de 21 bits (7 columnas de 3 bits). Por eso
las salidas de este sistema son seis vectores (seis filas) de 21 bits (3 bits por cada
columna).

ENTRADAS
clk: reloj del circuito.
reset: puesta en estado inicial del circuito.
init_process: es la seal de inicio del proceso. Esta seal es el end_process del

modulador de 6 fases y 2 niveles. La finalizacin de dicho bloque implica el comienzo


de ste.
VintegerA, VintegerF, VintegerC, VintegerD, VintegerE, VintegerF: seis
vectores de 3 bits que son las partes enteras de los vectores saturados, es decir, son las
partes enteras de los vectores que salen del saturador.

79

VseqA, , VseqB , VseqC , VseqD , VseqE , VseqF : seis vectores de 7 bits que son
entregados por el modulador de 2 niveles. Estos seis vectores son el resultado de
ordenar la matriz triangular en el bloque del modulador de 2 niveles tal como se explic
anteriormente.

SALIDAS
P1, P2, P3, P4, P5, P6: seis fases de 21 bits.
end_process: seal que indica el fin del funcionamiento del bloque y que los
valores de las 6 fases se encuentran a la salida.

ESQUEMA Y DISEO
Este bloque se compone de una unidad operativa y una unidad de control
dispuestas tal como indica la figura 5.28.

Figura 5.28. Interconexin de los bloques que forman al bloque add_integer_part

80

UNIDAD DE CONTROL(add_integer_part_ctrl_unit)
Es la que pone en funcionamiento
el bloque cuando recibe la seal
init_process.
El funcionamiento de la unidad de
control es mediante una mquina de
estados que opera de la siguiente manera:
Al recibir la seal init_process,
comienza este bloque a operar y a mandar
las correspondientes seales a la unidad

Figura 5.29

operativa. Primero, activa la seal reset_ctr, seal que


resetea el contador que se encuentra en la unidad operativa y cuya funcin es
incrementar el selector del multiplexor, multiplexor que a su vez selecciona los
parmetros a sumar (la fila correspondiente con la parte entera correspondiente a
sumar a esa fila). Tras sumar a toda la fila la parte entera, se activa la seal load, que
almacena el valor en un registro. Se comprueba si ya se ha llegado a la litma fila de
la matriz (ser cuando end_loop=1) y sino lo es, se activa el ce_ctr que permite la
suma del contador y por tanto se pasa a la siguiente fila.
Una vez que se sume la parte entera a la ltima fila (end_loop=1), se
activa la seal assig_out, la cual indica a la unidad operativa que se asignen los
valores guardados en registros a las salidas del bloque.
Tras un ciclo de reloj, se activa la seal end_process indicadora del final del
proceso e indicadora de que se tienen a las salidas las filas sumadas con las partes
enteras.
La siguiente figura muestra el diagrama de estados empleado para el diseo
de la unidad de control de este bloque.

81

@ELSE

RESET
STAT E0
init_process='1'
STAT E5
reset_ctr<='1';

STAT E4

STAT E1

STAT E2

@ELSE

ce_ctr<='1';

load<='1';
end_loop='1'
STAT E7
assig_out<='1';

STAT E3

STAT E8
end_process<='1';

Figura 5.30. Diagrama de estado de la unidad de control del bloque add_integer_part.

UNIDAD OPERATIVA(add_integer_part_op_unit)
Este bloque funciona con las seales recibidas de la unidad de control.
A este bloque es donde entran directamente las entradas (las partes enteras y las
filas de la matriz).
Es la parte funcional del bloque completo. Un multiplexor va seleccionando los
valores a sumar a medida que vara su valor. El valor del multiplexor va aumentando
mediante un contador a travs de la seal ce_ctr enviada por la unidad de control.
Cuando ese contador llega a cinco, indica que ya se han sumado las 6 filas
(desde 0 hasta 5), entonces la unidad operativa enva la seal end_loop a la unidad de
control. sta enva, entonces, assig_out para que se asignen a las correspondientes
salidas los valores calculados.

82

Figura 5.31

COMPONENTES NECESARIOS
Para llevar a cabo la realizacin de este bloque funcional, los componentes
necesarios fueron:

1 sumador de 3 bits

1 contador ascendente de 3 bits

41 registros

29 registros de 1 bit

12 de 21 bits

2 multiplexores 8 a 1

1 de 3 bits

1 de 7 bits

83

5.3. GENERADOR DE SECUENCIA


FUNCIN
Este bloque genera la secuencia de niveles que
le entrega el modulador durante los tiempos indicados
tambin por el modulador.
Saca la secuencia en el orden en que salen los
vectores del modulador y luego en orden inverso (t/2
cada nivel).
Es decir, los 7 tiempos iniciales que entran al
bloque son los tiempos durante los cuales deben salir
los valores de cada fase. Tras transcurrir la mitad de
cada uno de esos tiempos, se cambian los valores de
fase y transcurren durante el siguiente tiempo. Despus,
tras transcurrir las primeras 7 mitades, vuelven de
nuevo las otras 7 mitades.
Es decir, los tiempos que entran, se tienen que convertir en

Figura 5.32

14 tiempos de la siguiente manera: t1/2, t2/2, t3/2,, t7/2, t7/2, t6/2,, t1/2.
Adems, tenemos la peculiaridad de que la suma de todos los tiempos suma 1
(que es el valor1000000000 en binario con 10 bits, 9 de ellos decimales. Si visemos
este nmero binario como un entero, el valor correspondera a 512).
Por tanto, la funcin de este bloque es generar a la salida unos valores de fase
durante un tiempo determinado y, tras transcurrir ese tiempo, generar los siguientes
valores.

ENTRADAS
clk: reloj del circuito.
reset: puesta en estado inicial del circuito.
init_process: es la seal de inicio del proceso cuya activacin indicar el
comienzo del funcionamiento del bloque. Esta seal es el end_process del bloque
anterior modulator6p5n, actuando as de forma secuencial.
t1, t2, t3, t4, t5, t6, t7(9:0): siete vectores tiempo de 10 bits que son las salidas
entregadas por el modulator6p5n.

84

P1, P2, P3, P4, P5, P6(20:0): seis fases de 21 bits, 3 bits por cada tiempo(en
total, 3bits*7tiempos= 21 bits por cada fase que entra). Estos vectores tambin son las
salidas del bloque anterior modulator6p5n.

SALIDAS
P1out, P2out, P3out, P4out, P5out, P6out(2:0): seis vectores de fase de 3 bits.
Recordemos que este valor de fase ser un valor entero entre 0 y 4, ambos inclusive.
new_cycle: seal que se activa cada vez que se completa un ciclo de
conmutacin.
En este caso, no necesitamos una seal indicadora de fin del proceso porque este
bloque no tiene que activar a ningn otro y, adems, funciona continuamente, no precisa
de ninguna seal. Al terminar de sacar todos los valores que le han entrado, coge de
nuevo los que aparecen a su entrada y vuelve a empezar al recibir la seal init_process.

ESQUEMA Y DISEO
Este bloque se compone de los dos bloques que se explicarn posteriormente:
time_acumulator y sequence_generator, interconectados tal como se puede ver en la
figura 5.33.
El bloque time_acumulator es el que se encarga de calcular los 14 tiempos
(como mximo), que se forman a partir de la mitad de cada uno de la entrada sumado
con el anterior, y las fases de 3 en 3 bits para generar durante cada uno de esos tiempos.
El bloque sequence_generator es el encargado de recibir esos vectores
calculados por el time_acumulator y generar el valor de 3 bits de las seis fases durante
el tiempo correspondiente.

85

Figura 5.33. Interconexin de los bloques que forman al bloque phases_sequence_generator

COMPONENTES NECESARIOS
Para llevar a cabo la realizacin de este bloque funcional, los componentes
necesarios, como caba esperar, fueron la suma de los componentes necesarios para la
realizacin de cada uno de los bloques individuales que lo forman. Por tanto, hemos
necesitado:

1 FSMs

13 sumadores de 10 bits

1 restador de 10 bits

2 contadores ascendentes

86

1 de 10 bits

1 de 4 bits

398 registros

266 registros de 1 bit

84 de 3 bits

42 de 10 bits

6 de 42 bits
1 comparador de 10 bits.

Explicaremos a continuacin la realizacin de cada uno de los bloques de forma


individual.

87

5.3.1. TIME_ACUMULATOR
FUNCIN
La funcin de este bloque es muy importante, adems
de complicada, debida a la cantidad de funciones que realiza.
Los siete tiempos iniciales que entran al bloque son los
tiempos durante los cuales deben salir los valores de cada fase.
Tras transcurrir la mitad de cada uno de esos tiempos, se
cambian los valores de fase y transcurren durante el siguiente
tiempo. Despus, tras transcurrir las primeras siete mitades,
vuelven de nuevo las otras siete mitades.
Es decir, los tiempos que entran, se tienen que convertir
en 14 tiempos de la siguiente manera: t1/2, t2/2, t3/2,, t7/2,
t7/2, t6/2, , t1/2.
Adems, tenemos la peculiaridad de que la suma de
todos los tiempos suma 1 (1000000000 en binario, con 10
bits, 9 de ellos decimales. Si visemos este nmero en binario
como un entero, el valor correspondera a 512).
Por otra parte, nuestro sistema est diseado con un
temporizador que cuenta continuamente, independientemente
de toda seal y de todos los bloques del sistema total. Este
temporizador cuenta hasta 512 (que es el mximo tiempo
posible, la suma de todos los tiempos), que es cuando vuelve a 0 de

Figura 5.34

nuevo y vuelve a empezar.


Por tanto, a partir de este modo de funcionamiento del temporizador surge la
idea de, en vez de pasar los tiempos individuales durante los cuales est activa cada
fase, pasar el tiempo en el cual debe ir el temporizador contando para que se carguen los
nuevos valores de fase. Por ejemplo, la fase 1 tendr un valor durante t1/2, al transcurrir
t1/2, tomar un nuevo valor durante t2/2. Entonces, al temporizador se le pasar el
tiempo acumulado en el cual debe de ir contando: t1/2+ t2/2, t1/2 que ya ha
transcurrido y t2/2 que va a ser el que transcurra.
Se deben de ir calculando los tiempos acumulados, que sern como mximo 14
tiempos.

88

Entonces, la funcin de este bloque es ir pasando los tiempos acumulados al


temporizador y los valores de fase correspondientes con cada tiempo. Cada vez que el
temporizador llegue a dicho tiempo, cambiar los valores de fase.
Adems, este bloque tambin tiene la funcin de comprobar si el tiempo de
entrada es 0, en cuyo caso se ignorar los valores de fase correspondientes a ese tiempo,
si es 1 en cuyo caso se ignorarn los valores de fase la primera mitad del tiempo
porque es 0. Digo la primera mitad porque en caso de ser un tiempo impar, la primera
vez se hace un desplazamiento a la derecha, con lo cual el valor siempre queda un
nmero menos que la segunda mitad. Es decir si el tiempo es 3, t1/2 ser 1 y el siguiente
t1/2 ser 2. Entonces si el tiempo es 1, la primera vez ser 0 y la siguiente 1.
Es evidente, que siempre se cumplir que tac1>tac2>>tac14, pues siempre se
suman tiempos y se ignoran cuando los tiempos son 0. Si algn tiempo es 0 o 1, los
ltimos tiempos acumulados (t14, t13,) sern 0 porque la suma de tiempos termina
antes.

ENTRADAS
clk: reloj del circuito.
reset: puesta en estado inicial del circuito.
init_process: es la seal de inicio del proceso cuya activacin indicar el
comienzo del funcionamiento del bloque. Esta seal es el end_process del bloque
anterior modulator6p5n, actuando as de forma secuencial.
t1, t2, t3, t4, t5, t6, t7(9:0): siete vectores tiempo de 10 bits entregados por el
modulator6p5n.
P1, P2, P3, P4, P5, P6(20:0): seis fases de 21 bits, 3 bits por cada tiempo(en
total, 3bits*7tiempos= 21 bits por cada fase que entra).

SALIDAS
tac1, tac2, tac3,.., tac13, tac14(9:0): catorce vectores de 10 bits.
P1ac, P2ac, P3ac, P4ac, P5ac, P6ac(41:0): seis vectores de fase de 42 bits. Son
42 bits ya que entregamos un valor de 3 bits de fase por cada tiempo y
3 bits * 14tiempos = 42 bits.
En este caso, no necesitamos una seal indicadora de fin del proceso porque este
bloque no tiene que activar a ningn otro.

89

ESQUEMA Y DISEO
Este bloque se compone de una unidad operativa y una unidad de control,
dispuestas tal como indica la figura.

Figura 5.35. Interconexin de los bloques que forman al bloque time_acumulator

UNIDAD DE CONTROL(time_acumulator_ctrl_unit)
Es la que pone en funcionamiento el bloque cuando recibe la seal init_process.
El funcionamiento de la unidad de control es mediante una mquina de estados
que opera de la siguiente manera.
Al recibir la seal init_process, comienza este bloque a operar y a mandar las
correspondientes seales a la unidad operativa.

90

Primero, activa la seal load_phases la cual implica la formacin de los valores


de fase que van a salir. Es decir, a la
entrada del sistema tenemos para cada fase
un vector de 21 bits, un valor de 3 bits
para cada uno de los 7 tiempos. Pero en
realidad, ahora vamos a tener 14 tiempos,
la mitad de cada uno de los que entran, y
luego la otra mitad. Para cada mitad,
tendremos un valor de fase. Entonces, esta
seal le indica a la unidad operativa que
forme vectores de fase de 42 bits (3 bits
por cada tiempo). As , P1 estar formada por el valor

Figura 5.36

de P1 para: t1, t2, , t7, (empieza ahora en orden


inverso con los mismos valores) t7, t6, , t1.
Una vez que se formen las fases, comprobamos el valor de la seal Ti_eq_0 que
tambin nos la enva la unidad operativa. Si es 1, quiere decir, que la mitad del tiempo
que se ha escogido es 0 y, por tanto, activamos la seal shift para que se elimine los
valores de fase correspondiente a ese tiempo y para que ese tiempo no se sume a los
acumulados. Tras esto, se activa la seal ce_ctr que lo que hace, es incrementar el
selector del multiplexor de la unidad operativa, multiplexor que selecciona en cada
momento el tiempo (t/2).
Tras cargar el nuevo tiempo, se comprueba si la sea ctr_eq_13 es 1, en cuyo
caso, quiere decir que ya hemos comprobado todos los tiempos y ya disponemos de
todos los acumulados. En ese caso, se activa la seal load_out y la unidad operativa
carga todos los valores a la salida. Si no es 1, entonces volveramos de nuevo al estado
de comprobacin del bit Ti_eq_0.
Por otro lado, si la seal Ti_eq_0 es 0, entonces lo que se hace es activar la
seal ce_sum, que le indica a la unidad operativa que sume ese tiempo para hallar el
tiempo acumulado. Adems, incrementa la seal Rnumber que es un indicador para
saber en qu tiempo vamos, por si en la siguiente vez la seal shift es 1 y tenemos que
eliminar ese valor de fase. Tras esto, llegamos al mismo estado de antes donde se
comprueba si la seal ctr_eq_13 es 1, y sera el mismo procedimiento explicado antes.
Esto todo, se puede entender mejor observando el diagrama de estados de la
figura 5.37:
91

@ELSE

RESET
STAT E0
init_process
STAT E1
load_phases<='1';

STAT E5

@ELSE

STAT E9

STAT E2

ce_sum<='1';
T i_eq_0='1'
STAT E8
shift<='1';
@ELSE

STAT E3
ce_ctr<='1';
ctr_eq_13='1'
STAT E7
load_out<='1';

Figura 5.37. Diagrama de estado de la unidad de control del bloque time_acumulator.

UNIDAD OPERATIVA(time_acumulator_op_unit)
Este bloque funciona con las seales recibidas de la unidad de control.
A este bloque es donde entran directamente las entradas (los siete vectores de
tiempo y las seis fases con los valores para cada tiempo).
Un multiplexor va seleccionando la mitad de los valores de tiempo a sumar a
medida que vara su valor. Para cada valor, tenemos un comparador que comprueba si
tal tiempo es cero, en dicho caso, activa la seal Ti_eq_0, que es recibida por la unidad
de control y activa la seal shift para eliminar esos valores de fase y para no contar con
este tiempo para los acumulados.
El valor del multiplexor va aumentando mediante un contador a travs de la
seal ce_ctr enviada por la unidad de control.
Cuando ese contador llega a 13, indica que ya se han sumado y calculado todos
los tiempos acumulados y las fases acumuladas, entonces la unidad operativa enva la
seal ctr_eq_13 a la unidad de control y sta enva la seal load_out para que se asignen
a las correspondientes salidas los valores calculados.
92

Figura 5.38

COMPONENTES NECESARIOS
Para llevar a cabo la realizacin de este bloque funcional, hemos necesitado:

1 FSMs

13 sumadores de 10 bits

1 restador de 10 bits

1 contador ascendente de 4 bits

300 registros

266 registros de 1 bit

28 de 10 bits

6 de 42 bits

93

5.3.2. SEQUENCE_GENERATOR
FUNCIN
La funcin de este bloque es la de generar los valores
de fase durante el tiempo indicado. Como se le pasan 14
tiempos y 14 valores de fase (de 3 bits cada valor) para cada
tiempo, simplemente tiene que, a partir de esas entradas,
generar el correspondiente valor de fase durante el
correspondiente tiempo.

ENTRADAS
clk: reloj del circuito.
reset: puesta en estado inicial del circuito.
tac1, tac2, tac3,.., tac13, tac14(9:0): catorce vectores
que son los tiempos acumulados que son entregados por el
bloque time_acumulator y durante los cuales debe salir el
valor de cada fase.
P1ac, P2ac, P3ac, P4ac, P5ac, P6ac(41:0): seis

Figura 5.39

vectores entregados tambin por el bloque


time_acumulator. Son los valores que debe tomar cada fase durante el tiempo
indicado.
Destacar que este bloque carece de seal de inicio de proceso porque funciona
continuamente, si no hay vectores a la entrada, salen ceros hasta que llegan vectores a la
entrada; pero no depende de ninguna seal de entrada.

SALIDAS
P1out, P2out, P3out, P4out, P5out, P6out(2:0): seis vectores de 3 bits que
representan el valor actual de cada una de las fases.
Este bloque carece tambin de seal de fin de proceso que indique que se para el
funcionamiento de ste porque, realmente, nunca se detiene, funciona continuamente.
Lo que s genera es la seal de salida new_cycle.
new_cycle: indica que se terminan de generar los valores de fase durante el
tiempo indicado y que los valores que empiezan a salir a partir de aqu son los
correspondientes a los nuevos vectores de entrada al sistema.

94

La suma de tiempos siempre es 1(que es el valor 512 en un vector binario de 10


bits 1000000000), entonces, realmente, la seal new_cycle se generar cada 512
ciclos de reloj.

ESQUEMA Y DISEO
Este bloque est formado por dos circuitos adecuadamente conectados los cuales
se muestran y se explican a continuacin:

Figura 5.40. Interconexin de los bloques que forman al bloque sequence_generator

95

SEQUENCE_TIMER
Este bloque es el encargado de contar el
tiempo que tiene que salir cada valor de fase. Se
trata de un temporizador que cuenta de manera
ininterrumpida 512 ciclos de reloj (clk), de manera
que cuando llegue a 512 se pone a 0 y vuelve a
contar de nuevo.
Adems, recibe como entrada ti, que es un valor de

Figura 5.41.

tiempo (el tie mpo durante el cual tendr que salir el valor de fase concreto). De manera
que, cuando el temporizador alcance ese tiempo ti concreto, genera la seal de salida
timer_eq_ti, indicadora de que el tiempo ha trascurrido y se deben cambiar los valores
de salida de fase.
La seal end_timer es la que indica al bloque sequence_registers que ya han
transcurrido los 512 ciclos de reloj y que se deben cargar los nuevos valores de fases y
tiempos.
SEQUENCE_REGISTERS
Es el bloque al que le entran los valores de las fases a generar
y los tiempos durante los cuales deben de generarse tales fases.
Este bloque se encarga de poner a la salida los valores
concretos de fase y de enviar al bloque sequence_timer el tiempo
(ti) durante el cual dichas fases deben de generarse. Entonces,
cuando ese tiempo ha transcurrido, sequence_timer enva a este
bloque la seal timer_eq_ti. En ese momento, se ponen en las salidas
los siguientes valores de fase y se enva al sequence_timer el
tiempo durante el cul estarn activas dichas fases, empezando el
ciclo de nuevo.
Cabe resear aqu cmo se diseado este bloque. Se ha
basado en una serie de registros encadenados. Como mximo hay 14
tiempos, entonces, usamos 14 registros para cada uno de los valores.
Cada vez que transcurra un tiempo, los valores de los registros se
desplazan al siguiente. El primer registro, es el que tiene el valor
actual; el segundo registro tiene el siguiente valor que se cargar; y
as sucesivamente hasta el ltimo. Por supuesto, cada vez que se

Figura 5.42.

96

desplazan los valores de los registros, se carga en el ltimo registro ceros, de manera
que al terminar de generar todos los valores, todos los registros estarn a 0. Aunque esto
tampoco ser apreciado por el usuario porque en el momento que todos son 0, ya han
transcurrido los 512 ciclos de reloj y ya se cargan los siguientes valores de seal.

COMPONENTES NECESARIOS
Para llevar a cabo la realizacin de este bloque funcional, hemos necesitado:

1 contador ascendente de 10 bits.

98 registros

84 de 3 bits

14 de 10 bits
1 comparador de 10 bits.

97

5.4. SIGNAL_GENERATOR
FUNCIN
La funcin de este bloque es generar las seales que
activan o desactivan los transistores que controlan el convertidor.
Disponemos de cuatro transistores por cada una de las
seis fases, por tanto, este bloque genera 24 seales (cuatro
transistores por cada una de las seis fases). Dichas seales
(transistores) tomarn el valor 1 (activo) 0 (inactivo) segn
el valor de la fase que tengamos, siguiendo la siguiente tabla:
Tabla 5.1
NIVEL DE FASE

TRANSISTORES

T0 T1 T2 T3
0

Decir que, aunque viene representado por 3 bits y podra


ser mayor, el valor de la fase ser cmo mximo 4 (pues, lo que
haca el modulador de 6 fases 5 niveles era permitir slo 5
niveles: 0, 1, 2 ,3 y 4).

Figura 5.43

La funcin de este bloque ser, por tanto, generar los


valores de los cuatro transistores de los que se dispone para cada fase (6 fases por 4
transistores es igual a un total de 24 transistores) segn el valor que tengamos a la
entrada de dichas fases.

ENTRADAS
Este bloque carece de seal de reloj y de reset. Es un bloque combinacional que
funciona directamente nada ms recibir los valores de las seales de fase que salen del
bloque phases_sequence_generator.

98

PHASE1, PHASE2, PHASE3, PHASE4, PHASE5, PHASE6(2 downto 0): seis


seales de 3 bits que son los valores de fase generados por el bloque anterior
phases_sequence_generator.

SALIDAS
T0A, T1A, T2A, T3A (son los cuatro valores de los transistores que representan el
valor de entrada para la fase 1: PHASE1), T0B, T1B, T2B, T3B (para la fase 2:
PHASE2), T0C, T1C, T2C, T3C (para la fase 3: PHASE3), T0D, T1D, T2D, T3D (para
la fase 4: PHASE4), T0E, T1E, T2E, T3E (para la fase 5: PHASE5), T0F, T1F, T2F y
T3F (para la fase 6: PHASE6). Las salidas sern 24 valores de 1 bit. Para cada valor de
fase que entra, este circuito combinacional genera cuatro valores de 1 bit que son los
transistores que representan a dicho valor de fase.

ESQUEMA Y DISEO
Este bloque, cmo ya se ha dicho, es un bloque combinacional. Simplemente
est formado por seis multiplexores (uno por cada fase), de forma que segn el valor de
fase, asigna distintos valores a los transistores correspondientes a dicha fase.
Como es un multiplexor por cada fase de entrada, los valores entran en la unidad
al mismo tiempo y las salidas (los valores de los transistores) salen al mismo tiempo
tambin.

COMPONENTES NECESARIOS
En la figura 5.44 podemos ver un esquema general de la composicin interna del
bloque, tal y como lo interpreta la mquina. Realmente es una estructura repetitiva para
cada una de las 6 entradas.

99

Figura 5.44. Composicin interna del bloque signal_generator.

Bajo estas lneas se muestra de forma ampliada el bloque que aparece


repetidamente a la derecha en el esquema anterior y la composicin interna de dicho
bloque.

Figura 5.45

100

5.5 GENERADOR DE SALIDAS


5.5.1. Introduccin a los tiempos muertos
Los valores de los tiempos muertos de los interruptores se han obtenido
adoptando la convencin de tomar un 15% del perodo de conmutacin correspondiente.
La generacin de tiempos muertos es el paso final antes de obtener los valores
de los transistores y consiste en realizar las modificaciones precisas sobre stos para
tener en cuenta el hecho de que las conmutaciones no se producen de forma instantnea
sino que el paso de 0 a 1 de 1 a 0 implica un cierto tiempo de retardo en los
transistores. Esta limitacin podra provocar que en el momento de llevarse a cabo la
conmutacin, los transistores complementarios de una misma rama pongan en
cortocircuito el bus de continua del convertidor.
As pues, es preciso realizar un desplazamiento de todos los flancos positivos en
las seales de disparo y tambin en sus correspondientes seales complementarias. En la
figura 4.4 se ha denotado como D a la seal complementaria de la D. Las seales
denotadas como d y d son el resultado de haber realizado un desplazamiento de todos
los flancos positivos en un valor correspondiente al tiempo muerto proporcionado. Estas
seales modificadas ya son susceptibles de ser aplicadas directamente sobre los
terminales de disparo de los interruptores del convertidor.

Figura. 5.46. Introduccin de los tiempos muertos a las seales de disparo.

101

FUNCIN
Este es el ltimo bloque de nuestro
circuito y es el que genera las salidas globales del
sistema. Genera, pues, las 48 seales a partir de
las 24 seales que le entran y, adems, aade los
tiempos muertos cuando as se lo indique la seal
de entrada.
La funcin de este bloque es la de, a partir
de los valores de los transistores que nos entrega
el bloque signal generator, generar las seales
de salida del sistema global, que son los valores
de los transistores y sus valores complementados
con la posibilidad de generar dichos valores con
un tiempo muerto siempre y cuando la seal
select_dead_time est seleccionada.

ENTRADAS
clk: reloj del circuito.
reset: puesta en estado inicial del circuito.
select_dead_time: seal que permite
generar las salidas con un tiempo muerto sin l.
Es una opcin que el usuario podr seleccionar a
travs de un pulsador en la placa.
enable_outputs: seal que permite o no
generar las salidas. Pues cuando exista un error, el
sistema desactivar esta seal para que salgan
todas las salidas 0.
T0A, T1A, T2A, T3A, T0B, T1B, T2B, T3B,
T0C, T1C, T2C, T3C, T0D, T1D, T2D, T3D, T0E,
T1E, T2E, T3E, T0F, T1F, T2F, T3F: 24 valores
de 1 bit de los transistores que son entregados por
el bloque anterior signal _generator.
Figura 5.47.

102

SALIDAS
PWM_A0p(p de positive), PWM_A0n(n de negative), PWM_A1p, PWM_A1n,
PWM_A2p, PWM_A2n, PWM_A3p, PWM_A3n, PWM_B0p, PWM_B0n, PWM_B1p,
PWM_B1n, PWM_B2p, PWM_B2n, PWM_B3p, PWM_B3n, PWM_C0p, PWM_C0n,
PWM_C1p, PWM_C1n, PWM_C2p, PWM_C2n, PWM_C3p, PWM_C3n, PWM_D0p,
PWM_D0n, PWM_D1p, PWM_D1n, PWM_D2p, PWM_D2n, PWM_D3p, PWM_D3n,
PWM_E0p, PWM_E0n, PWM_E1p, PWM_E1n, PWM_E2p, PWM_E2n, PWM_E3p,
PWM_E3n, PWM_F0p, PWM_F0n, PWM_F1p, PWM_F1n, PWM_F2p, PWM_F2n,
PWM_F3p, PWM_F3n: 48 seales de 1 bit. Son los 24 valores de los transistores
(cuatro transistores por fase) y sus negados.

ESQUEMA Y DISEO
Este bloque est formado por la
instanciacin repetitiva del bloque
single_output_generator. Dicho bloque se
aplica a cada valor de entrada de nuestro
bloque global y, a partir de ah, se generan las
salidas. Por tanto, est formado por la
repeticin del bloque
single_output_generator para cada una de las 24

Figura 5.48

entradas.
SINGLE_OUTPUT_GENERATOR
Bloque cuyas entradas son las seales generales de clk y reset, la seal del
transistor correspondiente (PWM_in), la seal select_dead_time para saber si tiene que
aadir o no los tiempos muertos y la seal enable_outputs para saber si hay que inhibir
las salidas o no.
Las salidas de este bloque son las salidas globales del valor del transistor
(PWM_out_p) y su negado (PWM_out_n).

103

Este bloque est formado, a su vez, por tres bloques de una jerarqua inferior,
que son: dead_time, inversor y mux_delay. Los tres se interconectan tal y como
muestra la figura.

Figura 5.49. Interconexin de los bloques que forman al bloque single_output_generator

En la figura 5.50 se encuentra representado el esquema que implementa la


introduccin de los tiempos muertos en las seales de disparo. Bsicamente, se basa en
el uso de dos circuitos detectores de flanco que generan un pulso en el momento en que
se produzca un flanco positivo tanto en la seal principal como en su complementaria;
en este momento, el biestable RS se pone a 1 y su salida negada se aplica a las seales
de salida; al mismo tiempo se dispara un contador cuya salida de contaje se compara
con el valor de tiempo muerto correspondiente. Mientras dura el contaje, el biestable
sigue a 1 y la seal en la que hubo el flanco positivo permanece a 0. Una vez que
finaliza el contaje, se resetea el biestable y la seal en la que hubo el flanco positivo
vuelve a ponerse a 1. Durante todo este proceso la seal en la que hubo el flanco
negativo no se modifica en ningn momento. Entre las seales de entrada y salida se
han dispuesto registros que garantizan el sincronismo de todo el proceso.

104

Figura 5.50. Esquema del sistema implementado para la aplicacin de los tiempos muertos a
las seales de disparo.

105

COMPONENTES NECESARIOS
En primer lugar, vamos a indicar el nmero de componentes que fueron
necesarios para la realizacin del bloque signal_output_generator. Es trivial que el
nmero de componentes es la suma de los componentes utilizados para realizar los
bloques inversor, mux_delay y dead_time.

2 sumadores de 5 bits.

10 registros

8 registros de 1 bit

2 de 5 bits

6 multiplexores 4 a 1

4 de 1 bit

2 de 5 bits

Dicho esto, y cayendo en la cuenta de que dicho bloque


(single_output_generator) se aplica para cada una de las entradas a nuestro bloque
(output_generator), el nmero de componentes necesarios para la realizacin de
nuestro bloque ser el utilizado para single_output_generator multiplicado por el
nmero de entradas que son 24. Por tanto:

48 sumadores de 5 bits

240 registros

192 registros de 1 bit

48 de 5 bits

144 multiplexores 4 a 1

96 de 1 bit

48 de 5 bits

106

6. VERIFICACIN DEL FUNCIONAMIENTO DEL


SISTEMA DE MODULACIN

6.1. SIMULACIONES MEDIANTE MODELSIM


SIMULACIN SATURADOR
Para la comprobacin del bloque hemos realizado un banco de pruebas a travs
del cual suministramos los estmulos para las entradas del bloque, que son los seis
vectores que luego enviar el DSPACE.
En la figura 6.1 se puede ver la simulacin en la que se observa que el circuito
satura los vectores que son mayores que 4 y no satura los que son inferiores a 4.
Se realiza la prueba con dos bancos de valores distintos para comprobar que,
efectivamente, cumple su funcin para cualquier vector.

Figura 6.1. Simulacin del saturador.

SIMULACIN MODULADOR 6 FASES 5 NIVELES


Este banco de pruebas es importante porque demuestra la funcionalidad del
modulador de 6 fases y 5 niveles al completo y, consecuentemente, la funcionalidad
simultnea de los dos bloques de la jerarqua inferior que lo componen, concretamente
del bloque modulator6p2n que est formado a su vez por otros bloques de alta
dificultad.
Suministramos los estmulos para las entradas del bloque, que son los vectores
(parte entera de 3 bits y decimal de 9 bits unidas en un mismo vector) que nos entrega el
107

saturador (bloque precedente a ste y que satura los vectores de entrada al sistema
global).
En la figura 6.2 podemos ver la obtencin de los vectores de tiempo y los
vectores de fase a partir de esos seis vectores que nos entrega el saturate. Los vectores
tiempo se entregan antes que las fases porque se calculan antes; debemos tener en
cuenta que stos ya se obtienen en el modulator6p2n, mientras que las fases se
calculan, tras finalizar el modulator6p2n, en el siguiente bloque add_integer_part.

Figura 6.2. Simulacin del modulador de 6 fases 5 niveles

SIMULACIN MODULADOR 6 FASES 2 NIVELES


Este banco de pruebas tambin es importante porque demuestra la funcionalidad
del modulador de 6 fases y 2 niveles y, consecuentemente, la funcionalidad conjunta de
los tres bloques inferiores que lo componen.
Suministramos los estmulos para las entradas del bloque, que son las partes
decimales de los vectores que nos entrega el saturador (bloque precedente a ste y que
satura los vectores de entrada al sistema global).
Realizamos este banco de pruebas para dos conjuntos de entradas distintas y
vemos las salidas que se obtienen tras realizar las distintas funciones llevadas a cabo en
los distintos bloques que lo forman.

108

Figura 6.3. Simulacin del modulador de 6 fases 2 niveles.

SIMULACIN ORDER
Para la comprobacin del bloque realizamos un banco de pruebas donde
pasamos los estmulos para las entradas del bloque, que son sern las partes decimales
de los vectores que salen del saturate y que entran al modulator6p5n.
A continuacin, se puede ver en la simulacin que realmente ordena los vectores
que entrada y aade los identificadores correspondientes a la posicin inicial de dichos
vectores.

Figura 6.4. Simulacin de order.

109

SIMULACIN TIME_GENERATOR
Para la comprobacin del bloque realizamos el banco de pruebas donde pasamos
como parmetros conocidos las entradas del bloque que, luego, en el sistema global,
vendrn de otros bloques precedentes (clk y reset son globales a todo el sistema y los
seis vectores decimales ordenados que vendrn del bloque order) y observamos las
salidas.
A continuacin, se puede ver en la simulacin que realmente resta las partes
decimales que entran al recibirla seal init_process, tal como se explic antes, y obtiene
los vectores tiempo correspondientes. Se ha realizado la simulacin para dos bancos de
vectores distintos y realiza el clculo perfectamente para ambos, entregando, tras pocos
ciclos de reloj, los vectores a la salida y generando la seal end_process al final del
proceso.

Figura 6.5. Simulacin de time_generator.

SIMULACIN INVERSE_ORDER
Para la comprobacin del bloque realizamos el banco de pruebas donde pasamos
como parmetros conocidos las entradas del bloque que, luego, en el sistema global,
vendrn de otros bloques precedentes (clk y reset son globales a todo el sistema y los
seis identificadores que vendrn del bloque order) y observamos las salidas.
A continuacin, se puede ver en la simulacin que realmente desordena la matriz
triangular superior tal como indican los identificadores de la entrada.

110

Se ha realizado la simulacin para dos bancos de identificadores distintos y se


puede observar en la siguiente figura que realiza perfectamente la desordenacin de la
matriz triangular para ambos.

Figura 6.6. Simulacin de inverse_order.

SIMULACIN ADD_INTEGER_PART
Para la comprobacin del bloque realizamos la simulacin con dos bancos de
valores distintos. Se puede comprobar visualmente como VintegerA es sumado a cada
bit de VseqA obtenindose 3 bits que son la parte ms significativa de P1, que es la
salida. Igualmente con los dems vectores.

Figura 6.7. Simulacin de inverse_order.

111

SIMULACIN PHASES_SEQUENCE_GENERATOR
En esta simulacin suministramos los estmulos para las entradas del bloque, que
son las salidas del modulator6p5n: siete vectores de tiempos y seis vectores de fases,
y vemos como genera la secuencia. En esta simulacin, no es fcil la comprobacin del
buen funcionamiento del sistema. Esto se puede ver mejor en el anlisis de cada uno de
los bloques individuales que lo forman (time_acumulator y sequence_generator).
Lo que s se puede ver es que el sistema funciona adecuadamente tras la interconexin
de los dos bloques y que genera la secuencia correctamente.

Figura 6.8. Simulacin de phases_sequence_generator.

SIMULACIN TIME_ACUMULATOR
Realizamos la simulacin empleando dos bancos de valores diferentes. Podemos
comprobar que los tiempos acumulados son la suma de las mitades de los tiempos de
entrada (teniendo en cuenta que cuando es impar, una de las mitades es mayor en 1
unidad que la otra). Para comprobar mejor que realiza dicha suma, se ponen los valores
de los tiempos en formato decimal. Tambin se puede comprobar como se elimina el
valor de fase correspondiente cuando el tiempo a sumar es 0.
La figura 6.9 muestra las entradas para este bloque para dos bancos de valores
distintos y la figura 6.10 las salidas (tiempos acumulados y fases acumuladas) a los dos
bancos.

112

Figura 6.9. Simulacin de time_acumulator. Entradas.

Figura 6.10. Simulacin de time_acumulator. Salidas.

SIMULACIN SEQUENCE_GENERATOR
Suministramos como estmulos para las entradas del bloque los tiempos
acumulados y las fases acumuladas, que luego sern enviadas por el bloque
time_acumulator.
Podemos comprobar que, tras 512 ciclos de reloj (que han salido todo ceros por
que no haba valores de fase en la entrada), se activa la seal new_cycle_out y van
saliendo los distintos valores de fase que se encuentran en la entrada, es decir, van
saliendo los bits de tres en tres del vector de entrada. Recordemos que los valores de
fase eran vectores de 3 bits.
Cada valor va saliendo el nmero de ciclos correspondientes a su tiempo hasta
que se llegan a los 512 ciclos, momento en que se activar la seal new_cycle_out y
comenzar el ciclo de nuevo.

113

Para poder apreciar que realmente cada valor de fase sale durante el tiempo que
le corresponde, aadimos en la siguiente grfica unos cursores, donde se puede ver el
tiempo transcurrido con cada valor de fase. En este caso, trabajamos con un reloj de 20
ns. As, por ejemplo, tac1=8 que sern 8*20=160 ns (de 10270 a 10430 ns); tac2=16 ns,
lo que quiere decir que ha aumentado 8 ciclos desde tac1, por tanto sern 160 ns otra
vez (de 10430 a 10590 ns); tac3=23, lo que quiere decir que ha aumentado 7 ciclos
desde la vez anterior, por tanto sern 7*20ns=140 ns(de 10590 a 10730 ns), y as
sucesivamente.

Figura 6.11. Simulacin de sequence_generator.

SIMULACIN SIGNAL_GENERATOR
Es de fcil comprobacin visual que, para el valor de fase que entra(un valor de
3 bits), se activan los cuatro transistores de dicha fase segn la tabla antes expuesta.
Inicialmente las fases estn a con valor 111, pues es el valor que indica que se
est en reseteo y que todos los transistores deben de valer 0. Tras el inicio, mandamos

114

tres bancos de valores de fase distintos y para los tres genera inmediata y
adecuadamente los valores de los transistores.
Por ejemplo, en el primer banco de valores, phase1 es 001, con lo cual slo
activa el primer transistor de su fase (T0A), y por ejemplo phase2 es 011 y se
comprueba como, efectivamente, activa los tres primeros transistores de su fase (T0B,
T1B y T2B).

Figura 6.12. Simulacin de signal_generator.

115

SIMULACIN DEAD_TIME
Aadiremos aqu el banco de pruebas llevado a cabo para probar
individualmente el bloque dead_time.

Figura 6.13. Simulacin de dead_time.

Se puede ver, como tanto para la entrada positiva como para la negativa, genera
el tiempo muerto cuando se produce el flanco de subida en dicha seal de entrada y
nunca cuando es el de bajada. Tal como est diseado el sistema, el tiempo muerto es un
15 % del tiempo de conmutacin.

SIMULACIN OUTPUTS_GENERATOR
Suministramos como estmulos para las entradas del bloque (que sern luego las
las salidas de signal_gnerator): 24 valores de 1 bit, o sea el valor de cuatro transistores
para cada una de las fases que son seis(6*4=24). Adems, las seales globales que
vendrn del programa principal: select_dead_time que, en este caso, est a 0 con lo
que las salidas se obtendrn sin la generacin de tiempos muertos y la seal
enable_outputs que, como se aprecia en la figura, est constantemente a 1, con lo que
las salidas salen en todo momento.
Mostramos en la figura 6.14 los valores de entrada de la simulacin y en la
figura 6.15 los valores de salida.

116

Figura 6.14. Simulacin de outputs_generator. Entradas

117

Figura 6.15. Simulacin de outputs_generator. Salidas.

118

6.2. PRUEBAS EN EL PROTOTIPO DE LABORATORIO


El algoritmo ha sido probado por simulacin y usando un prototipo de
laboratorio. En ambos casos, se us el convertidor de puentes H en cascada de 5 fases y
5 niveles, con 3125 vectores espaciales diferentes, mostrado en la figura 6.16.
En las pruebas se ha utilizado una carga resistiva de 100 , una inductancia de
15 mH, una frecuencia de conmutacin de 2 kHz, y un escaln de tensin de 20 V.

Figura 6.16. Inversor de puentes H en cascada(5 fases y 5 niveles)

Los resultados de la simulacin se han obtenido usando Simulink junto con la


librera SimPowerSystems.
Los resultados experimentales han sido obtenidos gracias a un prototipo real
usando una plataforma DSPACE y una FPGA. La tarjeta Digilent S3 fue usada para
implementar el algoritmo estrictamente siguiendo el diagrama de bloques usado
previamente en simulaciones. Esta tarjeta incluye una FPGA XC3S200 de Xilinx, que
tiene 4.320 clulas lgicas, cada una constituida por dos tablas de bsqueda 16x1 y dos
biestables. La tarjeta DSPACE DS1103 PPC Controller proporciona los vectores de
referencia a la FPGA. La figura 6.17 muestra el diagrama de bloques del sistema.

119

Figura 6.17. Diagrama de bloques del sistema.

Inverter

FPGA

dc-link
Load

DSPACE
Figura 6.18. Montaje en el laboratorio

120

La figura 6.18 muestra la identificacin de cada uno los bloques de la figura 6.17
en el prototipo del laboratorio.
La figura 6.19 es el circuito de potencia del laboratorio de forma ampliada.
La figura 6.20 muestra la FPGA programada en el presente proyecto con los
adaptadores de 3 V a 5 V necesarios para su conexin con el DSPACE y con el circuito
de potencia.

Figura 6.19. Circuito de potencia. 5 fases.

121

6.20. FPGA con los adaptadores de 3 V a 5 V para el DSPACE y para el circuito de potencia

La tensin de referencia, los resultados simulados y los resultados


experimentales de la prueba se muestran en las figuras 6.21 a 6.25. Los datos
experimentales se han extrado utilizando un osciloscopio digital y se han representado
usando Matlab para facilitar la comparacin de los resultados con la simulacin. La
tensin de referencia constituye un sistema desequilibrado de las cinco fases con un
quinto armnico muestreado a la frecuencia de conmutacin.
La tensin a travs de las resistencias de fase VR sigue a la seal de referencia
de entrada. Estos resultados demuestran el buen funcionamiento de la implementacin
del algoritmo y la concordancia entre el modelo de simulacin y el prctico.

122

Figura 6.21. Simulacin y resultados experimentales de la fase a.

Figura 6.22. Simulacin y resultados experimentales de la fase b.

123

Figura 6.23. Simulacin y resultados experimentales de la fase c.

Figura 6.24. Simulacin y resultados experimentales de la fase d.

124

Figura 6.25. Simulacin y resultados experimentales de la fase e.

125

126

7. CONCLUSIONES Y LNEAS FUTURAS

En el presente proyecto se ha desarrollado e implementado el algoritmo de


modulacin por vector espacial de 6 fases y 5 niveles para convertidores continuaalterna. La implementacin se ha realizado mediante una FPGA de XILINX a partir de
la descripcin en lenguaje VHDL sintetizable.
Dicho proyecto se desarroll mediante la herramienta Foundation ISE, la cual
nos permiti definir la implementacin del algoritmo mediante el lenguaje de
descripcin hardware VHDL.
Se realiz la sntesis del cdigo VHDL empleando la herramienta XST de Xilinx
y para realizar la verificacin del funcionamiento del algoritmo mediante simulaciones,
se utiliz la herramienta ModelSim XE III de Mentor Graphics.
Una vez se finaliz la descripcin del algoritmo de modulacin vectorial en
VHDL, se llev a cabo la comprobacin del funcionamiento del mismo en una
aplicacin real en el laboratorio. La comprobacin se realiz utilizando una placa de
desarrollo S3 de Digilent basada en una FPGA XC3S200 de Xilinx. Dicha placa se
conect al convertidor real.
Se realizaron toda una serie de pruebas para verificar el correcto funcionamiento
del algoritmo y comprobar que no se produjesen situaciones no deseadas para ningn
valor de las variables de entrada. Dichas variables se generaron mediante la herramienta
de prototipado rpido dSPACE basada en un ordenador personal. Se comprob que se
cumplan todos los requisitos temporales y funcionales y se verific que el sistema
programado funcionaba correctamente haciendo variar los valores de las variables de
entrada de forma continua y recorriendo todo el rango de valores posible.
Este trabajo se ha enviado para su publicacin en una revista de IEEE
especializada en electrnica de potencia y est pendiente de aceptacin.

127

7.1. LNEAS FUTURAS


Un proyecto complementario consistira en programar la modulacin por vector
espacial para convertidores en fuente de corriente dado que en este proyecto se ha
realizado para convertidores en fuente de tensin.
Asimismo tambin queda abierta la implementacin del algoritmo para
convertidores de mayor nmero de niveles. El presente proyecto est basado en un
convertidor de cinco niveles.
Otra lnea de trabajo consistira en implementar en una FPGA de mayor
capacidad tanto el algoritmo de modulacin vectorial diseado en este proyecto como el
algoritmo de control actualmente implementado mediante el DSPACE.
En trminos ms generales, el tema que se aborda en el presente proyecto
presenta un amplio abanico de posibilidades de desarrollo puesto que forma parte de un
campo relativamente reciente el cual se encuentra todava en plena fase de expansin.
Actualmente en el Departamento de Tecnologa Electrnica se estn
desarrollando varias lneas de trabajo relacionadas con la modulacin de convertidores
continua-continua multinivel.

128

129

130

APNDICE A. INTRODUCCIN A LAS FPGAs

A.1. Conjuntos programables de puertas (FPGAs)


Un conjunto programable de puertas [FPGA (Field Programmable Gate
Array)] es un circuito digital configurable por el usuario, es decir, un circuito digital
cuya funcin puede modificar el usuario mediante la programacin e interconexin de
los elementos que lo forman.
El rpido desarrollo de estos circuitos ha provocado que en la actualidad ningn
diseador se plantee realizar un sistema digital mediante circuitos estndar de funcin
fija TTL o CMOS de escala de integracin media o alta [MSI (Medium Scale of
Integration), LSI (Large Scale of Integration)].

El diseo de sistemas digitales para su implementacin con FPGAs requiere la


utilizacin de herramientas de diseo asistido por computador [CAD (Computer Aided
Design)] debido a la complejidad del proceso, aunque en algunos casos es
recomendable la intervencin manual del diseador para mejorar el resultado obtenido
por dichas herramientas.
Las distintas FPGAs disponibles comercialmente poseen distintas arquitecturas
internas, pero todas se caracterizan por:

Distribuir espacialmente en el interior de la FPGA los bloques lgicos

bsicos de la FPGA, que deben permitir la realizacin de todo tipo de circuitos


combinacionales

y secuenciales. Estos componentes se denominan en conjunto

recursos lgicos.

Distribuir espacialmente en el interior de la FPGA las conexiones

internas necesarias para realizar la interconexin de los diferentes bloques lgicos, as


como de los terminales de entrada y salida del circuito. Estas conexiones internas se
denominan en su conjunto recursos de interconexin.

131

Figura A.1. Diagrama de bloques bsico de una FPGA.

Figura A.2. Celda de la memoria de configuracin

Figura A.3.Memoria de configuracin de una FPGA de tecnologa SRAM.

132

Figura A.4. Mitad ("slice'" del bloque lgico interno (CLB) de la familia Spartan II.

Figura A.5. Bloque de entrada/salida (IOB) de la familia Spartan II.

133

Figura A.6. Bloques especficos de memoria RAM(BRAM)

A.2. Aplicaciones de las FPGAs


Las grandes reas de aplicacin de las FPGAs son:

Realizacin de sistemas digitales de uso general.

Realizacin de sistemas de procesado de seal.

Realizacin de prototipos.

Sistemas en un circuito [SOC (System On Chip)].

Circuitos reconfigurables.

A.3. Fases del diseo de sistemas digitales mediante FPGAs


El diseo y realizacin de un sistema digital mediante FPGAs comprende las
siguientes fases:
A. Descripcin del diseo.
Fase en la que se especifica la funcin que debe realizar el sistema digital.
B. Compilacin y/o sntesis del diseo.
La etapa de compilacin forma parte de la fase de Compilacin e
Implementacin indicada en la figura A.7. En algunos casos esta etapa pasa inadvertida
al diseador, pues se puede ejecutar de forma automtica al iniciar la implementacin
que es la etapa siguiente.
La compilacin se puede considerar a su vez formada por las siguientes etapas:
I. Minimizacin lgica.
Consiste en reducir las ecuaciones lgicas del sistema digital descrito para

134

obtener unas nuevas ecuaciones ms sencillas y cuya implementacin d lugar


a un circuito ms sencillo y/o con menos retardos.
II. Sntesis.
Consiste en analizar los ficheros escritos en el leguaje de descripcin hardware
y traducir los comandos incluidos en dicho fichero a los circuitos bsicos para
realizar las funciones descritas, es decir, puertas lgicas y biestables.
III. Generacin de la lista de conexiones.
La lista de conexiones es simplemente un fichero de texto que incluye una lista
de todos los componentes que son necesarios para realizar el sistema digital
descrito anteriormente, y especifica cmo se deben conectar entre ellos.
C. Implementacin del diseo.
Es la etapa ms importante del proceso. Consiste en asignar a cada uno de los
componentes bsicos del sistema digital ya descrito mediante la lista de conexiones, los
recursos lgicos de interconexin de la FPGA escogida que son necesarios para su
realizacin fsica.
D. Programacin (configuracin) de la FPGA.
Al final del proceso de implementacin se obtiene un fichero de programacin
que permite programar la FPGA para que realice la funcin correspondiente al sistema
digital que se ha diseado en la fase de descripcin. Slo queda programar la FPGA.
E. Verificacin.
Su realizacin es opcional, pero actualmente no es posible disear un sistema
digital complejo sin antes verificar su funcionamiento de la forma prevista en estas
etapas. Se basa en la simulacin funcional y temporal que permiten comprobar el
funcionamiento de un circuito sin necesidad de realizarlo fsicamente, sirvindose para
ello de modelos de comportamiento del mismo.

135

Figura A.7. Etapas del diseo y realizacin de un sistema digital mediante FPGAs

A.4. Herramienta Foundation ISE de Xilinx


La necesidad de utilizar herramientas de diseo asistido por computador para
disear e implementar sistemas digitales mediante FPGAs, ha propiciado que los
fabricantes desarrollen herramientas de CAD propias. Esto les permite no proporcionar
una informacin exhaustiva sobre la realizacin fsica de sus circuitos, lo que favorece
la proteccin de la propiedad intelectual de los mismos. Por ello, para utilizar unA
determinada FPGA, en general es necesario recurrir a la herramienta de CAD del mismo
fabricante, especfica para sus circuitos.
Las herramientas de CAD actuales pueden realizar de forma automtica todas
las etapas de la compilacin e implementacin, a partir de la descripcin del sistema
digital realizada por el diseador.
La herramienta de CAD utilizada en el desarrollo del presente proyecto es la
denominada Foundation ISE, del fabricante Xilinx, orientada a la realizacin de
proyectos en HDL. En la figura A.8 se muestra una imagen del editor de proyectos
Proyect Navigator.

136

Figura A 8. Herramienta Foundation ISE de Xilinx.

En la subventana de la parte inferior izquierda de la figura A.9, dedicada a los


procesos que se pueden ejecutar, se observan las etapas principales del proceso de
diseo basado en HDLs, en la herramienta Foundation ISE:

Design Entry Utilities. Corresponde a distintas utilidades relacionadas


con la fase de descripcin del diseo.

Synthetize. Corresponde a la etapa de sntesis.

Implement Design. Corresponde a la fase de compilacin e


implementacin.

Generate Programming File. Corresponde a la generacin del patrn


(fichero) de configuracin, que es una parte de la etapa de
implementacin.

Figura A.9. Herramienta de edicin de esquemticos. Foundation ISE.

137

La herramienta Foundation ISE tambin permite definir sistemas digitales


complejos mediante el uso de esquemticos (Figura A.3) y bloques predefinidos
incluidos en bibliotecas, que realizan funciones ya predeterminadas, en algunos casos
parametrizables, es decir, adaptables a las necesidades de la aplicacin mediante la
modificacin de diversos parmetros.

A.5. Lenguaje VHDL


El VHDL es un lenguaje de descripcin hardware que puede utilizarse para
modelar, documentar, simular, verificar y sintetizar un sistema digital. Es un lenguaje
complejo y estructurado, que permite la descripcin de cualquier circuito combinacional
o secuencial. Por ser universal, permite la implementacin posterior del circuito descrito
en cualquier tipo de circuito integrado disponible en la actualidad.
Por todo ello, se ha elegido implementar la totalidad del algoritmo de
modulacin en VHDL.
Se pueden consultar en los siguientes apndices (apndices B y C,
respectivamente) las hojas de caractersticas de la familia Spartan 3 de FPGAs de
Xilinx y la documentacin de la placa de desarrollo S3 de Digilent, basada en la
FPGA XC3S200, utilizada en este proyecto.

138

APNDICE B. FAMILIA SPARTAN 3 DE FPGAS DE


XILINX.
La implementacin del algoritmo de modulacin por vector espacial se ha
llevado a la prctica sobre una placa de desarrollo de la firma DIGILENT; esta placa
est basada en una FPGA SPARTAN 3 de XILINX que posee los recursos necesarios
para poder llevar a cabo la realizacin del algoritmo.

Figura. B.1. Vista superior de la placa de desarrollo Spartan-3 Starter Board.

En la figura B.1 se muestra una imagen superior de la placa de desarrollo. En


concreto se trata de una placa SPARTAN-3 STARTER BOARD, la cual proporciona
una adecuada plataforma de desarrollo para llevar a cabo el cometido del diseo. Esta
placa integra una FPGA SPARTAN 3 de XILINX con un total de 200.000 puertas
lgicas equivalentes, dispositivos de entrada/salida integrados y 1MB de memoria
SRAM asncrona. La placa tambin incluye una memoria Flash ROM programable que
permite almacenar los diseos programados.
Sus especificaciones principales son las siguientes:

139

Basada en una FPGA de la familia SPARTAN 3 de la firma XILINX, con


200.000 puertas lgicas equivalentes, 12 multiplicadores de 18 bits, 216 Kbits
de de bloques RAM, y una frecuencia de reloj interna de hasta 500 MHz.

Memoria Flash integrada XCF02S de 2 Mbit.

Consta tambin de 8 interruptores, 4 pulsadores, 9 diodos LED y de un display


con 4 visualizadores de 7 segmentos.

Puerto serie, puerto VGA y conector PS/2 para teclado/ratn.

Tres conectores de expansin de 40 pines cada uno.

Tres reguladores de tensin para corriente elevada de 3.3V, 2.5V y 1.2V.

Programacin de la FPGA a travs de cables JTAG3, P4 y MultiPRO de


XILINX.

Memoria SRAM integrada de 1 Mbyte, 10 ns (256 Kb 32).

En la figura B.2 se representa un esquema de bloques de los distintos


componentes que integran la placa, entre los que se incluyen los puertos de
comunicacin y dispositivos de entrada/salida:

Figura. B.2. Esquema de bloques de la placa de desarrollo Spartan-3 Starter Board.

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

APNDICE C. Placa de desarrollo S3 de Diligent


basada en la FPGA XC3S200 de Xilinx.

163

164

165

166

167

168

169

170

171

172

REFERENCIAS BIBLIOGRFICAS

[1] G. K. Singh, Multi-phase induction machine drive research a


survey, Electric Power Systems Research, vol. 61, no. 2, pp. 139147,
28 Mar. 2002.
[2] H.W. van der Broeck, H.C. Skudelny, y G.V. Stanke. Analysis and realization of a
pulsewidth modulator based on voltage space vectors. In Proceedings IEEE Industry
Applications Conference, 244251, 1986.
[3] J. Rodriguez, J. Lai, and F. Z. Peng, Multilevel inverters: a survey
of topologies, controls, and applications, IEEE Trans. Ind. Electron.,
vol. 49, no. 4, pp. 724738, Aug. 2002.
[4] L. Parsa and H. Toliyat, Five-phase permanent-magnet motor drives,
IEEE Trans. Ind. Appl., vol. 41, no. 1, pp. 3037, Jan.Feb. 2005.
[5] J. Kelly, E. Strangas, and J. Miller, Multiphase space vector pulse width
modulation, IEEE Trans. Energy Convers., vol. 18, no. 2, pp. 259264,
2003.
[6] S. Lu and K. Corzine, Multilevel multi-phase propulsion drives, in
Electric Ship Technologies Symposium, 2005 IEEE, 25-27 Jul. 2005,
pp. 363370.
[7] H.-M. Ryu, J.-H. Kim, and S.-K. Sul, Analysis of multiphase space
vector pulse-width modulation based on multiple dque spaces concept,
IEEE Trans. Power Electron., vol. 20, no. 6, pp. 13641371, Nov. 2005.
[8] E. Levi, M. Jones, S. Vukosavic, and H. Toliyat, Operating principles
of a novel multiphase multimotor vector-controlled drive, IEEE Trans.
Energy Convers., vol. 19, no. 3, pp. 508517, Sep. 2004.
[9] M. J. Duran and E. Levi, Multi-dimensional approach to multi-phase
space vector pulse width modulation, in 33rd Annual Conference of
IEEE Industrial Electronics Society. IECON06, Paris, Nov. 710 2006,
pp. 21032108.
[10] A. Iqbal and E. Levi, Space vector modulation schemes for a fivephase
voltage source inverter, in Power Electronics and Applications,
2005 European Conference on, 11-14 Sep. 2005, p. 12pp.

173

[11] lvarez Ruz de Ojeda. Luis Jacobo, Diseo digital con lgica programable.
Trculo Edicins. Santiago de Compostela 2004.
[12] lvarez Ruiz de Ojeda Luis Jacobo. Diseo de aplicaciones mediante PLDs y
FPGAs. Trculo Edicins. Santiago de Compostela 2001.
[13] Pardo Carpio. Fernando, VHDL: lenguaje para sntesis y modelado de circuitos
Ra-Ma, Madrid 2004.
[14] Prez Lpez Serafn A., Soto Campos, Enrique., Fernndez Gmez, Santiago.
Diseo de Sistemas Digitales con VHDL. Thomson-Paraninfo. 2002.
[15] http://www.digilentic.com.
[16] http://www.xilinx.com.
[17] Spartan-3 Starter Kit Board User Guide v1.1. UG130. Mayo 2005.

174

Вам также может понравиться