Você está na página 1de 111

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO

PARÁ
CAMPUS BELÉM
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO

TAYMESON FURTADO CHAVES

IMPLEMENTAÇÃO DE UM INVERSOR MONOFÁSICO MULTINÍVEL


ACIONADO POR FPGA

BELÉM/PA
2023
TAYMESON FURTADO CHAVES

IMPLEMENTAÇÃO DE UM INVERSOR MONOFÁSICO MULTINÍVEL


ACIONADO POR FPGA

Trabalho de Conclusão de Curso, apresentado como parte dos


requisitos para a obtenção de grau de Bacharel em Engenharia
de Controle e Automação, pela INSTITUTO FEDERAL DE
EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO PARÁ.

Orientador: Prof. André Cavalcante do Nascimento


Instituto Federal do Pará

BELÉM/PA
2023
DADOS INTERNACIONAIS DE CATALOGAÇÃO NA PUBLICAÇÃO (CIP)

C5121i Chaves, Taymeson Furtado.


Implementação de um inversor monofásico multinível acionado por
FPGA/ Taymeson Furtado Chaves. — Belém, 2023.
110 f.

Formato do Material: PDF.


Orientador: André Cavalcante do Nascimento.
Trabalho de Conclusão de Curso (Bacharel em Engenharia de Controle e
Automação) — Instituto Federal de Educação, Ciência e Tecnologia do Pará
– IFPA, 2023.

1. Inversor. 2. Multinível. 3. FPGA. 4. Driver. 5. VHDL. I. Título.

CDD: 621.3815322

Biblioteca/Instituto Federal do Pará - FPA/Campus Belém – PA


Simone Nazaré da Silva Coutinho – Bibliotecária - CRB-2 PA nº875
TAYMESON FURTADO CHAVES

IMPLEMENTAÇÃO DE UM INVERSOR MONOFÁSICO MULTINÍVEL


ACIONADO POR FPGA

Trabalho de Conclusão de Curso, apresentado como parte dos


requisitos para a obtenção de grau de Bacharel em Engenharia
de Controle e Automação, pela INSTITUTO FEDERAL DE
EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO PARÁ.

Prof. André Cavalcante do Nascimento


Orientador - IFPA

Prof. Márcio Nazareno Araújo Moscoso


Membro - IFPA

Prof. Luis Carlos Macedo Blasques


Membro - IFPA

BELÉM/PA
2023
Dedico aos meus pais Carlos Alberto e Maria do
Socorro pelo incentivo e compreensão.
AGRADECIMENTOS

Aos meus pais Carlos Alberto e Maria do Socorro pelo apoio emocional, psicológico e
financeiro durante este curso.
Ao meu amor Daniela Chagas por estar ao meu lado me apoiando e incentivando.
Ao meu orientador André Cavalcante por sua orientação ao longo desse tempo e pelo
apoio financeiro.
Ao Instituto Federal do Pará pela formação profissional e pela infraestrutura fornecida
ao longo do curso.
À professora e coordenadora Regiane Araújo pela dedicação como professora em
orientar e lessionar seus valiosos conhecimentos.
Aos meus colegas de turma pela amizade e momentos de alegria nessa caminhada.
“A imaginação é mais importante que o conheci-
mento.” (Albert Einstein)
RESUMO

Neste trabalho, é apresentada a implementação de um conversor com opção de selecionar um


inversor de dois níveis e um inversor multinível de três a sete níveis através de uma placa de um
kit didático de FPGA da empresa Altera com oito chaves semicondutoras. A seleção do número
de níveis do inversor é realizada com botões de chaves seletoras presentes na placa do FPGA. A
topologia usada para gerar dois a cinco níveis foi o inversor em cascata simétrico. Para o inversor
de sete níveis, foi usada topologia do inversor em cascata assimétrico. Para o desenvolvimento
do inversor, foi usada técnica de modulação PWM senoidal com portadoras em fase, nas
quais a frequência foi de 2,5 kHz para as portadoras e 60 Hz para a modulante. O circuito
é comandado por um dispositivo lógico programável FPGA através de linguagem VHDL.
Para compreensão da implementação do código VHDL foram desenvolvidos fluxogramas que
explanam o norteamento do código. Foram feitas simulações através do software ModelSim para
analisar o comportamento do código VHDL, e PSIM para analisar os formatos de onda de cada
inversor. Por fim, são apresentados os resultados do inversor em funcionamento obtidos com
osciloscópio.

Palavras-chave: Inversor. Multinível. FPGA. Driver. VHDL. PWM.


ABSTRACT

In this paper, the implementation of a converter with the option to select a two-level inverter and
a multilevel inverter from three to seven levels through an FPGA teaching kit board from the
company Altera with eight semiconductor switches is presented. The selection of the number
of inverter levels is performed with selector switch buttons present on the FPGA board. The
topology used to generate two to five levels was the symmetrical cascaded inverter. For the
seven-level inverter, the asymmetrical cascade inverter topology was used. For the development
of the inverter, a sinusoidal PWM modulation technique with carriers in phase was used, in
which the frequency was 2.5 kHz for the carriers and 60 Hz for the modulator. The circuit is
controlled by an FPGA programmable logic device using VHDL language. To understand the
implementation of the VHDL code were developed flowcharts that explain the explain the code’s
orientation. Simulations were made using ModelSim software to analyze the the behavior of the
VHDL code, and PSIM to analyze the waveforms of each inverter. inverter. Finally, the results of
the inverter in operation obtained with an oscilloscope are presented. oscilloscope.

Keywords: Inverter. Multilevel. FPGA. Driver. VHDL. PWM.


LISTA DE FIGURAS

Figura 2.1 – Classificações de inversores . . . . . . . . . . . . . . . . . . . . . . . . . . 19


Figura 2.2 – Saída do inversor convencional de dois níveis . . . . . . . . . . . . . . . . 20
Figura 2.3 – Esquema de um inversor trifásico . . . . . . . . . . . . . . . . . . . . . . . 21
Figura 2.4 – Inversor de tensão em meia-ponte . . . . . . . . . . . . . . . . . . . . . . . 21
Figura 2.5 – Tensão sobre a carga na saída do inversor em meia-ponte . . . . . . . . . . 21
Figura 2.6 – Inversor de tensão em ponte completa . . . . . . . . . . . . . . . . . . . . . 22
Figura 2.7 – Tensão sobre a carga na saída do inversor em ponte completa . . . . . . . . 22
Figura 2.8 – Inversor com três e nove níveis . . . . . . . . . . . . . . . . . . . . . . . . 23
Figura 2.9 – Inversor multinível NPC de a) três níveis e b) cinco níveis . . . . . . . . . . 24
Figura 2.10–Inversor multinível FLC de a) três níveis e b) cinco níveis . . . . . . . . . . 25
Figura 2.11–Conversor em cascata simétrico de a) três níveis e b) cinco níveis . . . . . . 26
Figura 2.12–Etapas de chaveamento do conversor de três níveis . . . . . . . . . . . . . . 28
Figura 2.13–Etapas de chaveamento do conversor de cinco níveis . . . . . . . . . . . . . 30
Figura 2.14–Inversor CHB assimétrico de sete níveis . . . . . . . . . . . . . . . . . . . 31
Figura 2.15–Etapas de chaveamento do conversor de sete níveis . . . . . . . . . . . . . . 33
Figura 2.16–Sinal PWM a partir da comparação entre modulante e portadora . . . . . . . 34
Figura 2.17–Modulação SPWM com Disposição em Fase (PD) . . . . . . . . . . . . . . 35
Figura 2.18–Modulação SPWM com Disposição em Oposição de Fase (POD) . . . . . . 36
Figura 2.19–Modulação SPWM com Disposição em Oposição de Fases Alternadas (APOD) 36
Figura 2.20–Modulação SPWM com Fases Deslocadas (PS) . . . . . . . . . . . . . . . 37
Figura 3.1 – Circuito do inversor de dois níveis . . . . . . . . . . . . . . . . . . . . . . 38
Figura 3.2 – Resultado da simulação do inversor de dois níveis . . . . . . . . . . . . . . 39
Figura 3.3 – Circuito do inversor de três níveis . . . . . . . . . . . . . . . . . . . . . . . 39
Figura 3.4 – Resultado da simulação do inversor de três níveis . . . . . . . . . . . . . . 40
Figura 3.5 – Circuito do inversor de cinco níveis . . . . . . . . . . . . . . . . . . . . . . 41
Figura 3.6 – Saída do inversor de cinco níveis . . . . . . . . . . . . . . . . . . . . . . . 41
Figura 3.7 – Saída do inversor de cinco níveis . . . . . . . . . . . . . . . . . . . . . . . 42
Figura 3.8 – Circuito do inversor de sete níveis . . . . . . . . . . . . . . . . . . . . . . . 43
Figura 3.9 – Saída do inversor de sete níveis . . . . . . . . . . . . . . . . . . . . . . . . 43
Figura 3.10–Sinais de chaveamento dos MOSFETs . . . . . . . . . . . . . . . . . . . . 44
Figura 3.11–Sinais de chaveamento dos MOSFETs . . . . . . . . . . . . . . . . . . . . 45
Figura 3.12–Exemplo de uma porta NOT em VHDL . . . . . . . . . . . . . . . . . . . . 47
Figura 3.13–Tela para criação de um novo projeto no Quartus II . . . . . . . . . . . . . . 48
Figura 3.14–Escolha da Família e modelo do FPGA trabalhado . . . . . . . . . . . . . . 49
Figura 3.15–Configurações de ferramentas EDA . . . . . . . . . . . . . . . . . . . . . . 49
Figura 3.16–Guia para escolha do editor VHDL . . . . . . . . . . . . . . . . . . . . . . 50
Figura 3.17–Código VHDL do Inversor Multinível . . . . . . . . . . . . . . . . . . . . 51
Figura 3.18–Slots GPIO 1 e GPIO 2 na placa Altera DE2 . . . . . . . . . . . . . . . . . 51
Figura 3.19–Pin Planner contendo os endereços de entrada e saída . . . . . . . . . . . . 52
Figura 3.20–Tela de gravação do FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Figura 3.21–Compilando o arquivo VHDL . . . . . . . . . . . . . . . . . . . . . . . . . 54
Figura 3.22–Janela de simulação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Figura 3.23–Duração do clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Figura 3.24–Período do clock é 20 ns . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Figura 3.25–Objetos adicionados no Wave . . . . . . . . . . . . . . . . . . . . . . . . . 56
Figura 3.26–Formato analógico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Figura 3.27–Execução da simulação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Figura 3.28–Execução da simulação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Figura 3.29–Simulação da saída do inversor de dois níveis . . . . . . . . . . . . . . . . 58
Figura 3.30–Inversor de três níveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Figura 3.31–Inversor de cinco níveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Figura 3.32–Portadoras do inversor de sete níveis . . . . . . . . . . . . . . . . . . . . . 60
Figura 3.33–Saída do inversor de sete níveis e modulante senoidal . . . . . . . . . . . . 60
Figura 4.1 – Fluxograma do algoritmo do inversor de dois níveis . . . . . . . . . . . . . 63
Figura 4.2 – Período completo de uma senoide contendo 30 valores . . . . . . . . . . . . 64
Figura 4.3 – Fluxograma do algoritmo do inversor de três níveis . . . . . . . . . . . . . 66
Figura 4.4 – Fluxograma do algoritmo do inversor de cinco níveis . . . . . . . . . . . . 68
Figura 4.5 – Fluxograma do algoritmo do inversor de sete níveis . . . . . . . . . . . . . 70
Figura 4.6 – Fluxograma do algoritmo do dead-time . . . . . . . . . . . . . . . . . . . . 71
Figura 4.7 – Ilustração de um dead-time . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Figura 4.8 – Fluxograma do algoritmo de alteração da frequência . . . . . . . . . . . . . 73
Figura 5.1 – Protótipo montado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Figura 5.2 – Esquema do circuito completo do inversor . . . . . . . . . . . . . . . . . . 76
Figura 5.3 – Protótipo montado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Figura 5.4 – Diagrama típico de conexão de driver High And Low Side . . . . . . . . . . 77
Figura 5.5 – Conexão em modo Half-Bridge do driver High And Low Side IR2101 . . . . 78
Figura 5.6 – Montagem do circuito de acionamento na protoboard . . . . . . . . . . . . 79
Figura 5.7 – Fontes usadas para alimentar o circuito driver: a) Modelo WA-18J12FB b)
Modelo KPA-040F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Figura 5.8 – Esquema elétrico de entrada e saída de um driver IR2101 do circuito de
acionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Figura 5.9 – Sinais PWM complementares da saída de um driver IR2101 no circuito de
acionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Figura 5.10–Esquema do circuito de potência contendo duas pontes H . . . . . . . . . . 82
Figura 5.11–MOSFET IRFP460 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Figura 5.12–Circuito de potência contendo duas pontes H de MOSFETs . . . . . . . . . 83
Figura 5.13–Fontes CC modelo PS–3002D . . . . . . . . . . . . . . . . . . . . . . . . . 83
Figura 5.14–Arquitetura Genérica de um FPGA . . . . . . . . . . . . . . . . . . . . . . 85
Figura 5.15–Placa DE2 da Terasic Technologies . . . . . . . . . . . . . . . . . . . . . . 86
Figura 5.16–Layout da placa Altera DE2 . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Figura 6.1 – Protótipo em funcionamento . . . . . . . . . . . . . . . . . . . . . . . . . 89
Figura 6.2 – Protótipo em funcionamento . . . . . . . . . . . . . . . . . . . . . . . . . 90
Figura 6.3 – Placa FPGA enviando sinais de acionamento ao driver . . . . . . . . . . . . 90
Figura 6.4 – Circuito driver acionando as pontes H . . . . . . . . . . . . . . . . . . . . 91
Figura 6.5 – Conexão da placa do FPGA ao driver . . . . . . . . . . . . . . . . . . . . . 91
Figura 6.6 – Saída do inversor de dois níveis . . . . . . . . . . . . . . . . . . . . . . . . 92
Figura 6.7 – Saída do inversor de três níveis . . . . . . . . . . . . . . . . . . . . . . . . 92
Figura 6.8 – Saída do inversor de cinco níveis . . . . . . . . . . . . . . . . . . . . . . . 93
Figura 6.9 – Saída do inversor de sete níveis . . . . . . . . . . . . . . . . . . . . . . . . 93
Figura 6.10–Saída do inversor de dois níveis . . . . . . . . . . . . . . . . . . . . . . . . 94
Figura 6.11–Saída do inversor de três níveis . . . . . . . . . . . . . . . . . . . . . . . . 94
Figura 6.12–Saída do inversor de cinco níveis . . . . . . . . . . . . . . . . . . . . . . . 95
Figura 6.13–Saída do inversor de sete níveis . . . . . . . . . . . . . . . . . . . . . . . . 95
Figura 6.14–dead-time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
LISTA DE TABELAS

Tabela 3.1 – Endereços das entradas e saídas . . . . . . . . . . . . . . . . . . . . . . . 52


Tabela 4.1 – Variáveis iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
LISTA DE SIGLAS

AC Alternating Current

AD Analógico Digital

AHC Asymmetrical hybrid cascaded

APOD Alternative Phase Opposition Disposition

ASIC Application Specific Integrated Circuit

BJT Bipolar Junction Transistor

CA Corrente Alternada

CC Corrente Contínua

CI Circuito Integrado

CHB Cascade Half-Bridge

CLB Configurable Logic Block

CODEC Coder e Decoder

CPLD Complex Programmable Logic Devices

DA Digital Analógico

DC Direct Current

DPDT Duplo Pólo, Duplo Alcance

DSP Digital Signal Processor

EDA Eletronic Design Automation

FLC Flying-Capacitor

FPGA Field Programmable Gate Array

FFT Fast Fourier Transform

GTO Gate Turn-Off

GUI Graphical User Interface

HCPLD High Complex Programmable Logic Devices

HDL Hardware Description Language

IDE Integrated Drive Eletronics

IGBT Insulated Gate Bipolar Transistor


LE Logic Elements

LED Light-Emiting Diode

LUT Look-Up Table

MOSFET Metal Oxide Semiconductor Field Effect Transistor

NPC Neutral Point Clamped

NTSC National Television System Commitee

PAL Phase Alternating Line

PD Phase Disposition

POD Phase Opposition Disposition

PWM Pulse Width Modulation

RMS Root Mean Square

ROM Read-Only Memory

RTL Register transfer level

SCR Silicon Controlled Rectifier

SD Secure Digital

SDRAM Synchronous Dynamic Random Access Memory

SRAM Static Random Access Memory

SPLD Simple Programmable Logic Devices

SPWM Sinusoidal Pulse Width Modulation

SVPWM Space Vector Pulse Width Modulation

PS Phase-Shift

PSPWM Phase-Shift Pulse Width Modulation

THD Total Harmonic Distortion

USB Universal Serial Bus

VGA Video Graphics Array

VHDL VHSIC Circuits Hardware Description Language

VHSIC Very High Speed Integrated Circuits


LISTA DE SÍMBOLOS

S1 Chave de acionamento

S2 Chave de acionamento

S3 Chave de acionamento

S4 Chave de acionamento

TON Intervalo de acionamentos das chaves

D1 Diodo de retorno

D2 Diodo de retorno

E Fonte CC de alimentação do inversor

N Número total de níveis

m Número de níveis

ma Índice de modulação de amplitude

mf Índice de modulação de frequência

Ar Amplitude da senoide

Ap Amplitude da portadora

fr Frequência da senoide

fp Frequência da portadora

Vf Valor eficaz da tensão ou corrente na frequência fundamental

Xn Valor eficaz da tensão ou corrente na frequência de ordem n

Vgs Tensão entre o gate e o source

△t Intervalo de tempo entre dois valores da senoide

Tclk Período completo do clock


Sumário

1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.1.1 Objetivo geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.1.2 Objetivos específicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.2 Estrutura do trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2 INVERSORES E SUAS CLASSIFICAÇÕES . . . . . . . . . . . . . . . 19


2.1 Conceitos e classificação . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2 Inversores de dois níveis . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.1 Número de fases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.2 Topologia meia-ponte e ponte completa . . . . . . . . . . . . . . . . . . . . 21
2.3 Inversores multiníveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3.1 Principais topologias de inversores multiníveis . . . . . . . . . . . . . . . . 24
2.3.1.1 Inversor grampeado a diodo (NPC) . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3.1.2 Inversor grampeado a capacitor (FLC) . . . . . . . . . . . . . . . . . . . . . . 25
2.3.1.3 Inversor em cascata simétrico (CHB) . . . . . . . . . . . . . . . . . . . . . . . 26
2.3.1.4 Inversor em cascata assimétrico (AHC) . . . . . . . . . . . . . . . . . . . . . . 30
2.4 Técnicas de Modulação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.4.1 Disposição em Fase (PD) . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.4.2 Disposição em Oposição de Fase (POD) . . . . . . . . . . . . . . . . . . . 35
2.4.3 Disposição em Oposição de Fases Alternadas (APOD) . . . . . . . . . . . . 36
2.4.4 Disposição em Fases Deslocadas (PS) . . . . . . . . . . . . . . . . . . . . . 36
2.5 Taxa de distorção harmônica total (THD) . . . . . . . . . . . . . . . . . 37

3 SIMULAÇÃO E PROGRAMAÇÃO . . . . . . . . . . . . . . . . . . . . 38
3.1 Simulação do Inversor no PSIM . . . . . . . . . . . . . . . . . . . . . . . 38
3.1.1 Inversor de dois níveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.1.2 Inversor de três níveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.1.3 Inversor de cinco níveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.1.4 Inversor de sete níveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.1.5 Taxa de Distorção Harmônica (THD) . . . . . . . . . . . . . . . . . . . . . 44
3.2 A Linguagem VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.3 Trabalhando com o Quartus® II Web Edition . . . . . . . . . . . . . . . 47
3.4 Trabalhando com o ModelSim – Intel FPGA Edition 2021.1 . . . . . . . 53
3.5 Simulação realizada no ModelSim . . . . . . . . . . . . . . . . . . . . . 57
3.5.1 Inversor de dois níveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.5.2 Inversor de três níveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.5.3 Inversor de cinco níveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.5.4 Inversor de sete níveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

4 DESENVOLVIMENTO DO ALGORITMO DO INVERSOR . . . . . . 61


4.0.1 Inversor de dois níveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.0.2 Inversor de três níveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.0.3 Inversor de cinco níveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.0.4 Inversor de sete níveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.0.5 Algoritmo de geração do dead-time . . . . . . . . . . . . . . . . . . . . . . 71
4.0.6 Algoritmo de alteração da frequência . . . . . . . . . . . . . . . . . . . . . 72

5 DESENVOLVIMENTO DO PROTÓTIPO . . . . . . . . . . . . . . . . . 75
5.1 Circuito do Inversor Multinível . . . . . . . . . . . . . . . . . . . . . . . 75
5.2 Driver de Acionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.3 Circuito de Potência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.4 Placa Altera DE2 e Aspectos Teóricos sobre FPGAs . . . . . . . . . . . . 83
5.4.1 Vantagens e desvantagens dos FPGAs . . . . . . . . . . . . . . . . . . . . . 85
5.4.2 Placa Altera DE2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

6 RESULTADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.1 Protótipo Montado no Laboratório . . . . . . . . . . . . . . . . . . . . . 89
6.2 Resultados Obtidos do Circuito em Funcionamento . . . . . . . . . . . . 91
6.2.1 Inversor de dois níveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.2.2 Inversor de três níveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.2.3 Inversor de cinco níveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.2.4 Inversor de sete níveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
6.3 Espectro Harmônico Obtido por FFT no Osciloscópio . . . . . . . . . . 93
6.4 Análise no Osciloscópio do dead-time . . . . . . . . . . . . . . . . . . . . 95

7 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
7.1 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

APÊNDICES 103
APÊNDICE A – ESQUEMA DO CIRCUITO COMPLETO . . . . . . 104

APÊNDICE B – CÓDIGO VHDL DO INVERSOR . . . . . . . . . . . 105


16

1 INTRODUÇÃO

A eletrônica de potência, nas últimas décadas, teve grande desenvolvimento no que se


refere aos semicondutores. Atualmente, as pesquisas com semicondutores estão desenvolvendo
dispositivos de chaveamento cada vez mais rápidos e com maiores limites de tensão e corrente.
Um dos enfoques da eletrônica de potência é a aplicação de semicondutores na conversão de
energia elétrica em valores altos de potência e com alta eficiência. Concomitantemente, há grande
preocupação em desenvolver circuitos com baixa distorção harmônica e alta eficiência. “Devido a
presença de cargas não-lineares nos sistemas elétricos, são geradas componentes harmônicas que
afetam a qualidade da energia elétrica. Isto pode ser prejudicial para cargas críticas conectadas à
rede elétrica” (BAÚ, 2018). Com o avanço da tecnologia de semicondutores de alta velocidade de
chaveamento, é possível reduzir consideravelmente o conteúdo harmônico de inversores CC-CA
e aumentar a eficiência desses conversores. Segundo Coelho e Fernandes (2016), conversores
que utilizam formas de onda quase quadrada possuem conteúdo harmônico que podem produzir
torque positivo, nulo ou até o contrário nos motores. Esses conversores tradicionais de dois níveis
apresentam limitações em aplicações de alta potência.
Inversores de dois níveis ao operar com alta potência necessitam trabalhar com baixa
frequência para reduzir as perdas, contudo isso demanda altos custos com filtros devido a neces-
sidade de redução da THD (Total Harmonic Distortion) (MESQUITA, 2011). Para contornar
esse problema, os conversores multiníveis surgiram para aumentar a resolução na senoide de
saída com menor THD sem elevar consideravelmente os custos de produção (COELHO; FER-
NANDES, 2016). O uso de inversores multiníveis permite reduzir consideravelmente a distorção
harmônica na saída desses conversores, reduzindo, assim, as perdas de energia fornecidas às
cargas. Quanto maior o número de níveis, maior será a qualidade da tensão de saída e menor
será a THD gerada (MANSO, 2019). Dessa forma, conversores multiníveis permitem gerar
menos perdas de energia nos motores, menor perda por chaveamento e podem trabalhar com
menores frequências de chaveamento aumentando o rendimento (BARBOSA, 2018). Outra
grande vantagem é a distribuição dos esforços de tensão e corrente através dos semicondutores,
resultando em menores perdas por condução e alta eficiência (CACAU, 2014).
Entretanto, o número de níveis tem relação direta com o aumento dos custos, pois
quanto mais níveis são gerados em um conversor multinível, mais componentes passivos ou
semicondutores são necessários para a implementação (ENCARNAÇÃO, 2009). Assim, para
projetos mais complexos que demandem mais níveis, é necessário ponderar os custos com
componentes e com a eficiência do conversor.
Inversores multiníveis são amplamente utilizados em alta potência e médias tensões.
"Entre as aplicações estão as bombas de gasoduto na indústria petroquímica e estações de
bombeamento, ventiladores na indústria de cimento, trações no transporte industrial, indústria na
produção de rolos de aço, dentre outras" (COELHO; FERNANDES, 2016). Entre as diversas
topologias existentes de inversores multiníveis, três se destacam em pesquisas acadêmicas:
Conversor com Capacitor Flutuante (Flying Capacitor - FC), Conversor com Grampeamento do
Ponto Central (Neutral Point Clamped - NPC) e o Conversor em Cascata de Ponte H (Cascated
H-Bridge – CHB). O Conversor em Cascata, por sua vez, divide-se em Simétrico e Assimétrico.
Das topologias supracitadas, as que geram menores custos com a utilização de componentes são
os Conversores em Cascata de Ponte H (Cascated H-Bridge – CHB) simétrico e assimétrico.
Ambas as topologias não necessitam de diodos de grampeamento e de capacitores flutuantes,
assim, caso seja necessário trabalhar em aplicações de potências elevadas, o número de compo-
nentes utilizados não cresce excessivamente (BIAVA; FRANCISCO; COELHO, 2016).
17

Das várias técnicas de modulação que usam PWM (Pulse Width Modulation), que é
uma técnica de pulsar rapidamente um sinal de modo a se obter o controle de potência e alcançar
melhorias na qualidade de energia e redução de distorção harmônica, a mais comum é o SPWM
(Modulação por Largura de Pulso Senoidal) o qual se baseia na comparação entre uma senoide e
uma portadora triangular para gerar os sinais de acionamento dos semicondutores. Tipicamente,
microcontroladores e dispositivos DSP (Digital Signal Processor) têm sido empregados para a
geração dos sinais PWM necessários para controle das chaves semicondutoras (BIAVA; FRAN-
CISCO; COELHO, 2016). DSPs são microprocessadores usados para processamento de sinal
como áudio e vídeo. Todavia, os FPGAs, embora exijam maior conhecimento em eletrônica, são
"processadores"de alto desempenho usados em processamento de dados em tempo real (AGNOL,
2018).
No passado, os circuitos lógicos eram basicamente constituídos por portas lógicas em
circuitos integrados, e vinham pré-configurados do fabricante, não permitindo que o usuário
fizesse suas próprias modificações. A chegada dos PLDs (Programmable Logic Devices) modi-
ficou esse paradigma, principalmente com o advento dos FPGAs (Field-Programmable Gate
Array) que são circuitos integrados contituídos de blocos lógicos arranjados em forma de matriz.
Isso permitiu que usuários fizessem seus próprios projetos de circuitos. Os PLDs são circuitos
cuja funcionalidade pode ser implementada pelo próprio usuário (COUTINHO, 2019). Portanto,
não apresentam uma função lógica definida e oriunda de fábrica até que o próprio usuário
configure esta função para uma aplicação.
Os FPGAs, assim como qualquer PLD, tem como diferencial com relação aos proces-
sadores, a capacidade de executar tarefas de forma paralela. Assim, a mudança de um sinal de
entrada modifica todos os sinais internos simultaneamente, e não sequencial como ocorre na
execução de instruções em processadores. Um FPGA pode assumir funções de qualquer outro
processador, como também permite implementar um processador em sua estrutura, além de pos-
suir capacidade de processar grande volume de dados paralelamente (AGNOL, 2018; DUTRA,
2016). Como os FPGAs permitem que o usuário tenha liberdade de programar a implementação
de qualquer circuito digital, é possível implementar diferentes técnica de modulação PWM em
conversores, com capacidade de realizar tarefas paralelas e não sequenciais como ocorre em
microcontroladores.
O presente trabalho apresenta a construção de um protótipo de um conversor multinível
monofásico capaz de gerar de dois a sete níveis controlado por um FPGA da empresa Altera,
utilizando técnica de modulação SPWM. A topologia empregada foi o Conversor em Cascata de
Ponte H (CHB) Simétrico para gerar dois a cinco níveis. E para gerar sete níveis, foi usada a
topologia Conversor em Cascata de Ponte H Assimétrica. No trabalho é descrito o desenvolvi-
mento do código em VHDL responsável por toda lógica de modulação a qual, por sua vez, é
responsável por gerar os sinais de saída do FPGA para o acionamento dos oito MOSFETs. É
descrito também o circuito driver que condiciona os sinais de baixa potência da placa do FPGA
aos gates dos MOSFETs.
A placa contendo o FPGA possuem botões que são capazes de selecionar quantos
níveis (dois, três, cinco ou sete níveis) se deseja na saída do inversor. A frequência padrão da
fundamental nesse inversor é 60 Hz e a das portadoras é 2500 Hz, contudo é possível alterar
essas frequências através dos botões da placa.
O objetivo desse trabalho é desenvolver uma ferramenta didática para o curso prático de
eletrônica de potência no IFPA Campus Belém, pois no Instituto não ha kit didático de inversores
multiníveis que possam auxiliar os professores no ensino de inversores. Neste Trabalho de
Conclusão de Curso (TCC), optou-se como modelo de FPGA a família Cyclone II da fabricante
Altera, devido a disponibilidade da placa no IFPA Campus Belém.
18

1.1 Objetivos

1.1.1 Objetivo geral


Desenvolver um inversor multinível monofásico que gere dois a sete níveis, com
topologia ponte H em cascata acionado por uma placa FPGA da Altera, utilizando 8 MOSFETs
de alta potência.

1.1.2 Objetivos específicos


• Desenvolver um kit didático de inversor multinível que gere dois a sete níveis;
• Implementar um circuito driver para acionar oito MOSFETs do inversor;
• Utilizar a placa FPGA DE2 da Empresa Altera no acionamento de um inversor;
• Aplicar os conhecimentos em programação VHDL no desenvolvimento dos comandos de
acionamento do inversor;
• Analisar a estrutura da programação desenvolvida em VHDL no software ModelSim;
• Analisar a estrutura dos circuitos e seus formatos de onda no software PSIM;

1.2 Estrutura do trabalho

Este trabalho está dividido em sete capítulos, referências e apêndices.


No Capítulo 1, é feita uma introdução geral sobre o avanço das pesquisas sobre a
eletrônica de potência, com foco nos inversores, suas aplicações, topologias e sobre os FPGAs.
No Capítulo 2, é feita uma revisão bibliográfica sobre os inversores multiníveis nos
quais são explanados os principais conceitos, classificação dos inversores e as principais técnicas
de modulação importantes para a implementação do projeto.
O Capítulo 3 é descrito as simulações feitas no PSIM e ModelSim e os detalhes da
programação realizada em VHDL.
O Capítulo 4 é explicado minuciosamente através de fluxogramas a programação em
VHDL desenvolvida para os diferentes inversores.
No Capítulo 5, é apresentado o desenvolvimento do protótipo, detalhando o circuito
do inversor, o funcionamento do circuito, tanto do circuito de potência quanto do circuito de
acionamento. São apresentados os aspectos gerais sobre FPGA como origem, classificação,
estrutura de funcionamento, principais conceitos, vantagens e desvantagens.
O Capítulo 6 apresenta os resultados obtidos no osciloscópio na saída do inversor.
O Capítulo 7 apresenta as conclusões do trabalho.
19

2 INVERSORES E SUAS CLASSIFICAÇÕES

Neste capítulo, serão apresentas as fundamentações teóricas como classificação dos


conversores, técnicas de modulação, distorção harmônica e os tipos existentes de drivers que
serviram como base para o desenvolvimento do inversor multinível.

2.1 Conceitos e classificação

Inversores são circuitos que convertem uma tensão de entrada CC em uma tensão de
saída CA simétrica, com amplitude e frequência desejada, transferindo potência CC para uma
carga CA (HART, 2012; RASHID, 2014).
São constituídos por uma fonte CC que alimenta um circuito que pode ou não ter
frequência e/ou tensão variável. É possível se obter variação na tensão da saída de um inversor
de duas formas: uma é variando a tensão da fonte CC na entrada, e outra é mantendo a fonte CC
fixa e variar a tensão de saída por meio de modulação por largura de pulso – PWM.
Rashid (2014, p. 242) afirma isso dizendo que se a tensão de entrada CC for fixa e
não controlável, a tensão de saída pode ser variada variando o ganho do inversor através da
modulação por largura de pulso.
Inversores podem ser classificados quanto a topologia (meia-ponte e ponte completa)
do circuito, quanto ao número de fases (monofásico e trifásicos) e quanto ao número de níveis
(dois níveis e multinível). Os multiníveis podem ser classificados em grampeado a diodos,
grampeado a capacitores, inversor com capacitor flutuante, inversor ponte H em cascata simétrico
e assimétrico, entre outros. A Figura 2.1 mostra uma possível classificação dos inversores.

Figura 2.1 – Classificações de inversores

Fonte: Autoria própria


20

2.2 Inversores de dois níveis

O inversor mais elementar é o inversor de dois níveis cuja saída é formada por níveis
que geram dois valores de tensão. É um conversor que apresenta, naturalmente, custo reduzido
devido à simplicidade do seu circuito. Para uma tensão de entrada E, a tensão de saída na carga
será +E ou −E para inversores em ponte completa, e +E/2 ou −E/2 para os inversores em
meia-ponte.
Esse conversor apresenta como desvantagem a baixa eficiência e elevada distorção
harmônica na saída, obrigando os fabricantes a desenvolverem filtros com custos muito elevados.
Ao se trabalhar com alta potência, é necessário atenuar a frequência de chaveamento para reduzir
as perdas. Contudo, para inversores de dois níveis, isso é inviável, pois a THD se torna elevada
demais. Por isso, esse inversor é usado em aplicações com baixa potência (MESQUITA, 2011).
A Figura 2.2 mostra a saída de um conversor monofásico de dois níveis com modulação PWM.

Figura 2.2 – Saída do inversor convencional de dois níveis

Fonte: Manso (2019)

2.2.1 Número de fases


Quanto ao número de fases, o inversor convencional de dois níveis pode ser monofásico
ou trifásico. Um inversor monofásico converte uma tensão CC em tensão AC de apenas uma
fase, portanto para uma entrada CC a saída do inversor é monofásica.
De acordo com Lopes (2019), um inversor trifásico, por sua vez, converte tensão CC de
entrada em tensão CA trifásica na saída do inversor, com fases defasadas em 120º. Para formar a
configuração de um inversor trifásico, são necessários três inversores monofásicos de meia ponte
(ou ponte completa) que são conectados em paralelo (RASHID, 2014).
Na Figura 2.3, observa-se o esquema de um inversor trifásico formado por três inversores
monofásicos. Segundo Rashid (2014), os sinais de acionamento dos inversores monofásicos
devem ser atrasados ou adiantados em 120º para obtenção de tensões trifásicas. Normalmente,
esses inversores são aplicados no controle de rotação dos motores de indução através da variação
da frequência de saída do inversor (HART, 2012).
21

Figura 2.3 – Esquema de um inversor trifásico

Fonte: Rashid (2014)

2.2.2 Topologia meia-ponte e ponte completa


O princípio de operação dos inversores monofásicos é baseado em um inversor meia-
ponte (RASHID, 2014). Na Figura 2.4, há um esquema de um inversor em meia-ponte, cuja
carga pode ser resistiva ou indutiva. Na Figura 2.5, é ilustrado o formato retangular do sinal de
tensão de saída do inversor em meia-ponte para uma carga resistiva.
Figura 2.4 – Inversor de tensão em meia-ponte

Fonte: Adaptado de Ahmed (2000)

Figura 2.5 – Tensão sobre a carga na saída do inversor em meia-ponte

Fonte: Adaptado de Ahmed (2000)


22

As chaves S1 e S2 podem ser um transistor BJT, MOSFET, um tiristor GTO ou um SCR.


O Tempo TON é o intervalo de acionamentos das chaves S1 e S2 , essas chaves jamais devem
ser acionadas ao mesmo tempo, pois isso provocaria um curto-circuito. Este inversor é do tipo
monofásico, pois o sinal de saída possui uma fase, conforme é mostrado na Figura 2.4.
Os diodos D1 e D2 presentes na Figura 2.4 são chamados de diodos de realimentação.
Para cargas indutivas, a corrente na saída não poderá mudar imediatamente com a tensão de
saída. Portanto, diodos de realimentação são necessários para transferir a energia armazenada na
indutância de carga de volta para a fonte CC (RASHID, 2014)
No caso do inversor de fonte de tensão em ponte completa, este pode ser montado com
dois inversores em meia-ponte. Observa-se na Figura 2.6 que são necessárias quatro chaves de
acionamento. Quando comparado com o inversor em meia-ponte, a amplitude da tensão de saída
do inversor em ponte completa é o dobro da saída no inversor em meia-ponte.
Quando somente as chaves S1 e S4 são ligadas simultaneamente, a tensão de entrada na
carga é +E, mas se somente as chaves S3 e S2 são ligadas ao mesmo tempo a tensão na carga é
invertida e passa a ser −E (RASHID, 2014).

Figura 2.6 – Inversor de tensão em ponte completa

Fonte: Adaptado de Ahmed (2000)

Figura 2.7 – Tensão sobre a carga na saída do inversor em ponte completa

Fonte: Adaptado de Ahmed (2000)

O formato de onda da tensão de saída na carga é mostrado na Figura 2.7. Nota-se que o
formato é o mesmo da topologia em meia-ponte.
23

2.3 Inversores multiníveis

Existem outros inversores que são capazes de sintetizar mais do que apenas dois
níveis de tensão. Esses inversores são denominados de inversores multiníveis. São circuitos que
sintetizam, na saída, tensão de vários níveis de tensão através de uma tensão CC de entrada, com
melhor conteúdo harmônico (MENAKA, 2017).
Os conversores multiníveis são compostos por chaves semicondutoras e capacitores,
nos quais através das combinações dessas chaves é possível adicionar ou retirar as tensões dos
capacitores formando uma onda de saída com vários níveis de tensão (ENCARNAÇÃO, 2009).
Embora os dispositivos semicondutores atuais sejam capazes de suportar altas tensões
e correntes, em algumas aplicações são requeridas tensões e correntes que vão além do valor
máximo permitido para estes dispositivos (WALTRICH, 2009). Encarnação (2009, p. 12) afirma
que uma solução para isso “seria a associação de chaves semicondutoras em série e/ou paralelo
de forma que o conjunto de chaves resultantes representasse uma única chave de maior potência
capaz de suportar os níveis de potência envolvidos”.
A Figura 2.8 exemplifica a saída de dois inversores multiníveis usando técnica de
modulação SPWM. Na Figura 2.8a, o sinal de saída apresenta três níveis e na Figura 2.8b,
apresenta nove níveis. Percebe-se que quanto maior o número de níveis, mais senoidal se torna o
sinal de saída.
Figura 2.8 – Inversor com três e nove níveis
(a) Inversor de três (b) Inversor de nove níveis

Fonte: Manso (2019) Fonte: Mesquita (2011)

Novelin (2017, p. 18) afirma que um sinal da tensão de saída na carga em formato
quadrado apresenta um alto conteúdo harmônico. Portanto, o formato quadrado ou retangular de
onda em inversores de dois níveis apresenta muitos harmônicos que trazem consequências inde-
sejadas para sistemas de potência. Harmônicos, por exemplo, causam aumento do aquecimento
em motores devido ao aumento das perdas no ferro e no cobre, reduzindo a eficiência e o torque,
e, também, causam ruído audíveis nos motores (EFEITOS, 2007).
Inversores multiníveis são usados para diminuir a distorção harmônica sem diminuir a
potência do inversor, portanto são excelentes para atingir tensões elevadas com baixos harmôni-
cos (MENAKA, 2017).
Teoricamente, a distorção harmônica igual a zero pode ser obtida através de um número
infinito de níveis, portanto quanto maior o número de níveis, menor será a distorção harmônica
na saída do inversor (LAI e PENG, 1996). Quanto as classificações anteriores, os inversores
multiníveis podem ser classificados quanto ao número de fases, meia-ponte e ponte completa.
24

2.3.1 Principais topologias de inversores multiníveis


Existem diversas topologias de circuitos de inversores multiníveis na literatura, cada
uma com suas vantagens particulares. Dentre as topologias existentes, as mais utilizadas são:
inversor grampeado a diodo, inversor grampeado a capacitor, inversor em cascata simétrica e
inversor em cascata assimétrica.

2.3.1.1 Inversor grampeado a diodo (NPC)


Essa topologia é conhecida na literatura por Neutral-Point Clamped (NPC), pois recorre
a capacitores conectados no barramento CC, interruptores de potência e diodos de bloqueio,
todos conectados em série (MANSO, 2019). Esse tipo de conversor “apresenta diodos que
limitam as tensões reversas nas chaves que não estão conduzindo” (LOPES, 2019, p. 27).
Para fins de análise, será apresentado duas estruturas do conversor: três níveis e cinco
níveis, conforme é apresentado na Figura 2.9.

Figura 2.9 – Inversor multinível NPC de a) três níveis e b) cinco níveis

Fonte: Adaptado de Baú (2018) e Veiga (2013)

Basicamente, o funcionamento do inversor de três níveis ocorre através da condução


simultânea de duas chaves (S1 e S2 ou S3 e S4 ). A tensão no barramento CC é dividida entre os
dois capacitores, formando três níveis. Quando somente as chaves S1 e S2 estão em condução,
25

o sinal de saída entre v x e o ponto neutro ‘o’ (Neutral-Point) é (+E)/2, e quando somente as
chaves S3 e S4 estão em condução, o sinal de saída é (−E)/2. Para o estado em que somente S2
e S3 estão em condução, a saída é zero.
No caso do inversor de cinco níveis, a tensão no barramento CC é dividida entre os
quatro capacitores, formando, assim, cinco níveis na saída. Para se realizar um conversor NPC
de cinco níveis, é necessário usar oito dispositivos de chaveamento, quatro capacitores e doze
diodos (MANSO, 2019). A desvantagem dessa topologia é que com o aumento no número de
níveis, há o aumento excessivo no número de diodos (LOPES, 2019).

2.3.1.2 Inversor grampeado a capacitor (FLC)


Esta topologia é conhecida como inversor a capacitor flutuante ou Flying-Capacitor
Converter (FLC). Possui capacitores para limitar a tensão reversa das chaves em estado de
bloqueio, logo tem a mesma composição do conversor NPC, exceto pela presença de capacitores
no lugar dos diodos (LOPES, 2019). “Este conversor pode sintetizar o mesmo número de níveis
de tensão do NPC, porém com diferente lógica de acionamento” (BAÚ, 2018, p. 31). Ainda
segundo Baú (2018), essa topologia apresenta estados de comutação redundantes, isto é, o nível
de tensão zero pode ser implementado fisicamente de duas diferentes formas.
Com intuito de análise, está ilustrado o conversor FLC de três níveis e cinco níveis na
Figura 2.10.

Figura 2.10 – Inversor multinível FLC de a) três níveis e b) cinco níveis

Fonte: Adaptado de Baú (2018) e Veiga (2013)


26

O inversor de três níveis é composto por quatro dispositivos de chaveamento e três


capacitores. Dois capacitores estão no barramento CC, o terceiro capacitor tem função de ser o
capacitor flutuante.
O inversor de cinco níveis apresenta oito chaves semicondutoras, três capacitores
flutuantes e quatro capacitores no barramento CC. Com o aumento no número de níveis, é
necessário maior número de capacitores. Isso se torna uma desvantagem para essa topologia,
pois aumenta a complexidade de controle e também encarece o projeto.

2.3.1.3 Inversor em cascata simétrico (CHB)


Essa topologia também é chamada conversor em Ponte H, full-bridge ou Cascaded H-
Bridge – CHB. O conversor CHB é definido como um conversor modular, ou seja, é formado pela
conexão série de vários módulos ou células de ponte completa ou ponte H (BRESSAN, 2019).
Considerando o circuito ponte H como uma célula, então para se obter m níveis são necessárias
(m − 1)/2 células, (m − 1)/2 fontes CC e 2(m − 1) semicondutores de chaveamento (MANSO,
2019).
Figura 2.11 – Conversor em cascata simétrico de a) três níveis e b) cinco níveis

Fonte: Adaptado de Cacau (2014) e Veiga (2013)

Na Figura 2.11 está o esquema do CHB de Figura 2.11a três níveis e Figura 2.11b
cinco níveis. Nota-se que, conforme as equações apresentadas por Manso (2019), o CHB de
três níveis necessita de apenas uma fonte CC e uma célula ou ponte H, constituída por quatro
27

semicondutores de chaveamento. Na Figura 2.11b), o CHB de cinco níveis apresenta duas


fontes CC isoladas, duas células e oito semicondutores, de acordo, também, com as equações
apresentadas por Manso (2019).
Essa topologia comparada com as duas topologias apresentadas anteriormente,
apresenta menor número de componentes, pois não necessita de diodos de grampeamento nem
de grande quantidade de capacitores flutuantes. Segundo Souza (2022), o CHB necessita de
menos componentes para alcançar diferentes níveis de tensão, e como não necessita de diodos
ou capacitores de grampeamento, pode ser controlado com técnicas de modulação mais simples.
“Diferente do conversor FLC, o conversor CHB não necessita de técnica de controle de tensão,
pois cada módulo pode ser alimentado independentemente por uma fonte de tensão isolada”
(BRESSAN, 2019).
A grande desvantagem desta topologia é a necessidade de uso de fontes de tensão CC
isoladas para cada célula, geralmente são obtidas a partir de retificadores multipulsos ou de
conversores CC-CC bidirecionais isolados (CACAU, 2014).
Analisando a estrutura da ponte H na Figura 2.11a, os pares de semicondutores S1 /S2
e S3 /S4 não devem ser acionados simultaneamente, pois isso faria a fonte CC entrar em
curto-circuito, danificando os componentes da estrutura. Sem estes estados de comutação, os
possíveis estados do CHB da Figura 2.11a estão resumidos no Quadro 1. Percebe-se que há
vários estados redundantes para tensão de saída igual a zero.

Quadro 1 – Estados de comutação do inversor CHB de três níveis

Fonte: Autoria própria

Na figura Figura 2.12 são apresentadas as etapas de chaveamento do inversor CHB


simétrico de três níveis. Essas etapas seguiram o Quadro 1 e foram aplicadas no desenvolvimento
do projeto deste trabalho.
28

Figura 2.12 – Etapas de chaveamento do conversor de três níveis

Fonte: Autoria própria

No CHB de cinco níveis, os pares S1 /S2 , S3 /S4 , S5 /S6 e S7 /S8 não devem ser
acionados simultaneamente para evitar curto-circuito nas fontes isoladas. Com exceção desses
estados, os possíveis estados de comutação estão resumidos no Quadro 2.
29

Quadro 2 – Estados de comutação do CHB de cinco níveis

Fonte: Adaptado de Manso (2019)

Na Figura 2.13 é apresentada as etapas de chaveamento do inversor CHB simétrico de


cinco níveis aplicados ao desenvolvimento do inversor deste trabalho.
30

Figura 2.13 – Etapas de chaveamento do conversor de cinco níveis

Fonte: Autoria própria

2.3.1.4 Inversor em cascata assimétrico (AHC)


É também chamado de Conversor Híbrido Assimétrico ou Asymmetric Hybrid Converter
– AHC. Esses conversores têm a mesma estrutura que os conversores em cascata simétricos, a
diferença é a presença de fontes CC diferentes na sua estrutura, gerando dessa forma assimetria
no conversor (ENCARNAÇÃO, 2009). Assim, os capacitores do barramento CC não estão
submetidos a valores de tensão iguais, pois as fontes de tensão CC são diferentes. Este fato
aumenta a possibilidade de níveis para uma menor quantidade de componentes (LOPES, 2019).
A Figura 2.14 apresenta um inversor em cascata assimétrico de sete níveis. Nota-se que
o inversor é similar ao inversor da Figura 2.11b, apresentando como diferencial a presença de
fontes CC diferentes, onde a tensão do capacitor C2 é o dobro da tensão do capacitor C1 . Cada
uma das células poderá comutar entre três níveis, sendo +E, 0 e −E para primeira célula e +2E,
0 e −2E para segunda célula.
A tensão de saída do conversor consiste na soma das tensões em cada célula, de forma
idêntica aos conversores simétricos, podendo variar de −3E até +3E, totalizando sete níveis
(+3E, +2E, +E, 0, -E, -2E e -3E) (ENCARNAÇÃO, 2009).
31

Figura 2.14 – Inversor CHB assimétrico de sete níveis

Fonte: Adaptado de Cacau (2014) e autoria própria

De acordo com Mesquita (2011, p. 24), “os níveis da tensão na saída do conversor
em cascata devem ser igualmente espaçados”. Isso significa que a diferença entre dois níveis
consecutivos de tensão no sinal de saída do conversor híbrido assimétrico deve ser sempre a
mesma. Ainda segundo Mesquita (2011) se isso não for obedecido haverá comprometimento na
distorção harmônica do sinal de saída do conversor.
Para que isso seja garantido, Mesquita (2011) cita três condições que devem ser satisfei-
tas:

• Os valores das fontes CC consecutivas devem obedecer a relação:

V1 ≤ V2 ≤ V3 ...Vx (2.1)
com Vx ∈ N, x = 1, 2, 3...n
• A menor fonte de tensão é escolhida como base para a normalização. Dessa forma, têm-se
os valores das fontes normalizados:
VX
VxN OR = (2.2)
V1
com VxN OR ∈ N, x = 1, 2, 3...n

• Para que os níveis sejam igualmente espaçados, essa última restrição demonstra que os
valores normalizados das tensões também deve satisfazer:
x−1
X
VxN OR ≤ 1 + 2 VxN OR (2.3)
x=1
A configuração do inversor pode ser unária (quando a fontes estão dispostas em progres-
são geométrica com razão 1), binária (progressão geométrica com razão 2) e ternária (progressão
geométrica com razão 3) (MESQUITA, 2011). Na configuração binária não ocorre subtração
entre as fontes das células para gerar níveis intermediários. Na ternária ocorre subtração entre as
fontes para gerar níveis intermediários. Mesquita (2011) apresenta em seu trabalho a seguinte
relação do número total de níveis para as configurações unárias, binárias e ternárias cujos pesos
para fontes Vx são respectivamente (1:1:1...), (1:2:4...) e (1:3:9...):
x
X VX
N =1+2 (2.4)
x=1 V1
32

Como exemplo, o inversor da Figura 2.14 é classificado como binário, pois a fonte de
tensão da segunda célula é o dobro da fonte da primeira célula, isto é, a disposição das duas
fontes segue uma progressão geométrica de razão 2.
Com relação aos estados de comutação do conversor da Figura 2.14, o Quadro 3
apresenta os possíveis estados de comutação com os respectivos sinais de saída do inversor.

Quadro 3 – Estados de comutação do AHC de sete níveis

Fonte: Adaptado de Encarnação (2009)

A Figura 2.15 mostra os sete estados de chaveamento aplicados neste trabalho. Con-
forme se observa no Quadro 3, cada etapa corresponde um nível de tensão na saída do inversor.
33

Figura 2.15 – Etapas de chaveamento do conversor de sete níveis

Fonte: Autoria própria

2.4 Técnicas de Modulação

O chaveamento feito nos semicondutores dos inversores é realizado através de diversas


técnicas de modulação. Segundo Souza (2022), há várias técnicas de modulação usadas no con-
trole de chaveamento do inversor, com intuito de atenuar os harmônicos, melhorar a eficiência e
reduzir as perdas no processo de comutação.
34

As técnicas de modulação para comandar as chaves semicondutoras de conversores po-


dem ser divididas, de acordo com a frequência de chaveamento, em técnicas de baixa frequência
e de alta frequência (SOUZA, 2019).
Souza (2019) ilustra em seu trabalho que nas técnicas de baixa frequência temos a
Modulação Vetorial Síncrona e a Eliminação Seletiva de Harmônicos, enquanto que para alta
frequência temos SVPWM, SPWM e PSPWM.
Na literatura, as mais exploradas são SPWM, SVPWM e modulação por eliminação
seletiva de harmônicos (CACAU, 2014). Neste trabalho, o foco de estudo será voltado para
técnica SPWM, por ser a técnica mais simples e utilizada nos inversores multiníveis, segundo
Jena e Rout (2018).
A técnica SPWM é também chamada de Sinusoidal Pulse Width Modulation , Modula-
ção por Largura de Pulso Senoidal ou PWM Senoidal. “Acontece por meio da comparação de
um sinal de uma onda de referência senoidal de baixa frequência com uma onda triangular de
alta frequência” (NOVELIN, 2017, p. 18).
Novelin (2017) explica que quando o sinal de referência é maior que o sinal da porta-
dora, a saída do PWM estará em nível alto, e quando a tensão de referência for menor que a
portadora, a saída terá nível lógico baixo. Na Figura 2.16 é ilustrado a comparação entre um
sinal de referência caracterizada por uma senoide (modulante) e uma onda triangular (portadora),
gerando um sinal PWM.

Figura 2.16 – Sinal PWM a partir da comparação entre modulante e portadora

Fonte: Baú (2018)

O sinal de referência consiste no sinal que se pretenda sintetizar na saída do conversor.


No exemplo da Figura 2.16, corresponde a um sinal senoidal ou senoide; no caso da onda
portadora, esta corresponde a um sinal triangular de alta frequência, sendo que esta portadora
define a frequência de comutação de chaveamento dos semicondutores de potência.
“Nos conversores multiníveis a estratégia de modulação SPWM normalmente utiliza
múltiplas portadoras deslocadas verticalmente” (CACAU, 2014, p. 47). De acordo com Manso
(2019), o uso de múltiplas portadoras serve para sintetizar os vários níveis de tensão em um
conversor multinível.
35

A utilização de várias portadoras triangulares origina diversas formas de modulação


SPWM. As principais são: Disposição de Fases (PD), Disposição em Oposição de Fases (POD),
Disposição em Oposição de Fases Alternadas (APOD) e Fases Deslocadas (PS) (BAÚ, 2018).
Segundo Souza (2019), para um sistema contendo m níveis, são necessárias (m − 1) portadoras
para compor a modulação SPWM.
Para um inversor de sete níveis, por exemplo, a senoide de referência é comparada com
seis portadoras, e cada portadora irá definir um nível de tensão na saída do inversor multinível,
produzindo seis níveis de tensão mais o nível zero, totalizando sete níveis.
Para as diferentes estratégias de modulação, deve-se considerar parâmetros importantes
como o índice de modulação de amplitude (ma ) e o índice de modulação de frequência (mf )
(COELHO; FERNANDES, 2016). Considerando que a modulante ou senoide possua amplitude
Ar e frequência fr e a portadora possua amplitude Ap e frequência fp , esses índices são dados
pelas equações:
Ar
ma = (2.5)
(m − 1) · Ap
fp
mf = (2.6)
fr

2.4.1 Disposição em Fase (PD)


A modulação disposição em fase ou Phase Disposition (PD) consiste na disposição
de todas as portadoras em fase, mas deslocadas em diferentes níveis (PARIS, 2018). “Além de
estarem em fase, as portadoras possuem o mesmo valor em sua amplitude, a diferença entre
elas é o valor médio” (BAÚ, 2018, p. 48). A Figura 2.17 ilustra a modulação PD feita para um
inversor de sete níveis, pois para sete níveis de tensão, deve-se ter seis portadoras triangulares

Figura 2.17 – Modulação SPWM com Disposição em Fase (PD)

Fonte: Paris (2018)

2.4.2 Disposição em Oposição de Fase (POD)


A modulação Disposição em Oposição de Fase ou Phase-Opposition Disposition (POD)
apresenta as portadoras negativas defasadas em 180º em relação às positivas (PARIS, 2018).
Conforme é ilustrado na Figura 2.18, “as portadoras que possuem o valor médio menor que zero
possuem defasagem de 180º quando comparadas às que estão com valor médio maior que zero”
(BAÚ, 2018, p. 50).
36

Figura 2.18 – Modulação SPWM com Disposição em Oposição de Fase (POD)

Fonte: Paris (2018)

2.4.3 Disposição em Oposição de Fases Alternadas (APOD)


Também chamada Alternate Phase-Opposition Disposition, nessa técnica as portadoras
estão alternadas. Segundo Baú (2018), as portadoras que estão em oposição alternada de fase
possuem a mesma amplitude, o que difere das demais é por apresentar um deslocamento.
Conforme a Figura 2.19 ilustra, cada portadora está defasada de 180º da portadora adjacente.

Figura 2.19 – Modulação SPWM com Disposição em Oposição de Fases Alternadas (APOD)

Fonte: Paris (2018)

2.4.4 Disposição em Fases Deslocadas (PS)


A técnica Fases Deslocadas ou Phase-Shifted (PS) apresenta todas as portadoras no
mesmo nível e defasadas entre elas, de acordo com o número de níveis do conversor (PARIS,
2018). De acordo com Baú (2018), a distribuição das ondas portadoras é realizada através de um
deslocamento de fase entre duas portadoras consecutivas de 360/(m–1) graus. Essa técnica de
modulação está ilustrada na Figura 2.20.
Para essa estratégia, o cálculo do índice de modulação da amplitude é diferente, pois as
37

portadoras possuem a mesma amplitude. Portanto, o índice de modulação é dado por:


Ar
ma = (2.7)
Ap

Figura 2.20 – Modulação SPWM com Fases Deslocadas (PS)

Fonte: Paris (2018)

2.5 Taxa de distorção harmônica total (THD)

A taxa de distorção harmônica quantifica o quanto uma forma de onda está distorcida
em relação a uma onda perfeitamente senoidal. É calculada para um determinado harmônico, ou
para todos os harmônicos do circuito (NOVELIN, 2017).
Segundo Novelin (2017), a taxa de distorção harmônica total (THD), é a relação entre
os valores das componentes harmônicas e o valor da componente fundamental, definido como:
qP

n=2 ·Vn2
T HF = (2.8)
Vf

Onde:
Vf é o valor eficaz da tensão ou corrente na frequência fundamental;
Xn é o valor eficaz da tensão ou corrente na frequência de ordem n.
38

3 SIMULAÇÃO E PROGRAMAÇÃO

Neste capítulo serão apresentados simulações realizadas nos softwares PSIM e Multi-
Sim, aspectos da linguagem VHDL, como também os passos para se trabalhar com o Quartus®
II e ModelSim para se programar em VHDL.

3.1 Simulação do Inversor no PSIM

Para fins de análise do comportamento do inversor antes da implementação do circuito,


foram feita simulações de quatro inversores: dois níveis, três níveis, cinco níveis e sete níveis.
Foram realizadas análises de distorção harmônica e análises do comportamento das portadoras
com a senoide. A técnica de modulação das portadoras foi a PD, na qual todas as portadoras
estão deslocadas em fase. Todas as simulações foram realizadas no PSIM Professional versão
2021b.1.7.

3.1.1 Inversor de dois níveis


Para o inversor convencional de dois níveis, foi montada uma ponte H contendo quatro
MOSFETs. Para o circuito de acionamento, foi utilizado um gerador de onda triangular de 2,5
Khz e um gerador senoidal de 60 Hz. Os sinais de ambos os geradores eram comparados em um
comparador analógico, conforme é motrado na Figura 3.1. Como a fonte do laboratório é de 32
V, a tensão da fonte inserida na simulação foi a mesma.

Figura 3.1 – Circuito do inversor de dois níveis

Fonte: Autoria própria

O resultado da simulação é apresentado na Figura 3.2. Nota-se que a portadora é


comparada com a senoide em um ciclo completo. Sempre que a senoide for maior que a
portadora, a saída na carga será +32 V, se a senoide for menor que a portadora, a saída será -32
V. A tensão RMS na saída foi de 31,99 V.
P1 e P2 são os sinais de chaveamento aplicados nos MOSFETs S1, S2, S3 e S4.
39

Figura 3.2 – Resultado da simulação do inversor de dois níveis

Carga

30
20
10
0
‐10
‐20
‐30
‐40

Portadora Senoide
Time (s)
100

50

‐50

‐100

‐150

P1
Time (s)
1

0.8

0.6

0.4

0.2

P2
Time (s)
1
0.8
0.6
0.4
0.2
0
0 4m 8m 12m 16m 20m

Time (s)

Fonte: Autoria própria

3.1.2 Inversor de três níveis


Nesse inversor, foram inseridos dois geradores de onda triangular e um gerador senoidal.
A frequência das portadoras foi 2,5 KHz e da senoide foi 60 Hz. Por possuir três níveis, são
necessárias duas portadoras a serem comparadas com a senoide, conforme é visto na Figura 3.3.

Figura 3.3 – Circuito do inversor de três níveis

Fonte: Autoria própria


40

Na Figura 3.4, é apresentada a saída com três níveis do inversor na carga. Agora, a
senoide é comparada com duas portadoras para gerar dois níveis mais o nível zero. Quando a
senoide é maior que a primeira portadora, a saída na carga apresenta pulsos variando entre 0 e
+32 V. Quando a senoide é menor que a primeira portadora e maior que a segunda portadora, a
saída apresenta pulsos variando entre 0 e -32 V. S1, S2, S3 e S4 são os sinais de chaveamento
aplicados nos MOSFETs. A tensão RMS foi de 24,40 V.

Figura 3.4 – Resultado da simulação do inversor de três níveis

Carga

20
0
‐20
‐40

Portadora1 Portadora2 Senoide


Time (s)
100

‐100

S1
Time (s)

0.8

0.4

S2
Time (s)

0.8

0.4

S3
Time (s)

0.8

0.4

S4

0.8

0.4

0
0 5m 10m 15m 20m 25m 30m 35m

Time (s)

Fonte: Autoria própria


41

3.1.3 Inversor de cinco níveis


Na Figura 3.5, é apresentado o circuito do inversor de cinco níveis. Foram inseridos
quatro comparadores analógicos, pois na modulação de cinco níveis, quatro portadoras triangula-
res são comparadas com uma senoide. Oito MOSFETs são distribuídos entre duas pontes H. As
duas fontes DC do barramento CC são de 32 V. A tensão RMS na saída foi de 44,92 V.
Na Figura 3.6, é apresentada a saída do inversor com cinco níveis. Nota-se a presença
das quatro portadoras triangulares sendo comparadas com a senoide. Quando a senoide é maior
que uma portadora, o pulsos gerados formam o nível correspondente àquela portadora.

Figura 3.5 – Circuito do inversor de cinco níveis

Fonte: Autoria própria

Figura 3.6 – Saída do inversor de cinco níveis


Carga

60

40

20

‐20

‐40

‐60

Portadora1 Portadora2 Portadora3 Portadora4 Senoide


300

200

100

‐100

‐200

0 5m 10m 15m 20m 25m

Time (s)

Fonte: Autoria própria


42

Na Figura 3.7, são mostrados os sinais responsáveis por chavear os oito MOSFETs.

Figura 3.7 – Saída do inversor de cinco níveis

S1

0.8

0.4

S2
Time (s)

0.8

0.4

S3
Time (s)

0.8

0.4

S4
Time (s)

0.8

0.4

S5
Time (s)

0.8

0.4

S6
Time (s)

0.8

0.4

S7
Time (s)

0.8

0.4

S8
Time (s)

0.8
0.4
0
0 5m 10m 15m 20m 25m 30m

Time (s)

Fonte: Autoria própria


43

3.1.4 Inversor de sete níveis


Nesse inversor, foram necessários seis comparadores analógicos para comparar seis
portadoras de 2,5 KHz triangulares com uma senoide de 60 Hz conforme mostra a Figura 3.8. A
tensão RMS na saída do inversor foi de 30,36 V. Por se tratar de um inversor CHB Assimétrico,
o barramento CC é alimentado por duas fontes CC assimétricas: 30 V e 15 V. A Figura 3.9
apresenta a saída do inversor e as portadoras sendo comparadas com a senoide.
Figura 3.8 – Circuito do inversor de sete níveis

Fonte: Autoria própria

Figura 3.9 – Saída do inversor de sete níveis


Carga

40

20

‐20

‐40

Time (s)

Portadora1 Portadora2 Portadora3 Portadora4 Portadora5 Portadora6 Senoide

30

20

10

‐10

‐20

‐30

0 5m 10m 15m 20m 25m 30m

Time (s)

Fonte: Autoria própria


44

Na Figura 3.10, são mostrados o sinais de chaveamento aplicados ao inversor de sete


níveis.
Figura 3.10 – Sinais de chaveamento dos MOSFETs
S1

0.8

0.4

S2
Time (s)

0.8

0.4

S3
Time (s)

0.8

0.4

S4
Time (s)

0.8

0.4

S5
Time (s)

0.8

0.4

S6
Time (s)

0.8

0.4

S7
Time (s)

0.8

0.4

0
S8
Time (s)

0.8
0.4
0
0 5m 10m 15m 20m 25m 30m 35m

Time (s)

Fonte: Autoria própria

3.1.5 Taxa de Distorção Harmônica (THD)


A Figura 3.11 apresenta a THD obtida nas simulações dos inversores, cuja fundamental
é 60 Hz.
45

Figura 3.11 – Sinais de chaveamento dos MOSFETs

Fonte: Autoria própria


46

3.2 A Linguagem VHDL

A implementação de projetos desenvolvidos em FPGA é feita de uma forma semelhante


a uma linguagem de programação que permite a descrição de hardware, denominada HDL
(Hardware Description Language) (GUEVARA, 2015).
Guevara (2015) afirma que não é correto dizer que se programa no FPGA: o que se faz
é sintetizar a função lógica que depois é implementada fisicamente pelo dispositivo. Portanto, o
HDL sintetiza um circuito digital, enquanto que uma linguagem de programação, como lingua-
gem C, sintetiza um programa que irá definir comportamento de um hardware.
Atualmente, as duas linguagens mais utilizadas para as HDLs, são o VHDL e o Verilog,
onde a primeira é majoritariamente associada a ambientes industriais e a segunda a ambientes
acadêmicos (GUEVARA, 2015).
O VHDL foi proposto, na década de 80, pelo Departamento de Defesa dos Estados
Unidos para documentar os circuitos integrados que faziam parte dos equipamentos das Forças
Armadas Americanas (JURGINA et. al. 2019). Como citado anteriormente, é uma linguagem
de descrição de hardware, ou seja, essa linguagem descreve como um circuito digital será
implementado fisicamente, e, portanto, descreve também seu comportamento.
Devido a sua potencialidade, a linguagem VHDL é complexa, e muitas vezes de difícil
entendimento, devido as inúmeras opções de modelar o comportamento de um mesmo circuito
(AMORE, 2012). Infelizmente, essa linguagem apresenta curva de aprendizado íngreme, pois
iniciantes se sentem desencorajados pelas exigências de vários tipos de dados e têm dificuldade
em entender os eventos disparados por borda em VHDL (TOCCI; WIDNER; MOSS; 2019).
Segundo Noronha (2015), a linguagem VHDL não depende da tecnologia atual, pois
pode se desenvolver um sistema de um circuito digital hoje e implementá-lo depois. Ou seja, o
mesmo código VHDL usado para descrever as tecnologias de hoje, poderá descrever tecnologias
futuras, pois não está diretamente relacionada a determinada esfera tecnológica (MANSUR,
2016).
O VHDL pode ser usado tanto para a execução num dispositivo programável, como dos
fabricantes Altera, Xilinx, Atmel, etc., quanto pode ser submetido para a fabricação de um chip
ASIC (BIAVA; FRANCISCO; COELHO, 2016).
As duas principais aplicações imediatas de VHDL estão no campo de Dispositivos
Lógicos Programáveis (CPLDs e FPGAs) e no domínio de componentes ASICs (BIAVA; FRAN-
CISCO; COELHO, 2016).
“Com relação às desvantagens, podem ser consideradas relevantes o fato de que o
VHDL não gera um hardware totalmente otimizado e exige um maior conhecimento de circuitos
digitais por parte do projetista para melhorar a otimização” (AVELINO, 2010, p. 20). Outras
desvantagens são o fato de que descrever circuito é diferente de programar, e é indispensável o
conhecimento em circuitos digitais ao trabalhar com VHDL.
Segundo Amore (2012), ele afirma em seu livro que, em VHDL, todos os comandos
são executados concorrentemente, com exceção de algumas regiões específicas do código. Isso
significa que os comandos não são executados de forma sequencias como ocorrem em micro-
controladores. Portanto, a ordem dos comandos não tem relevância. Amore (2012) afirma que a
alteração em um sinal leva à execução de todos os comandos sensíveis àquele sinal, simultanea-
mente.
Para a concepção de um arquivo VHDL são necessárias ao menos duas estruturas
básicas: a entidade ou entity e a arquitetura ou architecture.
A entidade define as entradas e saídas de sinais do circuito FPGA ou um PLD qualquer,
e a arquitetura define como os sinais nas entradas e saída influem na estrutura interna do circuito
e como estes mesmo sinais se relacionam com outros sinais internos do circuito (LIMA, 2011).
47

A Figura 3.12 ilustra um código em VHDL para implementação de uma porta NOT,
mostrando as estruturas entity e architecture.

Figura 3.12 – Exemplo de uma porta NOT em VHDL

Fonte: Autoria própria

O VHDL pode ser “programado” através de software EDA (Eletronic Design Auto-
mation) como, por exemplo, o Quartus® II Web Edition desenvolvido pela empresa Altera,
atualmente pertencente a Intel. É um software de síntese de projetos que reduz o tempo de
criação de circuitos digitais. Este software foi usado para implementar o código em VHDL nesse
trabalho.
A inserção de dados no Quartus® II Web Edition pode ser feita no Editor gráfico que
utiliza um diagrama de blocos a partir de elementos primitivos como portas lógicas, comparado-
res, somadores, entre outros (ZOLET, 2014). Pode ser feita também pelo Editor de texto onde
o programador insere comandos em linguagem VHDL ou Verilog para o desenvolvimento de
projetos (ZOLET, 2014). O desenvolvimento do código VHDL nesse projeto foi realizada no
editor de texto do Quartus® II Web Edition. O tópico a seguir explana os passos para se trabalhar
com o Quartus® II.

3.3 Trabalhando com o Quartus® II Web Edition

Na programação do software Quartus® II Web Edition, é necessário fazer algumas


configurações básicas iniciais. Ao inicializar o programa, uma tela inicial apresenta opção de
criação de um novo projeto em “Create a New Project”. Ao clicar nessa opção surge uma tela de
introdução. Ao avançar, o programa solicita escolher o diretório onde o projeto será salvo e o
nome do projeto, conforme mostra a Figura 3.13.
48

Figura 3.13 – Tela para criação de um novo projeto no Quartus II

Fonte: Autoria própria

Como pode ser visto na imagem, o nome do projeto é “inversor_multinivel”. A tela


exige um nome para a entidade top-level, a qual trata-se do nome da entidade em que se trabalhará
o projeto em HDL. Neste trabalho, a HDL usada é o VHDL e, por questões de facilidade, o nome
da entidade (entity) desenvolvida durante a programação em VHDL foi o mesmo do projeto:
“inversor_multinível”.
Ao avançar para próxima tela, pode-se adicionar arquivos ao projeto. No caso do
projeto atual, não foi adicionado nenhum arquivo. Na tela seguinte, é definido a família e as
configurações do dispositivo FPGA usado no projeto. A placa Altera DE2 trabalha com chip
FPGA modelo EP2C35F672C6, família Cyclone II. Assim, conforme a Figura 3.14 apresenta,
essas especificações são definidas em “Family” e “Name filter”.
49

Figura 3.14 – Escolha da Família e modelo do FPGA trabalhado

Fonte: Autoria própria

O próximo passo na tela seguinte é escolher as configurações de ferramentas EDA. Neste


projeto, não foram definidas configurações para essa tela, conforme é ilustrado na Figura 3.15.

Figura 3.15 – Configurações de ferramentas EDA

Fonte: Autoria própria

Após isso, a próxima e última tela resume as configurações feitas, restando apenas
finalizar clicando em “Finish”.
Finalizada as configurações do projeto, o passo seguinte é definir a linguagem que será
trabalhada. No trabalho atual, a linguagem utilizada foi o VHDL. Isso é definido indo em “File”
depois em “New” e, em seguida, selecionando “VHDL File”, conforme ilustra a Figura 3.16.
50

Figura 3.16 – Guia para escolha do editor VHDL

Fonte: Autoria própria

Ao clicar em “OK”, a tela do editor de texto é aberta. É nesse editor que a programação
em VHDL é implementada. Como exemplo, a imagem da Figura 3.17 ilustra parte do código em
VHDL implementado neste trabalho no editor de texto. Trata-se do código responsável por gerar
os sinais PWM do inversor multinível.
Após o desenvolvimento da programação no código, é necessário realizar a compilação.
Isso é feito clicando em “Start Compilation”. O programa solicita salvar o código VHDL. O
arquivo VHDL deverá ser salvo como o mesmo nome da entidade (entity). No caso atual, o
arquivo foi nomeado como “inversor_multinivel.vhd”. Se o arquivo não possuir o mesmo nome
da entidade, a compilação apresentará erro.
Caso nenhum erro seja encontrado no código durante a compilação, o passo seguinte
será mapear as entradas e/ou saídas do kit Altera DE2. Isso é necessário para definir quais serão
os pinos dos slots de expansão da placa FPGA que serão responsáveis pela saída dos sinais
PWM.
A Figura 3.18 mostra os dois slots de expansão da placa Altera DE2 e os pinos que
foram usados para enviar os sinais de acionamento aos gates. Os oito primeiros pinos superiores
do slot GPIO 2 são responsáveis por enviar os sinais PWM para o Driver de acionamento.
51

Figura 3.17 – Código VHDL do Inversor Multinível

Fonte: Autoria própria

Figura 3.18 – Slots GPIO 1 e GPIO 2 na placa Altera DE2

Fonte: Autoria própria e adaptado de Altera (2012)

O mapeamento dos endereços dos pinos é realizado em “Assigments” e, logo depois,


em “Pin Planner”. A tela do Pin Planner é aberta conforme é mostrado na Figura 3.19.
52

Figura 3.19 – Pin Planner contendo os endereços de entrada e saída

Fonte: Autoria própria

O mapeamento dos oito pinos no Pin Planner foi feito seguindo os endereços indicados
no manual da placa Altera DE2. O endereço do Clock (PIN_N2), por sua vez, foi obtido da
matriz de endereços conforme é mostrado na Figura 3.19. Os endereços dos botões usados na
placa foram obtidos do manual da placa. A Tabela 3.1 resume todos os endereços de entrada e
saída do projeto.

Tabela 3.1 – Endereços das entradas e saídas

NOME TIPO ENDEREÇO NOME TIPO ENDEREÇO


button1 Input PIN_W26 pwm5 Output PIN_M19
button2 Input PIN_P23 pwm6 Output PIN_M20
button3 Input PIN_N23 pwm7 Output PIN_N20
button4 Input PIN_G26 pwm8 Output PIN_M21
clk Input PIN_N2 rst Input PIN_T7
pwm1 Output PIN_K25 switch1 Input PIN_V2
pwm2 Output PIN_K26 switch2 Input PIN_V1
pwm3 Output PIN_M22 switch3 Input PIN_U4
pwm4 Output PIN_M23 switch4 Input PIN_U3

Fonte: Autoria própria

No projeto do Inversor Multinível, há dez entradas e oito saídas. As dez entradas


correspondem a quatro push button, cinco slides switch mais a entrada do clock da placa. As oito
saídas correspondem aos oito pinos do slot GPIO 2.
Após finalizar o mapeamento das entradas e saída no Pin Planner, é necessário executar,
novamente, a compilação do código em “Assignments” e depois em “Start Compilation”. Se
nenhum erro de compilação ocorrer, o próximo passo é realizar a gravação no FPGA.
Para realizar a gravação no FPGA, conecta-se a placa Altera DE2 ao computador via
USB, em seguida, clica em “Tools” e depois em “Programmer”. A tela de gravação surgirá,
conforme mostra a Figura 3.20.
53

Figura 3.20 – Tela de gravação do FPGA

Fonte: Autoria própria

Para iniciar a gravação, antes de tudo, é necessário verificar se o botão "RUN/PROG"da


placa esteja na posição "Run". Após isso, basta clicar em “Start”. Caso esta opção esteja ausente,
é necessário clicar em “Hardware Setup” e selecionar “USB-Blaster [USB-0]”. Ao iniciar a
gravação, a barra “Progress” irá carregar até 100% indicando êxito na gravação. Imediatamente,
a placa Altera DE2 iniciará a função implementada no FPGA.

3.4 Trabalhando com o ModelSim – Intel FPGA Edition 2021.1

O ModelSim é um software usado para simulação de linguagem de descrição de


hardware como VHDL e o Verilog. Pode ser usado de forma integrada ao Quartus® II ou
separadamente. Nesse trabalho, ele foi usado de forma separada do Quartus® II, pois a versão
que vem instalada com o Quartus® II é obsoleta.
Para se utilizar o ModelSim, é necessário, inicialmente, fazer a compilação do código
VHDL. No Quartus® II Web Edition o código VHDL foi salvo como “inversor_multinivel.vhd”.
Esse arquivo deverá ser compilado no ModelSim.
Para realizar a compilação, deve-se ir em “Compile”, depois em “Compile”. Ao abrir o
explorer deve-se selecionar o arquivo VHDL a ser compilado e clicar em “Compile”, conforme é
ilustrado na Figura 3.21.
54

Figura 3.21 – Compilando o arquivo VHDL

Fonte: Autoria própria

Ao clicar em “Compile”, surgirá uma mensagem perguntado se deseja criar a biblioteca


“work”. Ao clicar em “Ok” a biblioteca “work” é criada e aparece ao lado esquerdo da janela.
O próximo passo é abrir a janela de simulação, onde será possível fazer testes nos sinais internos
e externos do projeto em VHDL. Para isso, é preciso clicar em “+” na biblioteca “work” e
depois dar um clique duplo em “inversor_multinivel”. Com isso, a janela de simulação é aberta
conforme mostra a Figura 3.22.
A janela azul, na lateral esquerda, lista todos os objetos como variáveis, constantes,
sinais e contadores implementados no código VHDL. Para analisar o comportamento gráfico
de um objeto, é preciso adicionar uma entrada de clock, pois toda a funcionalidade do projeto é
síncrona, isto é, dependente do clock.
O objeto a ser analisado precisa ser adicionado na janela Wave. No caso do clock, o
objeto que o representa é “clk”. Para adicioná-lo, clica-se com botão direito no objeto “clk”,
depois em “Modify” e em “Apply Wave”. Ao abrir a janela “Create Pettern Wizard”, será definido
o tempo e a duração do clock (20 ms), como ilustra a Figura 3.23. Ao clicar em “Next”, na janela
seguinte será definido os atributos do clock.
55

Figura 3.22 – Janela de simulação

Fonte: Autoria própria

Figura 3.23 – Duração do clock

Fonte: Autoria própria

O oscilador da placa Altera DE2 tem frequência de 50 Mhz, portanto a período do clock
é 20 ns com ciclo de trabalho de 50%. Esses atributos são definidos na janela seguinte após clicar
em “Next”, conforme é ilustrado na Figura 3.24.

Figura 3.24 – Período do clock é 20 ns

Fonte: Autoria própria


56

Ao clicar em “Finish”, o objeto “clk” é adicionado na janela Wave. Agora o elemento a


ser analisado será o objeto “modulante1”. Para adicioná-lo, seleciona-se o objeto e pressiona
“Ctrol + W”. Agora há dois objetos na janela Wave conforme é ilustrado na Figura 3.25.
Figura 3.25 – Objetos adicionados no Wave

Fonte: Autoria própria

O objeto “modulante1” apresenta valores analógicos de uma senoide durante a execução


do código, ao contrário do objeto “clk” que apresenta apenas valores binário (1 ou 0). Portanto,
para melhor visualização gráfica, o objeto “modulante1” deve apresentar valores analógicos na
janela gráfica Wave. Conforme ilustra a Figura 3.26, isso é definido clicando como o botão direto
do mouse no objeto “modulante1”, em “Format” e depois em “Analog (automatic)”.
Figura 3.26 – Formato analógico

Fonte: Autoria própria

Com os objetos adicionados e configurados corretamente, o próximo passo é definir o


tempo de simulação, cujo local está marcado na Figura 3.27. O tempo de simulação para este
57

projeto foi de 20 ms.


Para executar a simulação, clica-se em “Run”, depois em “Rescale” para melhorar a
escala automaticamente e, por fim, em “Zoom Full”.

Figura 3.27 – Execução da simulação

Fonte: Autoria própria

O resultado da simulação encontrar-se ilustrado na Figura 3.28. Nota-se que o objeto


“modulante1” se comporta como uma senoide durante a execução do clock no período de 20 ms.

Figura 3.28 – Execução da simulação

Fonte: Autoria própria

3.5 Simulação realizada no ModelSim

Nesta seção, serão mostrados os resultados simulados do inversor de dois, três, cinco e
sete níveis, bem como o formato da senoide, das portadoras, a saída do inversor e os sinais de
acionamento dos MOSFETs. O período de clock foi de 20 ns, e o tempo de simulação foi de 30
ms. A saída do inversor é representada pela variável "Vcc". A simulação no ModelSim serve
para avaliar se o código VHDL está funcionando conforme com o desejado.
58

3.5.1 Inversor de dois níveis


Os resultados da simulação do inversor de dois níveis são apresentados na Figura 3.29.
Como são necessários quatro MOSFETs a serem acionados, existem quatros sinais PWM
apresentados. Ademais, para dois níveis é necessária apenas uma portadora.

Figura 3.29 – Simulação da saída do inversor de dois níveis

Fonte: Autoria própria

3.5.2 Inversor de três níveis


Na Figura 3.30, são apresentados os resultados da simulação do inversor de três níveis.
Da mesma forma que acontece no inversor de dois níveis, são necessários quatros MOSFETs, e,
portanto, são apresentados quatro sinais PWM de acionamento.
59

Figura 3.30 – Inversor de três níveis

Fonte: Autoria própria

3.5.3 Inversor de cinco níveis


A Figura 3.31 apresenta a simulação do inversor de cinco níveis, com quatro portadoras,
uma senoide e oito sinais PWM. Por se tratar de um inversor com duas pontes H, são necessários
oito sinais PWM para acionarem oito MOSFETs.

Figura 3.31 – Inversor de cinco níveis

Fonte: Autoria própria

3.5.4 Inversor de sete níveis


A Figura 3.32 apresenta os resultados simulados do inversor de sete níveis. Para este
inversor, há seis portadoras e uma senoide. A Figura 3.33 apresenta a simulação da saída do
60

inversor e os oito sinais PWM, responsáveis por acionar os oito MOSFETs.

Figura 3.32 – Portadoras do inversor de sete níveis

Fonte: Autoria própria

Figura 3.33 – Saída do inversor de sete níveis e modulante senoidal

Fonte: Autoria própria

Nota-se quem em todas a simulações, o sinal de saída "Vcc"correspondeu as expectativas


desejadas, demonstrando que a programação em VHDL foi implementada corretamente.
61

4 DESENVOLVIMENTO DO ALGORITMO DO INVERSOR

A implementação do código VHDL foi baseada na ideia de reunir a modulação de


quatro inversores multiníveis: dois níveis, três níveis, cinco níveis e sete níveis. A escolha do
tipo de inversor é feita através dos quatro primeiros botões do tipo slide switch da placa Altera
DE2, conforme é mostrado na Figura 5.15.
A mesma figura ilustra a presença de outros quatro botões do tipo push botton respon-
sáveis pela alteração das frequências das portadoras e da modulante. Também é necessário um
botão reset capaz de fazer as frequências retornarem aos valores padrões após sofrerem alteração.
Esse botão é do tipo slide switch cuja posição é ilustrada na Figura 5.15. Os valores iniciais das
variáveis estão listados na Tabela 4.1.
Para o melhor entendimento, foram elaborados quatro fluxogramas os quais explanam,
por parte, o algoritmo que processa o tipo de inversor escolhido.

Tabela 4.1 – Variáveis iniciais

Fonte: Autoria própria


62

4.0.1 Inversor de dois níveis


O fluxograma da Figura 4.1 ilustra o funcionamento do inversor multinível de dois
níveis. Por se tratar de um inversor simples, com poucas linhas de comandos em VHDL, o
fluxograma é pequeno em relação aos outros.
Enfatiza-se que, embora os comandos em VHDL sejam concorrentes, os comandos
utilizados neste trabalho foram implementados através de um processo (process). Os comandos
dentro de um processo são executados de maneira sequencial, e, consequentemente, os fluxo-
gramas seguem uma rota sequencial. Isso pode ser verificado no código em VHDL que está
disponível no Apêndice B.
63

Figura 4.1 – Fluxograma do algoritmo do inversor de dois níveis

Fonte: Autoria própria


64

Primeiramente, é preciso entender que a modulante e a portadora foram geradas através


de memórias ROM implementadas em VHDL. As memórias ROM tanto da modulante quanto
da portadora armazenam, cada uma, 1000 valores variando de 0 a 1000 em um ciclo completo.
Esses valores foram obtidos no software Matlab R2021a.
O bloco “clock (↑)” indica que a cada borda de subida do clock do oscilador da placa,
isto é, sempre que o sinal de clock mudar de “0” para “1” os comandos contidos dentro do
comando process serão executados.
O primeiro comando a ser executado é o bloco de decisão “switch1 ligado” que verifica
se o primeiro botão slide switch está ativado. Este botão, quando ligado, ativa o inversor de dois
níveis. Após ativado, dois contadores (a1 e b1) são incrementados a cada borda de subida do
clock.
Seguidamente, as variáveis N1 e N2 são calculadas para obter o número de contagens
de ciclos de clock ou bordas de subida que o processo deve aguardar para executar o bloco de
decisão “a1 = N1”. Esse bloco de decisão determina o intervalo de tempo aguardado para que a
variável “modulante1” receba o próximo valor da ROM.
As variáveis N1 e N2 determinam as frequências da modulante e da portadora, respecti-
vamente. Para melhor compreensão sobre isso, a Figura 4.2 ilustra um período completo de uma
senoide contendo 30 valores de zero a 1000.
Figura 4.2 – Período completo de uma senoide contendo 30 valores

Fonte: Autoria própria

Considerando “△t” como o intervalo de tempo entre dois valores lidos na ROM e “Tclk ”
o período completo do clock, então o número de contagens de ciclos de clock entre dois valores
lidos para fixar a frequência desejada é:
△t
Nx = (4.1)
Tclk
Como “△t” é a razão entre o período completo “T ” da senoide e o número de valores
“n” contidos na senoide, tem-se a seguinte equação dada por:
T
△t = (4.2)
n
Substituindo Equação (4.2) em Equação (4.1), chega-se em:
T
Nx = (4.3)
n · Tclk
65

Considerando a frequência desejada da senoide como “f ” e a frequência do clock como


“fclk ”, então a equação Equação (4.3) torna-se
fclk
Nx = (4.4)
n·f
O desenvolvimento da Equação (4.4) pode ser aplicado tanto para a senoide quanto para
portadora triangular.
A frequência do clock da placa DE2 Altera é 50 MHz, a frequência desejada da senoide
para este trabalho é 60 Hz e a frequência desejada para a portadora triangular é 2,5 KHz, assim
os valores das variáveis N1 e N2 é dada pelas equações:
50000000
N1 = (4.5)
1000 · f reqsen
50000000
N2 = (4.6)
1000 · f reqtri
As variáveis que representam as frequências, respectivamente da senoide e da portadora
é “freqsen” e “freqtri”, conforme é ilustrado na Tabela 4.1.
Se o bloco de decisão “a1 = N1” for verdadeiro, a variável “modulante1” recebe o
próximo valor da ROM e o contador “contador1” é incrementado. Os valores desse contador
podem variar de 1 a 1000. Esse bloco é importante, pois o valor adquirido pelo contador
corresponde ao endereço do próximo valor a ser recebido da ROM, na variável “modulante1”.
Por exemplo, se o valor do contador for 20, então o próximo valor a ser lido encontra-se na
vigésima posição do endereço da ROM.
Quando o bloco “contador1 = 1000” é verdadeiro, isso significa que um período
completo da modulante já foi lido, e é necessário “resetar” os valores lidos na ROM. Isso é feito
pelo bloco “contador1 = 1”.
Caso o bloco “contador1 = 1000” seja falso, o contador “a1”, então, é “resetado” e o
bloco de decisão “b1 = N2” é testado. Esse bloco tem a mesma funcionalidade que o bloco “a1 =
N1” e seus blocos sequenciais também são os mesmos e, por isso, sua explicação é redundante.
A diferença é que o bloco “b1 = N2” está associado à leitura dos valores da portadora triangular,
e o bloco “a1 = N1”, à leitura dos valores da senoide (modulante).
Se o bloco “b1 = N2” for falso, então o fluxo segue para o conector “A”. Esse conector
segue para o bloco de decisão que faz a comparação entre o valor da modulante com a da
portadora. Se a modulante for maior que a portadora, os sinais PWM1 e PWM4 são acionados
em nível alto ou “1” e PWM2 e PWM3, em nível baixo ou “0”. Caso a portadora seja maior que
a modulante, os sinais PWM1 e PWM4 são acionados em nível alto e PWM2 e PWM3, em nível
baixo.
Toda explanação do fluxograma do inversor de dois níveis foi fundamentada no fato do
bloco “switch1 ligado” ser verdadeiro (botão slide switch está ativado). Se esse botão não estiver
ativado, então o bloco “switch1 ligado” é falso, e fluxo segue para o conector “B”. Esse conector
faz ligação do fluxograma da Figura 4.1 ao da Figura 4.3.

4.0.2 Inversor de três níveis


O bloco “B” da Figura 4.1 indica que o fluxo é direcionado para o bloco de decisão
“swtch2 ligado” da Figura 4.3. Esse bloco testa se o segundo botão da placa, responsável pela
ativação do inversor de três níveis, está ligado.
66

Figura 4.3 – Fluxograma do algoritmo do inversor de três níveis

Fonte: Autoria própria

A partir desse bloco, a explicação do fluxo é o mesmo do fluxograma da Figura 4.1 até
o bloco de decisão “Valor da Modulante 2 é maior que valor Portadora 2?”, com a diferença que
67

agora existem dois blocos de leitura da ROM, “Portadora 1” e “Portadora 2”, pois, como foi
explicado no Capítulo 2, para três níveis, são necessárias duas portadoras.
A partir do bloco “Valor da Modulante 2 é maior que valor Portadora 2?”, os blocos de
decisão farão comparação entre a modulante com as portadoras para o acionamento dos sinais
PWM. O acionamento dos sinais foi baseado no Quadro 1.
O conector “D” faz a ligação do fluxograma da Figura 4.3 ao da Figura 4.4. O inversor
de cinco níveis implementado nesse fluxograma é baseado na topologia clássica CHB simétrico.

4.0.3 Inversor de cinco níveis


No inversor de cinco níveis, conforme é ilustrado na Figura 4.4, o bloco “switch3 ligado”
representa o terceiro botão responsável por acionar o inversor de cinco níveis. A inicialização é
semelhante aos dois inversores explicados anteriormente, com a diferença que são necessárias
quatro portadoras. Por isso, há quatro blocos responsáveis pelo carregamento dos valores de cada
portadora.
Os blocos de decisão que fazem a comparação entre a modulante e as portadoras fazem
o acionamento dos sinais PWM baseado no Quadro 2, do Capítulo 2.
Da mesma forma que no fluxograma anterior, o inversor de cinco níveis segue a
topologia clássica CHB simétrica.
68

Figura 4.4 – Fluxograma do algoritmo do inversor de cinco níveis

Fonte: Autoria própria


69

4.0.4 Inversor de sete níveis


O inversor de sete níveis, diferentemente dos inversores anteriores, é baseado na topolo-
gia clássica AHC. Por isso, os blocos de decisão que fazem comparação entre a modulante com
as portadoras fazem leitura da ROM para seis portadoras, como é mostrado na Figura 4.5.
Ademais, conforme foi explicado no Capítulo 2, ao acionar o inversor AHC, é neces-
sário gerar assimetria nas fontes CC que alimentam o inversor. Portanto, antes de se ativar o
inversor, é necessário verificar se a tensão da fonte CC de umas das pontes H é o dobro da outra
fonte CC.
O bloco de decisão “switch4 ligado” representa o quarto botão responsável por acionar
o inversor de sete níveis.
É importante destacar que tanto as portadoras quanto a modulante são formadas por
1500 valores obtidos no software Matlab R2021a. Isso pode ser confirmado pelos blocos “conta-
dor7 = 1500” e “contado8 = 1500” presentes no fluxograma.
O acionamento dos sinais PWM é feito pelos blocos de decisão que fazem comparação
entre a modulante e as portadoras. A lógica de comutação desses sinais foi baseada no Quadro 3.
O último bloco do fluxograma é responsável por acionar os sinais PWM de maneira
que se mantenha a saída do inversor em 0 V. Isso evita que a saída apresente valores de tensão
flutuante quando nenhum inversor estiver acionado.
70

Figura 4.5 – Fluxograma do algoritmo do inversor de sete níveis

Fonte: Autoria própria


71

4.0.5 Algoritmo de geração do dead-time


A comutação dos MOSFETs em um mesmo braço de transistores em alta frequência,
idealmente, deve ser feita de modo que os dois MOSFETs não devem ser acionados simultanea-
mente. Na prática, porém, isso é difícil de se realizar em comutações de alta frequência, pois um
MOSFET precisa de um tempo necessário para se desligar totalmente.
Como o driver IR2101 não possui dead-time interno, foi necessário inserir um dead-
time manualmente no código VHDL na operação de comutação. O dead-time é um intervalo de
tempo entre o momento que um MOSFET é desligado e outro é ligado.
A Figura 4.6 ilustra em um fluxograma como foi implementado um dead-time no
inversor de dois níveis. Esse mesmo algoritmo foi aplicado em todos os inversores.

Figura 4.6 – Fluxograma do algoritmo do dead-time

Fonte: Autoria própria

O bloco de decisão compara a modulante com a portadora. Se a modulante for maior


que a portadora, o contador “timer1” é incrementado e os sinais PWM2 e PWM3 são postos
em nível 0. Em seguida, o bloco de decisão “timer1 é maior que N3?” é testado. Caso seja
verdadeiro, os sinais PWM1 e PWM4 são postos em nível 1 e os contadores “timer1” e “timer2”
são reiniciados para zero.
O bloco de decisão “timer1 é maior que N3?”, basicamente, atrasa os sinais PWM1
72

e PWM4 em relação aos sinais complementadores (PWM2 e PWM3), pois os sinais PWM1 e
PWM4 só serão setados em nível 1 quando o contador for maior que N3.
Na Tabela 4.1, N3 é igual a 50. Logo, são necessários aguardar 50 ciclos de clock ou
mais. Um ciclo de clock, para uma frequência de 50 MHz, é igual a 20 ns, portanto 50 ciclos
equivalem um intervalo de tempo de 1 µs. Dessa forma, é gerado um atraso ou dead-time de 1µs
entre os sinais complementares. Assim, quando um MOSFET é desligado, o FPGA aguarda 1 µs
para acionar o MOSFET complementar.
Quando a portadora é maior que a modulante, o “timer2” é incrementado e os sinais
PWM1 e PWM4, antes setados em nível alto, agora são setados imediatamente em nível baixo
ou “0”. Quando o valor do contador “timer2” é maior que 50, os sinais PWM2 e PWM3 são
setados em nível alto ou “1”.
Na Figura 4.7, é ilustrado graficamente o resultado da presença do dead-time, represen-
tado por △t entre dois sinais PWM complementares, seguindo o processo do fluxograma.

Figura 4.7 – Ilustração de um dead-time

Fonte: Autoria própria

4.0.6 Algoritmo de alteração da frequência


A modificação da frequência é realizada através dos botões mostrados na Figura 5.15.
Dois botões têm função de aumentar as frequências da modulante e das portadoras, outros dois
servem para reduzir as frequências.
O algoritmo responsável pelo processo de modificação da frequência está ilustrado no
fluxograma da Figura 4.8.
Para cada subida de clock, o bloco “contador13” é incrementado e, em seguida, o bloco
de decisão “rst = 1?” é testado. Esse bloco permite reiniciar as frequências modificadas para os
valores padrões (60 Hz e 2500 Hz), caso seja verdadeiro.
Caso o bloco não seja verdadeiro, o bloco “Botao 1 está ligado e contador9 é zero?” é
testado. O bloco “Botão 1” representa o botão físico responsável por aumentar a frequência da
modulante. Se a condição for verdadeira, o bloco “contador13 = 50000?” é testado. Esse bloco
implementa a técnica debounce para impedir que múltiplos toque no botão sejam lidos pelo
FPGA indesejavelmente. Para isso, o bloco exige que após o contador “contador13” alcançar
50000 contagens, o bloco seguinte seja executado.
Logo depois, o bloco “freqsen = freqsen + 5”, o qual é responsável por aumentar
a frequência em 5 Hz, é executado. Em seguida, o contador “contador9” é incrementado. O
“contador9” impede que a frequência seja aumentada da maneira descontrolada, no caso do botão
se manter pressionado indefinidamente. Assim, pois, esse contador deve ter valor zero como
condição para que a frequência seja alterada.
Após isso, as variáveis “a1”, “a2”, “a3”, “a4”, “b1”, “b2”, “b3” e “b4” são reiniciadas
para impedir que ocorra aumento de seus valores de forma descontrolada durante a alteração da
frequência.
73

Se o teste do bloco “Botão 1 está ligado e contador9 é zero?” for falso, então o bloco
de decisão “Botão 1 está desligado e contador9 é um?” é testado para verificar se o contador
“contador9” é um. Essa condição ocorre quando o botão, que antes estava pressionado é “solto”.
Na prática, enquanto o botão continuar pressionado, a frequência não mais se altera, somente se
o mesmo botão for liberado e permitir que contador “contador9” seja zerado é que a frequência
poderá ser alterada.

Figura 4.8 – Fluxograma do algoritmo de alteração da frequência

Fonte: Autoria própria


74

O bloco “Botão2 está ligado e contador10 é zero é freqsen é maior que 5?”, se verdadeiro,
é responsável por permitir que o botão reduza a frequência impedindo que a frequência seja
zerada ou que o valor da variável “freqsen” seja negativa. O contador “contador10” impede
que a frequência seja reduzida de maneira descontrolada caso o botão se mantenha pressionado
indefinidamente.
Logo depois, novamente surge o bloco “contador13 = 50000?” responsável pela técnica
debounce no botão de redução de frequência. O bloco seguinte “freqsen = freqsen – 5” reduz a
frequência em 5 Hz cada vez que o botão é pressionado. Depois o bloco “contador10 = contador10
+ 1” é incrementado para impedir redução descontrolada da frequência. Posteriormente, as
variáveis “a1”, “a2”, “a3”, “a4”, “b1”, “b2”, “b3” e “b4” são zeradas.
Se “Botão2 está ligado e contador10 é zero é freqsen é maior que 5?” é negativo, o
bloco “botão 2 está desligado e contador10 é 1? é testado e, caso verdadeiro, zera o contador
“contador10” permitindo que a frequência seja alterada novamente.
O conector “G” indica que após a execução dos blocos, será testado o bloco de decisão
“Botão 13 está ligado e contador11 é zero? Se verdadeiro, o bloco que implementa a técnica
debounce é executado e depois o bloco “freqtri = freqtri + 500” aumenta a frequência da
portadora em 500 Hz quando o botão for pressionado. Logo depois o contador “contador11” é
incrementado e as mesmas variáveis do bloco “contador10” são zeradas.
O bloco “Botão 4 está ligado e contador12 é zero e freqtri é maior que 500?” verifica
se o quarto botão não está pressionado indefinidamente e se a frequência não é igual a 500 ou
menor. Isso impede que ao reduzir a frequência, a variável freqtri não receba valor menor ou
igual a zero.
Quando verdadeiro, a técnica debounce também é aplicada, e depois o bloco responsável
por reduzir a frequência em 500 Hz é executado. Depois o contador “contador12” é incrementado
com a mesma finalidade do contador “contador11”.
Por fim, bloco “Botão 4 está desligado e contador 12 é um?”, quando verdadeiro,
zera o contador “contador12” permitindo modificar novamente a frequência da portadora. O
bloco “Botão swtich está ligado?” representa o bloco de decisão “switch1 ligado” da Figura 4.1,
pois o algoritmo de alteração da frequência antecede os algoritmos dos inversores. Portanto,
somente após a execução do algoritmo de alteração da frequência os algoritmos dos inversores
são executados.
75

5 DESENVOLVIMENTO DO PROTÓTIPO

Este capítulo tem o objetivo de explanar a montagem do inversor, bem como os circuitos
de potência e de acionamento, através de simulações realizadas no PSIM, como também o
desenvolvimento das simulações da programação em VHDL realizada no Quartus II e no
ModelSim. Serão apresentados também os aspectos teóricos sobre o FPGA e os materiais
necessários para o desenvolvimento do projeto.

5.1 Circuito do Inversor Multinível

A Figura 5.1 ilustra a conexão da placa do FPGA com o circuito do inversor. Na placa
do FPGA, há oito saídas e um ground conectados no slot de expansão da placa, conforme é
ilustrado na figura.
Figura 5.1 – Protótipo montado

Fonte: Autoria própria e Terasic (2022)


76

A Figura 5.2 ilustra o esquema completo entre o circuito do inversor, composto pelo
circuito de potência, circuito driver e o circuito isolador do inversor. O circuito isolador é
composto por oito CIs optoacopladores PC817. Cada par de CI optoacoplador isola um driver
da saída da placa FPGA, garantido segurança à placa.
O circuito driver, constituído por quatro Drivers High And Low Side, recebe os
comandos de acionamento da placa do FPGA através dos optoacopladores para acionar os
MOSFETs do circuito de potência formado por duas pontes H.

Figura 5.2 – Esquema do circuito completo do inversor

Fonte: Autoria própria

A Figura 5.3 apresenta o projeto montado no laboratório em funcionamento alimentando


um resistor. O circuito completo foi montado em duas protoboards do laboratório de eletrônica
de potência. Uma protoboard contem o circuito do driver de acionamento, e outra contem o
circuito de potência constituído de duas pontes H. O resistor usado foi de 1k e 5W.

Figura 5.3 – Protótipo montado

Fonte: Autoria própria


77

5.2 Driver de Acionamento

Os gates drivers são circuitos integrados que servem como interface entre os sinais de
controle advindos de controladores digitais ou analógicos e interruptores semicondutores como
MOSFETs e IGBTs (INFINEON, 2022a). Basicamente, os gate drivers servem para condicionar
os sinais de saída de um controlador digital ou analógico para um nível de tensão necessário para
acionar transistores.
Neste trabalho, o driver aplicado é conhecido como High And Low Side. Ele permite
acionar dois MOSFETs de forma independente, ou seja, é possível acionar dois MOSFETs de
diferentes braços de transistores, superior ou inferior, de forma independente.
Conforme se observa na Figura 5.4, o circuito básico é composto por um capacitor
bootstrap e um diodo bootstrap. Além disso, o source do MOSFET superior possui referência
diferente do ground do MOSFET inferior. Dependendo da aplicação, o source do MOSFET
superior pode ou não estar conectado ao dreno do MOSFET inferior.

Figura 5.4 – Diagrama típico de conexão de driver High And Low Side

Fonte: Adaptado de Infineon (2022b)

Como o acionamento é independente, nesse tipo de driver há duas entradas de sinais


PWM, cada uma responsável pelo acionamento de um MOSFET. Ademais, pelo fato de haver
independência entre os acionamentos, não há dead-time interno no driver como ocorre em
alguns drivers. Portanto é necessário que o projetista se atente em implementar na lógica de
comando dos sinais de acionamento um dead-time para evitar queima dos transistores durante o
chaveamento (OLIVEIRA, 2021).
Oliveira (2021) explica também que essa independência permite que dois MOSFETs
sejam acionados tanto no mesmo braço quanto em braços diferentes, ou que dois MOSFETs não
complementares sejam acionados ao mesmo tempo.
O driver do tipo High and Low Side necessita também de um capacitor e diodo de
bootstrap para funcionar. Nesse driver, o ground da fonte de alimentação é o mesmo do braço
de transistores. Contudo, a tensão Vgs (tensão entre gate e source), a qual serve para acionar o
MOSFET superior, não tem o mesmo ground da fonte que alimenta o driver (OLIVEIRA, 2021).
Isso se torna um problema, pois não é possível aplicar a tensão da fonte diretamente no gate do
MOSFET superior, devido à tensão Vgs apresentar ground flutuante (OLIVEIRA,2021).
Para contornar esse problema, é necessário aplicar a técnica de bootstrap. Nesse prin-
cípio, quando o MOSFET inferior do braço de transistores é ligado, o MOSFET superior é
desligado e o capacitor de bootstrap é carregado pela fonte através do diodo de bootstrap (HEN-
RIQUE, 2016). Quando o MOSFET inferior é desligado, a carga do capacitor de bootstrap é
usada para acionar o gate do MOSFET superior (HENRIQUE,2016).
78

Oliveira (2021) afirma que na operação com bootstrap é necessário que os MOSFETs
chaveiem de modo que o duty cicle seja sempre inferior a 100% para que o capacitor de bo-
otstrap se carregue. A Figura 5.5 apresenta a conexão aplicada em um High And Low Side
modelo IR2101 no projeto deste trabalho. A conexão do driver com a carga foi feita em formato
Half-Bridge, no qual o dreno do MOSFET superior é conectado no source do MOSFET inferior.

Figura 5.5 – Conexão em modo Half-Bridge do driver High And Low Side IR2101

Fonte: Adaptado de International Rectifier (2004)

A saída do slot de expansão, mostrado na Figura 5.1 da placa do FPGA, trabalha com
sinais do tipo bit que variam entre 0 V e 3,3 V. Esses níveis de tensão não são capazes de acionar
de forma adequada os gates dos MOFESTs, e, por isso, é necessário condicionar os sinais de
saída da placa do FPGA com o circuito de potência, contendo os oito MOSFETs.
O circuito driver desenvolvido neste trabalho é um circuito que permite esse tipo de
condicionamento entre a placa do FPGA e o circuito de potência, permitindo acionar os gates do
MOSFETs com tensão entre 0 V e 12 V.
O circuito é constituído por:
• 4 drivers do tipo High and Low Side modelo IR2101 da International Rectifier.
• 8 optoacopladores PC817.
• 8 resistores de gate de 100 Ω.
• 8 resistores de 1 kΩ.
• 8 resistores de 100 Ω.
• 4 capacitores bootstraps eletrolíticos de 47 uF/50 V.
• 6 capacitores eletrolíticos de 1 nF / 50 V.
• 4 diodos rápidos modelo UF4007.
• 1 fonte de 12 V ISO modelo KPA-040F de 40 W.
• 1 fonte de 12 V APD modelo WA-18J12FB de 18 W.
• 1 Placa protoboard.
• Cabos jumpers.
O circuito montado na protoboard é dividido em duas células, superior e inferior,
isoladas, conforme mostra a Figura 5.6. A célula superior é responsável por acionar os quatro
MOSFET da ponte H superior, e a célula inferior é responsável pela ponte H inferior. Ambas as
células são alimentadas por duas fontes isoladas de 12 V: a superior por uma fonte do fabricante
APD modelo KPA-040F de 40 W e a inferior pelo fabricante ISO modelo WA-18J12FB de 18 W,
conforme é apresentado na Figura 5.7.
79

Figura 5.6 – Montagem do circuito de acionamento na protoboard

Fonte: Autoria própria

Figura 5.7 – Fontes usadas para alimentar o circuito driver: a) Modelo WA-18J12FB b) Modelo KPA-040F

Fonte: Autoria própria

Cada fonte alimenta dois CI IR2101. Conforme se ver na Figura 5.6, os CIs localizados
na parte superior são alimentados pela fonte KPA-040F, e os CIs na parte inferior são alimentados
pela fonte WA-18J12FB.
Cada CI IR2101 é responsável por acionar dois MOSFETs de cada braço de transistores.
Esse modelo foi escolhido por ser o componente com menor custo encontrado na internet durante
as buscas por gates drivers.
De acordo com seu datasheet, o IR2101 possui duas entradas independentes, e pode ser
alimentado com até 20 V e, por isso, o sinal de saída pode acionar gates com tensão Vgs de até
20 V.
Conforme é mostrado na Figura 5.6, para implementar o circuito driver de acionamento,
foram necessário quatro CIs IR2101 para acionar os oito MOSFETs IRFP460n do circuito de
80

potência.
Como forma de isolar opticamente a placa kit FPGA do circuito de potência, foram
adicionados oito optoacopladores de modelo PC817 nas entradas de cada CI IR2101. Durante o
funcionamento, os sinais oriundos do kit FPGA são enviados para os optoacopladores que são
responsáveis por repassar esses sinais aos gates drivers e manter o isolamento óptico.
A Figura 5.8 mostra o esquema elétrico de um driver IR2101 no circuito de acionamento.
Os sinais de entrada PWM1 e PWM2, complementares, vindos do kit FPGA são responsáveis
por acionar os MOSFETs superior e inferior, respectivamente. Nota-se o isolamento óptico
feito pelos optoacopladores U1 e U2 nas entradas HIN e LIN do driver. As entradas HIN e LIN
são responsáveis por acionar o GATE1 e GATE2, respectivamente. O capacitor de bootstrap
está representado por C1. Os diodos D3 e D4 servem para descarregar de modo mais rápido as
capacitâncias parasitas dos gates dos MOSFETs.

Figura 5.8 – Esquema elétrico de entrada e saída de um driver IR2101 do circuito de acionamento

Fonte: Autoria própria

Basicamente, quando um dos sinais PWM está em nível alto, o LED aciona o transistor
interno do optoacoplador levando a entrada (HIN ou LIN) correspondente para nível baixo. Do
contrário, se o sinal PWM estiver em nível baixo, o LED não aciona o transistor do optoacoplador,
e a entrada do IR2101 se mantem em nível alto. Embora, o fato supracitado mostre que as
entradas HIN e LIN estejam defasadas em relação aos sinais PWM do FPGA, isso não interfere
no funcionamento do circuito, conforme é mostrado na Figura 5.9.
É importante citar que nessa configuração com uso do IR2101 em modo Half-Bridge
as entradas PWM1 e PWM2 devem receber sinais com mesmo nível lógico para gerar sinais
complementares nos GATE1 e GATE2, respectivamente. Por exemplo, para que os sinais nos
GATEs sejam “1” e “0”, as entradas PMW1 e PWM2 devem receber os níveis “1” e “1”, e para
que sejam “0” e “1” as entradas devem receber níveis “0” e “0”.
Portanto, no projeto de programação, considerou-se esse detalhe para manter a lógica
binária em “1” e “0” ou “0” e “1” na saída do circuito de acionamento. Caso essa regra não seja
obedecida, os MOSFETs podem ser acionados simultaneamente, levando ao curto-circuito e à
queima dos MOSFETs.
81

Figura 5.9 – Sinais PWM complementares da saída de um driver IR2101 no circuito de acionamento

Fonte: Autoria própria

A Figura 5.9 mostra a saída de dois sinais PWM (enviados pela placa FPGA) de um dos
drivers IR2101 obtidos no osciloscópio digital do laboratório de eletrônica do IFPA, em um dos
testes do circuito. Nota-se que os sinais são complementares e variam de 0 à 12 V, evidenciando
o bom funcionamento do circuito Driver.

5.3 Circuito de Potência

A implementação do circuito de potência foi baseada na topologia CHB (Inversor em


Cascata Simétrico), constituído de duas pontes H. Como justificativa de escolha, essa topologia
foi escolhida por ser simples e mais fácil de ser implementada em relação às outras topologias.
Embora haja necessidade de um maior número de fontes CC, tem como vantagem o uso de
menos componentes como capacitores e diodos de grampeamento. A montagem do circuito na
protoboard seguiu a ilustração da Figura 5.10, o qual é constituído por oito MOSFETs de alta
potência modelo IRFP460. O uso de MOSFETs é justificado pela disponibilidade que havia no
laboratório de potência.
Embora não esteja presente no esquema, foram inseridos capacitores com função de
filtrar ruídos oriundos da fonte VCC_1 e VCC_2. O esquema completo do circuito juntamente
com o circuito de acionamento encontra-se no Apêndice A.
82

Figura 5.10 – Esquema do circuito de potência contendo duas pontes H

Fonte: Autoria própria

Os sinais PWM 1, PWM 2, PWM 3, PWM 4, PWM 5, PWM 6, PWM 7 e PWM 8 são
sinais condicionados do Driver ou circuito de acionamento. Cada sinal PWM varia entre 0 V e
12 V. Os sinais de saída do inversor são obtidos nos pontos de saída A e B, conforme é ilustrado
na Figura 5.10.
A Figura 5.11 mostra a imagem do MOSFET modelo IRFP460 usado no projeto. Esse
transistor é capaz, segundo seu datasheet, de suportar corrente de dreno de até 20 A e tensão
entre dreno e fonte de até 500 V. Os oito MOSFETs são do laboratório de eletrônica de potência.

Figura 5.11 – MOSFET IRFP460

Fonte: Autoria própria

O circuito de potência montado na protoboard é mostrado na Figura 5.12. Em cada


ponte há um capacitor eletrolítico responsável por filtrar ruídos vindos das fontes CC. Nota-se
a presença de diodos os quais foram mencionados e ilustrados na Figura 5.8. Como citado
anteriormente, esses diodos, em paralelo com os resistores de gate, tem função de descarregar
mais rapidamente a capacitância parasita entre o gate e source dos MOSFETs.
83

Figura 5.12 – Circuito de potência contendo duas pontes H de MOSFETs

Fonte: Autoria própria

Alimentação das duas pontes H é fornecida pelas duas fontes mostradas na Figura 5.13,
do laboratório. Cada fonte de modelo PS-3002D é capaz de fornecer até 32 VDC. Na imagem,
a fonte de cima (VCC_1) alimenta a ponte H superior, e a fonte de baixo (VCC_2) alimenta a
ponte H inferior.
Figura 5.13 – Fontes CC modelo PS–3002D

Fonte: Autoria própria

5.4 Placa Altera DE2 e Aspectos Teóricos sobre FPGAs

Muitos sistemas digitais atuais são feitos com Dispositivos de Lógica Programável
(PLD), cuja configuração é feita pela conexão e desconexão eletrônica de pontos internos para
criação de funções lógicas (TOCCI; WIDNER; MOSS; 2019). Os PLDs são circuitos cuja funci-
onalidade pode ser implementada pelo próprio usuário, portanto não apresentam uma função
84

lógica definida e oriunda de fábrica (COUTINHO, 2019).


Os PLDs podem ser divididos em dois grandes grupos: HCPLD (High Complex Pro-
grammable Logic Devices) e SPLD (Simple Programmable Logic Devices) (CRUZ et al., 2022).
Tocci, Widner e Moss (2019) afirmam que os SPLDs costumam conter o equivalente a 600 portas
lógicas ou menos, enquanto os HCPLDs possuem centenas de milhares. Dantas (2014), por
sua vez, afirma em seu livro que os HCPLDs podem ser constituídos por até milhões de portas
lógicas.
Ainda de acordo com Tocci, Widner e Moss (2019), os HCPLDs são classificados, por
sua vez, em FPGAs (Field-Programmable Gate Array) e CLPDs (Complex Programmable Logic
Devices). A diferença básica se encontra na estrutura e funcionamento.
Os CPLDs, ao serem ligados, começam a exercer suas funções e permanecem progra-
mados após serem desligados. Os FPGAs, por sua vez, necessitam de uma memória externa ao
serem ligados, pois usam armazenamento de configuração baseado em SRAM (SINGH, 2017).
Assim o conteúdo dos FPGAs é perdido assim que fornecimento de energia é desligado.
De acordo com Singh (2017), os CPLDs são comparativamente mais simples que os
FPGAs, e o número de interconexões é menor. Outra diferença entre CPLDs e FPGAs, segundo
Singh (2017), é que nos CPLDs o desligamento e a reprogramação são sempre necessários para
modificar a funcionalidade do projeto. Portanto, ao contrário do CPLDs, os FPGAs podem ter
seus circuitos modificados mesmo durante a execução.
Os FPGAs vêm ganhando popularidade no mercado, principalmente entre fabricantes
de ASIC (Application Specific Integrated Circuit) ou Circuito integrado de Aplicação Especifica
que os utilizam para prototipação de seus projetos (XILINX, 2022).
Um ASIC é um CI fabricado para atender a um propósito específico, ou seja, desde a
concepção, ele é pensado para aquela aplicação, de forma que nenhum outro circuito disponível
no mercado atenderia àquele projeto e aplicação de forma tão perfeita (CRUZ, 2022). Cruz
(2022) afirma, todavia, que o desenvolvimento de um ASIC demanda muito tempo e envolve
alto custo, se comparado às opções de mercado.
Um FPGA permite a implementação de circuitos digitais de forma economicamente
viável e rápida, antes de se implementar o projeto final em ASIC, que comumente exige alto custo
e demanda muito tempo para serem finalizados. Por exemplo, "um ciclo normal de fabricação
de um ASIC, considerando que o protótipo em dispositivo programável já está testado, leva em
torno de um ano e meio para se produzir a primeira partilha"(ALBERTINI, 2015, p. 184).
Os FPGAs são dispositivos semicondutores compostos por um conjunto de blocos
lógicos alocados em forma de uma matriz conectados por meio de interconexões programáveis
(XILINX, 2022). De acordo com Noronha (2015), um FPGA é composto por blocos lógicos
(CLB), blocos de entrada e saída (I/O) e chaves de interconexão. A Figura 5.14 ilustra a arqui-
tetura básica de um FPGA onde é possível ver a disposição em forma de matriz dos blocos
lógicos.
85

Figura 5.14 – Arquitetura Genérica de um FPGA

Fonte: Adaptado de Zeidman (2006)

Os blocos lógicos formam um arranjo bidimensional enquanto as chaves de interco-


nexão são organizadas como canais programáveis de roteamento horizontal e vertical entre as
linhas e colunas de blocos lógicos. (ÁGUAS, 2018).
De acordo com Tocci, Widner e Moss (2019), a maioria dos FPGAs utiliza uma LUT
(look-up table) para criar as funções lógicas desejadas. Segundo Tocci, Widner e Moss (2019),
uma LUT funciona como uma tabela-verdade, no sentido de que a saída é programada para criar
a função combinacional.
Quando um circuito é implementado em um FPGA, os canais de roteamento fazem
várias interconexões necessárias entre as LUTs para formação de funções lógicas (ÁGUAS,
2018). As LUTs são voláteis, isto é, o conteúdo armazenado nas LUTs é perdido na falta de
alimentação elétrica, e, por isso, um pequeno chip de memória externa é inserido na placa que
contêm FPGAs (ÁGUAS, 2018).
Quando se compila em um FPGA, o resultado é uma implementação de silício
altamente otimizada que fornece um verdadeiro processamento paralelo com benefícios de
desempenho e confiabilidade de um hardware dedicado.

5.4.1 Vantagens e desvantagens dos FPGAs


Os FPGAs apresentam várias vantagens quando comparados a outros dispositivos de
processamentos. Entre elas, os FPGAs possuem capacidade de processamento paralelo em
relação aos microcontroladores que executam tarefas sequenciais (MONMASSON et al. 2011).
Nos processadores dos microcontroladores, podem ocorrer gargalos, pois os processos precisam
esperar que outros sejam resolvidos. Por não permitirem funções paralelas, os microcontroladores
são melhores para propósitos mais simples (FIELD..., 2023?).
Microcontroladores são mais adequados para controle de rotina de circuitos específicos,
como usar um interruptor para ligar e desligar um dispositivo. Os FPGAs são adequados para
aplicações mais complexas e que exigem maior poder de processamento (HOPKINS, 2021).
86

Além disso, devido ao hardware dedicado, é possível obter latências previsíveis nos FPGAs
(CARMINATI e SCANDURRA, 2021). Qualquer circuito digital, independentemente da com-
plexidade, pode ser projetado em um FPGA, desde que o chip contenha um número suficiente de
blocos lógicos para emular o projeto.
Com relação as desvantagens, os microcontroladores são programados usando Assem-
bly ou linguagem C/C++, que são linguagens simples e fáceis de se trabalhar. FPGAs exigem
conhecimento de linguagem HDL e de circuitos digitais, o que dificulta muito seu aprendizado.
FPGAs são caros em comparação com os microcontroladores para operações mais
simples (MONMASSON et al. 2011). Outra desvantagem é que os FPGAs não costumam usar
recursos analógicos como ADCs. (AGNOL, 2018).
Com relação a processadores DSP, FPGAs oferecem maior taxa de transferência e poder
de processamento. Como podem ser reconfigurados no hardware, FPGAs oferecem personali-
zação completa ao implementar vários aplicativos DSP (ALTERA, 2001). Uma das barreiras
que os FPGAs enfrentam no mercado de DSP é o fato de sua linguagem não ser baseada em C e
sim em HDL, exigindo conhecimento profundo de sistemas digitais (ALTERA, 2001). DSPs
exigem conhecimento de linguagem simples como a C, diferentemente dos FPGAs que exigem
conhecimento de hardware para programar. DSP, da mesma forma que os microcontroladores,
executam tarefas sequenciais e assim apresentam limitações semelhantes quando comparados
aos FPGAs que trabalham de forma paralela.
FPGA têm vida útil curta em comparação com os microcontroladores. Microcontrola-
dores podem durar décadas em um dispositivo, enquanto que um chip FPGA em um dispositivo
embarcado geralmente requer substituição a cada dois a cinco anos (GARAGE, 2023)

5.4.2 Placa Altera DE2


A placa utilizada para implementação desse projeto foi a Altera DE2 da empresa Terasic
Technologies. Esse kit FPGA fornece recursos que permitem desenvolvimento de vários projetos
inclusive projetos multimídia. É constituída por um FPGA modelo EP2C35F672C6N da família
Cyclone II fabricado pela Altera. A Figura 5.15 mostra a placa usada neste projeto.

Figura 5.15 – Placa DE2 da Terasic Technologies

Fonte: Autoria própria

Os sinais elétricos de saída da placa Altera DE2 vêm dos slots de expansão, cada
87

um contendo 40 pinos. Esses sinais são enviados para o Driver de acionamento para serem
condicionados e reenviados aos gates dos MOSFETs.
Os três botões slide switch são responsáveis por alternar o tipo de inversor. O primeiro
switch ativa o inversor de dois níveis, o segundo ativa o de três níveis, o terceiro ativa o de
cinco níveis e o quarto ativa o de sete níveis. O quinto botão tem função de resetar a frequência
da portadora e da senoide. Os quatro botões push button são responsáveis pela alteração da
frequência: o primeiro aumenta e o segundo reduz a frequência da senoide; o terceiro aumenta e
o quarto reduz a frequência da portadora.

Os principais recurso que o kit FPGA contem são:


• FPGA Altera Cyclone II 2C35 FPGA com 35.000 LEs.
• Dispositivos de configuração serial Altera (EPCS16) para Cyclone II 2C35.
• SDRAM de 8 Mbytes (1M x 4 x 16).
• 512K bytes (256K X16) SRAM.
• Memória Flash de 4Mbyte (atualizável para 4Mbyte).
• Soquete de cartão SD.
• 4 botões interruptores.
• 18 interruptores DPDT.
• 9 LEDs verdes do usuário.
• 18 LEDs de usuário vermelhos.
• Módulo LCD 16 x 2.
• Oscilador de 50 MHz e 27 MHz (do decodificador de TV) para fontes de clock.
• Decodificador de TV (NTSC/PAL) e conector de entrada de TV.
• Controlador Ethernet 10/100 com soquete.
• Conector de mouse/teclado PS/2.
• Dois slots de expansão de 40 pinos com proteção de diodo.
• Conector de saída VGA.
• CODEC de áudio com conectores de entrada e entrada de microfone.
A saída de sinais dos pinos dos slots de expansão é de 3,3 V DC em relação à referência.
Infelizmente, essa placa não contem conversor DA e AD, e assim, caso seja necessário que
um projeto necessite trabalhar com sinal analógico ou realimentação com sinal analógico é
necessário implementar conversor AD e/ou DA.
A gravação de dados é feita via comunicação USB. A placa possui um oscilador que
permite trabalhar com clock de 50 Mhz.
A Figura 5.16 mostra o layout da placa Altera DE2 com todos seus periféricos e
principais componentes nomeados.
88

Figura 5.16 – Layout da placa Altera DE2

Fonte: Terasic (2022)


89

6 RESULTADOS

Neste capítulo, serão apresentados os resultados práticos obtidos da saída dos inversores,
no osciloscópio, cujo circuito foi montado na protoboard. Serão mostrados também os espectros
harmônicos de cada inversor obtidas através da FFT do Osciloscópio.
O tipo de modulação usada neste projeto foi a modulação PD, na qual todas as portadoras
estão em fase.

6.1 Protótipo Montado no Laboratório

A seguir, será apresentado o circuito montado no laboratório de eletrônica de potência


do IFPA. Na Figura 6.1 e Figura 6.2 é mostrado o inversor de três níveis em fase de testes.

Figura 6.1 – Protótipo em funcionamento

Fonte: Autoria própria


90

Figura 6.2 – Protótipo em funcionamento

Fonte: Autoria própria

Na Figura 6.3, é mostrado a placa DE0 Altera do FPGA conectada ao circuito driver
montado na protoboard durante os testes. Na Figura 6.4, é apresentado o circuito de potência
recebendo os sinais de acionamento do circuito driver.
Figura 6.3 – Placa FPGA enviando sinais de acionamento ao driver

Fonte: Autoria própria


91

Figura 6.4 – Circuito driver acionando as pontes H

Fonte: Autoria própria

A Figura 6.5, apresenta com maior aproximação a conexão da placa do FPGA ao driver
através do cabo flat conectado à saída IDE da placa. Além do oito terminais conectados, há um
nono terminal que conecta os optoacopladores ao ground da placa.

Figura 6.5 – Conexão da placa do FPGA ao driver

Fonte: Autoria própria

6.2 Resultados Obtidos do Circuito em Funcionamento

Nesta seção, serão apresentados os testes obtidos na saída do inversor através do


osciloscópio. Serão mostrados a tensão de pico, tensão RMS e a frequência no Osciloscópio.

6.2.1 Inversor de dois níveis


Na Figura 6.6, a tensão CC aplicada na ponte H foi de 32 V. Não foi inserida carga na
saída. Na simulação com o PSIM, a tensão RMS na saída foi de 31,99 V. No teste prático, a
92

tensão RMS foi de 29,1 V. Essa diferença de quase 3 V é motivada pelo índice de modulação
para esse inversor ser 0,99.

Figura 6.6 – Saída do inversor de dois níveis

Fonte: Autoria própria

6.2.2 Inversor de três níveis


Para o resultado da Figura 6.7, a tensão CC de barramento aplicado na ponte H foi de
32 V, e também não foi inserida carga na saída. Na simulação com o PSIM, a tensão RMS de
saída foi de 24,40 V. No teste prático, a tensão RMS na saída foi de 23 V.

Figura 6.7 – Saída do inversor de três níveis

Fonte: Autoria própria

6.2.3 Inversor de cinco níveis


Na Figura 6.8, as fontes CC aplicaram tensões de 32 V. Foram usadas duas fontes CC
para alimentar as duas pontes H do inversor. A simulação feita com o PSIM apresentou tensão
93

RMS com tensão de 44,92 V. No teste prático, a tensão RMS foi de 43,1 V.
Figura 6.8 – Saída do inversor de cinco níveis

Fonte: Autoria própria

6.2.4 Inversor de sete níveis


Para o inversor de sete níveis, por ser topologia AHC, foram usadas duas fontes CC
com níveis de tesão diferentes: uma de 30 V e outra de 15 V. Conforme pode ser observado na
Figura 6.9, a tensão RMS na saída foi de 31,3 V. Na simulação realizada com o PSIM, saída
apresentou tensão RMS de 30,36 V.
Figura 6.9 – Saída do inversor de sete níveis

Fonte: Autoria própria

6.3 Espectro Harmônico Obtido por FFT no Osciloscópio

A Figura 6.10 apresenta em vermelho o espectro harmônico gerado pelo osciloscópio


para o inversor de dois níveis.
94

Figura 6.10 – Saída do inversor de dois níveis

Fonte: Autoria própria

Na Figura 6.11, é apresentado o espectro harmônico para saída do inversor de três níveis.
Nota-se uma sutil redução do conteúdo harmônico quando comparado à Figura 6.10.

Figura 6.11 – Saída do inversor de três níveis

Fonte: Autoria própria

Em Figura 6.12, é apresentado o espectro harmônico para saída do inversor de cinco


níveis. Nota-se uma considerável redução no conteúdo harmônico quando comparado com o
espectro da Figura 6.11
95

Figura 6.12 – Saída do inversor de cinco níveis

Fonte: Autoria própria

Em Figura 6.13, é apresentado o espectro harmônico para saída do inversor de sete


níveis. Este inversor se destaca pela grande redução do conteúdo harmônico em comparação
com os outros inversores.
Figura 6.13 – Saída do inversor de sete níveis

Fonte: Autoria própria

6.4 Análise no Osciloscópio do dead-time

Na Figura 6.14, é apresentado o dead-time correspondente a 1µs.


96

Figura 6.14 – dead-time

Fonte: Autoria própria


97

7 CONCLUSÃO

Ao término do trabalho foram apresentados os resultados práticos os quais atenderam


ao que foi proposto. As tensões RMS nos testes práticos ficaram próximas das obtidas nas
simulações realizadas no PSIM. Ademais, as formas de ondas apresentadas nos resultados se
mostraram próximas às das simulações feitas no PSIM. Essas formas de onda se mostraram
também parecidas às que foram apresentadas nas simulações realizadas no ModelSim. Isso
demonstrou que a programação do código em VHDL atendeu ao que foi proposto. Também
foi apresentado o espectro harmônico para cada inversor, e ficou demonstrado que o conteúdo
harmônico se reduzia com o aumento no número de níveis. Contudo, o uso de filtros poderia
influenciar nos resultados da THD final, podendo mudar totalmente o quadro de resultados.

7.1 Trabalhos Futuros

Para desenvolvimento de trabalhos futuros com uso de FPGA a seguintes sugestões são
apresentadas:
• Aplicação de técnicas de controle para o controle de de tensão ou corrente na saída do
inversor;
• Aplicação de técnicas de controle para o controle de velocidade de um motor acionado
pelo inversor;
• Desenvolvimento de filtro para redução de THD no circuito do inversor;
• Desenvolvimento de uma placa do circuito para ser utilizada como kit didático no ensino
de eletrônica de potência;
98

REFERÊNCIAS

AGNOL, CLEITON DAL. COMPARAÇÃO ENTRE MICROCONTROLADORES E


APLICAÇÃO DO FPGA NO CONTROLE DO CONVERSOR BOOST. Orientador: Dra.
Franciéli Lima de Sá. 2018. 115 f. Trabalho de Conclusão de Curso (Bacharel em Engenharia
Elétrica) - O Centro Universitário UNIFACVEST, Lages, 2018. Disponível em: <https:
//www.unifacvest.edu.br/assets/uploads/files/arquivos/6929b-dal-agnol,-c.-comparacao-entre
-microcontroldores-e-aplicacao-do-fpga-no-controle-do-conversor-boost.-tcc,-2018..pdf>.
Acesso em: 5 maio 2022.
Altera. FPGAs Provide Reconfigurable DSP Solutions. 2001. Disponível
em:<https://www.intel.com/content/dam/support/us/en/programmable/support-resources/bul
k-container/pdfs/literature/wp/wp-dsp-fpga.pdf>. Acesso em: 23 mar. 2023.
ALBERTINI, Bruno. Espaço IEEE: A vez do FPGA. O Setor Elétrico. São Paulo, São Paulo,
ano 10, ed 110, p. 184-185. ISSN 1983-0912. mar, 2015. Disponível em
<https://issuu.com/revistaosetoreletrico/docs/ed-110_marco-2015>. Acesso em: 1, mar. 2022.
AMORE , Roberto. VHDL - Descrição e Síntese de Circuitos Digitais. 2. ed. [S. l.]: LTC,
2012. 308 p. ISBN 978-8521620549.
AVELINO, Wellington de Oliveira. DESENVOLVIMENTO DE UM INVERSOR
MONOFÁSICO UTILIZANDO CONTROLADOR DIGITAL BASEADO EM FPGA.
Orientador: Carlos Gustavo Castelo Branco. 2010. 112 f. Monografia (Bacharelado em
Engenheiro Eletricista) - Universidade Federal do Ceará, Fortaleza, 2010. Disponível
em:<<http://www.dee.ufc.br/anexos/TCCs/2010.2>>. Acesso em: 2 nov. 2021.
BARBOSA, Eduardo José. CONVERSOR MULTINÍVEL BASEADO EM INDUTOR
ACOPLADO PARA APLICAÇÃO EM MICRORREDES HÍBRIDAS. Orientador: Dr.
Marcelo Cabral Cavalcanti. 2018. 94 p. Dissertação (Mestrado em Engenharia Elétrica) -
Universidade Tecnológica Federal de Pernambuco, Recife, 2018. Disponível em:
<https://www.ufpe.br/documents/39830/1359036/338_EduardoBarbosa/471dbe9f-cfa1-468
4-9e6c-48f7710a3951>. Acesso em: 4 jan. 2022.
BAÚ, Daniel Fernando. Estratégias De Modulação Pwm E Controle Aplicadas Ao
Conversor Multinível Modular. Orientador: Felipe Bovolini Grigoletto. 2018. 127 p.
Dissertação (Mestre em Engenharia Elétrica) - Universidade Federal do Pampa, Alegrete, 2018.
BIAVA, Hiuri Frechinconi; FRANCISCO, Mariana Salamoni; COELHO, Michella
Aguiar. Implementação De Um Inversor Multinível Monofásico Com Seis Chaves
Semicondutoras Controlado Por Dispositivo Fpga. Orientador: Dr. Amauri Amorin Assef.
2016. 103 p. Trabalho de Conclusão de Curso (Bacharelado em Engenharia Elétrica) -
Universidade Tecnológica Federal do Paraná, Curitiba, 2016.
BRESSAN, Marcos Vinicius. Conversor Multinível Em Ponte Completa De Conversores
Com Capacitores Flutuantes. Orientador: Alessandro Luiz Batschauer. 2019. 183 p. Tese
(Doutorado em Engenharia Elétrica) - Centro de Ciências e Tecnologias da Universidade do
Estado de Santa Catarina, Joinville, 2019.
CACAU, Ronny Glauber De Almeida. Inversor De Cinco Níveis Baseado Na Célula De
Comutação De Múltiplos Estados Tipo T. Orientador: Prof. Dr. René Pastor Torrico- Bascopé.
99

2014. 154 p. Dissertação (Mestre em Engenharia Eletrônica) - Universidade Federal do Ceará,


Fortaleza, 2014.
COELHO, Carolina Antunes; FERNANDES, Leonardo Göbel. Estudo E Implementação De
Um Inversor Multinível Monofásico Controlado Por Fpga Para Aplicações De Ensino E
Pesquisa. Orientador: Prof. Dr. Amauri Amorin Assef. 2016. 150 p. Trabalho de Conclusão de
Curso (Bacharel em Engenharia de Controle e Automação) - Universidade Tecnológica Federal
do Paraná, Curitiba, 2016.
COUTINHO, Maria Gracielly Fernandes. Proposta de implementação em Hardware de Rede
Neural Profunda baseada em Stacked Sparse Autoencode. Orientador: Dr. Marcelo Augusto
Costa Fernandes. 2019. 50 p. Dissertação (Mestre em Ciências) - Universidade Federal do Rio
Grande do Norte, Natal, 2019.
CRUZ, Eduardo; ADRIANO, Domingos; GAUDINO, Enzo; JÚNIOR, Salomão. Sistemas
Digitais Reconfiguráveis: FPGA e VHDL. 1. ed. Rio de Janeiro: Alta Books, 2022. 320 p.
ISBN 6555208716.
DANTAS, Leandro Poloni; ARROIO, Ricardo. Eletrônica Digital: técnicas digitais e
dispositivos lógicos programáveis. São Paulo: SENAI-SP Editora, 2014. 560 p. (Informações
Tecnológicas. Área Eletroeletrônica).
DUTRA, Nayara Guimarães. ESTUDO E IMPLEMENTAÇÃO EM FPGA DE UM
MICROPROCESSADOR. Orientador: Túlio Charles Carvalho. 2016. 77 p. Trabalho de
Conclusão de Curso (Bacharel em Engenharia Elétrica) - Centro Federal de Educação
Tecnológica de Minas Gerais, Belo Horizonte, 2016. Disponível em: <https:
//www2.dee.cefetmg.br/wp-content/uploads/sites/18/2017/11/TCC_2016_2_NGDutra.pdf>.
Acesso em: 14 fev. 2022.
EFEITOS e causas de harmônicas no sistema de energia elétrica. Universidade Estadual de
Campinas - Faculdade de Engenharia Elétrica e de Computação: Faculdade de
Engenharia Elétrica e de Computação. Campinas, 2007?. Disponível em:
<https://www.dsce.fee.unicamp.br/~antenor/htmlfile/harmo/fpcap4/cap4.html>. Acesso em: 19
jul. 2022.
ENCARNAÇÃO, Lucas Frizera. Compensador Síncrono Estático Multinível Em Média
Tensão Para Sistemas De Distribuição. Orientador: Maurício Aredes. 2009. 169 p. Tese
(Doutor em Engenharia Elétrica) - Universidade Federal do Rio de Janeiro, Rio de Janeiro, 2009.
FIELD PROGRAMMABLE GATE ARRAY (FPGA) VS. MICROCONTROLLER — WHAT’S
THE DIFFERENCE?. [S. l.], 2023?. Disponível
em:<<https://www.mclpcb.com/blog/fpga-vs-microcontroller/#:~:
text=The%20main%20difference%20is%20in,of%20code%20at%20a%20time>. Acesso em:
15 mar. 2023.
INFINEON. Infineon EiceDRIVER™ gate driver ICs Selection guide 2022: Every switch
needs a driver. Neubiberg, Alemanha, 2022a. Disponível em:
<https://www.infineon.com/dgdl/Infineon-EiceDRIVER_Gate_Driver_ICsProductSelectionG
uide-v02_00-EN.pdf?fileId=8ac78c8c80027ecd018094fa56806ee1&redirId=197183>. Acesso
em: 20 de set de 2022.
INFINEON. High and Low Side Drivers. Neubiberg, Alemanha, 2022b. Disponível em: <https:
//www.infineon.com/cms/en/product/power/gate-driver-ics/high-and-low-side-drivers/>.
Acesso em: 20 de set de 2022.
100

GARAGE, Engineers. FPGA vs microcontrollers: Another approach to embedded design.


[S. l.], 2023. Disponível em: <https://www.engineersgarage.com/fpga-vs-microcontrollers-ano
ther-approach-to-embedded-design/>. Acesso em: 23 mar. 2023.
GREEN, Peter B.; ZHENG, Liz. Gate drive for power MOSFETs in switching applications: A
guide to device characteristics and gate drive techniques. Infineon, 2022. Disponível em:
<https://www.infineon.com/cms/en/search.html#!term=Gate%20drive%20for%20power%20
MOSFETs%20in%20switching%20applications&view=all>. Acesso em: 08 de ago de 2022.
GUEVARA, Francisco Javier de Miranda. Controlo de um Motor Síncrono Baseado em FPGA.
Orientador: Júlio Martins. 2015. 129 p. Dissertação (Mestre em Engenharia Eletrónica Industrial
e de Computadores) - Universidade do Minho, Minho, 2015. Disponível em:
<https://repositorium.sdum.uminho.pt/bitstream/1822/51281/1/Francisco%20Javier%20de%2
0Miranda%20Guevara.pdf>. Acesso em: 23 mar. 2023.
Hopkins, J. TotalPhase.Comparing FPGA vs Microcontroller – Which is Best for Your
Needs?. 2021. Diponível
em:<<https://www.totalphase.com/blog/2021/04/comparing-fpga-vs-microcontroller/>>
Acesso em 23 de mar 2023.
INTERNATIONAL RECTIFIER. IR2101. California, 2004. Disponível em:
<https://www.infineon.com/dgdl/Infineon-IRS2101-DataSheet-v01_00-EN.pdf?fileId=5546d4
62533600a40153567624e2279d>. Acesso em: 02 de nov de 2021.
HART, Daniel W. Eletrônica de Potência. 1. ed. Porto Alegre: AMGH Editora Ltda, 2012. 480
p. ISBN 978-85-8055-045-0.
HENRIQUE, Paulo. CIRCUITO BOOTSTRAP EM UM DRIVER DE INVERSOR DE
FREQUÊNCIA. Web Artigos, [S.l], 06 de out de 2016. Disponível em: <https://www.webartig
os.com/artigos/circuito-bootstrap-em-um-driver-de-inversor-de-frequencia/146094>. Acesso
em: 22 de nov de 2021.
JENA, Satya Prakash; ROUT, Kamalesh Chandra. Comparative analysis of harmonic reduction
of VSI fed induction motor using SVPWM and sinusoidal PWM. 2nd International
Conference on Trends in Electronics and Informatics (ICOEI), Tirunelveli, v. 1, p. 1-5, 2018.
doi: 10.1109/ICOEI.2018.8553727.
JURGINA, Laura Quevedo; PICCOLI, Arthur; RAMOS, Italo Nolasco; SOARES, Rafael
Iankowisk; JUNIOR, Leomar Soares da Rosa. Uno Raid: Prototipação em FPGA de um Vídeo
Game Desenvolvido em Linguagem VHDL. Revista ComInG - Communications and
Innovations Gazette, [s. l.], v. 4, n. 1, p. 51-58, 23 set. 2019. DOI 10.5902/2448190437747.
Disponível em: <https://periodicos.ufsm.br/coming/article/view/377>. Acesso em: 24 ago. 2022.
LAI, Jin-Sheng; PENG, Fang Zheng. Multilevel Converters-A New Breed of ower Converters.
IEEE Transactions On Industry Applications. , v. 32, n. 3, p. 509-517, may/jun. 1996.
LIMA, André Luiz da Rocha. Aplicação dos Dispositivos Lógicos Programáveis (DLP) no
aprendizado de Eletrônica Digital. Saber Eletrônica, [S. l.], ano 46, n. 451, p. 23-29, 2011.
LOPES, Raquel de Souza Silva. TÉCNICAS DE MODULAÇÃO APLICADAS A
CONVERSORES CC/CA: UM ESTUDO COMPARATIVO. Orientador: Isaac Rocha
Machado. 2019. 71 p. Trabalho de Conclusão de Curso (Bacharel em Engenheiro Eletricista) -
Universidade Federal do Ceará – campus de Sobral, [S. l.], 2019.
101

Monmasson, E.; Idkhajine, M.; Cirstea, N.; Bahri, I.; Tisan and M. W. Naouar. "FPGAs in
Industrial Control Applications,"in IEEE Transactions on Industrial Informatics. vol. 7,
no. 2, pp. 224-243, May 2011, doi: 10.1109/TII.2011.2123908.
TEXAS INSTRUMENTS. Low Side and H-Bridge Gate Driver Fundamentals. Texas, 2017.
Disponível em: <https:
//training.ti.com/gate-driver-training-series-low-side-and-h-bridge-gate-driver-fundamentals>.
Acesso em: 20 de jan. de 2022.
MANSO, João Luís Torre. Desenvolvimento de um Filtro Ativo de Potência Série
Monofásico sem Fontes Externas. Orientador: Doutor José Gabriel Oliveira Pinto. 2019. 156 p.
Dissertação (Mestre em Engenharia Eletrónica Industrial e de Computadores) - Universidade de
Minho, Minho, 2019.
MANSUR, Rodolfo Labiapari. FPGA – Linguagem De Descrição De Hardware (VHDL).
Laboratório Imobilis: Computação móvel. Ouro Preto, 27 jun. 2016. Disponível em: <http:
//www2.decom.ufop.br/imobilis/fpga-flexibilidade-no-projeto-de-hardware-parte-3-de-3/>.
Acesso em: 10 jul. 2022.
MENAKA, S.; MURALIDHARAN, S. Novel symmetric and asymmetric multilevel inverter
topologies with minimum number of switches for high voltage of electric ship propulsion
system. Indian Journal of Geo Marine Sciences. Índia, v. 46, n. 9, set. 2017.
MESQUITA, Samuel Jó de. Uma Proposta De Projeto Para Inversor Multinível Em Cascata
Assimétrico Com 63 Níveis Na Tensão De Saída E Operação Em Baixa Frequência.
Orientador: Fernando Luiz Marcelo Antunes. 2011. 180 p. Dissertação (Mestre em Engenharia
Elétrica) - Universidade Federal do Ceará, Fortaleza, 2011.
NORONHA, D. B. et al. Uma visão geral sobre dispositivos lógicos reconfiguráveis (fpga) e
suas aplicações. XIII Conferência de Estudos em Engenharia Elétrica, 2015. Disponível em:
<https://www.peteletricaufu.com.br/static/ceel/doc/artigos/artigos2005/ceel2005_059.pdf>.
Acesso em: 1 mai. 2022.
NOVELIN, Isabelle Thais. Comportamento Harmônico De Inversores De Frequência.
Orientador: Joaquim Eloir Rocha. 2017. 74 p. Trabalho de Conclusão de Curso (Bacharel em
Engenharia Elétrica) - Departamento Acadêmico de Eletrotécnica (DAELT) da Universidade
Tecnológica Federal do Paraná (UTFPR), Curitiba, 2017.
OLIVEIRA, Thiago. Tipos de Gate Drivers em Eletrônica de Potência. YouTube, 29 de jun. de
2021. Disponível em: <https://youtu.be/RgFSD5BAVbY>. Acesso em 28 nov. 2021.
PARIS, Jean Michel de. Modulação Phase disposition com Algoritmo de Sorting para
Conversores Multiníveis Simétricos em Cascata. Orientador: Dra. Fernanda de Morais
Carnielutti. 2018. 166 p. Dissertação (Mestrado em Engenharia Elétrica) - Universidade Federal
de Santa Maria, Santa Maria, 2018.
RASHID, Muhhamad H. Eletrônica de Potência: Dispositivos, circuitos e aplicações. 4. ed. São
Paulo: Pearson Education do Brasil, 2014. 880 p. ISBN 978-85-430-1452-4. E-book (880 p.).
SINGH, Rohit. CPLD vs FPGA: Differences between them and which one to use?. [S. l.], 2017.
Disponível em: <https://numato.com/kb/cpld-vs-fpga-differences-one-use/>. Acesso em: 28 fev.
2022.
102

SOUZA, Ramon Henriques. Implementação De Técnicas De Modulação Para Um Inversor


Trifásico De Cinco Níveis Com Foco Em Acionamentos Elétricos. Orientador: Prof. Dr.
Marcelo Martins Stopa. 2019. 91 p. Dissertação (Mestre em Engenharia Elétrica) - Centro
Federal de Educação Tecnológica de Minas Gerais, Belo Horizonte, 2019.
SOUZA, WEIBER AURÉLIO XAVIER. Implementação de um modulador PWM para
inversor multinível ponte H em cascata de 7 níveis em FPGA. Orientador: Prof. Dr. Leonardo
Mesquita. 2022. 66 p. Trabalho de Conclusão de Curso (Graduação em Engenharia Elétrica) -
Faculdade de Engenharia do Campus de Guaratinguetá, Universidade Estadual Paulista,
Guaratinguetá, 2022.
TERASIC. Altera DE2 Board. Hsinchu, Taiwan, 2022. Disponível em:
<https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=183
&No=30&PartNo=3#heading>. Acesso em 28 de ago de 2021.
TOCCI, Ronald; WIDNER, Neal; MOSS, Gregory. Sistemas Digitais: Princípios e Aplicações.
12. ed. [S. l.]: Pearson Universidades, 2019. 1056 p. ISBN 978-8543025018.
VEIGA, Hallan. PROGRAMAÇÃO VHDL DE DISPOSITIVO FPGA PARA APLICAÇÃO
EM MODULAÇÃO PWM SENOIDAL DE CONVERSORES MULTINÍVEIS. Orientador:
Joselito Anastácio Heerdt. 2013. 87 p. Trabalho de Conclusão de Curso (Bacharel em
Engenharia Elétrica) - Universidade do Estado de Santa Catarina, Joinville, 2013.
WALTRICH, Gierri. Estudo E Implementação De Um Inversor Multinível Trifásico Em
Cascata Empregando Sub-Células De Comutação. Orientador: Ivo Barbi. 2009. 158 p.
Dissertação (Mestre em Engenharia Elétrica) - Universidade Federal de Santa Catarina,
Florianópolis, 2009.
XILINX. What is an FPGA?, 2022. Disponível em:
<https://www.xilinx.com/products/silicon-devices/fpga/what-is-an-fpga.html#:~:
text=Field%20Programmable%20Gate%20Arrays%20(FPGAs,or%20functionality%20requi
rements%20after%20manufacturing.> Acesso em: 26 jan. 2022.
YAMAMOTO, Guilherme Kenji; AZEVEDO, Renan Airosa Machado de. Controle baseado em
FPGA: Milhões de transistores ao seu comando. Saber Eletrônica: Industrial, [S. l.], ano 49, n.
470, p. 42-45, mai, 2013.
ZEIDMAN, Bob. All about FPGAs. EETIMES, 2006. Disponível em:
<https://www.eetimes.com/all-about-fpgas/>. Acesso em: 1, jun. 2022.
ZOLET, Ricardo. Controle Digital De Inversor Multinível Npcm Implementado Totalmente
Em Fpga. Orientador: Prof. Dr. Joselito Anastácio Heerdt. 2014. 208 p. Trabalho de Conclusão
de Curso (Bacharelado em Engenharia Elétrica) - Universidade do Estado de Santa Catarina,
Joinville, 2014.
Apêndices
104

VCC_1
VDD_1 VDD_1
D3 D5
APÊNDICE A – Esquema do Circuito Completo

D1 D2
UF4007
R17 Q1 Q3 UF4007
R5
UF4007 UF4007
1k R1 IRFP460 IRFP460 R3 1k
C1 C4 C2 100 100 C5 C6 C3
47uF 22n 22n 22n 22n 47uF
1 U1 1 U2
R21 U9 U3 R7
1 A C 4 2 8 8 2 4 C A 1
pwm1 HIN V+ VB VB V+ HIN pwm3
100R 7 7 100R
HO HO
6 6
VS A VS
2 3 3 5 5 3 3 2
LIN COM LO LO COM LIN
K E E K
PC817
4
IR2101 D4 D6 4
PC817
IR2101
GND_FPGA R18 UF4007 UF4007 R6 GND_FPGA
1k
Q2 Q4 1k
R2 IRFP460 IRFP460 R4
R22 U5 100 100 U4 R8
1 A C 4 4 C A 1
pwm2 pwm4
100R 100R
2 3 3 2
K E E K
PC817 PC817
GND_1 GND_1 GND_1
GND_FPGA VCC_2 GND_FPGA
VDD_2 VDD_2
D8 D11
D7 D10
UF4007 UF4007
R11 Q5 Q7 R19
UF4007 UF4007
1k R9 IRFP460 IRFP460 R15 1k
C7 C9 C8 100 100 C11 C12 C10
47uF 22n 22n 22n 22n 47uF
1 U6 1 U10
R13 U7 U11 R23
1 A C 4 2 8 8 2 4 C A 1
pwm5 HIN V+ VB VB V+ HIN pwm7
100R 7 7 100R
HO HO
6 6
VS B VS
2 3 3 5 5 3 3 2
LIN COM LO LO COM LIN
K E E K
PC817
4
IR2101 D9 D12 4
PC817
IR2101
GND_FPGA R12 UF4007 UF4007 R20 GND_FPGA
1k
Q6 Q8 1k
R10 IRFP460 IRFP460 R16
R14 U8 100 100 U12 R24
1 A C 4 4 C A 1
pwm6 pwm8
100R 100R
2 3 3 2
K E E K
PC817 GND_2 PC817
GND_2 GND_2
GND_FPGA GND_FPGA
105

APÊNDICE B – Código VHDL do Inversor

library ieee; -- uso da biblioteca ieee


use ieee.std_logic_1164.all; -- uso da biblioteca std_logic_1164
use ieee.numeric_std.all; -- uso da biblioteca numeric_std
entity inversor_multinivel is -- Nome da entidade inversor_multinivel
port (clk : in std_logic; -- entrada do clock
rst : in std_logic; -- chave5 de reset das frequencias
switch1 : in std_logic; -- chave1 do inversor de 2 níveis
switch2 : in std_logic; -- chave2 do inversor de 3 níveis
switch3 : in std_logic; -- chave3 do inversor de 5 níveis
switch4 : in std_logic; -- chave4 do inversor de 7 níveis
button1 : in std_logic; -- botão1 de aumento da frequencia da modulante
button2 : in std_logic; -- botão2 de redução da frequencia da modulante
button3 : in std_logic; -- botão3 de aumento da frequencia da portadora
button4 : in std_logic; -- botão4 de redução da frequencia da portadora
pwm1 : out std_logic; -- Saída do sinal pwm1 do gate1
pwm2 : out std_logic; -- Saída do sinal pwm1 do gate2
pwm3 : out std_logic; -- Saída do sinal pwm1 do gate3
pwm4 : out std_logic; -- Saída do sinal pwm1 do gate4
pwm5 : out std_logic; -- Saída do sinal pwm1 do gate5
pwm6 : out std_logic; -- Saída do sinal pwm1 do gate6
pwm7 : out std_logic; -- Saída do sinal pwm1 do gate7
pwm8 : out std_logic); -- Saída do sinal pwm1 do gate8
end entity inversor_multinivel; -- Fim da entidade inversor_multinivel
architecture estrutura of inversor_multinivel is -- Nome da arquitetura da entidade
type triangular1 is array (integer range <>) of integer;-- Portadora triangular do inversor de dois niveis com 1000 valores variando de 0 a 1000
constant variable_portadora1: triangular1 (1 to
1000):=(0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,
54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,
108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,
150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,
192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,
234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274,
276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306,308,310,312,314,316,
318,320,322,324,326,328,330,332,334,336,338,340,342,344,346,348,350,352,354,356,358,
360,362,364,366,368,370,372,374,376,378,380,382,384,386,388,390,392,394,396,398,400,
402,404,406,408,410,412,414,416,418,420,422,424,426,428,430,432,434,436,438,440,442,
444,446,448,450,452,454,456,458,460,462,464,466,468,470,472,474,476,478,480,482,484,
486,488,490,492,494,496,498,500,502,504,506,508,510,512,514,516,518,520,522,524,526,
528,530,532,534,536,538,540,542,544,546,548,550,552,554,556,558,560,562,564,566,568,
570,572,574,576,578,580,582,584,586,588,590,592,594,596,598,600,602,604,606,608,610,
612,614,616,618,620,622,624,626,628,630,632,634,636,638,640,642,644,646,648,650,652,
654,656,658,660,662,664,666,668,670,672,674,676,678,680,682,684,686,688,690,692,694,
696,698,700,702,704,706,708,710,712,714,716,718,720,722,724,726,728,730,732,734,736,
738,740,742,744,746,748,750,752,754,756,758,760,762,764,766,768,770,772,774,776,778,
780,782,784,786,788,790,792,794,796,798,800,802,804,806,808,810,812,814,816,818,820,
822,824,826,828,830,832,834,836,838,840,842,844,846,848,850,852,854,856,858,860,862,
864,866,868,870,872,874,876,878,880,882,884,886,888,890,892,894,896,898,900,902,904,
906,908,910,912,914,916,918,920,922,924,926,928,930,932,934,936,938,940,942,944,946,
948,950,952,954,956,958,960,962,964,966,968,970,972,974,976,978,980,982,984,986,988,
990,992,994,996,998,1000,998,996,994,992,990,988,986,984,982,980,978,976,974,972,970,
968,966,964,962,960,958,956,954,952,950,948,946,944,942,940,938,936,934,932,930,928,
926,924,922,920,918,916,914,912,910,908,906,904,902,900,898,896,894,892,890,888,886,
884,882,880,878,876,874,872,870,868,866,864,862,860,858,856,854,852,850,848,846,844,
842,840,838,836,834,832,830,828,826,824,822,820,818,816,814,812,810,808,806,804,802,
800,798,796,794,792,790,788,786,784,782,780,778,776,774,772,770,768,766,764,762,760,
758,756,754,752,750,748,746,744,742,740,738,736,734,732,730,728,726,724,722,720,718,
716,714,712,710,708,706,704,702,700,698,696,694,692,690,688,686,684,682,680,678,676,
674,672,670,668,666,664,662,660,658,656,654,652,650,648,646,644,642,640,638,636,634,
632,630,628,626,624,622,620,618,616,614,612,610,608,606,604,602,600,598,596,594,592,
590,588,586,584,582,580,578,576,574,572,570,568,566,564,562,560,558,556,554,552,550,
548,546,544,542,540,538,536,534,532,530,528,526,524,522,520,518,516,514,512,510,508,
506,504,502,500,498,496,494,492,490,488,486,484,482,480,478,476,474,472,470,468,466,
464,462,460,458,456,454,452,450,448,446,444,442,440,438,436,434,432,430,428,426,424,
422,420,418,416,414,412,410,408,406,404,402,400,398,396,394,392,390,388,386,384,382,
380,378,376,374,372,370,368,366,364,362,360,358,356,354,352,350,348,346,344,342,340,
338,336,334,332,330,328,326,324,322,320,318,316,314,312,310,308,306,304,302,300,298,
296,294,292,290,288,286,284,282,280,278,276,274,272,270,268,266,264,262,260,258,256,
254,252,250,248,246,244,242,240,238,236,234,232,230,228,226,224,222,220,218,216,214,
212,210,208,206,204,202,200,198,196,194,192,190,188,186,184,182,180,178,176,174,172,
170,168,166,164,162,160,158,156,154,152,150,148,146,144,142,140,138,136,134,132,130,
128,126,124,122,120,118,116,114,112,110,108,106,104,102,100,98,96,94,92,90,88,86,84,
82,80,78,76,74,72,70,68,66,64,62,60,58,56,54,52,50,48,46,44,42,40,38,36,34,32,30,28,
26,24,22,20,18,16,14,12,10,8,6,4,2);
type triangular2 is array (integer range <>) of integer; -- Portadora triangular do inversor de 3 e 5 níveis com 1000 amostras variando de 0 a 500
constant variable_portadora2:triangular2 (1 to 1000):=(0,1,2,3,4,5,6,7,8,9,10,11,12,
13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,
41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,
69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,
97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,
119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,
140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,
161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,
182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,
203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,
245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,
266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,
287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,
308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,
329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,
350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,
371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,
392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,
413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,
434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,
455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,
476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,
497,498,499,500,499,498,497,496,495,494,493,492,491,490,489,488,487,486,485,484,483,
482,481,480,479,478,477,476,475,474,473,472,471,470,469,468,467,466,465,464,463,462,
461,460,459,458,457,456,455,454,453,452,451,450,449,448,447,446,445,444,443,442,441,
440,439,438,437,436,435,434,433,432,431,430,429,428,427,426,425,424,423,422,421,420,
419,418,417,416,415,414,413,412,411,410,409,408,407,406,405,404,403,402,401,400,399,
398,397,396,395,394,393,392,391,390,389,388,387,386,385,384,383,382,381,380,379,378,
377,376,375,374,373,372,371,370,369,368,367,366,365,364,363,362,361,360,359,358,357,
356,355,354,353,352,351,350,349,348,347,346,345,344,343,342,341,340,339,338,337,336,
335,334,333,332,331,330,329,328,327,326,325,324,323,322,321,320,319,318,317,316,315,
314,313,312,311,310,309,308,307,306,305,304,303,302,301,300,299,298,297,296,295,294,
293,292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,277,276,275,274,273,
272,271,270,269,268,267,266,265,264,263,262,261,260,259,258,257,256,255,254,253,252,
251,250,249,248,247,246,245,244,243,242,241,240,239,238,237,236,235,234,233,232,231,
230,229,228,227,226,225,224,223,222,221,220,219,218,217,216,215,214,213,212,211,210,
209,208,207,206,205,204,203,202,201,200,199,198,197,196,195,194,193,192,191,190,189,
188,187,186,185,184,183,182,181,180,179,178,177,176,175,174,173,172,171,170,169,168,
167,166,165,164,163,162,161,160,159,158,157,156,155,154,153,152,151,150,149,148,147,
146,145,144,143,142,141,140,139,138,137,136,135,134,133,132,131,130,129,128,127,126,
125,124,123,122,121,120,119,118,117,116,115,114,113,112,111,110,109,108,107,106,105,
104,103,102,101,100,99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,79,
106

78,77,76,75,74,73,72,71,70,69,68,67,66,65,64,63,62,61,60,59,58,57,56,55,54,53,52,51,
50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,
22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1);
type triangular3 is array (integer range <>) of integer; -- Portadora triangular doinversorde 7 níveis com 1500 amostras variando de 0 a 500
constant variable_portadora3:triangular3 (1 to
1500):=(0,1,1,2,3,3,4,5,5,6,7,7,8,9,9,10,11,11,12,13,13,14,15,15,16,17,17,18,19,19,
20,21,21,22,23,23,24,25,25,26,27,27,28,29,29,30,31,31,32,33,33,34,35,35,36,37,37,38,
39,39,40,41,41,42,43,43,44,45,45,46,47,47,48,49,49,50,51,51,52,53,53,54,55,55,56,57,
57,58,59,59,60,61,61,62,63,63,64,65,65,66,67,67,68,69,69,70,71,71,72,73,73,74,75,75,
76,77,77,78,79,79,80,81,81,82,83,83,84,85,85,86,87,87,88,89,89,90,91,91,92,93,93,94,
95,95,96,97,97,98,99,99,100,101,101,102,103,103,104,105,105,106,107,107,108,109,109,
110,111,111,112,113,113,114,115,115,116,117,117,118,119,119,120,121,121,122,123,123,
124,125,125,126,127,127,128,129,129,130,131,131,132,133,133,134,135,135,136,137,137,
138,139,139,140,141,141,142,143,143,144,145,145,146,147,147,148,149,149,150,151,151,
152,153,153,154,155,155,156,157,157,158,159,159,160,161,161,162,163,163,164,165,165,
166,167,167,168,169,169,170,171,171,172,173,173,174,175,175,176,177,177,178,179,179,
180,181,181,182,183,183,184,185,185,186,187,187,188,189,189,190,191,191,192,193,193,
194,195,195,196,197,197,198,199,199,200,201,201,202,203,203,204,205,205,206,207,207,
208,209,209,210,211,211,212,213,213,214,215,215,216,217,217,218,219,219,220,221,221,
222,223,223,224,225,225,226,227,227,228,229,229,230,231,231,232,233,233,234,235,235,
236,237,237,238,239,239,240,241,241,242,243,243,244,245,245,246,247,247,248,249,249,
250,251,251,252,253,253,254,255,255,256,257,257,258,259,259,260,261,261,262,263,263,
264,265,265,266,267,267,268,269,269,270,271,271,272,273,273,274,275,275,276,277,277,
278,279,279,280,281,281,282,283,283,284,285,285,286,287,287,288,289,289,290,291,291,
292,293,293,294,295,295,296,297,297,298,299,299,300,301,301,302,303,303,304,305,305,
306,307,307,308,309,309,310,311,311,312,313,313,314,315,315,316,317,317,318,319,319,
320,321,321,322,323,323,324,325,325,326,327,327,328,329,329,330,331,331,332,333,333,
334,335,335,336,337,337,338,339,339,340,341,341,342,343,343,344,345,345,346,347,347,
348,349,349,350,351,351,352,353,353,354,355,355,356,357,357,358,359,359,360,361,361,
362,363,363,364,365,365,366,367,367,368,369,369,370,371,371,372,373,373,374,375,375,
376,377,377,378,379,379,380,381,381,382,383,383,384,385,385,386,387,387,388,389,389,
390,391,391,392,393,393,394,395,395,396,397,397,398,399,399,400,401,401,402,403,403,
404,405,405,406,407,407,408,409,409,410,411,411,412,413,413,414,415,415,416,417,417,
418,419,419,420,421,421,422,423,423,424,425,425,426,427,427,428,429,429,430,431,431,
432,433,433,434,435,435,436,437,437,438,439,439,440,441,441,442,443,443,444,445,445,
446,447,447,448,449,449,450,451,451,452,453,453,454,455,455,456,457,457,458,459,459,
460,461,461,462,463,463,464,465,465,466,467,467,468,469,469,470,471,471,472,473,473,
474,475,475,476,477,477,478,479,479,480,481,481,482,483,483,484,485,485,486,487,487,
488,489,489,490,491,491,492,493,493,494,495,495,496,497,497,498,499,499,500,499,499,
498,497,497,496,495,495,494,493,493,492,491,491,490,489,489,488,487,487,486,485,485,
484,483,483,482,481,481,480,479,479,478,477,477,476,475,475,474,473,473,472,471,471,
470,469,469,468,467,467,466,465,465,464,463,463,462,461,461,460,459,459,458,457,457,
456,455,455,454,453,453,452,451,451,450,449,449,448,447,447,446,445,445,444,443,443,
442,441,441,440,439,439,438,437,437,436,435,435,434,433,433,432,431,431,430,429,429,
428,427,427,426,425,425,424,423,423,422,421,421,420,419,419,418,417,417,416,415,415,
414,413,413,412,411,411,410,409,409,408,407,407,406,405,405,404,403,403,402,401,401,
400,399,399,398,397,397,396,395,395,394,393,393,392,391,391,390,389,389,388,387,387,
386,385,385,384,383,383,382,381,381,380,379,379,378,377,377,376,375,375,374,373,373,
372,371,371,370,369,369,368,367,367,366,365,365,364,363,363,362,361,361,360,359,359,
358,357,357,356,355,355,354,353,353,352,351,351,350,349,349,348,347,347,346,345,345,
344,343,343,342,341,341,340,339,339,338,337,337,336,335,335,334,333,333,332,331,331,
330,329,329,328,327,327,326,325,325,324,323,323,322,321,321,320,319,319,318,317,317,
316,315,315,314,313,313,312,311,311,310,309,309,308,307,307,306,305,305,304,303,303,
302,301,301,300,299,299,298,297,297,296,295,295,294,293,293,292,291,291,290,289,289,
288,287,287,286,285,285,284,283,283,282,281,281,280,279,279,278,277,277,276,275,275,
274,273,273,272,271,271,270,269,269,268,267,267,266,265,265,264,263,263,262,261,261,
260,259,259,258,257,257,256,255,255,254,253,253,252,251,251,250,249,249,248,247,247,
246,245,245,244,243,243,242,241,241,240,239,239,238,237,237,236,235,235,234,233,233,
232,231,231,230,229,229,228,227,227,226,225,225,224,223,223,222,221,221,220,219,219,
218,217,217,216,215,215,214,213,213,212,211,211,210,209,209,208,207,207,206,205,205,
204,203,203,202,201,201,200,199,199,198,197,197,196,195,195,194,193,193,192,191,191,
190,189,189,188,187,187,186,185,185,184,183,183,182,181,181,180,179,179,178,177,177,
176,175,175,174,173,173,172,171,171,170,169,169,168,167,167,166,165,165,164,163,163,
162,161,161,160,159,159,158,157,157,156,155,155,154,153,153,152,151,151,150,149,149,
148,147,147,146,145,145,144,143,143,142,141,141,140,139,139,138,137,137,136,135,135,
134,133,133,132,131,131,130,129,129,128,127,127,126,125,125,124,123,123,122,121,121,
120,119,119,118,117,117,116,115,115,114,113,113,112,111,111,110,109,109,108,107,107,
106,105,105,104,103,103,102,101,101,100,99,99,98,97,97,96,95,95,94,93,93,92,91,91,90,
89,89,88,87,87,86,85,85,84,83,83,82,81,81,80,79,79,78,77,77,76,75,75,74,73,73,72,71,
71,70,69,69,68,67,67,66,65,65,64,63,63,62,61,61,60,59,59,58,57,57,56,55,55,54,53,53,
52,51,51,50,49,49,48,47,47,46,45,45,44,43,43,42,41,41,40,39,39,38,37,37,36,35,35,34,
33,33,32,31,31,30,29,29,28,27,27,26,25,25,24,23,23,22,21,21,20,19,19,18,17,17,16,15,
15,14,13,13,12,11,11,10,9,9,8,7,7,6,5,5,4,3,3,2,1,1);
type senoide1 is array (integer range <>) of integer;-- senoide do inversor de dois niveis com 1000 valores variando de 0 a 1000
constant variable_senoide1 : senoide1 (1 to 1000):=(500,503,506,509,513,516,519,522,
525,528,531,535,538,541,544,547,550,553,556,560,563,566,569,572,575,578,581,584,588,
591,594,597,600,603,606,609,612,615,618,621,624,627,630,633,636,639,643,646,649,652,
655,657,660,663,666,669,672,675,678,681,684,687,690,693,696,699,701,704,707,710,713,
716,719,721,724,727,730,733,735,738,741,744,746,749,752,755,757,760,763,765,768,771,
773,776,778,781,784,786,789,791,794,796,799,801,804,806,809,811,814,816,819,821,824,
826,828,831,833,835,838,840,842,845,847,849,851,854,856,858,860,862,864,867,869,871,
873,875,877,879,881,883,885,887,889,891,893,895,897,899,901,903,905,906,908,910,912,
914,915,917,919,920,922,924,925,927,929,930,932,934,935,937,938,940,941,943,944,946,
947,948,950,951,952,954,955,956,958,959,960,961,963,964,965,966,967,968,969,970,971,
973,974,975,976,976,977,978,979,980,981,982,983,984,984,985,986,987,987,988,989,989,
990,991,991,992,992,993,993,994,994,995,995,996,996,996,997,997,997,998,998,998,999,
999,999,999,999,1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,
1000,999,999,999,999,999,998,998,998,997,997,997,996,996,996,995,995,994,994,993,993,
992,992,991,991,990,989,989,988,987,987,986,985,984,984,983,982,981,980,979,978,977,976,
976,975,974,973,971,970,969,968,967,966,965,964,963,961,960,959,958,956,955,954,952,
951,950,948,947,946,944,943,941,940,938,937,935,934,932,930,929,927,925,924,922,920,
919,917,915,914,912,910,908,906,905,903,901,899,897,895,893,891,889,887,885,883,881,
879,877,875,873,871,869,867,864,862,860,858,856,854,851,849,847,845,842,840,838,835,
833,831,828,826,824,821,819,816,814,811,809,806,804,801,799,796,794,791,789,786,784,
781,778,776,773,771,768,765,763,760,757,755,752,749,746,744,741,738,735,733,730,727,
724,721,719,716,713,710,707,704,701,699,696,693,690,687,684,681,678,675,672,669,666,
663,660,657,655,652,649,646,643,639,636,633,630,627,624,621,618,615,612,609,606,603,
600,597,594,591,588,584,581,578,575,572,569,566,563,560,556,553,550,547,544,541,538,
535,531,528,525,522,519,516,513,509,506,503,500,497,494,491,487,484,481,478,475,472,
469,465,462,459,456,453,450,447,444,440,437,434,431,428,425,422,419,416,412,409,406,
403,400,397,394,391,388,385,382,379,376,373,370,367,364,361,357,354,351,348,345,343,
340,337,334,331,328,325,322,319,316,313,310,307,304,301,299,296,293,290,287,284,281,
279,276,273,270,267,265,262,259,256,254,251,248,245,243,240,237,235,232,229,227,224,
222,219,216,214,211,209,206,204,201,199,196,194,191,189,186,184,181,179,176,174,172,
169,167,165,162,160,158,155,153,151,149,146,144,142,140,138,136,133,131,129,127,125,
123,121,119,117,115,113,111,109,107,105,103,101,99,97,95,94,92,90,88,86,85,83,81,80,
78,76,75,73,71,70,68,66,65,63,62,60,59,57,56,54,53,52,50,49,48,46,45,44,42,41,40,39,
37,36,35,34,33,32,31,30,29,27,26,25,24,24,23,22,21,20,19,18,17,16,16,15,14,13,13,12,
11,11,10,9,9,8,8,7,7,6,6,5,5,4,4,4,3,3,3,2,2,2,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,1,1,1,1,1,2,2,2,3,3,3,4,4,4,5,5,6,6,7,7,8,8,9,9,10,11,11,12,13,13,14,15,16,16,17,
18,19,20,21,22,23,24,24,25,26,27,29,30,31,32,33,34,35,36,37,39,40,41,42,44,45,46,48,
49,50,52,53,54,56,57,59,60,62,63,65,66,68,70,71,73,75,76,78,80,81,83,85,86,88,90,92,
94,95,97,99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,129,131,133,136,
138,140,142,144,146,149,151,153,155,158,160,162,165,167,169,172,174,176,179,181,184,
186,189,191,194,196,199,201,204,206,209,211,214,216,219,222,224,227,229,232,235,237,
240,243,245,248,251,254,256,259,262,265,267,270,273,276,279,281,284,287,290,293,296,
299,301,304,307,310,313,316,319,322,325,328,331,334,337,340,343,345,348,351,354,357,
361,364,367,370,373,376,379,382,385,388,391,394,397,400,403,406,409,412,416,419,422,
425,428,431,434,437,440,444,447,450,453,456,459,462,465,469,472,475,478,481,484,487,
491,494,497);
type senoide2 is array (integer range <>) of integer;-- Senoide do inversor de 3 níveis com 1000 valores variando de -500 a 500
constant variable_senoide2 : senoide2(1 to 1000):=(0,3,6,9,13,16,19,22,25,28,31,35,38,41,44,47,50,53,56,60,63,66,69,72,75,78,
81,84,88,91,94,97,100,103,106,109,112,115,118,121,124,127,130,133,136,139,143,146,149,152,155,157,160,163,166,169,172,175,178,
107

181,184,187,190,193,196,199,201,204,207,210,213,216,219,221,224,227,230,233,235,238,241,244,246,249,252,255,257,260,263,265,
268,271,273,276,278,281,284,286,289,291,294,296,299,301,304,306,309,311,314,316,319,321,324,326,328,331,333,335,338,340,342,
345,347,349,351,354,356,358,360,362,364,367,369,371,373,375,377,379,381,383,385,387,389,391,393,395,397,399,401,403,405,406,
408,410,412,414,415,417,419,420,422,424,425,427,429,430,432,434,435,437,438,440,441,443,444,446,447,448,450,451,452,454,455,
456,458,459,460,461,463,464,465,466,467,468,469,470,471,473,474,475,476,476,477,478,479,480,481,482,483,484,484,485,486,487,
487,488,489,489,490,491,491,492,492,493,493,494,494,495,495,496,496,496,497,497,497,498,498,498,499,499,499,499,499,500,500,
500,500,500,500,500,500,500,500,500,500,500,500,500,499,499,499,499,499,498,498,498,497,497,497,496,496,496,495,495,494,494,
493,493,492,492,491,491,490,489,489,488,487,487,486,485,484,484,483,482,481,480,479,478,477,476,476,475,474,473,471,470,469,
468,467,466,465,464,463,461,460,459,458,456,455,454,452,451,450,448,447,446,444,443,441,440,438,437,435,434,432,430,429,427,
425,424,422,420,419,417,415,414,412,410,408,406,405,403,401,399,397,395,393,391,389,387,385,383,381,379,377,375,373,371,369,
367,364,362,360,358,356,354,351,349,347,345,342,340,338,335,333,331,328,326,324,321,319,316,314,311,309,306,304,301,299,296,
294,291,289,286,284,281,278,276,273,271,268,265,263,260,257,255,252,249,246,244,241,238,235,233,230,227,224,221,219,216,213,
210,207,204,201,199,196,193,190,187,184,181,178,175,172,169,166,163,160,157,155,152,149,146,143,139,136,133,130,127,124,121,
118,115,112,109,106,103,100,97,94,91,88,84,81,78,75,72,69,66,63,60,56,53,50,47,44,41,38,35,31,28,25,22,19,16,13,9,6,3,0,-3,
-6,-9,-13,-16,-19,-22,-25,-28,-31,-35,-38,-41,-44,-47,-50,-53,-56,-60,-63,-66,-69,-72,-75,-78,-81,-84,-88,-91,-94,-97,-100,
-103,-106,-109,-112,-115,-118,-121,-124,-127,-130,-133,-136,-139,-143,-146,-149,-152,-155,-157,-160,-163,-166,-169,-172,-175,
-178,-181,-184,-187,-190,-193,-196,-199,-201,-204,-207,-210,-213,-216,-219,-221,-224,-227,-230,-233,-235,-238,-241,-244,-246,
-249,-252,-255,-257,-260,-263,-265,-268,-271,-273,-276,-278,-281,-284,-286,-289,-291,-294,-296,-299,-301,-304,-306,-309,-311,
-314,-316,-319,-321,-324,-326,-328,-331,-333,-335,-338,-340,-342,-345,-347,-349,-351,-354,-356,-358,-360,-362,-364,-367,-369,
-371,-373,-375,-377,-379,-381,-383,-385,-387,-389,-391,-393,-395,-397,-399,-401,-403,-405,-406,-408,-410,-412,-414,-415,-417,
-419,-420,-422,-424,-425,-427,-429,-430,-432,-434,-435,-437,-438,-440,-441,-443,-444,-446,-447,-448,-450,-451,-452,-454,-455,
-456,-458,-459,-460,-461,-463,-464,-465,-466,-467,-468,-469,-470,-471,-473,-474,-475,-476,-476,-477,-478,-479,-480,-481,-482,
-483,-484,-484,-485,-486,-487,-487,-488,-489,-489,-490,-491,-491,-492,-492,-493,-493,-494,-494,-495,-495,-496,-496,-496,-497,
-497,-497,-498,-498,-498,-499,-499,-499,-499,-499,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,
-499,-499,-499,-499,-499,-498,-498,-498,-497,-497,-497,-496,-496,-496,-495,-495,-494,-494,-493,-493,-492,-492,-491,-491,-490,
-489,-489,-488,-487,-487,-486,-485,-484,-484,-483,-482,-481,-480,-479,-478,-477,-476,-476,-475,-474,-473,-471,-470,-469,-468,
-467,-466,-465,-464,-463,-461,-460,-459,-458,-456,-455,-454,-452,-451,-450,-448,-447,-446,-444,-443,-441,-440,-438,-437,-435,
-434,-432,-430,-429,-427,-425,-424,-422,-420,-419,-417,-415,-414,-412,-410,-408,-406,-405,-403,-401,-399,-397,-395,-393,-391,
-389,-387,-385,-383,-381,-379,-377,-375,-373,-371,-369,-367,-364,-362,-360,-358,-356,-354,-351,-349,-347,-345,-342,-340,-338,
-335,-333,-331,-328,-326,-324,-321,-319,-316,-314,-311,-309,-306,-304,-301,-299,-296,-294,-291,-289,-286,-284,-281,-278,-276,
-273,-271,-268,-265,-263,-260,-257,-255,-252,-249,-246,-244,-241,-238,-235,-233,-230,-227,-224,-221,-219,-216,-213,-210,-207,
-204,-201,-199,-196,-193,-190,-187,-184,-181,-178,-175,-172,-169,-166,-163,-160,-157,-155,-152,-149,-146,-143,-139,-136,-133,
-130,-127,-124,-121,-118,-115,-112,-109,-106,-103,-100,-97,-94,-91,-88,-84,-81,-78,-75,-72,-69,-66,-63,-60,-56,-53,-50,-47,
-44,-41,-38,-35,-31,-28,-25,-22,-19,-16,-13,-9,-6,-3);
type senoide3 is array (integer range <>) of integer; -- Senoide do inversor de 5 níveis com 1000 valores variando de -1000 a 1000
constant variable_senoide3 : senoide3 (1 to 1000):=(0,6,13,19,25,31,38,44,50,57,63,69,75,82,88,94,100,107,113,119,125,132,
138,144,150,156,163,169,175,181,187,194,200,206,212,218,224,230,236,243,249,255,261,267,273,279,285,291,297,303,309,315,321,
327,333,339,345,351,356,362,368,374,380,386,391,397,403,409,414,420,426,431,437,443,448,454,460,465,471,476,482,487,493,498,
504,509,514,520,525,531,536,541,546,552,557,562,567,572,578,583,588,593,598,603,608,613,618,623,628,633,637,642,647,652,657,
661,666,671,675,680,685,689,694,698,703,707,712,716,720,725,729,733,738,742,746,750,754,758,762,766,771,775,778,782,786,790,
794,798,802,805,809,813,816,820,824,827,831,834,838,841,844,848,851,854,858,861,864,867,870,873,876,879,882,885,888,891,894,
897,899,902,905,907,910,913,915,918,920,923,925,927,930,932,934,937,939,941,943,945,947,949,951,953,955,957,959,960,962,964,
965,967,969,970,972,973,975,976,977,979,980,981,982,983,985,986,987,988,989,990,990,991,992,993,994,994,995,996,996,997,997,
998,998,998,999,999,999,1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,1000,999,999,999,998,998,998,997,997,996,996,995,
994,994,993,992,991,990,990,989,988,987,986,985,983,982,981,980,979,977,976,975,973,972,970,969,967,965,964,962,960,959,957,
955,953,951,949,947,945,943,941,939,937,934,932,930,927,925,923,920,918,915,913,910,907,905,902,899,897,894,891,888,885,882,
879,876,873,870,867,864,861,858,854,851,848,844,841,838,834,831,827,824,820,816,813,809,805,802,798,794,790,786,782,778,775,
771,766,762,758,754,750,746,742,738,733,729,725,720,716,712,707,703,698,694,689,685,680,675,671,666,661,657,652,647,642,637,
633,628,623,618,613,608,603,598,593,588,583,578,572,567,562,557,552,546,541,536,531,525,520,514,509,504,498,493,487,482,476,
471,465,460,454,448,443,437,431,426,420,414,409,403,397,391,386,380,374,368,362,356,351,345,339,333,327,321,315,309,303,297,
291,285,279,273,267,261,255,249,243,236,230,224,218,212,206,200,194,187,181,175,169,163,156,150,144,138,132,125,119,113,107,
100,94,88,82,75,69,63,57,50,44,38,31,25,19,13,6,0,-6,-13,-19,-25,-31,-38,-44,-50,-57,-63,-69,-75,-82,-88,-94,-100,-107,-113,
-119,-125,-132,-138,-144,-150,-156,-163,-169,-175,-181,-187,-194,-200,-206,-212,-218,-224,-230,-236,-243,-249,-255,-261,-267,
-273,-279,-285,-291,-297,-303,-309,-315,-321,-327,-333,-339,-345,-351,-356,-362,-368,-374,-380,-386,-391,-397,-403,-409,-414,
-420,-426,-431,-437,-443,-448,-454,-460,-465,-471,-476,-482,-487,-493,-498,-504,-509,-514,-520,-525,-531,-536,-541,-546,-552,
-557,-562,-567,-572,-578,-583,-588,-593,-598,-603,-608,-613,-618,-623,-628,-633,-637,-642,-647,-652,-657,-661,-666,-671,-675,
-680,-685,-689,-694,-698,-703,-707,-712,-716,-720,-725,-729,-733,-738,-742,-746,-750,-754,-758,-762,-766,-771,-775,-778,-782,
-786,-790,-794,-798,-802,-805,-809,-813,-816,-820,-824,-827,-831,-834,-838,-841,-844,-848,-851,-854,-858,-861,-864,-867,-870,
-873,-876,-879,-882,-885,-888,-891,-894,-897,-899,-902,-905,-907,-910,-913,-915,-918,-920,-923,-925,-927,-930,-932,-934,-937,
-939,-941,-943,-945,-947,-949,-951,-953,-955,-957,-959,-960,-962,-964,-965,-967,-969,-970,-972,-973,-975,-976,-977,-979,-980,
-981,-982,-983,-985,-986,-987,-988,-989,-990,-990,-991,-992,-993,-994,-994,-995,-996,-996,-997,-997,-998,-998,-998,-999,-999,
-999,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-999,-999,-999,-998,-998,-998,-997,-997,-996,-996,-995,
-994,-994,-993,-992,-991,-990,-990,-989,-988,-987,-986,-985,-983,-982,-981,-980,-979,-977,-976,-975,-973,-972,-970,-969,-967,
-965,-964,-962,-960,-959,-957,-955,-953,-951,-949,-947,-945,-943,-941,-939,-937,-934,-932,-930,-927,-925,-923,-920,-918,-915,
-913,-910,-907,-905,-902,-899,-897,-894,-891,-888,-885,-882,-879,-876,-873,-870,-867,-864,-861,-858,-854,-851,-848,-844,-841,
-838,-834,-831,-827,-824,-820,-816,-813,-809,-805,-802,-798,-794,-790,-786,-782,-778,-775,-771,-766,-762,-758,-754,-750,-746,
-742,-738,-733,-729,-725,-720,-716,-712,-707,-703,-698,-694,-689,-685,-680,-675,-671,-666,-661,-657,-652,-647,-642,-637,-633,
-628,-623,-618,-613,-608,-603,-598,-593,-588,-583,-578,-572,-567,-562,-557,-552,-546,-541,-536,-531,-525,-520,-514,-509,-504,
-498,-493,-487,-482,-476,-471,-465,-460,-454,-448,-443,-437,-431,-426,-420,-414,-409,-403,-397,-391,-386,-380,-374,-368,-362,
-356,-351,-345,-339,-333,-327,-321,-315,-309,-303,-297,-291,-285,-279,-273,-267,-261,-255,-249,-243,-236,-230,-224,-218,-212,
-206,-200,-194,-187,-181,-175,-169,-163,-156,-150,-144,-138,-132,-125,-119,-113,-107,-100,-94,-88,-82,-75,-69,-63,-57,-50,-44,
-38,-31,-25,-19,-13,-6);
type senoide4 is array (integer range <>) of integer; -- Senoide do inversor de 7 níveis com 1500 valores variando de -1500 a 1500
constant variable_senoide4 : senoide4 (1 to 1500):=(0,6,13,19,25,31,38,44,50,57,63,69,75,82,88,94,100,107,113,119,126,132,
138,144,151,157,163,169,176,182,188,194,200,207,213,219,225,232,238,244,250,256,263,269,275,281,287,293,300,306,312,318,324,
330,336,343,349,355,361,367,373,379,385,391,397,403,409,415,422,428,434,440,446,452,458,464,469,475,481,487,493,499,505,511,
517,523,529,535,540,546,552,558,564,570,575,581,587,593,599,604,610,616,622,627,633,639,644,650,656,661,667,673,678,684,689,
695,701,706,712,717,723,728,734,739,745,750,755,761,766,772,777,782,788,793,798,804,809,814,820,825,830,835,841,846,851,856,
861,866,871,877,882,887,892,897,902,907,912,917,922,927,932,937,942,946,951,956,961,966,971,975,980,985,990,994,999,1004,
1008,1013,1018,1022,1027,1031,1036,1040,1045,1049,1054,1058,1063,1067,1072,1076,1080,1085,1089,1093,1098,1102,1106,1111,
1115,1119,1123,1127,1131,1135,1140,1144,1148,1152,1156,1160,1164,1168,1172,1176,1179,1183,1187,1191,1195,1199,1202,1206,
1210,1214,1217,1221,1225,1228,1232,1235,1239,1242,1246,1249,1253,1256,1260,1263,1266,1270,1273,1276,1280,1283,1286,1290,1293,
1296,1299,1302,1305,1308,1311,1314,1317,1320,1323,1326,1329,1332,1335,1338,1341,1344,1346,1349,1352,1355,1357,1360,1363,1365,
1368,1370,1373,1375,1378,1380,1383,1385,1388,1390,1392,1395,1397,1399,1401,1404,1406,1408,1410,1412,1414,1417,1419,1421,1423,
1425,1427,1429,1430,1432,1434,1436,1438,1440,1441,1443,1445,1446,1448,1450,1451,1453,1454,1456,1457,1459,1460,1462,1463,1465,
1466,1467,1469,1470,1471,1472,1473,1475,1476,1477,1478,1479,1480,1481,1482,1483,1484,1485,1486,1487,1487,1488,1489,1490,1490,
1491,1492,1492,1493,1494,1494,1495,1495,1496,1496,1497,1497,1497,1498,1498,1498,1499,1499,1499,1499,1500,1500,1500,1500,1500,
1500,1500,1500,1500,1500,1500,1500,1500,1499,1499,1499,1499,1498,1498,1498,1497,1497,1497,1496,1496,1495,1495,1494,1494,1493,
1492,1492,1491,1490,1490,1489,1488,1487,1487,1486,1485,1484,1483,1482,1481,1480,1479,1478,1477,1476,1475,1473,1472,1471,1470,
1469,1467,1466,1465,1463,1462,1460,1459,1457,1456,1454,1453,1451,1450,1448,1446,1445,1443,1441,1440,1438,1436,1434,1432,1430,
1429,1427,1425,1423,1421,1419,1417,1414,1412,1410,1408,1406,1404,1401,1399,1397,1395,1392,1390,1388,1385,1383,1380,1378,1375,
1373,1370,1368,1365,1363,1360,1357,1355,1352,1349,1346,1344,1341,1338,1335,1332,1329,1326,1323,1320,1317,1314,1311,1308,1305,
1302,1299,1296,1293,1290,1286,1283,1280,1276,1273,1270,1266,1263,1260,1256,1253,1249,1246,1242,1239,1235,1232,1228,1225,1221,
1217,1214,1210,1206,1202,1199,1195,1191,1187,1183,1179,1176,1172,1168,1164,1160,1156,1152,1148,1144,1140,1135,1131,1127,1123,
1119,1115,1111,1106,1102,1098,1093,1089,1085,1080,1076,1072,1067,1063,1058,1054,1049,1045,1040,1036,1031,1027,1022,1018,1013,
1008,1004,999,994,990,985,980,975,971,966,961,956,951,946,942,937,932,927,922,917,912,907,902,897,892,887,882,877,871,866,861,
856,851,846,841,835,830,825,820,814,809,804,798,793,788,782,777,772,766,761,755,750,745,739,734,728,723,717,712,706,701,695,
689,684,678,673,667,661,656,650,644,639,633,627,622,616,610,604,599,593,587,581,575,570,564,558,552,546,540,535,529,523,517,
511,505,499,493,487,481,475,469,464,458,452,446,440,434,428,422,415,409,403,397,391,385,379,373,367,361,355,349,343,336,330,
324,318,312,306,300,293,287,281,275,269,263,256,250,244,238,232,225,219,213,207,200,194,188,182,176,169,163,157,151,144,138,
132,126,119,113,107,100,94,88,82,75,69,63,57,50,44,38,31,25,19,13,6,0,-6,-13,-19,-25,-31,-38,-44,-50,-57,-63,-69,-75,-82,-88,
-94,-100,-107,-113,-119,-126,-132,-138,-144,-151,-157,-163,-169,-176,-182,-188,-194,-200,-207,-213,-219,-225,-232,-238,-244,
-250,-256,-263,-269,-275,-281,-287,-293,-300,-306,-312,-318,-324,-330,-336,-343,-349,-355,-361,-367,-373,-379,-385,-391,-397,
-403,-409,-415,-422,-428,-434,-440,-446,-452,-458,-464,-469,-475,-481,-487,-493,-499,-505,-511,-517,-523,-529,-535,-540,-546,
-552,-558,-564,-570,-575,-581,-587,-593,-599,-604,-610,-616,-622,-627,-633,-639,-644,-650,-656,-661,-667,-673,-678,-684,-689,
-695,-701,-706,-712,-717,-723,-728,-734,-739,-745,-750,-755,-761,-766,-772,-777,-782,-788,-793,-798,-804,-809,-814,-820,-825,
-830,-835,-841,-846,-851,-856,-861,-866,-871,-877,-882,-887,-892,-897,-902,-907,-912,-917,-922,-927,-932,-937,-942,-946,-951,
-956,-961,-966,-971,-975,-980,-985,-990,-994,-999,-1004,-1008,-1013,-1018,-1022,-1027,-1031,-1036,-1040,-1045,-1049,-1054,
-1058,-1063,-1067,-1072,-1076,-1080,-1085,-1089,-1093,-1098,-1102,-1106,-1111,-1115,-1119,-1123,-1127,-1131,-1135,-1140,
-1144,-1148,-1152,-1156,-1160,-1164,-1168,-1172,-1176,-1179,-1183,-1187,-1191,-1195,-1199,-1202,-1206,-1210,-1214,-1217,
-1221,-1225,-1228,-1232,-1235,-1239,-1242,-1246,-1249,-1253,-1256,-1260,-1263,-1266,-1270,-1273,-1276,-1280,-1283,-1286,
-1290,-1293,-1296,-1299,-1302,-1305,-1308,-1311,-1314,-1317,-1320,-1323,-1326,-1329,-1332,-1335,-1338,-1341,-1344,-1346,-1349,
-1352,-1355,-1357,-1360,-1363,-1365,-1368,-1370,-1373,-1375,-1378,-1380,-1383,-1385,-1388,-1390,-1392,-1395,-1397,-1399,-1401,
-1404,-1406,-1408,-1410,-1412,-1414,-1417,-1419,-1421,-1423,-1425,-1427,-1429,-1430,-1432,-1434,-1436,-1438,-1440,-1441,-1443,
-1445,-1446,-1448,-1450,-1451,-1453,-1454,-1456,-1457,-1459,-1460,-1462,-1463,-1465,-1466,-1467,-1469,-1470,-1471,-1472,-1473,
-1475,-1476,-1477,-1478,-1479,-1480,-1481,-1482,-1483,-1484,-1485,-1486,-1487,-1487,-1488,-1489,-1490,-1490,-1491,-1492,-1492,
-1493,-1494,-1494,-1495,-1495,-1496,-1496,-1497,-1497,-1497,-1498,-1498,-1498,-1499,-1499,-1499,-1499,-1500,-1500,-1500,-1500,
-1500,-1500,-1500,-1500,-1500,-1500,-1500,-1500,-1500,-1499,-1499,-1499,-1499,-1498,-1498,-1498,-1497,-1497,-1497,-1496,-1496,
-1495,-1495,-1494,-1494,-1493,-1492,-1492,-1491,-1490,-1490,-1489,-1488,-1487,-1487,-1486,-1485,-1484,-1483,-1482,-1481,-1480,
-1479,-1478,-1477,-1476,-1475,-1473,-1472,-1471,-1470,-1469,-1467,-1466,-1465,-1463,-1462,-1460,-1459,-1457,-1456,-1454,-1453,
-1451,-1450,-1448,-1446,-1445,-1443,-1441,-1440,-1438,-1436,-1434,-1432,-1430,-1429,-1427,-1425,-1423,-1421,-1419,-1417,-1414,
-1412,-1410,-1408,-1406,-1404,-1401,-1399,-1397,-1395,-1392,-1390,-1388,-1385,-1383,-1380,-1378,-1375,-1373,-1370,-1368,-1365,
-1363,-1360,-1357,-1355,-1352,-1349,-1346,-1344,-1341,-1338,-1335,-1332,-1329,-1326,-1323,-1320,-1317,-1314,-1311,-1308,-1305,
108

-1302,-1299,-1296,-1293,-1290,-1286,-1283,-1280,-1276,-1273,-1270,-1266,-1263,-1260,-1256,-1253,-1249,-1246,-1242,-1239,-1235,
-1232,-1228,-1225,-1221,-1217,-1214,-1210,-1206,-1202,-1199,-1195,-1191,-1187,-1183,-1179,-1176,-1172,-1168,-1164,-1160,-1156,
-1152,-1148,-1144,-1140,-1135,-1131,-1127,-1123,-1119,-1115,-1111,-1106,-1102,-1098,-1093,-1089,-1085,-1080,-1076,-1072,-1067,
-1063,-1058,-1054,-1049,-1045,-1040,-1036,-1031,-1027,-1022,-1018,-1013,-1008,-1004,-999,-994,-990,-985,-980,-975,-971,-966,
-961,-956,-951,-946,-942,-937,-932,-927,-922,-917,-912,-907,-902,-897,-892,-887,-882,-877,-871,-866,-861,-856,-851,-846,-841,
-835,-830,-825,-820,-814,-809,-804,-798,-793,-788,-782,-777,-772,-766,-761,-755,-750,-745,-739,-734,-728,-723,-717,-712,-706,
-701,-695,-689,-684,-678,-673,-667,-661,-656,-650,-644,-639,-633,-627,-622,-616,-610,-604,-599,-593,-587,-581,-575,-570,-564,
-558,-552,-546,-540,-535,-529,-523,-517,-511,-505,-499,-493,-487,-481,-475,-469,-464,-458,-452,-446,-440,-434,-428,-422,-415,
-409,-403,-397,-391,-385,-379,-373,-367,-361,-355,-349,-343,-336,-330,-324,-318,-312,-306,-300,-293,-287,-281,-275,-269,-263,
-256,-250,-244,-238,-232,-225,-219,-213,-207,-200,-194,-188,-182,-176,-169,-163,-157,-151,-144,-138,-132,-126,-119,-113,-107,
-100,-94,-88,-82,-75,-69,-63,-57,-50,-44,-38,-31,-25,-19,-13,-6);
shared variable a1 : integer := 0; -- variável para contagem subidas do clock
shared variable b1 : integer := 0; -- variável para contagem subidas do clock
shared variable a2 : integer := 0; -- variável para contagem subidas do clock
shared variable b2 : integer := 0; -- variável para contagem subidas do clock
shared variable a3 : integer := 0; -- variável para contagem subidas do clock
shared variable b3 : integer := 0; -- variável para contagem subidas do clock
shared variable a4 : integer := 0; -- variável para contagem subidas do clock
shared variable b4 : integer := 0; -- variável para contagem subidas do clock
shared variable contador1 : integer := 1; --declaração variável contador1
shared variable contador2 : integer := 1; --declaração variável contador2
shared variable contador3 : integer := 1; --declaração variável contador3
shared variable contador4 : integer := 1; --declaração variável contador4
shared variable contador5 : integer := 1; --declaração variável contador5
shared variable contador6 : integer := 1; --declaração variável contador6
shared variable contador7 : integer := 1; --declaração variável contador7
shared variable contador8 : integer := 1; --declaração variável contador8
shared variable contador9 : integer := 0; --declaração variável contador9
shared variable contador10 : integer := 0; --declaração variável contador10
shared variable contador11 : integer := 0; --declaração variável contador11
shared variable contador12 : integer := 0; --declaração variável contador12
shared variable contador13 : integer := 0; --declaração variável contador13
shared variable modulante1 : integer := 0; --variável p/ carregamento de um vetor senoidal
shared variable modulante2 : integer := 0; --variável p/ carregamento de um vetor senoida2
shared variable modulante3 : integer := 0; --variável p/ carregamento de um vetor senoida3
shared variable modulante4 : integer := 0; --variável p/ carregamento de um vetor senoidal
shared variable portadora : integer := 0; --variável que carrega valores da portadora do inversor de 2 niveis
shared variable portadora_1 : integer := 0; --variável que carrega valores da portadora 1
shared variable portadora_2 : integer := 0; --variável que carrega valores da portadora 2
shared variable portadora_3 : integer := 0; --variável que carrega valores da portadora 3
shared variable portadora_4 : integer := 0; --variável que carrega valores da portadora 4
shared variable portadora_5 : integer := 0; --variável que carrega valores da portadora 5
shared variable portadora_6 : integer := 0; --variável que carrega valores da portadora 6
shared variable freqsen : integer := 60; --freq. em 60Hz da moduladora
shared variable freqtri : integer := 2500; --freq. em 2,5 Khz da portadora triangular
shared variable N3 : integer := 50; -- Tempo morto em ciclos de clocks, cada unidade equivale 20ns. O deadtime, aqui, vale 1us
shared variable N1 : integer := 1; --variável que define o número de ciclos de clock entre amostras da modulante
shared variable N2 : integer := 1; --variável que define o número de ciclos de clock entre amostras da portadora
shared variable timer1 : integer := 1; -- contador timer1 para o deadtime
shared variable timer2 : integer := 1; -- contador timer2 para o deadtime
shared variable timer3 : integer := 1; -- contador timer3 para o deadtime
shared variable timer4 : integer := 1; -- contador timer4 para o deadtime
shared variable timer5 : integer := 1; -- contador timer5 para o deadtime
shared variable timer6 : integer := 1; -- contador timer6 para o deadtime
shared variable timer7 : integer := 1; -- contador timer7 para o deadtime
shared variable timer8 : integer := 1; -- contador timer8 para o deadtime
shared variable Vcc : integer := 0; -- Variável Vcc para simulação da saída do inversor no Modelsim
begin
process(clk) -- início do processo
begin
if rising_edge(clk) then
contador13 := contador13 + 1;
if contador13 > 100000 then
contador13 := 0;-- reseta o contador13
end if;
if rst = '1' then -- reseta a frequencia para o valor padrão
freqsen := 60; -- fundamental em 60Hz
freqtri := 2500; -- portadoras em 2Khz
end if;
if button1 = '1' and contador9 = 0 then -- botão+ ligado e contador zerado
if contador13 > 1 then
freqsen := freqsen + 5; -- aumenta a freqsen em 5 unidades
contador9 := contador9 + 1; -- incrementa o contador
a1 := 0;-- reseta a variavel
b1 := 0;-- reseta a variavel
a2 := 0;-- reseta a variavel
b2 := 0;-- reseta a variavel
a3 := 0;-- reseta a variavel
b3 := 0;-- reseta a variavel
a4 := 0;-- reseta a variavel
b4 := 0;-- reseta a variavel
end if;
else
if button1 = '0' and contador9 = 1 then -- botão+ desligado e contador é 1
contador9 := 0; -- reseta o contador
end if;
end if;
if button2 = '1' and contador10 = 0 and freqsen > 5 then -- botão+ ligado e contador zerado
if contador13 > 50000 then
freqsen := freqsen - 5; -- aumenta a freqsen em 5 unidades
contador10 := contador10 + 1; -- incrementa o contador
a1 := 0;-- reseta a variavel
b1 := 0;-- reseta a variavel
a2 := 0;-- reseta a variavel
b2 := 0;-- reseta a variavel
a3 := 0;-- reseta a variavel
b3 := 0;-- reseta a variavel
a4 := 0;-- reseta a variavel
b4 := 0;-- reseta a variavel
end if;
else
if button2 = '0' and contador10 = 1 then -- botão+ desligado e contador é 1
contador10 := 0; -- reseta o contador
end if;
end if;
if button3 = '1' and contador11 = 0 then -- botão+ ligado e contador zerado
if contador13 > 50000 then
freqtri := freqtri + 500; -- aumenta a freqtri em 500 unidades
contador11 := contador11 + 1; -- incrementa o contador
a1 := 0;-- reseta a variavel
b1 := 0;-- reseta a variavel
a2 := 0;-- reseta a variavel
b2 := 0;-- reseta a variavel
a3 := 0;-- reseta a variavel
b3 := 0;-- reseta a variavel
a4 := 0;-- reseta a variavel
b4 := 0;-- reseta a variavel
end if;
else
if button3 = '0' and contador11 = 1 then -- botão+ desligado e contador é 1
contador11 := 0; -- reseta o contador
end if;
end if;
109

if button4 = '1' and contador12 = 0 and freqtri > 500 then -- botão- ligado e contador zerado
if contador13 > 50000 then
freqtri := freqtri - 500; -- diminui a freqtri em 500 unidades
contador12 := contador12 + 1; -- incrementa o contador
a1 := 0;-- reseta a variavel
b1 := 0;-- reseta a variavel
a2 := 0;-- reseta a variavel
b2 := 0;-- reseta a variavel
a3 := 0;-- reseta a variavel
b3 := 0;-- reseta a variavel
a4 := 0;-- reseta a variavel
b4 := 0;-- reseta a variavel
end if;
else
if button4 = '0' and contador12 = 1 then-- botão- desligado e contador é 1
contador12 := 0;-- reseta o contador
end if;
end if;
if switch1 = '1' then -- Chave 1 ligada / Ativa o inversor para dois níveis
a1 := a1 + 1;-- incrementa a variável a cada subida de clock
b1 := b1 + 1;-- incrementa a variável a cada subida de clock
N1 := 50000000/(freqsen*1000); --cálculo de N1 (contagens de clock)
N2 := 50000000/(freqtri*1000); --cálculo de N2 (contagens de clock)
if a1= N1 then --executa quando a for igual a N1 subidas de clock
modulante1 := variable_senoide1(contador1); --carregamento do vetor senoide
contador1 := contador1 + 1; --incrementa variável contador1
if contador1 = 1000 then --funçao para limitar contador1 em 1000
contador1 := 1; --quando contador1 atinge 1000 assume valor 1
end if;
a1 := 0; --zera variavel a1
end if;
if b1=N2 then --executa quando a for igual a N2 subidas de clock
portadora := variable_portadora1(contador2); -- vetor portadora carrega os valores da variable_portadora
contador2 := contador2 + 1; --incrementa 1 na variavel
if contador2=1000 then --reinício do número do vetor que será carregado
contador2:=1; --início a partir do primeiro vetor
end if;
b1:=0; --zera variável b
end if;
if modulante1 > portadora then -- A saída é +Vcc
timer1 := timer1 + 1; -- incrementa o timer
pwm2<='1'; -- seta o gate em LOW
pwm3<='0'; -- seta o gate em HIGH
pwm5<='0'; -- seta o gate em HIGH
pwm6<='0'; -- seta o gate em HIGH
pwm7<='0'; -- seta o gate em HIGH
pwm8<='0'; -- seta o gate em HIGH
if timer1>N3 then -- condição que, quando verdadeira, gera deadtime
pwm1<='1'; -- seta o gate em LOW
pwm4<='0'; -- seta o gate em HIGH
timer1 := 0;-- Reseta o timer
timer2 := 0;-- Reseta o timer
end if;
Vcc := 10; -- Variável com utilidade apenas para simulação no Modelsim
else -- A saída é -Vcc
timer2 := timer2 + 1; -- incrementa o timer
pwm1<='0'; -- seta o gate em HIGH
pwm4<='1'; -- seta o gate em LOW
pwm5<='0'; -- seta o gate em HIGH
pwm6<='0'; -- seta o gate em HIGH
pwm7<='0'; -- seta o gate em HIGH
pwm8<='0'; -- seta o gate em HIGH
if timer2>N3 then -- condição que, quando verdadeira, gera deadtime
pwm2<='0'; -- seta o gate em HIGH
pwm3<='1'; -- seta o gate em LOW
timer1 := 0;-- Reseta o timer
timer2 := 0;-- Reseta o timer
end if;
Vcc := -10; -- Variável com utilidade apenas para simulação no Modelsim
end if;
elsif switch2 = '1' then -- Chaves 2 ligada / Ativa o inversor para três níveis
a2 := a2 + 1;-- incrementa a variável a cada subida de clock
b2 := b2 + 1;-- incrementa a variável a cada subida de clock
N1:=50000000/(freqsen*1000); --cálculo de N1
N2:=50000000/(freqtri*1000); --cálculo de N2
if a2=N1 then --executa se a2 = n1 subidas de clk
modulante2 := variable_senoide2(contador3);--carregamento do vetor senoide
contador3:=contador3 + 1;--incrementa a variável contador
if contador3=1000 then -- limita o contador em 1000
contador3:=1; -- reseta o contador
end if;
a2:=0; -- reseta a variável a2
end if;
if b2=N2 then --carregamento das portadoras em N2 subidas de clock
portadora_1 := variable_portadora2(contador4); --carrega e posiciona portadora1
portadora_2 := variable_portadora2(contador4)-500; --carrega portadora2
contador4:= contador4 + 1;--incrementa a variável contador
if contador4=1000 then -- limita contador4 em 1000
contador4:=1; -- reseta o contador
end if;
b2:=0;
end if;
if modulante2 > portadora_1 then -- Saida do inversor em +VCC
timer1 := timer1 + 1;-- incrementa o timer
pwm2<='1'; -- seta o gate em LOW
pwm3<='0'; -- seta o gate em HIGH
pwm6<='0'; -- seta o gate em HIGH
pwm7<='0'; -- seta o gate em HIGH
pwm5<='0'; -- seta o gate em HIGH
pwm8<='0'; -- seta o gate em HIGH
if timer1>N3 then -- condição que, quando verdadeira, gera deadtime
pwm1<='1';
pwm4<='0'; -- seta o gate em HIGH
timer1:=0; -- Reseta o timer
timer2:=0; -- Reseta o timer
timer3:=0; -- Reseta o timer
timer4:=0; -- Reseta o timer
timer5:=0; -- Reseta o timer
timer6:=0; -- Reseta o timer
timer7:=0; -- Reseta o timer
end if;
Vcc := 10; -- Variável com utilidade apenas para simulação no Modelsim
end if;
if modulante2 < portadora_1 and modulante2 > portadora_2 then -- Saida do inversor em 0VCC
timer2 := timer2 + 1;-- incrementa o timer
pwm1<='1'; -- seta o gate em HIGH
pwm3<='1'; -- seta o gate em HIGH
pwm5<='1'; -- seta o gate em HIGH
pwm7<='1'; -- seta o gate em HIGH
pwm6<='1'; -- seta o gate em HIGH
pwm8<='1'; -- seta o gate em HIGH
if timer2>N3 then -- condição que, quando verdadeira, gera deadtime
pwm2<='1'; -- seta o gate em HIGH

Você também pode gostar