16
2. Objetivo de la FPGA para su aplicación al convertidor de potencia 2.1 Introducción Este proyecto presenta los siguientes objetivos a implementar en la FPGA (Field Programmable Gate Array) : o Comunicaciones con el DSP (Digital Signal Processor). Ésta será la encargada de pasarle una serie de valores que la FPGA necesitará tratar para los siguientes objetivos. o Señal de habilitación que permita o no realizar los disparos. o Realizar los disparos correspondientes a cada rama, en base a los valores registrados de tiempos y estado de cada fase. o Recepción de errores de driver desde y filtro de los mismos. En la siguiente figura se muestra un esquema de la parte correspondiente a la FPGA del hardware de control. Cálculos DSP FPGA Almacenamiento en registros de los cálculos del dsp. Asociación de los disparos correspondientes a cada estado recibido. Generación de la triangular. Comparación de tiempos de modulación con valores de la triangular. Asignación de disparos correspondientes a cada tiempo. Reloj. Bus direcciones. Chip Select. Read/Write Bus datos. Placa recepción de errores de driver. XReady. Bus datos. Tiempos (3). Estados (12). Habilitación de disparos. Valor máximo de la triangular. Reset registros. DSP Placa drivers Disparos. Figura 1. Bloques creados en la FPGA.

2. Objetivo de la FPGA para su aplicación al convertidor de potenciabibing.us.es/proyectos/abreproy/5284/fichero/Capitulo+2.pdf · 2. Objetivo de la FPGA para su aplicación al convertidor

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 2. Objetivo de la FPGA para su aplicación al convertidor de potenciabibing.us.es/proyectos/abreproy/5284/fichero/Capitulo+2.pdf · 2. Objetivo de la FPGA para su aplicación al convertidor

2. Objetivo de la FPGA para su aplicación al convertidor de potencia

2.1 Introducción

Este proyecto presenta los siguientes objetivos a implementar en la FPGA (Field Programmable Gate Array) :

o Comunicaciones con el DSP (Digital Signal Processor). Ésta será la encargada de pasarle una serie de valores que la FPGA necesitará tratar para los siguientes objetivos.

o Señal de habilitación que permita o no realizar los disparos.

o Realizar los disparos correspondientes a cada rama, en base a los valores registrados de tiempos y estado de cada fase.

o Recepción de errores de driver desde y filtro de los mismos.

En la siguiente figura se muestra un esquema de la parte correspondiente a la FPGA del hardware de control.

CálculosDSP

FPGA

Almacenamiento en registros de los cálculos del dsp.

Asociación de los disparos correspondientes a cada estado

recibido.

Generación de la triangular.

Comparación de tiempos de modulación con valores de la

triangular.

Asignación de disparos correspondientes a cada tiempo.

Reloj.

Bus direcciones.

Chip Select.

Read/Write

Bus datos.

Placa recepción

de

errores de driver.

XReady.

Bus datos.

Tiempos (3).

Estados (12).

Habilitación de

disparos.

Valor máximo de la

triangular.

Reset registros.

DSP

Placa drivers

Disparos.

Figura 1. Bloques creados en la FPGA.

Page 2: 2. Objetivo de la FPGA para su aplicación al convertidor de potenciabibing.us.es/proyectos/abreproy/5284/fichero/Capitulo+2.pdf · 2. Objetivo de la FPGA para su aplicación al convertidor

La figura 5 muestra el kit board Spartan 3, que cuenta con la FPGA XC3S200 [14], con 200,000 puertas, en el encapsulado XC3S200FT256.

Presenta las siguientes características:

o 4,320 celdas lógicas equivalentes

o Doce 18K-bit block RAMs (216K bits)

o Cuatro Digital Clock Managers (DCMs)

o Hasta 173 señales de entrada y salida para definer por el usuario

o Flash 2Mbit XCF02S de Xilinx.

o 1M-byte de SRAM.

Figura 2. Kit Spartan 3.

El entorno de trabajo será el ISE 14.1, el cual te permite crear el código en VHDL, realizar simulaciones (test bench) en el programa apropiado (Isim) y generar el archivo que deberá memorizarse en la memoria Flash de la Spartan 3.

En los siguientes apartados se desarrollarán en profundidad estos diferentes bloques.

Page 3: 2. Objetivo de la FPGA para su aplicación al convertidor de potenciabibing.us.es/proyectos/abreproy/5284/fichero/Capitulo+2.pdf · 2. Objetivo de la FPGA para su aplicación al convertidor

2.2 Descripción de los bloques

2.2.1 Generación señal 1 us.

Éste bloque corresponde al archivo div_frec.vhd. Consta de las siguientes señales:

o clk.

o reset.

o sat.

La señal sat se pondrá a 1 lógico cuando se llegue al valor deseado de tiempo muerto. Mientras tanto su valor será 0, impidiendo que el bloque superior a él (2.2.2) actúe como se indicará a continuación.

Figura 3. Diagrama de flujo generación de señal.

Page 4: 2. Objetivo de la FPGA para su aplicación al convertidor de potenciabibing.us.es/proyectos/abreproy/5284/fichero/Capitulo+2.pdf · 2. Objetivo de la FPGA para su aplicación al convertidor

En la siguiente figura observamos cómo se activa la señal sat cada microsegundo.

Figura 4. Señal de saturación.

2.2.2 Generación tiempos muertos

Antes de implementar el diagrama de flujo hay que tener en cuenta el fenómeno conocido como tiempos muertos. La técnica de modulación propuesta hasta ahora, está basadas en la suposición de que las llaves del inversor operen de manera ideal. Esto significa que el inversor trabaja precisa y rápidamente como las señales que recibe de la modulación. Es decir que las llaves conmuten en tiempo cero y respondan sin retardo a la señal de comando. En la práctica, las llaves del inversor son transistores, los cuales tienen tiempos de conmutación finitos, donde el tiempo de apagado es de mayor importancia. Dado que el tiempo de apagado (tOFF) es mayor que el de encendido (tON), debe introducirse un tiempo de seguridad para evitar un cortocircuito en la columna del inversor. Este tiempo de seguridad se denomina comúnmente tiempo muerto (Td).

Y como se observa en la siguiente figura, donde qb2, qb1 y qbn2 son disparos generados con la modulación propuesta, se ve como se conmuta idealmente, no hay inclusión de tiempos muertos. Esto podría suponer problemas debido a que 3 IGBTs podrían estar en estado de saturación a la vez, produciéndose cortocircuitos y llevando a la destrucción de algún componente, y por tanto, deteriorando el equipo montado.

Page 5: 2. Objetivo de la FPGA para su aplicación al convertidor de potenciabibing.us.es/proyectos/abreproy/5284/fichero/Capitulo+2.pdf · 2. Objetivo de la FPGA para su aplicación al convertidor

Figura 5. Conmutaciones sin inclusión de tiempos muertos.

Para solventar este problema, en nuestro modelo en VHDL incluiremos un código que los genere, obteniéndose los resultados de la siguiente figura. Éste bloque corresponde al archivo reg_desp.vhd y consta de las siguientes señales:

o clk.

o reset.

o entrada.

o salida.

La entrada será la señal que queremos obtener retrasada o no a través de la salida. Para ello se la hará pasar a través de un registro de desplazamiento. Pasará de una posición del registro a otra conforme se programe que lo haga en el bloque anterior. La señal enable de este bloque está asociada a la señal sat del anterior. La última posición de este registro será una entrada a una puerta AND, donde la otra entrada será nuestra señal (1 o 0). De esta forma, si la señal indicaba 1 lógico en el estado anterior, y el anterior es 0 lógico, el resultado será 0. Así pasamos de 1 a 0 de forma instantánea. Si por el contrario el estado anterior era un 0 lógico, al llegar como señal actual un 1, esta dará como resultado de la puerta AND un 0 hasta que esta misma señal haya recorrido todas las posiciones del registro de desplazamiento y entre como 1 lógico a la puerta.

Page 6: 2. Objetivo de la FPGA para su aplicación al convertidor de potenciabibing.us.es/proyectos/abreproy/5284/fichero/Capitulo+2.pdf · 2. Objetivo de la FPGA para su aplicación al convertidor

Inicio

Clk

Reset

sat

¿reset = 1?

Registro = 0

¿sat = 1?

Registro(i+1) =

registro (i)

Registro(i) = registro (i)

SI

SI

NO

NO

Salida =

entrada *registro(0)

Inicio

Figura 6. Diagrama de flujo registro de desplazamiento.

Las señales que se retrasarán en este bloque (entrada) serán precisamente los disparos que lleguen procedentes de la modulación.

El resultado será el siguiente:

Figura 7. Generación de tiempos muertos.

Page 7: 2. Objetivo de la FPGA para su aplicación al convertidor de potenciabibing.us.es/proyectos/abreproy/5284/fichero/Capitulo+2.pdf · 2. Objetivo de la FPGA para su aplicación al convertidor

Aquí se observa como antes de conmutar al siguiente estado, durante un instante de tiempo que debe ser suficientemente duradero, los 2 IGBTs implicados se mantienen a cero. Así conseguimos evitar que se produzcan cortocircuitos y proteger al equipo.

2.2.3 Disparos retardados

Este bloque corresponde al archivo delay.vhd. Consta de las siguientes señales:

o clk.

o reset.

o D1.

o D2.

o D1r.

o D2r.

o D1nr.

o D2nr.

Recibe las señales D1 y D2 y crea como salida estas mismas dos y sus negadas, las 4 retrasadas el tiempo muerto que se desee. Estas 4 señales corresponden a los 4 disparos de una rama del inversor multinivel para el que se usa todo este código completo.

Figura 8. Retraso de la señal de entrada respecto a la salida.

Page 8: 2. Objetivo de la FPGA para su aplicación al convertidor de potenciabibing.us.es/proyectos/abreproy/5284/fichero/Capitulo+2.pdf · 2. Objetivo de la FPGA para su aplicación al convertidor

2.2.4 Comparaciones

Este bloque corresponde al archivo comparaciones.vhd. Consta de las siguientes señales:

o Clk, valormax, reset, pico.

o tiempo1, tiempo2, tiempo3.

o sa1, sa2, sa3, sa4.

o sa1, sa2, sa3, sa4.

o sa1, sa2, sa3, sa4.

o qa2 (disparo superior de la rama a, lo mismo para b y c)

o qa1 (disparo medio superior de la rama a, lo mismo para b y c)

o qan2 (disparo medio inferior de la rama a, lo mismo para b y c)

o qan1 (disparo inferior de la rama a, lo mismo para b y c)

o qb2, qb1, qbn2, qbn1.

o qc2, qc1, qcn2, qcn1.

La señal valormax se recibirá desde el DSP y nos indicará el valor máximo al que debe llegar la triangular que se genera en este bloque, para realizar correctamente las comparaciones y asignar los disparos. Pico es una señal que se pone a 1 cuando se alcanza un extremo de la triangular y nos servirá para usar correctamente el bloque de registro en la sombra 2.2.5. En la siguiente figura observamos la señal triangular observada:

Figura 9. Señal triangular generada en la FPGA.

Page 9: 2. Objetivo de la FPGA para su aplicación al convertidor de potenciabibing.us.es/proyectos/abreproy/5284/fichero/Capitulo+2.pdf · 2. Objetivo de la FPGA para su aplicación al convertidor

Generando la triangular y comparando con los tiempos 1, 2 , 3 y hasta que se llega al valor final de valormax, se asignan los disparos de la siguiente manera. Sxy, donde x corresponde a la rama a, b o c e y al tiempo 1, 2, 3 o 4, sólo pueden valer 0, 1 o 2, según indique la modulación en ese instante. Si vale 0, significa que las señales de salida con valor serán qxn2, qxn1, correspondiente a los 2 igbts inferiores de la rama x, las otras dos, al ser complementarias, valdrán 0. Si vale 1, los que se activen a 1 serán los dos centrales, es decir, qxn2 y qx1. En caso de que valga 2, serán los dos superiores de la rama, es decir, qxn2 y qx1.

Estas qxy irán al bloque de disparos retardados 2.2.3.

Figura 10. Diagrama del bloque de comparaciones.

En la figura 28 se observa el resultado de un test bench que se realizó para una serie de valores

recibidos por la FPGA. En ella se observa la evolución de las 3 ramas para un ciclo de

conmutación.

Page 10: 2. Objetivo de la FPGA para su aplicación al convertidor de potenciabibing.us.es/proyectos/abreproy/5284/fichero/Capitulo+2.pdf · 2. Objetivo de la FPGA para su aplicación al convertidor

Figura 11. Disparos obtenidos para cada tiempo.

2.2.5 Registro normal y registro sombra

Éste bloque corresponde al archivo registro_16bits.vhd. Consta de las siguientes señales:

o Clk.

o entrada.

o cargar.

o reiniciar.

o salida.

Se distinguen dos bloques diferentes por la señal que reciben a través de “cargar”. Al bloque de registro sombra corresponde la señal pico, recibida del bloque descrito en 2.2.4. Para el registro normal, está señal se recibe desde otro bloque, que indica que registro relacionado con el DSP debe leerse/escribirse.

Este bloque guarda en un registro el valor que recibe en entrada, si el valor de cargar está a 1. Si esto no es así, se mantiene el valor que tiene anteriormente, que es el que se tiene en la señal salida.

Page 11: 2. Objetivo de la FPGA para su aplicación al convertidor de potenciabibing.us.es/proyectos/abreproy/5284/fichero/Capitulo+2.pdf · 2. Objetivo de la FPGA para su aplicación al convertidor

Figura 12. Registros de almacenamiento para la FPGA.

En el registro sombra, el hecho de que la señal cargar corresponda a la señal de pico permite que sólo se guarden estos valores específicos en los instantes en que la triangular alcanza su valor máximo y mínimo. Habrá que tener especial cuidado con este hecho, debido a que el contador de la FPGA debe estar perfectamente sincronizado con el tiempo de ejecución que haya en el DSP para la modulación.

El resto de registros sirven para que el DSP guarde en ellos información necesaria para la correcta actuación de la FPGA. En concreto se guardarán los siguientes valores en los registros:

Los tiempos calculados para modulación, escalados por el valor máximo (t1, t2 y t3, t4 no es necesario). De estos registros pasarán a los registros sombra cuando esté programado, y desde aquí se actuará para comparar con la triangular.

Otros valores que debe calcular el DSP y guardar en estos registros son los 12 disparos (4 por cada rama) calculados en la modulación. Pasará como con los registros donde se guardan los tiempos de modulación, es decir, de aquí pasarán a los registros en la sombra y se actuará como proceda con ellos.

Page 12: 2. Objetivo de la FPGA para su aplicación al convertidor de potenciabibing.us.es/proyectos/abreproy/5284/fichero/Capitulo+2.pdf · 2. Objetivo de la FPGA para su aplicación al convertidor

Señal de enable, es decir, habilitación de disparos. Dependerá su valor del estado en el que se encuentre la máquina de estados del DSP. Sólo valdrá 1 lógico cuando estemos en el estado RUN, estado en el cual se permite realizar toda la modulación, el control y se envían los disparos a la placa correspondiente de adaptación de disparos. De esta saldrán hacía la placa del driver mediante fibra óptica y se adaptarán a los rangos de tensión que requieren los drivers.

Señal de valor máximo. Esta señal marcará el tope de la cuenta que la triangular deberá realizar. Se debe tener especial cuidado con esta señal y que tenga el valor exacto, ya que el hecho de que cuenta un número de más hará que no se guarden correctamente los valores en los registros, al quedar mal sincronizado. En nuestro caso el valor máximo será 15000 ya que conmutamos a 5 KHz, es decir, en los picos superior e inferior de la triangular. Este valor sale de la siguiente cuenta: Nuestro reloj del DSP va 75 MHz, y queremos conmutar a 5 KHz. Dividiendo el primero por el segundo obtenemos este valor de 15000. Si la cuenta de la triangular comienza en 0, este valor máximo donde debe llegar será 14999.

Otra señal recibida es la de reset de la triangular. También podrá indicarse desde el DSP cuando se requiera parar la cuenta de la triangular.

Por último se pasa la señal de reset de registros, necesaria activarla a 1 lógico para que se reseteen todos los registros. Esto se hará cada vez que se pase del estado de RUN a cualquier otro estado, ya sea de error, de parada o standby, para que no queden almacenados valores que puedan afectar al correcto funcionamiento (modulación o control) del equipo al reiniciarse.

2.2.6 Filtro de error de driver

Éste bloque corresponde al archivo registro_16bits.vhd. Consta de las siguientes señales:

o Clk.

o reset.

o Error_in.

o Valor_error.

Este filtro está realizado tal que si recibimos por error_in la activación del error, éste se mantendrá activado durante un tiempo configurable por nosotros, para asegurar así que se mantiene un tiempo suficiente y actuar en consecuencia.

Page 13: 2. Objetivo de la FPGA para su aplicación al convertidor de potenciabibing.us.es/proyectos/abreproy/5284/fichero/Capitulo+2.pdf · 2. Objetivo de la FPGA para su aplicación al convertidor

Figura 13. Diagrama de bloques del filtro de errores.

2.2.7 Top

Éste bloque corresponde al archivo memoria_doble_puerto.vhd. Consta de las siguientes señales:

o Clk, reset.

o A (dirección de memoria correspondiente).

o XCSn1 (señal que indica la zona de memoria del DSP correspondiente).

o XRW (señal de lectura/escritura).

o Error_r, error_s, error_t.

o Xready.

o XD1 (datos correspondientes a la dirección de A).

o Disparo_final_xy.

Page 14: 2. Objetivo de la FPGA para su aplicación al convertidor de potenciabibing.us.es/proyectos/abreproy/5284/fichero/Capitulo+2.pdf · 2. Objetivo de la FPGA para su aplicación al convertidor

En este apartado se describirán los diferentes procesos aquí contenidos. El resto de código son instanciaciones de los bloques anteriormente comentados.

Proceso 1: maq_estados. En este proceso se crea una máquina de estados para definir el proceso completo de lectura/escritura que se llevará a cabo mediante la comunicación DSP/FPGA.

Las señales usadas por el mismo serán XRW (lectura/escritura del DSP), XCSn1 (chip select, proporcionado por el DSP) y Xready. También el bus de direcciones (A).

La descripción de estados es tal como sigue:

S0 (estado 0): En este estado inicial inicializamos las señales que usaremos para activar los bloques de lectura/escritura. Leer1 y escribir1 se ponen a 0 lógico. La señal xready debe iniciarse a 1 lógico, sino se crea conflicto con lo que procede del DSP. De este estado sólo pasaremos a S1 cuando se cuente un 1 ciclo.

S1 (estado 1): En este estado lo único que haremos es poner la señal Xready a 0 antes de pasar al estado a S2.

S2 (estado 2): Aquí es donde se decide entre lectura y escritura según la señal XRW esté a 0 (lectura) o a 1 (escritura). Una vez comprobado el estado de esta señal, se procede a que si estamos en un proceso de lectura, deberá contarse 1 ciclo de reloj antes de pasar al estado S3. En cambio, si estamos en un proceso de escritura, contaremos dos ciclos de reloj antes de evolucionar al estado S4.

S3 (estado 3): Aquí activaremos la señal Xready para avisar que ya es posible leer, y volver al estado S0.

S4 (estado 4): Aquí activaremos la señal Xready para avisar que ya es posible escribir, y volver al estado S0.

Page 15: 2. Objetivo de la FPGA para su aplicación al convertidor de potenciabibing.us.es/proyectos/abreproy/5284/fichero/Capitulo+2.pdf · 2. Objetivo de la FPGA para su aplicación al convertidor

Figura 14. Diagrama de flujo de la máquina de estados del proceso 1.

Proceso 2: errores_driver. En este proceso se leerán los errores de driver procedentes de cada tarjeta. Se hará una puerta OR entre ellos, de manera que si llega cualquier error, la señal de habilitar disparos (usada posteriormente en otro proceso) se pondrá a ‘0’ lógico y el equipo no disparará. Si los errores no existen, se tomará el valor del registro del DSP “enable”.

Page 16: 2. Objetivo de la FPGA para su aplicación al convertidor de potenciabibing.us.es/proyectos/abreproy/5284/fichero/Capitulo+2.pdf · 2. Objetivo de la FPGA para su aplicación al convertidor

Inicio

Error_r

Error_s

Error_t

or_errores =Error_r

or error_s or error_t

¿or_errores = 0? Enable = 1Enable = 0

NO SI

Figura 15. Proceso de errores de driver.

Proceso 3: habilita_disparos. Este proceso recibirá el valor de enable descrito en el el proceso 2. Si se encuentra a ‘1’ lógico permitirá que las señales de disparos estén con su valor real, si vale 0, no permitirá ningún disparo.

Figura 16. Proceso de habilitación de disparos.