Upload
others
View
8
Download
0
Embed Size (px)
Citation preview
IMPLEMENTAÇÃO DIGITAL DE REDES
NEURAIS ARTIFICIAIS PARA O CONTROLE DE
MOTOR DE INDUÇÃO
ANDRÉ MUNIZ SOARES
CAMPO GRANDE
2006
UNIVERSIDADE FEDERAL DO MATO GROSSO DO SUL
PROGRAMA DE PÓS-GRADUAÇÃO
EM ENGENHARIA ELÉTRICA
IMPLEMENTAÇÃO DIGITAL DE REDES
NEURAIS ARTIFICIAIS PARA O CONTROLE DE
MOTOR DE INDUÇÃO
Dissertação submetida à
Universidade Federal de Mato Grosso do Sul
como parte dos requisitos para
obtenção do grau de Mestre em Engenharia Elétrica.
ANDRÉ MUNIZ SOARES
Campo Grande, Dezembro de 2006.
IMPLEMENTAÇÃO DIGITAL DE REDES
NEURAIS ARTIFICIAIS PARA O CONTROLE DE
MOTOR DE INDUÇÃO
André Muniz Soares
‘Esta Dissertação foi julgada adequada para obtenção do Título de Mestre em
Engenharia Elétrica, Área de Concentração em Energia Elétrica, e aprovada em sua
forma final pelo Programa de Pós-Graduação em Engenharia Elétrica da Universidade
Federal de Mato Grosso do Sul - Campo Grande - MS.’
______________________________________
Luciana Cambraia Leite, Dra. Orientadora
______________________________________
João Onofre Pereira Pinto, Ph.D. Co-orientador
Coordenador do Programa de Pós-Graduação em Engenharia Elétrica
Banca Examinadora:
______________________________________
Luciana Cambraia Leite, Dra. Presidente
______________________________________
João Onofre Pereira Pinto, Ph.D.
______________________________________
Luiz Eduardo Borges da Silva, Ph.D.
______________________________________
Flávio Alessandro Serrão Gonçalves, Dr.
______________________________________
Milton Ernesto Romero Romero, Ph.D.
A Deus que sempre esteve ao meu lado nessa caminhada
Aos meus pais e irmãs, pelo amor, dedicação e apoio.
i
AGRADECIMENTOS
Aos professores Dra. Luciana Cambraia Leite e Dr. João Onofre Pereira Pinto, minha
orientadora e co-orientador, respectivamente, pelo apoio e pelas contribuições que
foram fundamentais para o desenvolvimento deste trabalho.
Aos Professores Luiz Eduardo Borges da Silva e Milton Ernesto Romero, pelas valiosas
contribuições na etapa de Qualificação desta Dissertação de Mestrado.
Às empresas Texas Instruments, Altera e Pi componentes, por acreditarem em meu
trabalho e pelas valiosas doações materiais.
Aos professores e funcionários do mestrado e do departamento de Engenharia Elétrica –
DEL – UFMS por seu auxílio.
A equipe de pesquisadores do Batlab (Laboratório de Inteligência Artificial, Eletrônica
de Potência e Eletrônica Digital), especialmente aos meus grandes amigos e
incentivadores Gilberto S. Tatibana e Márcio L. Portella.
ii
Resumo da Dissertação apresentada a UFMS como parte dos requisitos necessários para a obtenção do grau de Mestre em Engenharia Elétrica.
IMPLEMENTAÇÃO DIGITAL DE REDES
NEURAIS ARTIFICIAIS PARA O CONTROLE DE
MOTOR DE INDUÇÃO
André Muniz Soares
Dezembro/2006
Orientador: Luciana Cambraia Leite, Dra. Co-orientador: João Onofre Pereira Pinto, Ph.D. Área de Concentração: Energia Elétrica. Palavras-chave: acionamento de motores de indução, controle vetorial sensorless, neurohardware, FPGAs. Número de Páginas: 120.
RESUMO: Este trabalho tem como contribuição a implementação de redes neurais
artificiais utilizadas no controlador "sensorless" do motor de indução trifásico. Estas
redes neurais foram representadas como circuitos dentro de um FPGA (Field
Programmable Gate Array), constituídas por neurônios representados por processadores
digitais independentes e sintetizados em VHDL. Para a tarefa de representação da
função de ativação sigmoidal dos neurônios em hardware, fez-se uso da técnica de
interpolação “spline”. Como resultado final do trabalho, foi construído um protótipo do
controlador do motor de indução trifásico, composto por um FPGA gerenciado por um
DSP (processador digital de sinais), controlando circuitos de potência para seu
acionamento. O trabalho inicia-se com ênfase em uma revisão bibliográfica sobre
estratégias de controle de motores de indução e implementação em hardware de redes
neurais. A seguir, o sistema proposto é apresentado, iniciando pela apresentação de seus
blocos constituintes, para finalizar com uma descrição dos circuitos do protótipo
completo. Finalmente, são apresentados resultados experimentais de testes com o
protótipo e conclusões finais.
iii
Abstract of Dissertation presented to UFMS as a partial fulfillment of the requirements for the degree of Master in Electrical Engineering.
A Neural-Network-Digital Implementation for Induction Motor Drive
André Muniz Soares
December / 2006
Advisor: Luciana Cambraia Leite, Dra. Co-advisor: João Onofre Pereira Pinto, Ph.D. Area of Concentration: Electrical Energy. Keywords: induction motors drives, sensorless vector control, neurohardware, FPGAs. Number of Pages: 120.
ABSTRACT: This work describes a neural-network-based implementation used in
‘sensorless’ space-vector control for induction motor drives. These neural-networks
were represented as circuits inside of a FPGA (Field Programmable Gate Array),
employed by neurons performed by independent digital processors and synthesized in
VHDL. In order to achieve the building of the sigmoidal activation function for digital
implementations of neurons, it has been used the "spline" interpolation technique. As
results, it was built a hardware system structure to drive an induction motor, which is
composed by a FPGA managed by a DSP (digital signal processor), and so to control
the power electronics. In the beginning, great emphasis is laid on description of the
various strategies of induction motors control, and the neural networks hardware
implementations. Next, the proposed system is presented, and it is goal to give a brief
description of the built blocks. In addition, it is presented a description of the final
prototype circuits. Then, the experimental parts are presented to demonstrate the
performance of tests with the prototype and the work closes with conclusions.
iv
SUMÁRIO
CAPÍTULO 1 - INTRODUÇÃO...................................................................................... 1 1.1 Introdução......................................................................................................... 1 1.2 O motor de indução e o acionamento em velocidades variáveis...................... 1 1.3 O controle da máquina de indução: escalar e vetorial ...................................... 2 1.4 Técnicas de controle inteligente ....................................................................... 3 1.5 Implementação de redes neurais artificiais (RNA) em hardware..................... 4 1.6 Descrição dos capítulos .................................................................................... 5 1.7 Considerações finais ......................................................................................... 6
CAPÍTULO 2 - CONTROLE DE MOTOR DE INDUÇÃO COM ORIENTAÇÃO DO CAMPO ESTATÓRICO .................................................................................................. 7
2.1 Introdução......................................................................................................... 7 2.2 Visão geral do sistema...................................................................................... 7 2.3 Subsistema de circuito de potência................................................................... 8
2.3.1 Motor de indução trifásico........................................................................ 9 2.3.2 Inversor Baseado em IGBT .................................................................... 11
2.4 Subsistema de Processamento de Sinais......................................................... 12 2.4.1 Bloco Estimador de Fluxo ...................................................................... 13 2.4.2 Bloco Estimador de Sinais...................................................................... 15 2.4.3 Bloco Controlador .................................................................................. 16 2.4.4 Bloco Controle PWM Space-Vector Baseado em Redes Neurais.......... 18
2.5 Considerações finais ....................................................................................... 21 CAPÍTULO 3 - ESTRUTURA INTERNA DOS BLOCOS “CONTROLE PWM SPACE-VECTOR BASEADO EM REDES NEURAIS” E “ESTIMADOR DE FLUXO” ......................................................................................................................... 22
3.1 Introdução....................................................................................................... 22 3.2 Estrutura do bloco “Controle PWM Space-Vector Baseado em Redes Neurais” ...................................................................................................................... 22 3.3 Estrutura do bloco “Estimador de Fluxo”....................................................... 26 3.4 Considerações finais ....................................................................................... 28
CAPÍTULO 4 - DESCRIÇÃO DO HARDWARE DO SISTEMA PROPOSTO .......... 29 4.1 Introdução....................................................................................................... 29 4.2 Descrição geral ............................................................................................... 29 4.3 Subsistema Analógico (medição e condicionamento de sinais)..................... 32 4.4 Conversão analógica para digital (ADS8364) ................................................ 34 4.5 Hardware do bloco Estimador de Fluxo ......................................................... 36
4.5.1 Interface com ADS ................................................................................. 36 4.5.2 Transformação Trifásica e Rede Recorrente Híbrida com MLP............ 39
4.5.2.1 Controlador de Camada de Rede Neural ............................................ 41 4.5.2.2 Neurônio digital com função de ativação linear................................. 42 4.5.2.3 Neurônio digital com função de ativação sigmóide ........................... 48
4.6 Hardware do bloco Estimador de Sinais......................................................... 54 4.6.1 Código em C do “Estimador de Sinais” ................................................. 54
4.7 Hardware do bloco “Controlador”.................................................................. 56 4.7.1 Código em C do bloco “Controlador” .................................................... 56
4.8 Hardware do bloco "Controle PWM Space-Vector Baseado em Redes Neurais" ...................................................................................................................... 58
4.8.1 Rede de módulo ...................................................................................... 58 4.8.2 Módulo “Rede de ângulo e de Cálculo de Ton”..................................... 60
v
4.8.3 Módulo “Contador Trifásico”................................................................. 62 4.9 Considerações finais ....................................................................................... 63
CAPÍTULO 5 - PROTÓTIPO E RESULTADOS......................................................... 65 5.1 Introdução....................................................................................................... 65 5.2 Especificações do sistema .............................................................................. 65 5.3 O protótipo...................................................................................................... 66 5.4 Resultados experimentais e de simulação ...................................................... 71 5.5 Considerações finais ....................................................................................... 79
CAPÍTULO 6 - CONCLUSÕES.................................................................................... 80 6.1 Conclusões...................................................................................................... 80 6.2 Propostas para trabalhos futuros..................................................................... 80
Anexo A: Esquemáticos dos circuitos do protótipo ......................................................... 1 Anexo B: Códigos em VHDL e em C .............................................................................. 8 Anexo C: Especificações de Componentes .................................................................... 20 REFERÊNCIAS BIBLIOGRÁFICAS ........................................................................... 24
vi
LISTA DE FIGURAS
Figura 2. 1 - Diagrama do controlador proposto. ............................................................. 8 Figura 2. 2 - Aspecto físico de um motor de indução. ..................................................... 9 Figura 2. 3 - Módulo “Inversor Baseado em IGBT”. ..................................................... 11 Figura 2. 4 - Diagrama do subsistema "Laços de Controle de Torque e Fluxo". ........... 17 Figura 2. 5 - Subsistema "Vector Rotator". .................................................................... 18 Figura 2. 6 - Diagrama do Controle PWM Space-Vector Baseado em Redes Neurais.. 19 Figura 2. 7 - Exemplo de geração de sinais PWM. ........................................................ 20 Figura 3. 1 - Gráficos de tempo de ativação gerados por SVM. 23 Figura 3. 2 - Diagrama do Controle PWM Space-Vector Baseado em Redes Neurais.. 24 Figura 3. 3 - Interconexão das saídas PWM com inversor de potência e MIT. ............. 25 Figura 3. 4 - Redes recorrente e MLP compondo a "RNN-MLP". ................................ 26 Figura 4. 1 - Protótipo do controlador do MIT baseado em redes neurais. .................... 30 Figura 4. 2 - Medição de tensão de entrada da MIT....................................................... 32 Figura 4. 3 - Medição de corrente................................................................................... 33 Figura 4. 4 - Interligação com o conversor ADS8364.................................................... 34 Figura 4. 5 - Unidade "Interface com ADS", dentro do FPGA. ..................................... 36 Figura 4. 6 - Rede híbrida "RNN-MLP" no FPGA. ....................................................... 40 Figura 4. 7 - Interconexões do controlador de camada em uma rede neural. ................. 41 Figura 4. 8 - Diagrama do neurônio de 1 entrada e com função de ativação linear. ...... 44 Figura 4. 9 - Interior da "Unidade de Execução" do neurônio com função de ativação linear. .............................................................................................................................. 45 Figura 4. 10 - Representação da função sigmóide por "Spline". .................................... 49 Figura 4. 11 - Neurônio digital com função de ativação sigmóide................................. 49 Figura 4. 12 - Diagrama da "Unidade de Execução" do neurônio com função sigmóide......................................................................................................................................... 50 Figura 4. 13 - Linhas de código representando o bloco “Estimador de Sinais”. ............ 55 Figura 4. 14 - Código de programação do bloco “Controlador”. ................................... 57 Figura 4. 15 - Estrutura da “Rede de módulo” no FPGA. .............................................. 59 Figura 4. 16 - Hardware da “Rede de ângulo e de Cálculo de Ton”. ............................. 60 Figura 4. 17 - Diagrama do sistema “Contador Trifásico”............................................. 62 Figura 5. 1 - Motor de indução trifásico (MIT) utilizado............................................... 66 Figura 5. 2 - Visão do protótipo do controlador de MIT................................................ 67 Figura 5. 3 - Placa de circuito da "Interface com Usuário". ........................................... 67 Figura 5. 4 - Placa do "Subsistema Digital". .................................................................. 68 Figura 5. 5 - Placa do "Subsistema Analógico".............................................................. 69 Figura 5. 6 - Módulo "Inversor Baseado em IGBT". ..................................................... 70 Figura 5. 7 - Fonte de alimentação do protótipo............................................................. 71 Figura 5. 8 - Valor 0.8078 aproximado em formato IEEE 754. ..................................... 71 Figura 5. 9 - Saída = 0.8078, para uma entrada sem normalização x =188.62638. Latência do neurônio próxima de 500ns. ....................................................................... 72 Figura 5. 10 - Saída = 0.0474, para uma entrada sem normalização x = −553.30284. Latência do neurônio próxima de 500ns. ....................................................................... 72 Figura 5. 11 - Saída = 1.0 (comportamento no mais infinito), resultado de uma entrada não normalizada x =2456.99536. Latência do neurônio próxima de 250ns................... 72 Figura 5. 12 - Sinal PWM na fase A do inversor. .......................................................... 73
vii
Figura 5. 13 - Sinal PWM na fase B do inversor............................................................ 74 Figura 5. 14 - Sinal PWM na fase C do inversor............................................................ 74 Figura 5. 15 - Exemplo de formas de onda de tempo de Ton para região de submodulação. ................................................................................................................ 75 Figura 5. 16 - Exemplo de formas de onda de tempo de Ton para região de sobremodulação-modo 1................................................................................................. 75 Figura 5. 17 - Exemplo de formas de onda de tempo de Ton para região de sobremodulação-modo 2................................................................................................. 76 Figura 5. 18 - Tensões em duas fases do motor de indução. .......................................... 77 Figura 5. 19 - Corrente da fase B do motor de indução.................................................. 77 Figura 5. 20 - Corrente da fase C do motor de indução.................................................. 78 Figura 5. 21 - Simulação de estimação de fluxo do MIT. .............................................. 79 Figura 6. 1. Dados de utilização global do FPGA Stratix 2. .......................................... 81
viii
LISTA DE TABELAS
Tabela 4. 1 - Codificação em 16 bits das entradas analógicas do ADS8364. ................ 35 Tabela 4. 2 - Microprograma da "Unidade de Decisão" do neurônio com função de ativação linear................................................................................................................. 44 Tabela 4. 3 - Microprograma da "Unidade de Decisão" do neurônio com função sigmóide. ........................................................................................................................ 51 Tabela 5. 1 - Especificações do sistema. ........................................................................ 65
ix
LISTA DE SÍMBOLOS
CA: Corrente alternada.
CC: Corrente contínua.
DSK: DSP Starter Kit.
DSP: Digital Signal Processor.
EDMA: Extended Direct Memory Access.
EMIF: External Memory Interface.
FPGA: Field Programmable Gate Array.
IGBT: Insulated Gate Bipolar Transistor.
LCD: Liquid Crystal Display.
MAC: multiplicador-acumulador.
MLP: Multi Layer Perceptron.
MIT: Motor de Indução Trifásico.
PCLPF: Programmable Cascaded Low Pass Filter.
PLL: Phase Locked Loop.
PWM: Pulse Width Modulation (Modulação por Largura de Pulso).
ROM: Read Only Memory.
RNA: Rede Neural Artificial.
RNN: Recurrent Neural Network (Rede Neural Recorrente).
SDRAM: Synchronous Dynamic Random Access Memory.
SVM: Space-Vector Modulation (Modulação por Vetores Espaciais).
UCP: Unidade Central de Processamento.
ULA: Unidade Lógica e Aritmética.
VHDL: VHSIC Hardware Description Language.
VHSIC: Very High Speed Integrated Circuit.
VLWI: Very Large Word Instruction.
Capítulo 1 – Introdução________________________________________________
1
CAPÍTULO 1 – INTRODUÇÃO
1.1 Introdução
Este capítulo visa fornecer um embasamento conceitual sobre o tema de
acionamento de motores de indução. Inicialmente, é feita uma revisão bibliográfica
sobre máquinas de indução e sobre suas técnicas de acionamento. A seguir, são
descritas as técnicas escalar e vetorial para controle de motores e a utilização da
inteligência artificial como ferramenta útil na implementação em hardware de sistemas
para acionamento de máquinas CA. Finalizando, é apresentada a ordem em que estão
organizados os capítulos deste trabalho, além do assunto que os aborda. A seção a
seguir inicia com uma breve revisão sobre máquinas de indução e seu acionamento em
velocidades variáveis.
1.2 O motor de indução e o acionamento em velocidades variáveis
Por um longo tempo, a máquina de indução foi, tradicionalmente, utilizada em
aplicações de velocidades constantes e em acionamentos de baixo desempenho, devido
às suas características não-lineares, multivariáveis e complexidade nos algoritmos de
controle [1].
Desta forma, quando se pensava em acionamentos com velocidade variável,
optava-se por utilizar a máquina de corrente contínua, cujas características de
desacoplamento entre o fluxo (campo) e o conjugado (armadura) permitem um controle
independente da velocidade, possibilitando um excelente desempenho nesse tipo de
aplicação [2].
Todavia, as máquinas de corrente contínua têm custos elevados, necessitam de
manutenções freqüentes e tornam-se inviáveis para certas aplicações. Ao contrário, a
máquina de indução possui construção robusta, menor custo de fabricação e
manutenção. A partir da década de 70, com o surgimento da teoria de controle vetorial
(princípio de orientação de campo) [3] é que se obteve uma modelagem adequada para o
controle mais preciso das máquinas de corrente alternada. Somado ao contínuo avanço
da eletrônica de potência, a partir da década de 80, a máquina de indução vem
Capítulo 1 – Introdução________________________________________________
2
dominando o mercado de acionamentos em velocidades variáveis e alto desempenho
[4].
1.3 O controle da máquina de indução: escalar e vetorial
Inicialmente, o controle da máquina de indução foi tido como escalar, em que se
varia, proporcionalmente, tensão e freqüência estatórica, mantendo-se o fluxo de
entreferro da máquina constante, não se alterando o torque máximo. Trata-se de um
controle relativamente simples, utilizado em sistemas de acionamento em que não se
necessite de grandes variações de velocidades e com rápidas respostas e alta eficiência
[5].
A técnica de orientação de campo possibilita um desacoplamento entre o
conjugado eletromagnético e o fluxo (campo) na máquina de corrente alternada,
semelhante à máquina CC com excitação em separado, melhorando assim, suas
características dinâmicas, quando comparada com a resposta dos acionamentos
convencionais. Isto é conseguido através da definição de um eixo de referência q-d que
gira sincronamente com o vetor espacial fluxo de rotor. Desta forma, o torque é
controlado através da componente q do vetor espacial da corrente de estator e
simultaneamente, o fluxo é controlado através da componente d do vetor espacial da
corrente de estator.
Sua implementação só foi possível a partir da década de 80, com os avanços da
eletrônica de potência, de microprocessadores e o surgimento da tecnologia de
processadores digitais de sinais (DSP), já que esta técnica necessita de alta
complexidade computacional.
Vários métodos de implementação têm sido desenvolvidos, e estas técnicas
podem ser classificadas baseadas no modo usado para se determinar o vetor de fluxo
rotórico ou estatórico, dentre as quais se destacam:
• Controle por orientação de campo direto: a posição e a magnitude do fluxo
rotórico são medidas ou estimadas através de um observador de estado não
linear. A desvantagem é que se deve ter um conhecimento, a priori, da constante
de tempo elétrica do rotor, a qual varia com a temperatura, freqüência e
saturação.
• Controle de campo orientado indireto (COI): a estimação do fluxo de referência
(fluxo de rotor) é feita em malha aberta e possui como vantagens: simplicidade
Capítulo 1 – Introdução________________________________________________
3
do modelo obtido, boa resposta dinâmica [6, 7]. Uma desvantagem é que a
estimação do fluxo depende dos parâmetros da máquina e seu uso incorreto pode
causar o acoplamento das equações de torque e fluxo, degradando o desempenho
do controle [8, 9].
• Controle Direto de Torque (DTC) e Auto-Controle Direto (DSC): técnicas que
se baseiam no controle direto e independente do torque e do fluxo do motor CA,
possibilitando rápida resposta de torque e excelente regulação de velocidade [10,
11].
• Controle Robusto e Adaptativo: são técnicas utilizadas para controlar plantas ou
processos com incertezas. O Controle a Estrutura Variável (VSC) com modos
deslizantes é um tipo de controle robusto, foi proposto na década de 50 e há
diversas contribuições na aplicação de acionamentos e controle de máquinas de
indução [12, 13, 14].
1.4 Técnicas de controle inteligente
Dentre as técnicas de inteligência artificial aplicadas ao acionamento de
máquinas de indução, destacam-se: controle baseado em redes neurais artificiais,
controle fuzzy, controle neuro-fuzzy e controle baseado em algoritmos genéticos.
A lógica nebulosa ou fuzzy [15, 16] proporcionou o desenvolvimento de
controladores fuzzy, em que algoritmos convertem estratégias de controle baseadas no
conhecimento de especialistas em estratégias de controle automático, apresentando
resultados superiores àqueles com controle convencional.
A técnica de Algoritmos Genéticos também pode ser utilizada no controle de
motores [17]. Dentre as aplicações destacam-se: projeto de estimadores de fluxos para
se obter os parâmetros ótimos do controle vetorial de um MI [18], na sintonia de
controladores fuzzy, determinação dos parâmetros elétricos de um motor de indução
através de técnicas de estimação de parâmetros, etc.
Redes Neurais Artificiais também têm sido uma das ferramentas muito utilizadas
na identificação e controle de sistemas dinâmicos não-lineares [19], devido a sua
habilidade de aprendizagem e melhorar progressivamente a performance de sistemas de
controle [20, 21]. A rede neural ainda pode ser combinada com a técnica de lógica
fuzzy, surgindo os controladores neuro-fuzzy (ou híbridos). A melhor vantagem sobre
os controladores fuzzy convencionais é que a função de pertinência e as regras são
Capítulo 1 – Introdução________________________________________________
4
produzidas por um processo automático [22], minimizando a intervenção humana no
processo de sintonia.
Desta forma, a aplicação de inteligência artificial em acionamentos de máquinas
melhora satisfatoriamente a performance, tornando o sistema mais robusto à variações
dos parâmetros e da carga.
Quando se trata de controle on-line de máquinas de indução para altos
desempenhos, a informação da velocidade é necessária e isto pode ser conseguido
através de sua medição direta (encoder) ou sua estimação através da medição de tensão
e corrente (sensorless). Muitos trabalhos foram desenvolvidos com a aplicação da
técnica de redes neurais para estimar velocidade, fluxos ou corrente estatórica na
máquina de indução [23, 24].
Atualmente, com o desenvolvimento dos DSP’s, as técnicas de controle
inteligente de motores de indução (especialmente as redes neurais) podem ser
implementadas como sistemas de tempo real. Porém, para implementá-las em hardware,
neurônios com altas capacidades de processamento são necessários. A seção a seguir
apresenta maiores detalhes sobre o tema da implementação de redes neurais em
hardware.
1.5 Implementação de redes neurais artificiais (RNA) em hardware Um dos problemas na implementação de redes neurais em hardware para o
controle e acionamento de MI está na complexidade de se representar eletronicamente
funções de ativação não-lineares. Muitos modelos de redes neurais foram desenvolvidos
com neurônios binários, ou seja, neurônios com entradas e saídas que podem assumir
apenas dois valores (-1 e 1 ou 0 e 1).
De fato, em muitas implementações utilizam-se funções de ativação hard-limit
ou funções lineares saturadas, com a finalidade de evitar a complexidade envolvida na
construção de uma função de ativação sigmoidal. O problema desta abordagem está no
modelo distanciar-se demasiadamente da complexidade do neurônio biológico [25].
Estas e outras desvantagens encontradas nos primeiros modelos binários foram
superadas pelo neurônio analógico. Neurônios implementados com circuitos analógicos
são rápidos e possuem reduzida complexidade, permitindo a construção de redes neurais
com grande densidade de neurônios e baixo tempo de resposta. Entretanto, a
implementação de neurônios analógicos possui algumas desvantagens, tais como: baixa
Capítulo 1 – Introdução________________________________________________
5
imunidade a ruídos elétricos e a necessidade do uso de resistores de alta precisão para
representação dos pesos sinápticos [26, 27].
Devido a tais problemas, pesquisas voltadas a implementação de redes multi-
layer perceptron (MLP’s) para emulação do comportamento do neurônio biológico têm
atraído a atenção da comunidade científica [28, 29, 30]. Alguns autores implementaram
uma rede MLP com funções de ativação lineares [31], outros [32] implementaram uma
rede neural para identificar, em tempo real, a velocidade do motor, também utilizando
funções lineares para modelar neurônios digitais.
Este trabalho tem como contribuição a implementação dos neurônios artificiais
como processadores digitais independentes, utilizando funções de ativação sigmoidais
representadas em hardware por interpolação. Para permitir reduzidos erros de
representação numérica nos cálculos, os neurônios trabalham com valores em ponto
flutuante de 32 bits (IEEE 754). A estrutura e o conteúdo dos capítulos deste trabalho
são apresentados na seção a seguir.
1.6 Descrição dos capítulos
Esta dissertação possui seis capítulos e as descrições de cada um deles segue
abaixo:
• Capítulo 2: apresenta o equacionamento da máquina de indução com orientação de
campo de estator, bem como a visão geral do sistema de acionamento. O capítulo
apresenta os dois subsistemas compondo o controlador do motor deste trabalho: um
subsistema de potência e um de processamento de sinais.
• Capítulo 3: detalha a estrutura interna dos subsistemas "Estimador de Fluxo" e
"Controle PWM Space-Vector Baseado em Redes Neurais", descritos de forma
geral no capítulo 2. Estes subsistemas representam duas redes neurais artificiais
modeladas nos trabalhos [25] e [26] e que serviram de base para a implementação
proposta neste trabalho.
• Capítulo 4: detalha arquitetura de hardware do protótipo do controlador do motor de
indução proposto neste trabalho, ou seja, como são os circuitos representando todos
os subsistemas modelados matematicamente conforme apresentado nos capítulos 2 e
3. O capítulo utiliza linguagem de descrição de hardware (VHDL) e de programação
de alto nível (C) para explicar como são e como funcionam as plataformas de
Capítulo 1 – Introdução________________________________________________
6
implementação utilizadas na construção do protótipo, ou seja: um DSP (processador
digital de sinais) e um FPGA (Field Programmable Gate Array).
• Capítulo 5: faz a apresentação do protótipo final e de resultados experimentais
obtidos. O capítulo inclui fotos das placas de circuito impresso do protótipo, além de
formas de onda obtidas em testes de funcionamento realizados com o protótipo.
• Capítulo 6: destina-se à apresentação das conclusões finais e de propostas para
futuros trabalhos.
1.7 Considerações finais
Este capítulo fez uma breve revisão bibliográfica sobre acionamento de motores
de indução, implementação em hardware de redes neurais artificiais e sobre a ordem
como estão apresentados os capítulos deste trabalho. O objetivo principal foi situar o
leitor sobre alguns desafios e perspectivas existentes na área de controle inteligente de
motores de indução. Ao final do trabalho, espera-se que o leitor adquira uma visão
global dos conceitos e das soluções utilizadas na implementação do controlador do
motor proposto.
Capítulo 2 – Controle de Motor de Indução com Orientação de Campo Estatórico__
7
CAPÍTULO 2 - CONTROLE DE MOTOR DE INDUÇÃO COM ORIENTAÇÃO DO CAMPO ESTATÓRICO
2.1 Introdução
A proposta deste trabalho é a implementação em hardware de um controlador do
motor de indução trifásico, utilizando como base uma modelagem de sistema idealizada
em trabalhos anteriores. Este capítulo apresenta esta modelagem a partir da qual foi
criada uma arquitetura de hardware, descrita em maiores detalhes no capítulo 4.
Inicialmente é apresentada uma visão geral dos blocos compondo a estrutura do sistema,
e então, cada bloco é apresentado separadamente O objetivo do capítulo é a
apresentação do sistema discutindo somente a função e o equacionamento dos seus
blocos constituintes.
A seção a seguir inicia o capítulo com uma descrição estrutural geral do
controlador de motor de indução proposto.
2.2 Visão geral do sistema Conforme descrito no capítulo 1, existem várias abordagens retratadas na
literatura para controle inteligente de motores de indução. O controlador de motor
proposto neste trabalho entra na categoria de controle inteligente de máquinas de
indução, por ser baseado no uso de redes neurais artificiais, uma das áreas de estudo da
Inteligência Artificial.
Iniciando pela apresentação geral do sistema de controle de motor de indução,
a figura 2.1 mostra um diagrama geral do sistema previamente modelado nos trabalhos
anteriores [25] e [26]. Este sistema representa um controle em malha fechada
“sensorless”. Isto significa um controle de motor baseado na estimação de grandezas da
máquina controlada e não no sensoriamento ou medição direta destas grandezas. Uma
das principais grandezas a ser estimada pelo sistema é o fluxo estatórico do motor. A
partir desta grandeza, podem-se estimar vários outros parâmetros úteis em um controle
inteligente do motor de indução.
Capítulo 2 – Controle de Motor de Indução com Orientação de Campo Estatórico__
8
Ia Ib
-Vd
+SUBSISTEMA DE CIRCUITO DE POTÊNCIA
SUBSISTEMA DE PROCESSAMENTO
DE SINAIS
CONTROLE PWM “SPACE-VECTOR”
BASEADO EM REDES NEURAIS
MIT FiltroInversor
baseado em IGBT Va
VbVc
ESTIMADOR DE SINAIS
ωe
CONTROLADOR
Ψs*
Te*
V* θe*
ESTIMADOR DE FLUXO (BASEADO EM REDES
NEURAIS)
Figura 2. 1 - Diagrama do controlador proposto.
De acordo com a figura 2.1, o sistema é constituído de dois subsistemas, um
“Subsistema de circuito de potência” (acima da linha tracejada), e um “Subsistema de
processamento de sinais” (abaixo da linha tracejada).
O propósito do “Subsistema de circuito de potência” é transformar energia
elétrica armazenada no “Link CC” (fonte “Vd” mais “Filtro”) em energia mecânica
rotacional, entregue ao motor de indução trifásico (MIT). Esta transformação está
centrada no trabalho do módulo localizado entre o “Link CC” e o “MIT”, ou seja, o
"Inversor baseado em IGBT". Este módulo representa um conversor CC/CA de
potência, trifásico, e controlado por sinais PWM (Modulação por Largura de Pulso)
providos pelo "Sistema de processamento de sinais".
O “Subsistema de processamento de sinais” representa o foco deste trabalho.
Ele representa a parte digital do controlador do motor de indução trifásico, sendo
baseado em redes neurais artificiais. É composto pelos módulos “Controlador”,
“Controle PWM Space-Vector Baseado em Redes Neurais”, “Estimador de Fluxo” e
pelo “Estimador de Sinais”.
Aprofundando um pouco mais a análise sobre cada um dos dois subsistemas
apresentados nesta visão geral, a seção a seguir inicia descrevendo aspectos do
“Subsistema de circuito de potência”.
2.3 Subsistema de circuito de potência
Embora não seja o foco deste trabalho, é necessária uma descrição das principais
características dos elementos compondo o “Subsistema de circuito de potência”. Este
Capítulo 2 – Controle de Motor de Indução com Orientação de Campo Estatórico__
9
subsistema representa a parte de potência do controlador proposto neste trabalho,
estando sob controle do “Subsistema de processamento de sinais”. A seção a seguir
inicia apresentando a estrutura e o funcionamento do “Motor de indução trifásico”.
2.3.1 Motor de indução trifásico
O elemento eletro-mecânico do sistema, transformador de potência elétrica em
potência mecânica, é o motor de indução trifásico (MIT). Um MIT é equivalente a um
transformador trifásico, porém com enrolamento secundário curto-circuitado e livre para
realizar movimento rotacional. Um diagrama construtivo do motor de indução é
mostrado na figura 2.2.
Figura 2. 2 - Aspecto físico de um motor de indução.
A figura 2.2 apresenta uma visão espacial e uma frontal dos elementos básicos
que constituem um motor de indução: estator, rotor e o eixo.
Capítulo 2 – Controle de Motor de Indução com Orientação de Campo Estatórico__
10
Em caso de alimentação trifásica, o estator (ou armadura) é envolvido por três
enrolamentos formando dipolos elétricos (bobinas) defasados espacialmente de 120
graus. Na visão frontal da figura 2.2, o estator representa o anel mais externo e os
enrolamentos das bobinas representam os círculos coloridos no anel (podendo estar
entrando (× ) ou saindo (• ) do plano da página). O controle das formas de onda de
alimentação (tensão e corrente) das bobinas no estator constitui o objetivo final de um
controlador do motor de indução. Em muitas aplicações práticas, a alimentação aplicada
ao estator consiste de ondas senoidais providas por uma rede trifásica (partida direta),
dispensando o uso de um sistema controlador para o motor.
O rotor representa o elemento girante do motor. Na figura 2.2 ele está
representado pelo conjunto de barras presas por anéis em suas extremidades, formando
o que é conhecido como “gaiola de esquilo”. Em alguns tipos de rotores, a estrutura em
forma de gaiola é substituída por enrolamentos semelhantes aos do estator, porém, não
acessíveis fora do motor. Na visão frontal da figura 2.2, o rotor representa o anel central
e os círculos coloridos neste anel representam as barras da gaiola do rotor (sendo
percorridas por correntes entrando (× ) e saindo (• ) do plano da página).
Durante o funcionamento do motor, o rotor gira devido ao torque (conjugado)
produzido por uma força magnética aplicada ao rotor. As formas de onda aplicadas às
bobinas do estator geram um campo magnético resultante girando em torno do eixo
central do motor. A variação de fluxo desse campo magnético induz uma tensão no
rotor, esta tensão então acaba gerando correntes rotóricas. Estas correntes, sob a ação do
campo magnético do estator, originam a força magnética geradora do torque no rotor.
Como conseqüência, o rotor gira tentando alcançar o campo girante, de modo a diminuir
a corrente induzida no rotor (resultado da lei de “Lenz”).
Preso ao rotor está o eixo do motor, mostrado como o círculo central na visão
frontal da figura 2.2. O eixo simplesmente representa a haste de transmissão da energia
mecânica do rotor para cargas externas conectadas ao motor.
Prosseguindo com a apresentação dos circuitos de potência do controlador de
MIT deste trabalho, a seção a seguir apresenta o segundo elemento de destaque
compondo o “Subsistema de circuito de potência”, o módulo “Inversor Baseado em
IGBT”.
Capítulo 2 – Controle de Motor de Indução com Orientação de Campo Estatórico__
11
2.3.2 Inversor Baseado em IGBT
Conforme já mencionado na seção anterior, para que se possa controlar um
motor de indução deve-se aplicar em seus terminais de entrada uma forma de onda de
alimentação controlada. O módulo “Inversor Baseado em IGBT” representa um circuito
de potência para o controle da amplitude e da freqüência das tensões de alimentação
aplicadas ao motor. Amplitude e freqüência de tensões CA podem ser variadas
utilizando diferentes tipos de conversores. O “Inversor Baseado em IGBT” representa
um conversor alimentado por fonte de tensão, chaveado e em ponte completa trifásica.
Para um melhor entendimento, a figura 2.3 apresenta um diagrama do circuito do
inversor utilizado neste trabalho.
Figura 2. 3 - Módulo “Inversor Baseado em IGBT”.
O circuito da figura 2.3 gera uma tensão alternada de saída através do
chaveamento de uma tensão CC (Link CC), utilizando, para isto, um circuito composto
por três pares de chaves ("pernas" do inversor) interligadas, formando uma ponte
completa. Neste caso, as chaves utilizadas são módulos IGBT (Transistor Bipolar de
Gate Isolado). Na figura 2.3, os IGBTs estão representados pelas siglas indicando suas
posições na ponte: “TA” (topo fase A), “BA” (baixo fase A), “TB” (topo fase B), “BB”
Capítulo 2 – Controle de Motor de Indução com Orientação de Campo Estatórico__
12
(baixo fase B), “TC” (topo fase C), “BC” (baixo fase C). Por se tratarem de dispositivos
de potência, os IGBTs são controlados por meio de circuitos de disparo de comando de
pulso de gate (“DRV1”, “DRV2”, “DRV3”, na figura 2.3). Este circuito de disparo
representa uma interface de hardware com isolação permitindo que circuitos de controle
de baixa potência consigam comandar os IGBTs da ponte. Adicionalmente, este circuito
de disparo é capaz de filtrar ruídos dos sinais de chaveamento enviados aos IGBTs e é
capaz de gerar um “tempo morto” sempre que duas chaves de uma mesma “perna” do
inversor são comutadas ao mesmo tempo, evitando um curto-circuito momentâneo nesta
“perna”. De acordo com a figura 2.3, cada circuito de disparo deve receber uma
alimentação externa de +15V CC e deve receber dois sinais de comando: um para chave
de topo (como “TA” para o “DRV1”) e outro para chave de baixo (como “BA” para o
“DRV1”).
Um dos objetivos finais do controle do inversor da figura 2.3, é a construção de
tensões alternadas para alimentação do motor, com o mínimo de conteúdo harmônico de
baixa freqüência, já que altas freqüências podem ser eliminadas mais facilmente através
de filtros apropriados. A aplicação de uma seqüência adequada de comutação das
chaves da ponte inversora, a cada período de amostragem “Ts” (inverso da freqüência de
chaveamento), gera três ondas defasadas de 120 graus, compostas por pulsos, simulando
ondas CA senoidais, para alimentação do motor de indução. A amplitude e a freqüência
destas pseudo-senóides são responsabilidades do controlador externo comandando o
inversor, enquanto a técnica utilizada para comutação das chaves da ponte é conhecida
como modulação. Neste trabalho a técnica de modulação utilizada é a “Modulação por
Vetores Espaciais” (ou “Space-Vector Modulation”), implementada pelos circuitos
digitais do “Subsistema de Processamento de Sinais”, descrito na seção a seguir.
2.4 Subsistema de Processamento de Sinais Representando o “cérebro” do controlador de motor de indução deste trabalho,
existe o “Subsistema de Processamento de Sinais”. A função deste subsistema é
comandar o “Subsistema de circuito de potência” a partir do processamento de
informações fornecidas pelo usuário e de informações medidas do motor de indução
controlado. No protótipo final proposto neste trabalho, o “Subsistema de Processamento
de Sinais” é constituído por um DSP (Processador Digital de Sinais) em interação direta
com um FPGA (Field Programmable Gate Array).
Capítulo 2 – Controle de Motor de Indução com Orientação de Campo Estatórico__
13
O funcionamento do “Subsistema de processamento de sinais” é baseado na
execução contínua de ciclos de trabalho (iterações). Cada iteração começa com a
medição de tensões e correntes trifásicas dos terminais de entrada do MIT. A seguir
estes dados sofrem transformações de eixo e são submetidos a uma seqüência de
subsistemas composta pelo "Estimador de Fluxo", "Estimador de Sinais",
"Controlador", e "Controle PWM Space-Vector Baseado em Redes Neurais". O
resultado final de cada iteração é a atualização de parâmetros de temporização de sinais
de comando aplicados ao módulo “Inversor de Baseado em IGBT” (Subsistema de
circuito de potência). No decorrer desta seção, uma iteração de trabalho do “Subsistema
de Processamento de Sinais” é descrita através da apresentação das funções executadas
pelos seus blocos constituintes. Inicialmente, na seção a seguir, é descrito o bloco
“Estimador de Fluxo”.
2.4.1 Bloco Estimador de Fluxo Durante um ciclo de trabalho, o primeiro bloco a trabalhar é o "Estimador de
Fluxo". Sua finalidade é estimar o fluxo de estator atual da máquina de indução usando
medições de tensão e corrente dos terminais de entrada da MIT.
Este bloco recebe como entradas as tensões das fases A, B e C ( aV , bV , cV ), e
também as correntes das fases A e B ( ai , bi ). Em um sistema real, estes sinais são
primeiramente condicionados por filtros do tipo passa-baixa para eliminação de ruídos,
com correção dos atrasos indesejáveis, antes de serem aplicados às entradas do bloco
"Estimador de Fluxo". Dentro do bloco, o primeiro processamento realizado sobre estes
sinais é uma transformação dos eixos A-B-C para o eixo estacionário d-q-0, conforme
indicado pelas equações 2.1 a 2.3.
bac iii −−= (2.1)
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡⋅⎥
⎦
⎤⎢⎣
⎡−
−−=
⎥⎥⎦
⎤
⎢⎢⎣
⎡
c
b
a
sds
sqs
VVV
V
V31310313132
'
'
(2.2)
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡⋅⎥
⎦
⎤⎢⎣
⎡−
−−=
⎥⎥⎦
⎤
⎢⎢⎣
⎡
c
b
a
sds
sqs
iii
i
i31310313132
'
'
(2.3)
Capítulo 2 – Controle de Motor de Indução com Orientação de Campo Estatórico__
14
Na equação 2.1 está representada a estimação de corrente da fase C através de
uma redundância analítica usando as correntes das fases A e B. Na equação 2.2, as
tensões das três fases são convertidas nas grandezas: 'sqsV (projeção sobre eixo q) e 's
dsV
(projeção sobre o eixo d). Na equação 2.3 ocorre o mesmo tipo de transformação, porém
as correntes das três fases sofrem transformações para as componentes 'sqsi (projeção
sobre eixo q) e 'sdsi (projeção sobre eixo d).
As tensões e correntes projetadas para o eixo d-q-0, geradas pelas equações 2.1 a
2.3, são então utilizadas nas equações 2.4 e 2.5.
ssqs
sqs
sqs RiVV ⋅−= '''' (2.4)
ssds
sds
sds RiVV ⋅−= '''' (2.5)
As equações 2.4 e 2.5 representam as tensões de estator da MIT no eixo d-q-0
( ''sqsV e ''s
dsV ), ao serem consideradas as quedas de tensão ssqs Ri ⋅' e s
sds Ri ⋅' , devidas à
resistência de estator sR .
As principais saídas do bloco "Estimador de fluxo" são as estimações do fluxo
de estator nos eixos d e q, obtidas matematicamente por meio das integrações
representadas pelas equações 2.6 e 2.7.
∫=Ψ dtV sds
sds
'' (2.6)
∫=Ψ dtV sqs
sqs
'' (2.7)
No sistema proposto neste trabalho as integrações das equações 2.6 e 2.7 são
realizadas utilizando redes neurais agindo como um filtro passa-baixa programável.
Mais especificamente, utiliza-se uma RNN-MLP (rede neural recorrente híbrida com
rede Multi Layer Perceptron) a ser detalhadamente descrita no próximo capítulo. Esta
rede além das entradas ''sqsV e ''s
dsV utiliza a entrada eω (freqüência), calculada pelo bloco
"Estimador de Sinais" (descrito na seção seguinte). A estrutura da rede RNN-MLP
utilizada realiza integrações sem erro de "offset", além de efetuar compensações de
deslocamentos de fase gerados pela filtragem analógica dos sinais de tensões e correntes
trifásicas (entradas do bloco "Estimador de Fluxo").
Capítulo 2 – Controle de Motor de Indução com Orientação de Campo Estatórico__
15
Como saída final, além dos valores de fluxo estimado ( sqsψ e s
dsψ ), o bloco
"Estimador de Fluxo" disponibiliza para o próximo bloco no sistema (o "Estimador de
Sinais") as correntes 'sqsi e 's
dsi , necessárias neste último bloco.
No protótipo final proposto neste trabalho, o bloco "Estimador de Fluxo" foi
inserido dentro do FPGA como uma estrutura interligada de processadores, constituindo
uma rede neural. Maiores detalhes sobre como este bloco foi implementado em
hardware digital são fornecidos no capítulo 4. Resultados experimentais e simulações do
funcionamento deste bloco são apresentados no capítulo 5.
2.4.2 Bloco Estimador de Sinais Este bloco realiza os cálculos com os sinais produzidos pelo bloco "Estimador
de Fluxo", listados nas equações 2.8 a 2.16.
22 )()(ˆ sqs
sdss ψψψ += (2.8)
)ˆ(sin 1s
sqse ψψ−=Θ (2.9)
eiii sdse
sqsds Θ⋅−Θ⋅= sincos '' (2.10)
eiii sdse
sqsqs Θ⋅+Θ⋅= cossin '' (2.11)
⎟⎟⎠
⎞⎜⎜⎝
⎛
⋅⋅−
⋅⋅=
dssds
qssdq iL
iLi
σψσ 2
(2.12)
esdse
sqsds Θ⋅−Θ⋅= sincos ψψψ (2.13)
esdse
sqsqs Θ⋅+Θ⋅= cossin ψψψ (2.14)
[ ]dsqsqsdse iiPT ⋅−⋅⋅⋅
= ψψ4
3 (2.15)
[ ]2
''''
ˆ s
sqs
sds
sds
sqs
e
VVψ
ψψω
⋅−⋅= (2.16)
A equação 2.8 representa a obtenção do fluxo de estator ( sψ ) através do cálculo
do módulo do vetor representado pelas coordenadas de eixo estacionário ( sqsψ e s
dsψ ,
calculados nas equações 2.6 e 2.7). Na equação 2.9 é obtido o ângulo de rotação
estimado eΘ através do arco-seno do valor de fluxo de eixo estacionário q ( sqsψ )
dividido pelo fluxo calculado em 2.8. As equações 2.10 e 2.11 estimam as correntes em
eixo girante ( qsi e dsi ) a partir do ângulo de rotação obtido na equação 2.9 e dos valores
de corrente ( 'sqsi e 's
dsi ) já calculados nos primeiros estágios do bloco anterior ("Estimador
Capítulo 2 – Controle de Motor de Indução com Orientação de Campo Estatórico__
16
de Fluxo"). As equações 2.13 e 2.14 também utilizam o ângulo eΘ , porém juntamente
com os fluxos de estator ( sqsψ e s
dsψ ), obtêm-se valores de fluxo de estator no eixo
girante ( qsψ e dsψ ). A equação 2.12 computa o valor da corrente de compensação de
desacoplamento ( dqi ) utilizando o fluxo obtido na equação 2.13 ( dsψ ), as correntes
obtidas nas equações 2.10 e 2.11 ( qsi e dsi ), e utilizando os parâmetros do MIT
predefinidos: SS LL ⋅= σ' (indutância transitória de estator). Na equação 2.15 é calculado
o torque (conjugado) da máquina considerando o número de pólos da máquina ( P ),
além dos fluxos dsψ e qsψ (calculados nas equações 2.13 e 2.14) e das correntes obtidas
nas equações 2.10 e 2.11 ( qsi e dsi ). Por fim, na equação 2.16, é calculada a freqüência
de rotação do motor ( eω ), a partir do quadrado do módulo do fluxo de estator ( sψ ), dos
fluxos ( sqsψ e s
dsψ ), e das tensões transformadas ( ''sqsV e ''s
dsV ) calculadas conforme as
equações 2.4 e 2.5 pelo bloco anterior (o "Estimador de Fluxo"). Este sinal de
freqüência ( eω ) volta para o bloco "Estimador de Fluxo", como já mencionado, para
atualização dos valores das grandezas estimadas por este bloco.
Como pode ser observado, é extensa a carga de cálculos a ser realizada pelo
"Estimador de Sinais". Várias são as formas de implementação em hardware deste
bloco. Maiores detalhes referentes à implementação do bloco "Estimador de Sinais"
neste trabalho são apresentados no capítulo 4. As saídas deste bloco são direcionadas
para o bloco "Controlador", descrito em maiores detalhes na seção a seguir.
2.4.3 Bloco Controlador O bloco "Controlador" representa um ponto de convergência do sistema de
controle de motor de indução. Este bloco recebe tanto sinais de retroação providos pelo
bloco "Estimador de Sinais" ( eT , sψ , dqi , qsi e dsi ), quanto o sinal de torque desejado
( *eT ) e de fluxo desejado ( *ˆ sψ ) fornecidos pelo usuário do sistema. Estes sinais estão
representados na figura 2.4 compondo o subsistema "Laços de Controle de Torque e
Fluxo" pertencente ao bloco "Controlador".
Capítulo 2 – Controle de Motor de Indução com Orientação de Campo Estatórico__
17
Figura 2. 4 - Diagrama do subsistema "Laços de Controle de Torque e Fluxo".
O subsistema da figura 2.4 é composto por um laço de controle de torque que
inicialmente gera um valor de erro entre o torque estimado ( eT ) e o torque desejado
( *eT ). Este sinal de erro entra em um controlador “PI” (proporcional e integral), o qual
gera um valor de corrente de estator desejado ( *qsi ). A diferença entre a corrente
desejada ( *qsi ) e a estimada ( qsi ) representa a entrada de um segundo controlador “PI”.
A saída deste segundo “PI” representa a tensão desejada de estator no eixo girante q
( *qsV ).
O segundo laço compondo o subsistema da figura 2.4 inicia gerando um sinal de
erro entre o fluxo desejado pelo usuário ( *ˆ sψ ) e o fluxo estimado pelo sistema ( sψ ). De
forma análoga ao primeiro laço, um controlador “PI” gera uma corrente desejada ( *'qsi )
de primeiro estágio. Esta corrente, no estágio seguinte, é adicionada com dqi (corrente
de compensação de desacoplamento estimada) gerando a corrente desejada ( *dsi ). A
diferença entre esta corrente ( *dsi ) e a estimada pelo sistema ( dsi ) comanda o segundo
“PI” do laço na geração da tensão de estator desejada no eixo girante d ( *dsV ).
Como operação final realizada pelo bloco "Controlador", outro de seus
subsistemas, chamado "Vector Rotator" (figura 2.5), processa as saídas *qsV e *
dsV
geradas pelo subsistema "Laços de Controle de Torque e Fluxo".
Capítulo 2 – Controle de Motor de Indução com Orientação de Campo Estatórico__
18
Figura 2. 5 - Subsistema "Vector Rotator".
Este processamento realizado pelo subsistema "Vector Rotator" é descrito pelas
equações 2.17 e 2.18, consistindo no cálculo de representação do vetor magnitude de
tensão ( ∗V ) e no cálculo do ângulo de orientação deste vetor ( '∗eθ ).
2*2** )()(ˆ
dsqs VVV += (2.17)
⎟⎟⎠
⎞⎜⎜⎝
⎛+= −
*
*1*' tan
ds
qsee V
Vθθ (2.18)
No protótipo composto por DSP mais FPGA deste trabalho, o bloco
"Controlador", como o bloco "Estimador de Sinais" já descrito, está construído como
uma rotina de programação para execução pelo DSP. Um usuário externo interage com
o bloco "Controlador" através de uma interface com usuário interligada ao DSP.
Maiores detalhes sobre os circuitos constituintes desta interface e sobre o
funcionamento do bloco "Controlador" construído, são fornecido no capítulo 4.
As saídas do subsistema "Vector Rotator" ( ∗V e '∗eθ ) são aplicadas às entradas
do bloco "Controle PWM Space-Vector Baseado em Redes Neurais", última unidade da
seqüência de blocos constituindo o "Subsistema de processamento de sinais". Na seção
a seguir são apresentados maiores detalhes a respeito do bloco "Controle PWM Space-
Vector Baseado em Redes Neurais".
2.4.4 Bloco Controle PWM Space-Vector Baseado em Redes Neurais
Este bloco recebe os sinais calculados pelo bloco "Controlador", ou seja, ∗V e '∗
eθ , e os traduz em comandos de ativação (turn-on) e desativação (turn-off) (pulsos
PWM) enviados para as chaves eletrônicas presentes no "Inversor baseado em IGBT"
Capítulo 2 – Controle de Motor de Indução com Orientação de Campo Estatórico__
19
(Subsistema de circuito de potência). O trabalho deste bloco consiste em propiciar uma
modulação, a "Space-Vector Modulation ou SVM". A SVM, descrita em [10],
representa um algoritmo com a finalidade de criar uma forma de onda desejada a partir
de uma fonte de tensão constante “Vd” (ou Link CC). Neste caso esta forma de onda
desejada consiste em três senóides defasadas de 120 graus, com amplitudes e
freqüências controladas, aplicadas aos terminais de entrada de um motor de indução.
Para realizar seu trabalho o bloco "Controle PWM Space-Vector Baseado em Redes
Neurais" conta com a estrutura representada na figura 2.6.
Figura 2. 6 - Diagrama do Controle PWM Space-Vector Baseado em Redes Neurais.
O diagrama da figura 2.6 mostra um subsistema que inicia processando as
entradas ∗V e '∗eθ através de duas redes neurais: a de "Modulo" e a de "Ângulo",
respectivamente. Maiores detalhes sobre a estrutura interna destas redes são fornecidos
no capítulo 3. A "Rede de Módulo" realiza o cálculo da função )( ∗Vf , enquanto a
"Rede de Ângulo" realiza os cálculos da função )( ∗αAg para a fase A, )( ∗αBg para a
fase B e )( ∗αCg para a fase C. As saídas )( ∗Vf e )( ∗αg , dentro do sub-bloco
"Cálculo de Ton", são relacionadas com o período de amostragem dos sinais PWM ( sT )
conforme as equações 2.19 a 2.21.
4)()( **
sAONA TgVfT +⋅=− α (2.19)
4)()( **sBONB TgVfT +⋅=− α (2.20)
4)()( **sCONC TgVfT +⋅=− α (2.21)
Capítulo 2 – Controle de Motor de Indução com Orientação de Campo Estatórico__
20
Os três tempos de "turn-on" ( ONAT − , ONBT − , ONCT − ) são utilizados como entradas
para o sub-bloco "Contadores" na figura 2.6. Neste sub-bloco está um contador do tipo
crescente/decrescente, responsável por gerar uma forma de onda triangular de período
“ ST ”. Comparando-se esta onda triangular com os tempos de "turn-on" obtêm-se os
sinais PWM de saída, conforme ilustrado na figura 2.7.
Figura 2. 7 - Exemplo de geração de sinais PWM.
Capítulo 2 – Controle de Motor de Indução com Orientação de Campo Estatórico__
21
A figura 2.7 apresenta um exemplo de geração de onda triangular de referência
simétrica e com instante de pico localizado em “Ts/2”. Os tempos “ ONAT − ”, “ ONBT − ”,
“ ONCT − ” são representados na figura por linhas tracejadas horizontais. As saídas PWM
“ AS ”,“ BS ”,“ CS ” estão representadas como ondas em vermelho, enquanto suas opostas
(“ AS ”,“ BS ”,“ CS ”) são representas por ondas em cor azul. Conforme pode ser notado
da figura 2.7, a geração de um pulso em uma saída ocorre somente quando o valor de
contagem (na triangular) for maior que a linha horizontal representando o tempo de
“turn-on” relacionado com a saída. Variações no comprimento dos pulsos são obtidas
deslocando-se para cima ou para baixo as linhas tracejadas horizontais, representando
dos tempos de ativação.
2.5 Considerações finais
O controlador do motor de indução descrito de forma geral, neste capítulo, é
composto por vários blocos formando um sistema em malha fechada, executando um
trabalho computacionalmente intensivo e exigente de alta velocidade de processamento.
Esta modelagem do sistema, desenvolvida em trabalhos anteriores, visa unificar em uma
abordagem uma estratégia de modulação vetorial e uma estratégia de estimação das
grandezas do motor, ambas baseadas em redes neurais artificiais. Antes de ser
apresentada a contribuição deste trabalho, ou seja, a arquitetura de hardware do
protótipo desenvolvido, o capítulo 3 detalha as estruturas internas das redes neurais de
modulação e estimação mencionadas. Estas estruturas representam bagagem de
conhecimento, desenvolvida em trabalhos anteriores, que serviu como base para o início
deste trabalho.
Capítulo 3 – Estrutura interna dos blocos "Controle PWM" e "Estimador de Fluxo"_
22
CAPÍTULO 3 - ESTRUTURA INTERNA DOS BLOCOS “CONTROLE PWM SPACE-VECTOR BASEADO EM REDES NEURAIS” E “ESTIMADOR DE FLUXO”
3.1 Introdução
O capítulo 2 apresentou de forma geral todos os blocos envolvidos no
funcionamento do controlador do motor de indução deste trabalho. Neste capítulo, serão
descritas as estruturas internas dos blocos “Controle PWM Space-Vector Baseado em
Redes Neurais” e “Estimador de Fluxo”. No capítulo 4, são apresentadas arquiteturas de
hardware para implementação de todos os blocos do “Subsistema de Processamento de
Sinais”. A seção a seguir inicia o capítulo, apresentando a modelagem neural do bloco
“Controle PWM Space-Vector Baseado em Redes Neurais”.
3.2 Estrutura do bloco “Controle PWM Space-Vector Baseado em Redes Neurais”
Conforme já mencionado no capítulo 2, o bloco “Controle PWM Space-Vector
Baseado em Redes Neurais” traduz valores de magnitude e ângulo de referência em
comandos de entrada em condução (turn-on) e bloqueio (turn-off). Estes comandos são
enviados como pulsos PWM para chaves eletrônicas presentes no módulo "Inversor
baseado em IGBT" ("Subsistema de circuito de potência"). A modelagem do bloco
“Controle PWM Space-Vector Baseado em Redes Neurais” foi inicialmente
desenvolvida em [25] e [26]. Nestes trabalhos foram obtidas expressões para os tempos
de condução e bloqueio através de testes do algoritmo SVM. Estas expressões, depois
de simplificadas e unificadas permitiram expressar os tempos de condução e bloqueio
de forma gráfica como funções do ângulo de referência de modulação “ eθ ”. A figura
3.1 apresenta exemplos destes gráficos de tempo de ativação para três regiões de
modulação diferentes. As curvas da figura 3.1 foram geradas utilizando um período de
amostragem “Ts” igual a 100µs (um dos valores preestabelecidos em [25] e [26]). Três
regiões de modulação foram consideradas: Submodulação, Sobremodulação-Modo 1 e
Sobremodulação-Modo2.
Capítulo 3 – Estrutura interna dos blocos "Controle PWM" e "Estimador de Fluxo"_
23
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 20
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5x 10
-5
Ângulo de referência em função de Pi
Taon
(s)
SubmodulaçãoSobremodulação-Modo1Sobremodulação-Modo2
Figura 3. 1 - Gráficos de tempo de ativação gerados por SVM.
O que diferencia uma região de modulação da outra é o chamado índice de
modulação (m). O índice de modulação varia entre 0 e 1, sendo expresso pela equação
3.1.
VdVm⋅⋅
=∗
2π (3.1)
Na equação 3.1 o índice de modulação “m” está relacionado com a magnitude da
tensão de referência “ ∗V ” e com a tensão de “Link CC” (ou “Vd”, como já apresentado
na descrição do “Subsistema de Circuito de Potência” no capítulo 2). A região de
Submodulação é definida pelo intervalo 0<m<0,907, a região de Sobremodulação-Modo
1 é definida pelo intervalo 0,907<m<0,952, e a região de Sobremodulação-Modo 2 pelo
intervalo 0,952<m<1. Graficamente, as diferenças entre as regiões de modulação ficam
evidentes, conforme pode ser notado na figura 3.1. A curva de tempo de ativação para
região de Submodulação (azul) não apresenta “achatamentos” como ocorre para os
valores de “Ta-on” iguais a 0 e “Ts/2” na curva para a região de “Sobremodulação-
Capítulo 3 – Estrutura interna dos blocos "Controle PWM" e "Estimador de Fluxo"_
24
Modo1” (verde). Já a curva para região de “Sobremodulação-Modo 2” (vermelha)
apresenta-se praticamente quadrada, e também está limitada entre 0 e “Ts/2”.
Utilizando os dados de tempo de ativação mencionados, as redes neurais
utilizadas neste trabalho foram modeladas e treinadas em [25] e [26] para depois
comporem o bloco “Controle PWM Space-Vector Baseado em Redes Neurais”. Um
diagrama destas redes é apresentado na figura 3.2.
Figura 3. 2 - Diagrama do Controle PWM Space-Vector Baseado em Redes Neurais.
A figura 3.2 apresenta tanto a “Rede de módulo” (rede no topo da figura) quanto
à “Rede de ângulo”, como redes MLP (Multi Layer Perceptron), treinadas utilizando o
algoritmo “Back-Propagation”. A “Rede de módulo” é composta por uma camada de
entrada com três neurônios e uma camada de saída composta por um neurônio. Todos os
neurônios possuem função de ativação sigmóide e trabalham com pesos sinápticos
fixos. Já a “Rede de ângulo” apresenta estrutura mais complexa, contando com 18
neurônios na camada de entrada e três neurônios na camada de saída. Também nesta
rede todos os neurônios ponderam suas entradas com pesos fixos e geram saídas a partir
de funções de ativação sigmoidais. Operações de normalização de entradas e
desnormalização de saídas finais, realizadas pelas duas redes neurais, traduzem valores
manipulados dentro das redes para escalas correspondentes ao restante do sistema.
Capítulo 3 – Estrutura interna dos blocos "Controle PWM" e "Estimador de Fluxo"_
25
As saídas pós-normalizadas da “Rede de módulo” ( )( *Vf ) e da “Rede de
ângulo” ( )( ∗αAg , )( ∗αBg e )( ∗αCg ) são utilizadas juntamente com a entrada “Ts/4”
em três módulos multiplicadores e acumuladores, obtendo-se como resultados os
valores de tempo de ativação: “ ONAT − ”, “ ONBT − ”, “ ONCT − ”. Estes tempos após passarem
por blocos que os limitam entre 0 e “Ts/2”, são aplicados aos “Contadores UP/DOWN”
para geração dos sinais PWM, conforme já explicado no capítulo 2. Os blocos de
limitação entre 0 e “Ts/2” causam os “achatamentos” observados nas curvas de tempo
de ativação das regiões de Sobremodulação dos modos 1 e 2.
No módulo "Inversor baseado em IGBT" ("Subsistema de circuito de potência"),
as saídas de PWM “ AS ”, “ BS ”, “ CS ”, “ AS ”, “ BS ”, “ CS ” acionam IGBTs pertencentes
aos três “ramos” diferentes, conforme mostrado na figura 3.3.
Figura 3. 3 - Interconexão das saídas PWM com inversor de potência e MIT.
Na figura 3.3 a saída “ AS ” e sua oposta “ AS ” formam o ramo correspondente à
fase A do sistema, o par “ BS ” e “ BS ” corresponde à fase B, enquanto “ CS ” e “ CS ”
representam a fase C, aplicadas ao motor de indução (MIT).
Maiores detalhes sobre técnicas e ferramentas de programação para modelagem
e treinamento da “Rede de módulo” e da “Rede de ângulo” estão em [25] e [26]. A
seção a seguir abre a segunda parte deste capítulo, descrevendo a estrutura do bloco
“Estimador de Fluxo”.
Capítulo 3 – Estrutura interna dos blocos "Controle PWM" e "Estimador de Fluxo"_
26
3.3 Estrutura do bloco “Estimador de Fluxo”
Informações sobre a planta controlada, no caso o motor de indução, devem ser
obtidas para permitir que um controlador em malha fechada possa alterar
adequadamente parâmetros controlados desta planta. A estimação é um método indireto
de aquisição de informação sobre a planta, substituindo o uso de sensores considerados
inviáveis. O bloco “Estimador de Fluxo” estima o fluxo estatórico do motor de indução
através da estrutura de rede apresentada na figura 3.4, idealizada anteriormente em [25].
Figura 3. 4 - Redes recorrente e MLP compondo a "RNN-MLP".
Capítulo 3 – Estrutura interna dos blocos "Controle PWM" e "Estimador de Fluxo"_
27
A figura 3.4 apresenta um sistema híbrido (rede RNN-MLP), composto por duas
redes neurais interligadas. O propósito deste sistema é a estimação de fluxo de estator
através de uma estratégia de integração utilizando estágios cascateados de filtros passa
baixa (PCLPF), modelados utilizando redes neurais. Segundo [25], esta estrutura de
PCLPFs permite a realização de integrações de tensões de entrada dentro de uma larga
faixa de freqüência, sem o efeito indesejável de deslocamento (offset) CC na resposta.
A rede neural na parte inferior da figura 3.4, uma MLP, é composta por uma
camada de entrada com três neurônios com função de ativação sigmóide, e uma camada
de saída com quatro neurônios com função de ativação linear. Esta rede recebe uma
única entrada, " eω " (freqüência de rotação), gerada e normalizada pelo bloco
"Estimador de Sinais", apresentado no capítulo 2, seção 2.2. A cada novo início de ciclo
de trabalho, a rede MLP usa " eω " para gerar, como saída, quatro sinais representados
pesos: " 11W ", " 13W ", " 21W ", " 22W ". Para efetuar seus cálculos, esta rede MLP conta
com uma matriz de pesos sinápticos fixos, obtidos por treinamento realizado em
trabalho anterior [25].
A rede localizada na parte superior da figura 3.4 (no interior do retângulo
tracejado) corresponde a uma RNN (rede neural recorrente). Esta rede possui como
entradas pesos sinápticos variáveis, ou seja, as saídas " 11W ", " 13W ", " 21W ", " 22W " da
rede MLP. Como entradas, esta rede recebe as tensões “ Φ−∠''sqsV ” e “ Φ−∠''s
dsV ”,
resultantes dos cálculos do bloco “Transformação Trifásica para DQ” (à esquerda na
figura 3.4).
O bloco “Transformação Trifásica para DQ” realiza uma transformação de
espaço de representação das entradas da rede “RNN-MLP”. Esta transformação
(transformada de Park) obtém as tensões “ Φ−∠''sqsV ” e “ Φ−∠''s
dsV ”, a partir de
entradas medidas diretamente dos terminais de entrada do motor de indução do sistema.
Estas entradas são as correntes de fase “ AI ”, “ BI ”, e as tensões de fase “ AV ”, “ BV ”,
“ CV ”. Além destas entradas, é utilizado um parâmetro construtivo do motor, ou seja, a
resistência de estator ( SR na figura 3.4), obtida por meio de ensaios práticos. Devido à
necessidade prática de pré-filtragem dos sinais de tensões e correntes utilizados como
entradas pelo bloco “Transformação Trifásica para DQ”, as tensões de saída "" qsV e
“ dsV ” estão representadas na figura 3.4 com um deslocamento de fase “-Φ ”.
Capítulo 3 – Estrutura interna dos blocos "Controle PWM" e "Estimador de Fluxo"_
28
A rede RNN-MLP é sistema com memória, ou seja, utilizam em seus cálculos
atuais valores obtidos, anteriormente, pela própria rede. Esta característica de trabalhar
com dados atrasados no tempo é representada pelos blocos “ 1−Z ” na figura 3.4. Além
disso, as funções de ativação dos neurônios da rede “RNN” não são representadas na
figura 3.4, já que estes neurônios correspondem a blocos multiplicadores de duas
entradas.
Como saídas, a rede RNN gera os fluxos “ dsΨ ” e “ qsΨ ”, representando
projeções nos eixos “d” e “q” do fluxo de estator no instante de amostragem, pelo bloco
“Estimador de Fluxo”, das entradas “ AI ”, “ BI ”, “ AV ”, “ BV ”, “ CV ”.
Detalhes sobre as técnicas de treinamento e ferramentas de modelagem,
utilizadas na criação das redes do bloco “Estimador de Fluxo” são fornecidos em [25].
Resultados de operação destas redes são apresentados no capítulo 5 deste trabalho.
3.4 Considerações finais O capítulo 4 voltará a descrever todos os blocos do "Subsistema de
processamento de sinais" analisados neste capítulo e no capítulo 2. Porém, haverá
enfoque para a descrição da arquitetura e do funcionamento do hardware utilizado na
implementação de cada um desses blocos. Tal enfoque faz uso da teoria de máquinas de
estados finitos, de conceitos relacionados com linguagens de descrição de hardware
(VHDL), e de conceitos sobre representação numérica em ponto flutuante.
Detalhes adicionais sobre algoritmo SVM e estimação de sinais em controle
“sensorless” podem ser encontradas em [25] e [26].
Capítulo 4 – Descrição do hardware do sistema proposto______________________
29
CAPÍTULO 4 - DESCRIÇÃO DO HARDWARE DO SISTEMA PROPOSTO
4.1 Introdução Neste capítulo, o "Subsistema de Processamento de Sinais" é novamente
analisado, porém, o enfoque está na descrição da arquitetura e do funcionamento do
hardware desenvolvido para implementá-lo. Este hardware representa a parte
experimental, isto é, o protótipo propriamente dito do trabalho. Os resultados
experimentais sobre seu funcionamento serão apresentados no capítulo 5.
4.2 Descrição geral O hardware do "Subsistema de processamento de sinais" é um protótipo
fisicamente composto por três placas de circuito impresso (PCIs): o "Subsistema
Digital", o "Subsistema Analógico", e a "Interface com o Usuário". O "Subsistema
Digital" representa o circuito de processamento digital central, contendo o DSP (um
TMS320C6711 da Texas Instruments), o FPGA (um Stratix 2 EP2S60F484C3 da
Altera), um conversor analógico para digital (ADS8364), além de outros circuitos de
suporte (como memórias, registrador paralelo, portas lógicas, gerador de sinal de clock,
etc.).
O "Subsistema Analógico" corresponde a um conjunto de circuitos analógicos
divididos para atender duas tarefas distintas: leitura e condicionamento de sinais de
tensões e correntes obtidos do MIT, e circuito de comando de gate das chaves de
potência do "Inversor baseado em IGBT". A função de leitura é realizada utilizando
sensores de tensão AC (transformadores de medição) e sensores de corrente por efeito
Hall. A função de condicionamento de sinais é realizada por filtros "passa-baixa"
construídos utilizando amplificadores operacionais. Já a função de gatilho das chaves de
potência do Inversor é realizada por circuitos opto-acopladores para isolação e
conversão de níveis de tensão de gatilho (do nível digital 3,3V para o nível de potência
15V).
A "Interface com o Usuário" representa um circuito impresso com display de
cristal líquido (LCD) e teclado. A partir deste circuito o usuário visualiza o estado do
sistema e entra com parâmetros de funcionamento desejados. O diagrama da figura 4.1
apresenta uma idéia geral da arquitetura do protótipo proposto neste trabalho.
Capítulo 4 – Descrição do hardware do sistema proposto______________________
30
Figura 4. 1 - Protótipo do controlador do MIT baseado em redes neurais.
Na figura 4.1 são evidenciadas as três placas de circuito impresso
mencionadas: o "Subsistema Digital", o "Subsistema Analógico" e a "Interface com o
Usuário". Além disso, estão representados os componentes de potência "Inversor
baseado em IGBT" e MIT (máquina de indução trifásica).
Os números 1, 2, 3, e 4 circunscritos, presentes na figura 4.1, realçam algumas
das interligações importantes. O número 1 representa o conjunto de seis saídas digitais
PWM ( AS , BS , CS e suas opostas), vindas do FPGA, servindo como circuito de
comando das chaves de potência do inversor por meio dos circuitos opto-acopladores no
"Subsistema Analógico". O número circunscrito 3 representa as próprias ligações dos
circuitos opto-acopladores no "Subsistema Analógico" com os circuitos de
acionamentos dos IGBTs (chaves) no inversor de potência. O número 2 representa o
conjunto de sinais de tensão e corrente da MIT, lidos pelos sensores no "Subsistema
Analógico" e convertidos para digital pelo conversor (ADS8364) no "Subsistema
Digital". O número 4 representa a interligação do "Inversor baseado em IGBT" com a
MIT e, além disso, a interligação dos terminais de entrada da MIT com os sensores de
Capítulo 4 – Descrição do hardware do sistema proposto______________________
31
tensão e corrente no "Subsistema Analógico". O número 5 representa o barramento de
controle e de dados interligando a "Interface com o Usuário" com a placa do
"Subsistema Digital".
Conforme mostrado na figura 4.1, juntamente com o DSP e o FPGA, o
"Subsistema Digital" ainda inclui os módulos importantes: “SDRAM”, “FLASH”,
“EPCS64”, e “ADS8364”. A “SDRAM” constitui uma unidade de memória volátil para
armazenamento de variáveis manipuladas pelo sistema operativo do DSP e de variáveis
utilizadas nos cálculos matemáticos do DSP. O módulo de memória não volátil
“FLASH” armazena o programa executado pelo DSP. Este programa é transferido para
o DSP através de um processo de boot do próprio DSP. O módulo “EPCS64” também é
uma memória não volátil, porém, sua função é armazenar um arquivo de configuração
enviado para o FPGA durante o processo de boot do FPGA. Por fim, o módulo
“ADS8364” representa, como já mencionado, o conversor analógico para digital. Este
conversor digitaliza cinco sinais analógicos vindos do “Subsistema Analógico” a cada
ordem de início enviada pelo FPGA. Os resultados destas conversões são utilizados pelo
FPGA em seus cálculos internos. Os módulos mencionados brevemente nesta seção de
descrição geral serão descritos com mais detalhes nas seguintes, conforme for sendo
oportuno.
O enfoque deste capítulo está na descrição do hardware do protótipo do
controlador do motor de indução utilizando como base a discussão dos capítulos 2 e 3.
Seguindo esta idéia, os blocos do controlador do MIT serão descritos seguindo a ordem
obedecida no capítulo 2, ou seja: "Estimador de Fluxo", "Estimador de Sinais",
"Controlador", e "Controle PWM Space-Vector Baseado em Redes Neurais".
Fisicamente, estes são sistemas implementados pelo núcleo de processamento DSP mais
FPGA, pertencente ao “Subsistema Digital”. Porém, como um ciclo completo de
controle do MIT envolve também o "Subsistema Analógico" e a "Interface com o
Usuário", serão inicialmente apresentados subsistemas não mencionados no capítulo 2.
Na seção a seguir será descrito o "Subsistema Analógico" do controlador do
motor de indução. Seguindo um encadeamento de sistemas, nas seções posteriores serão
descritos os blocos do “Subsistema Digital” em si. O objetivo é finalizar o capítulo com
uma descrição da malha fechada, compondo o “Subsistema de Processamento de
Sinais” como um todo.
Capítulo 4 – Descrição do hardware do sistema proposto______________________
32
4.3 Subsistema Analógico (medição e condicionamento de sinais)
Cada ciclo de trabalho do controlador do motor de indução proposto inicia-se
pela medição de tensões e correntes dos terminais de entrada do motor controlado. Esta
tarefa é realizada pelos elementos na placa de circuito impresso do "Subsistema
Analógico". Basicamente, os circuitos do “Subsistema Analógico” realizam medição e
condicionamento de sinais coletados dos terminais de entrada da MIT. A figura 4.2
mostra um diagrama dos estágios envolvidos para a medição de tensões de entrada da
MIT.
Figura 4. 2 - Medição de tensão de entrada da MIT.
A figura 4.2 representa um diagrama de circuito de medição de tensão de fase na
entrada do MIT. O protótipo real replica o sistema da figura 4.2 três vezes, uma vez
para cada tensão trifásica necessária ( aV , bV , cV ). No diagrama da figura 4.2, o estágio 1
representa um sensor de tensão, fisicamente representado no protótipo por um
transformador de medição que reduz a tensão de fase lida, de 220V AC para 6V AC. Já
o estágio 2 apresenta uma dupla função, a primeira consiste em atenuar possíveis
componentes de alta freqüência do sinal através de um filtro passa-baixa com freqüência
de corte próxima a 300Hz. A segunda função consiste em atenuar a amplitude do sinal
medido, tornando seu valor de pico a pico dentro da faixa de -2,5V a +2,5V.
Inevitavelmente, a existência de um filtro como o do estágio 2 causa um deslocamento
de fase de 180 graus no sinal medido. Para corrigir este problema, no protótipo final foi
incluído um “Estágio Inversor” (circuito com amplificador operacional na entrada do
filtro do estágio 2 na figura 4.2). No estágio 3 o sinal filtrado fornecido pelo estágio 2 é
deslocamento da faixa de -2,5V a +2,5V para a faixa de 0 a 5V. Este deslocamento do
sinal para uma faixa acima de 0 é uma exigência para as entradas analógicas do
Capítulo 4 – Descrição do hardware do sistema proposto______________________
33
conversor ADS8364. Detalhes adicionais dos circuitos de medição de tensão estão no
apêndice A deste trabalho.
De forma análoga ao descrito para medições de tensão, medições de corrente
também envolvem estágios, conforme mostrado na figura 4.3.
Figura 4. 3 - Medição de corrente.
Na figura 4.3 o estágio 1 representa um sensor Hall (LTS-15NP) alimentado por
5V e que transforma o valor de corrente de fase medido em um valor de tensão
proporcional. Este valor de tensão já está dentro da faixa de 0 a 5V e é filtrado pelo
circuito passa-baixa do estágio 2 após passagem pelo “Estágio Inversor” anterior. O
circuito da figura 4.3 é replicado duas vezes na placa de circuito impresso do
"Subsistema Analógico". Através desta replicação, é possível medir as correntes de fase
aI e bI , sendo cI obtida analiticamente conforme já mencionado no capítulo 2. Os
circuitos completos para medição de corrente de fase podem ser encontrados no
apêndice A deste trabalho.
O “Subsistema Analógico” realiza um processo de adequação das amplitudes
dos sinais de corrente e tensão para compatibilidade com o padrão de entrada do
conversor A/D. Porém, para possibilitar o processamento realizado pelos subsistemas
que recebem estes sinais, é necessária a conversão destes sinais para representação
digital. Tal tarefa é realizada pelo conversor descrito na seção a seguir, o ADS8364.
Capítulo 4 – Descrição do hardware do sistema proposto______________________
34
4.4 Conversão analógica para digital (ADS8364)
Os sinais condicionados fornecidos pelos circuitos de medição descritos na
seção 4.3 (ou seja, os sinais proporcionais a aI , bI , aV , bV , e cV já condicionados) vão
para o conversor analógico para digital ADS8364, situado na placa de circuito impresso
do "Subsistema Digital". Este conversor possui seis entradas analógicas diferenciais no
total, e é capaz de converter simultaneamente estas seis entradas analógicas para valores
digitais de 16 bits (porém apenas 14 bits significativos), armazenando-os no próprio
conversor. A conversão para digital é necessária para que os sinais de medição
analógicos possam ser depois processados pelos próximos sistemas compondo o
"Estimador de Fluxo", situados dentro do FPGA (ainda na placa do "Subsistema
Digital"). A figura 4.4 representa de forma geral a interligação dos sinais analógicos de
entrada condicionados aI , bI , aV , bV , e cV com o conversor ADS8364.
Figura 4. 4 - Interligação com o conversor ADS8364.
Na figura 4.4 os cinco sinais analógicos já condicionados são representados por
senóides atenuadas e com deslocamento DC de +2,5V em relação ao GND. O conversor
ADS8364 está representado somente por cinco de seus circuitos (ou canais) internos de
amostragem e conversão. As entradas na figura 4.4 estão interligadas com o ADS8364
no chamado modo "Single-Ended Input".
Capítulo 4 – Descrição do hardware do sistema proposto______________________
35
Quanto ao funcionamento, basicamente cada operação de conversão se inicia
quando três sinais de "HOLD" de entrada do conversor ADS8364 são colocados em
nível 0 pelo FPGA. Aproximadamente depois de 16 ciclos de um sinal de clock
fornecido ao conversor, os dados resultantes desta conversão são carregados para
registradores internos no ADS8364. Com uma freqüência de clock máxima de 5MHz, o
conversor ADS8364 é capaz de capturar 250K amostras de cada canal de entrada por
segundo (considerando a ocorrência de uma conversão a cada 20 períodos do clock de
5MHz).
No final de cada conversão do ADS8364, o FPGA envia sinais de controle para
uma interface paralela assíncrona do conversor, e palavras de 16 bits nos registradores
internos do ADS8364, resultantes da conversão, vão sendo enviadas ao FPGA uma de
cada vez. O clock de 5 MHz mencionado não é utilizado durante esta troca de dados
entre o FPGA e o conversor, pelo próprio fato de se estar utilizando uma interface
assíncrona nesta transferência. Na realidade, este sinal de 5 MHz só necessário para o
funcionamento dos circuitos de conversão dentro do ADS8364. Conforme será
explicado adiante, sinais de clock de 10 MHz e 20 MHz são utilizados em máquinas de
estado dentro do FPGA para controlar a interface assíncrona do conversor ADS8364 e
trazer as palavras de 16 bits para o FPGA.
Cada palavra de 16 bits representa um número binário em complemento de dois,
correspondente a um valor analógico dentro da faixa de 0 a 5V. A representação em
complemento de dois divide a faixa total de representação em 16 bits ao meio, com uma
metade representando números acima da referência 2,5V e a outra representando
números abaixo dessa referência. A tabela 4.1 mostra como o ADS8364 representa em
16 bits alguns valores importantes.
Tabela 4. 1 - Codificação em 16 bits das entradas analógicas do ADS8364. Código de saída em 16 bits Tensão representativa
0111111111111111b 4,999924V
... ...
000000000000001b 2,500038V
0000000000000000b 2,5V
1111111111111111b 2,499962V
... ...
1000000000000000b 0V
Capítulo 4 – Descrição do hardware do sistema proposto______________________
36
Com os sinais quantizados de tensões e correntes já disponibilizados na
representação digital, entra em ação o bloco “Estimador de Fluxo”, descrito em maiores
detalhes na seção a seguir.
4.5 Hardware do bloco Estimador de Fluxo
O hardware do bloco "Estimador de Fluxo" é composto por três subsistemas
digitais principais: a "Interface com ADS", o "Módulo de Transformação Trifásica", e a
"Rede Recorrente Híbrida com MLP". Estes subsistemas estão interligados
internamente em um FPGA “Stratix 2”. A função e a estrutura destas várias unidades
necessárias à estimação de fluxo são descritas nesta seção.
4.5.1 Interface com ADS
As palavras de 16 bits resultantes das conversões do dispositivo ADS8364 são
trazidas dos registradores internos deste dispositivo para dentro do FPGA por meio de
uma unidade residente no próprio FPGA. Esta unidade, a "Interface com ADS",
representa a primeira interação de um sistema interno do FPGA com o ambiente
exterior. Um diagrama de entradas e saídas da "Interface com ADS" é mostrado na
figura 4.5.
rel
rel_maior
anterior
dado[15..0]
CS
RD
HOLD
proximo
A[2..0]
leitura0[31..0]
leitura1[31..0]
leitura2[31..0]
leitura3[31..0]
leitura4[31..0]
interf ace_com_ADS
inst6
Figura 4. 5 - Unidade "Interface com ADS", dentro do FPGA. A unidade apresentada na figura 4.5 representa um sistema descrito em VHDL e
que, basicamente, funciona como uma máquina de estados finitos. Sua principal função
Capítulo 4 – Descrição do hardware do sistema proposto______________________
37
é adquirir e transformar as palavras resultantes das conversões do ADS8364 em valores
de 32 bits padrão IEEE 754 (representação binária em ponto flutuante).
Nas laterais da figura 4.5 estão as entradas e saídas da unidade. Um novo ciclo
de operação da "Interface com ADS" é sempre iniciado por uma borda de subida (pulso)
aplicada na entrada "anterior". Este pulso de comando é sempre enviado pelo
dispositivo mestre da placa de circuito do "Subsistema Digital", ou seja, o DSP
TMS320C6711 (não presente na figura 4.5). Já a entrada "rel_maior" (figura 4.5) recebe
um sinal de clock de 20MHz, sinal que serve de referência para definir os momentos em
que a "Interface com ADS" amostra a entrada "anterior". A cada borda de subida do
sinal "rel_maior" um processo em VHDL na "Interface com ADS" verifica se o estado
da entrada "anterior" é igual a 1. Em caso afirmativo é iniciado um conjunto de
transições de estados representando um ciclo de operação completo da "Interface com
ADS". Estas transições entre estados estão sincronizadas com um sinal de clock de
10MHz aplicado na entrada "rel." (figura 4.5). Optou-se pela utilização de uma menor
freqüência para "rel" (10MHz em vez de 20MHz) devido às restrições de temporização.
Se as transições entre estados da "Interface com ADS" ocorressem a partir de um clock
de 20MHz, acabariam sendo enviados comandos para ADS8364 que desobedeceriam
aos limites de operação do próprio ADS8364. Ambos os sinais de clock (10MHz e
20MHz) fisicamente são gerados por um circuito gerador de clock dentro do próprio
FPGA, utilizando como referência um sinal de clock enviado para o FPGA pelo DSP
TMS320C6711 do protótipo.
Prosseguindo com a descrição entrada-saída da figura 4.5, ainda aparecem os
sinais "dado[15..0]", "HOLD", "A[2..0]", "RD", e "CS". Estes representam sinais de
dados e de controle interligando fisicamente a "Interface com ADS" no FPGA com a
interface paralela assíncrona do dispositivo externo ADS8364. Em "dado[15..0]"
chegam as palavras de 16 bits resultantes das conversões do ADS8364. O sinal "HOLD"
representa um comando que a "Interface com ADS" envia para o ADS8364 para iniciar
uma nova conversão. Fisicamente "HOLD" está interligado às três entradas de início de
conversão "HOLDA", "HOLDB" e "HOLDC" do ADS8364 (ver detalhes nos
apêndices). Os sinais restantes "A[2..0]", "RD", e "CS", representam comandos de
endereço e ativação de escrita que a "Interface com ADS" envia para interface paralela
assíncrona do conversor ADS8364.
Observando o lado direito da figura 4.5, visualiza-se mais acima a saída
chamada "próximo". Esta saída emite um pulso em nível lógico 1 quando a "Interface
Capítulo 4 – Descrição do hardware do sistema proposto______________________
38
com ADS" termina todo um ciclo de operação. Esta sinalização avisa outros sistemas
no FPGA que as saídas da "Interface com ADS" estão estabilizadas e podem ser lidas.
Ainda à direita da figura 4.5, podem ser vistas cinco saídas de 32 bits
"leitura0[31..0]" a "leitura4[31..0]". Estas saídas são representações, em ponto flutuante
(IEEE 754), das palavras de 16 bits recebidas do conversor ADS8364. A "Interface com
ADS" converte palavras de 16 bits para 32 bits utilizando a equação 4.1.
12*2)12*( 168364_16
0168364_1632 +=∗+= −−
ADSbitsADSbitsbits ValorValorValor (4.1)
A equação 4.1 representa em ponto flutuante um número em ponto fixo sem
parte fracionária e de 16 bits ( 8364_16 ADSbitsValor ), inicialmente deslocando 16 casas para
direita deste valor em ponto fixo. Desta forma, isto faz com que o valor em ponto fixo
represente a mantissa de um valor em ponto flutuante. A adição do valor 1 na equação
4.1 é necessária pois a representação em ponto flutuante IEEE 754 normalizada
pressupõe a existência do dígito binário 1 da unidade, mesmo que este dígito não
apareça na mantissa da representação binária do número. O bit de sinal do número em
ponto flutuante gerado é igual a zero para amostras de tensões ou de correntes com
módulo 0 ou positivo (ou seja, maior ou igual a 2,5V após condicionamento). Já
amostras de tensões ou correntes com módulo negativo (abaixo de 2,5V após
condicionamento) são representadas utilizando um bit de sinal igual a um. O expoente
do número em ponto flutuante gerado é definido como sendo igual a " b01111111 " (zero
ou 02 no padrão IEEE 754 de 32 bits).
Números em " 8364_16 ADSbitsValor " com módulo negativo (abaixo de 2,5V após
condicionamento) devem ser pré-processados pela "Interface com ADS" antes da
aplicação da equação 4.1. Estes números, na realidade, são recebidos do conversor
ADS8364 como números negativos na representação binária em complemento de 2.
Durante o pré-processamento a "Interface com ADS" utiliza a equação 4.2 para inverter
bit a bit a variável 8364_16 ADSbitsValor , obtendo 8364_16 ADSbitsValor , e depois adicionar este
resultado com o valor " b0000010000000000 ".
bADSbitsfinalbits ValorValor 00000100000000008364_16_16 += (4.2)
Capítulo 4 – Descrição do hardware do sistema proposto______________________
39
O número em ponto fixo representado por " finalbitsValor _16 " consiste no valor
realmente utilizado como entrada na equação 4.1 para casos de palavras de 16 bits em
ponto fixo, representando amostras de medições com módulos negativos.
No ciclo de trabalho do bloco "Estimador de Fluxo", os valores em ponto
flutuante produzidos pela "Interface com ADS" são direcionados para os subsistemas
seguintes. Estes subsistemas são responsáveis por operações como transformação
trifásica (equações 2.1 a 2.3) e estimação das componentes do fluxo de estator nos eixos
dq (equações 2.6 e 2.7). Detalhes adicionais são fornecidos na seção a seguir.
4.5.2 Transformação Trifásica e Rede Recorrente Híbrida com MLP
Para finalizar um ciclo de operação do bloco "Estimador de Fluxo" entra em
operação o último de seus subsistemas, a "Rede Recorrente Híbrida com MLP" (RNN-
MLP). Uma descrição detalhada da estrutura interna da rede “RNN-MLP” foi
apresentada no capítulo3, seção 3.3. A figura 4.6 apresenta a rede “RNN-MLP” dentro
do FPGA, implementada em VHDL utilizando o software Quartus 2 da Altera.
A estrutura complexa apresentada na figura 4.6 organiza a rede RNN-MLP
como um conjunto de processadores digitais (neurônios) interligados, formando, a
primeira vista, duas camadas. Somente existem duas camadas de neurônios na figura
4.6, pois a segunda camada da rede MLP (mostrada com quatro neurônios na seção 3.3
do capítulo 3) utiliza, na figura 4.6, os mesmos processadores que compõem a rede
neural RNN. Esta estratégia de compartilhamento de recursos consiste em uma
otimização do espaço utilizado em hardware. Além dos neurônios, na figura 4.6 estão
destacados os módulos “Controlador de Camada 01” e “Controlador de Camada 02”.
Cada um destes módulos é responsável por fazer com que os cálculos de cada neurônio
da camada gerenciada pelo controlador sejam realizados paralelamente. A presença
destes controladores permite, ainda, sincronizar o fluxo de dados entre camadas de uma
rede, utilizando uma estratégia de serialização do fluxo de dados entre as camadas
adjacentes. De acordo com esta estratégia, deve-se garantir que o controlador da camada
02 somente ative sua camada de neurônios quando o controlador da camada 01 tiver
avisado sobre o término dos cálculos da camada 01.
Capítulo 4 – Descrição do hardware do sistema proposto______________________
40
GNDOmega[31..0] INPUT
GNDrel INPUT
GNDcontrole INPUT
GNDRs[31..0] INPUT
GNDleitura0[31..0] INPUT
GNDleitura1[31..0] INPUT
GNDleitura2[31..0] INPUT
GNDleitura3[31..0] INPUT
GNDleitura4[31..0] INPUT
PSI_ds[31..0]OUTPUT
PSI_qs[31..0]OUTPUT
prontoOUTPUT
iqssl[31..0]OUTPUT
idssl[31..0]OUTPUT
Vqssll[31..0]OUTPUT
Vdssll[31..0]OUTPUT
data2x[31..0]data1x[31..0]data0x[31..0]
sel[1..0]
result[31..0]
lpm_mux3
inst8
rel
anterior
estado[4..0]
proximo
controlador_camada_sigmoid_1e
inst3
rel
anterior
entradas[1..0]
estado[4..0]
proximo
controlador_camada_linear_3e
inst20
relcontagem[4..0]entrada[31..0]E1_rec[31..0]E2_rec[31..0]
P_rec[31..0]
saida[31..0]W[31..0]
neuronio_linear_com_peso_01
inst1
relcontagem[4..0]entrada[31..0]E1_rec[31..0]E2_rec[31..0]
P_rec[31..0]
saida[31..0]W[31..0]
neuronio_linear_com_peso_02
inst2
relcontagem[4..0]entrada[31..0]E1_rec[31..0]E2_rec[31..0]
P_rec[31..0]
saida[31..0]W[31..0]
neuronio_linear_com_peso_03
inst4
relcontagem[4..0]entrada[31..0]E1_rec[31..0]E2_rec[31..0]
P_rec[31..0]
saida[31..0]W[31..0]
neuronio_linear_com_peso_04
inst5
relcontagem_neuronio[4..0]entrada[31..0]
anteriorRs[31..0]leitura0[31..0]leitura1[31..0]leitura2[31..0]leitura3[31..0]leitura4[31..0]
iqssl[31..0]idssl[31..0]
Vqssll[31..0]Vdssll[31..0]
saida[31..0]
proximo
neuronio_sigmoid_1e_01_rec
inst
relcontagem[4..0]
entrada[31..0]saida[31..0]
neuronio_sigmoid_1e_02_rec
inst7
relcontagem[4..0]
entrada[31..0]saida[31..0]
neuronio_sigmoid_1e_03_rec
inst9
Controlador de Camada 02Controlador de Camada 01
Neurônio de Dupla Função
Figura 4. 6 - Rede híbrida "RNN-MLP" no FPGA.
Ainda em realce na figura 4.6, aparece o neurônio chamado “Neurônio de
Dupla Função”. Este neurônio está localizado mais acima na camada 01 da rede RNN-
MLP. A cada ciclo de trabalho da rede RNN-MLP ele primeiro faz a função do bloco
“Transformação Trifásica para DQ” (capítulo 3, seção 3.3) e depois age realmente como
o neurônio de primeira camada da estrutura da rede RNN-MLP.
Conforme já mencionado, a estrutura da rede RNN-MLP dentro do FPGA,
mostrada na figura 4.6, é complexa. Ela foi somente apresentada de forma geral até este
momento. Para um melhor entendimento sobre seu funcionamento é necessária uma
análise mais profunda da arquitetura interna dos neurônios digitais e dos módulos
controladores de camada utilizados. As seções a seguir descrevem um exemplo de
controlador de camada de rede neural, um exemplo de neurônio digital com função de
ativação linear, e por fim um neurônio digital com função de ativação sigmóide.
Capítulo 4 – Descrição do hardware do sistema proposto______________________
41
4.5.2.1 Controlador de Camada de Rede Neural
Conforme já mencionado, o módulo controlador de camada tem como função
garantir o paralelismo de processamento entre os neurônios da camada de rede que ele
comanda. Para atingir este objetivo, o controlador de camada funciona como um
módulo de “lógica de próximo estado”, compondo com os neurônios da camada
controlada uma máquina de estados finitos síncrona. A figura 4.7 apresenta um
diagrama mostrando um controlador comandando uma camada de neurônios com três
entradas e função de ativação sigmóide.
data2x[31..0]data1x[31..0]data0x[31..0]
sel[1..0]
result[31..0]
lpm_mux2
inst10
rel
anterior
entradas[1..0]
estado[4..0]
controlador_camada_sigmoid_3e
inst33
GNDsaida_neuronio1[31..0] INPUT
GNDsaida_neuronio2[31..0] INPUT
GNDsaida_neuronio3[31..0] INPUT
GNDrelogio INPUT
GNDordem_inicio INPUT
saida_escolhida[31..0]OUTPUT
relogio_para_neuroniosOUTPUT
Camada anterior
Multiplexador entre camadas
Camada comandada
Controlador de camada
proximo_estado[4..0]OUTPUT
Figura 4. 7 - Interconexões do controlador de camada em uma rede neural.
Na figura 4.7 o módulo controlador de camada aparece representado como uma
entidade tendo as entradas “anterior” e “rel”, e as saídas “estado[4..0]” e
“entradas[1..0]”. Como elementos adicionais na figura 4.7, aparecem o “Multiplexador
entre camadas”, o conjunto de conectores de entrada “Camada anterior”, e o conjunto de
conectores de saída “Camada comandada”.
Basicamente, o controlador de camada funciona como um contador, ele
incrementa a saída “estado[4..0]” (de 5 bits) a cada borda de descida do sinal “rel”
(ligado a entrada “clock”). Esta contagem representa exatamente a saída “próximo
estado[4..0]” enviada para todos os neurônios da camada controlada para definir qual
operação cada neurônio fará no estado atual. Paralelamente a contagem emitida durante
cada estado pela saída “estado[4..0]”, o controlador de camada emite um valor de
seleção em “entradas[1..0]”. Este valor de seleção permite ao “Multiplexador entre
Capítulo 4 – Descrição do hardware do sistema proposto______________________
42
camadas” definir qual saída de neurônio da “Camada anterior” deverá ser processada
por todos os neurônios da “Camada comandada” no estado atual.
Alguns controladores de camada ainda apresentam uma saída adicional chamada
“próximo”. A partir desta saída um “controlador 01” informa a um “controlador 02”
adjacente sobre o término dos cálculos da camada sob responsabilidade do próprio
“controlador 01”.
O incremento de contagem efetuado pelo controlador de camada vai de 0 até um
limite máximo. Este limite máximo depende do número de estados exigidos para que os
neurônios da “Camada comandada” realizem todos os seus cálculos. No caso da figura
4.7, os neurônios da camada comandada passam por 20 estados de processamento, o que
exige a utilização de pelo menos 5 bits na representação destes estados.
Além dos sinais “próximo estado[4..0]” e “saída_escolhida[31..0]” (selecionado
com auxílio do “Multiplexador entre camadas”), os neurônios de uma mesma camada
recebem o mesmo sinal de clock utilizado pelo controlador da camada. Isto permite que
os neurônios estejam sempre sincronizados com as trocas de estado efetuadas pelo
controlador de camada a cada borda deste sinal de clock.
A idéia do controlador de camada descrita define uma interação entre
controlador e neurônio replicada para todos os neurônios de uma mesma camada de
rede neural. A utilização de controladores de camada em cascata permite que camadas
adjacentes possam ser interligadas mesmo que uma camada tenha um tipo de neurônio
diferente dos neurônios da outra. Geralmente, um tipo de neurônio de uma camada se
diferencia do tipo de neurônio de outra camada, devido à função de ativação utilizada
por cada tipo. A seção a seguir descreve a arquitetura e o funcionamento do tipo de
neurônio digital mais simples implementado neste trabalho, o neurônio com função de
ativação linear.
4.5.2.2 Neurônio digital com função de ativação linear O neurônio com função de ativação linear é uma máquina de estados composta
por duas unidades ou circuitos principais a "Unidade de Decisão" e a "Unidade de
Execução". A "Unidade de Execução" realiza cálculos internamente através de um
somador e um multiplicador. Estas duas unidades de cálculo usam duas entradas
codificadas de acordo com o padrão de ponto flutuante de 32 bits IEEE 754. Tanto o
somador quanto o multiplicador são unidades monolíticas (não são divididas em
Capítulo 4 – Descrição do hardware do sistema proposto______________________
43
estágios de pipeline). A "Unidade de Decisão" comanda a "Unidade de Execução"
executando um programa que representa a "Lógica de saída" de uma máquina de
estados. A "Lógica de próximo estado" e a "Memória de estados" dessa máquina de
estados estão fora do neurônio. Ao se construir uma rede neural com muitos neurônios
trabalhando em paralelo, é importante replicar em cada neurônio o mínimo necessário
de circuitos. Em uma mesma camada de rede neural se todos os neurônios fossem
máquinas de estados completas, haveria excessiva repetição das unidades de "Lógica de
próximo estado" e "Memória de estados". Uma maior economia de recursos é
conseguida colocando-se somente a "Lógica de saída" em cada neurônio. Tanto a
"Lógica de próximo estado" quanto à "Memória de estados" podem ser colocadas em
um "Controlador de Camada" que envia o valor dos estados para todos os neurônios da
camada, a cada transição de um sinal de sincronismo "rel". Terminados todos os
cálculos dos neurônios em uma camada, o "Controlador de Camada" destes neurônios
pode enviar um aviso ativando o "Controlador de Camada" dos neurônios da camada
seguinte na rede. Como já mencionado, esta comunicação entre os controladores de
camadas possibilita um fluxo organizado de informações entre camadas.
Externamente, este neurônio possui 4 entradas. A entrada "rel", de 1 bit, serve
como entrada de sincronismo da máquina de estados na "Unidade de Decisão". Pela
entrada "contagem", de 4 bits, entra o valor do estado atual a ser executado enviado pelo
"Controlador de Camada". Em "entrada" (de 32 bits) chega o valor em ponto flutuante
que representa a entrada de dados do neurônio. A entrada de 32 bits "atual" recebe
valores em ponto flutuante, calculados pela "Unidade de Execução" durante a operação
do neurônio.
Para entregar a resposta dos cálculos internos realizados pelo neurônio, existe
o terminal de 32 bits chamado "saída". Esta resposta é válida somente depois de um
período conhecido como "latência". A latência é o atraso de resposta, ou o tempo que o
neurônio gasta para produzir um resultado em "saída" correspondente ao valor atual em
"entrada". A latência depende de fatores como freqüência da entrada "rel", do número
de estados por que passa o neurônio, e da velocidade das unidades de cálculo na
"Unidade de Decisão". Um diagrama geral do neurônio linear com as entradas e a saída
descritas acima pode ser visto na figura 4.8.
Capítulo 4 – Descrição do hardware do sistema proposto______________________
44
GNDentrada[31..0] INPUT
GNDrel INPUT
GNDcontagem[4..0] INPUT
saida[31..0]OUTPUT
relhabsel1sel2copiapeso1[31..0]peso2[31..0]dado_M[31..0]
Mem[31..0]Mult[31..0]
Saida[31..0]
MAC_nao_linear_dupla
inst1
rel
contagem[4..0]
entrada[31..0]
atual[31..0]
Mult[31..0]
Mem[31..0]
hab
sel1
sel2
copia
peso1[31..0]
peso2[31..0]
dado_M[31..0]
microprograma_nao_linear_duplo_1e_n1
inst
Figura 4. 8 - Diagrama do neurônio de 1 entrada e com função de ativação linear.
A "Unidade de Decisão" é o bloco à esquerda (ligado ao terminal "entrada") na
figura 4.8 e a "Unidade de Execução" é o bloco à direita (ligado ao terminal "saída"). As
ligações entre os dois blocos ("hab", "sel1", "sel2", "peso1" e "peso2") são sinais de
controle que a "Unidade de Decisão" usa para manipular o somador e o multiplicador na
"Unidade de Execução".
Esta é uma máquina que executa um programa de controle baseado em 10
estados. Uma descrição destes estados aparece na tabela 4.2.
Tabela 4. 2 - Microprograma da "Unidade de Decisão" do neurônio com função de
ativação linear. Rel Estado atual Próximo
estado Hab,sel1,sel2 Peso 1 Peso 2
↑ 0 1 000 - -
↑ 1 2 100 XS1 1.0
↑ 2 3 101 XM1 Entrada
↑ 3 4 111 - -
↑ 4 5 100 P1 Atual
↑ 5 6 101 BIAS 1.0
↑ 6 7 111 - -
↑ 7 8 100 C1 Atual
↑ 8 9 101 C0 1.0
↑ 9 0 111 - -
Na tabela 4.2 a entrada externa do neurônio (ou o terminal "entrada" da
Unidade de Decisão) está representada pela palavra "Entrada", e a entrada "atual"
(também da Unidade de Decisão) pela palavra "Atual".
Para facilitar o entendimento do que é feito em cada estado, na figura 4.9 é
apresentado um diagrama simplificado do que está dentro da "Unidade de Execução"
deste neurônio.
Capítulo 4 – Descrição do hardware do sistema proposto______________________
45
Figura 4. 9 - Interior da "Unidade de Execução" do neurônio com função de ativação
linear.
Na figura 4.9, à esquerda, estão entradas de comando e de dados ("hab",
"sel1", "sel2", "peso1" e "peso2"), além do terminal "saída" por onde sai o resultado
final dos cálculos do neurônio. Estas entradas saem da "Unidade de Decisão" chegam na
"Unidade de Execução" e representam os nomes das três últimas colunas na tabela 4.2.
O terminal "saída" vai da "Unidade de Execução" e chega na entrada "atual" da
"Unidade de Decisão". À direita na figura 4.9, estão as unidades de somador e de
multiplicador em ponto flutuante. Internamente, ainda existem dois multiplexadores de
duas entradas de 32 bits. Cada multiplexador age como uma chave seletora, enviando
para sua saída "S" sua entrada "E0", caso sua entrada seletora "Sel" esteja no nível 0, e
enviando a entrada "E1" se "Sel" for 1. As entradas "peso1" e "peso2" (operandos do
multiplicador) entram direto nas entradas "E0" e "E1" do multiplicador. A entrada "hab"
Capítulo 4 – Descrição do hardware do sistema proposto______________________
46
representa uma porta de entrada de um sinal de controle geral que libera a execução da
"Unidade de Execução" quando estiver no nível 1, e desabilita estando em nível 0. A
entrada "sel1" é a entrada de seleção do multiplexador superior (cuja saída "S" é ligada
a entrada "E0" do somador) e "sel2" é a entrada de seleção do multiplexador inferior
(cuja saída "S" é ligada a entrada "E1" do somador).
Inicialmente, a máquina de estados do neurônio está no estado inicial, ou
estado 0 na tabela 4.2. A "Lógica de próximo estado" no "Controlador de Camadas" da
camada em que o neurônio está, encontra-se a espera de um sinal de início. Quando se
dá este sinal de início, o "Controlador de camadas" envia o próximo estado (ou seja, o
estado "1") para a entrada "contagem" do neurônio (figura 4.8). Os estados 1, 2 e 3
representam o processo de pré-normalização da entrada. Na pré-normalização a entrada
do neurônio é multiplicada pela constante "XM1" e depois somada com a constante
"XS1". Tais constantes de pré-normalização são valores específicos de aplicação.
No estado "1", o neurônio está na linha 2 da tabela 4.2, e envia o comando
"100", ou "hab"=1, "sel1"=0, e "sel2"=0, para a "Unidade de Execução". Além do
comando "100", são enviados valores de entrada para o multiplicador, "peso1"="XS1" e
"peso2"="1,0". Como resultado final deste estado, "XS1" é multiplicado por "1,0" e
aparece na entrada "E1" do multiplexador inferior.
Seguindo a execução da máquina de estados, começa o estado 2 (linha 3 da
tabela 3.2). Neste estado, é enviado o comando "101" ou "hab"=1, "sel1"=0 e "sel2"=1.
A entrada "peso1" recebe a constante "XM1" e em "peso2" entra o valor atual da
entrada externa do neurônio. Duas operações ocorrem neste estado. Primeiro, o valor na
entrada "E1" do multiplexador inferior (ou "XS1") é somado com "0,0", e o resultado
dessa adição vai para a entrada "E1" do multiplexador superior. Como segunda
operação, a entrada externa do neurônio é multiplicada pela constante "XM1" e fica
disponível na entrada "E1" do multiplexador inferior.
No estado 3 o comando "111" é enviado e as entradas "peso1" e "peso2" não
são utilizadas. Através do comando "111", a atribuição "sel1"=1 e "sel2"=1 seleciona a
entrada "E1" do multiplexador superior (ou "XS1") conduzindo-o a entrada "E0" do
somador. Ao mesmo tempo é selecionada a entrada "E1" do multiplexador inferior (ou
"XM1*entrada") conduzindo-o a entrada "E1" do somador. O resultado final é o
aparecimento, na entrada "E1" do multiplexador superior, do valor
"XM1*entrada+XS1", ou seja, o valor pré-normalizado da entrada externa do neurônio.
Capítulo 4 – Descrição do hardware do sistema proposto______________________
47
Este valor pré-normalizado está também está na entrada "atual" da "Unidade de
Decisão" (figura 4.8).
Nos estados 4, 5, 6, a entrada externa do neurônio é multiplicada por um peso
"P1" e é adicionada a uma constante "BIAS". No estado 4 é enviado o comando "100",
ou "hab"=1, "sel1"=0 e "sel2"=0. O operando "peso1" recebe a constante "P1" e "peso2"
recebe o valor da entrada "atual" da "Unidade de Decisão". O comando "100"
simplesmente habilita a "Unidade de Execução" e envia os valores "P1" e "Atual" para
as entradas "E0" e "E1" do multiplicador, respectivamente. A saída do multiplicador no
fim do estado 4 (ou o valor "P1*(XM1*entrada+XS1)") torna-se disponível na entrada
"E1" do multiplexador inferior.
No estado 5 é enviado o comando "101", enquanto "peso1" recebe a constante
"BIAS" e "peso2" recebe a constante "1,0". Os valores em "peso1" e "peso2" fazem
com que surja na saída do multiplicador o valor "BIAS*1,0=BIAS". Esta saída do
multiplicador também fica disponível na entrada "E1" do multiplexador inferior. Ao
mesmo tempo, o comando "101" faz com que a entrada anterior "E1" do multiplicador
de baixo (ou o valor "P1*(XM1*entrada+XS1)") seja adicionada com "0,0" e apareça na
entrada "E1" do multiplexador superior.
O estado 6 simplesmente adiciona a entrada "E1" do multiplexador superior
(ou o valor "P1*(XM1*entrada+XS1)") com a entrada "E1" do multiplexador inferior
(ou o valor "BIAS"). O resultado final do estado 6 é o valor
"P1*(XM1*entrada+XS1)+BIAS" na saída do somador (ou no terminal chamado
"saída"). Este resultado final representa exatamente o valor "X", ou a entrada para a
função de ativação linear do neurônio.
Nos estado 7, 8, 9, é feito o cálculo da função de ativação linear usando como
entrada desta função, o valor "X" produzido pelo estado 6. O programa na tabela 4.2
considera "C1" o valor da inclinação da função linear de ativação, e C2 o coeficiente
linear dessa função. No estado 7, volta a ser enviado o comando "100" para a "Unidade
de Execução". O operando "peso1" recebe o valor "C1" enquanto "peso2" recebe o
valor de "atual" (ou seja, "X"). Os valores em "peso1" e "peso2" geram na saída do
multiplicador o valor "X*C1", que também fica disponível na entrada "E1" do
multiplexador inferior.
O estado 8 envia o comando "101" e como operandos desse comando
"peso1"="C0" e "peso2"="1,0". Os operandos "peso1" e "peso2" são multiplicados e
geram o próprio valor "C0" na entrada "E1" do multiplexador inferior. O comando
Capítulo 4 – Descrição do hardware do sistema proposto______________________
48
"101" ainda faz com que o valor anterior da entrada "E1" do multiplexador de baixo (ou
"X*C1") apareça na entrada "E1" do multiplexador superior.
Como finalização dos cálculos realizados pelo neurônio, no estado 9 é enviado
o comando "111" para a "Unidade de Execução". Não são usados os operandos "peso1"
e "peso2" neste estado. O comando "111" simplesmente adiciona as entradas "E1" do
multiplexador inferior e superior, gerando na saída do somador o valor final
"X*C1+C2". Este valor final, presente no terminal "saída" da "Unidade de Execução",
representa a resposta final dos cálculos do neurônio para o ciclo realizado pela máquina
de estados. Tal valor pode ser enviado para neurônios de camadas intermediárias ou ser
considerado a saída final de uma rede neural.
O hardware descrito para um neurônio com função de ativação linear é
adequado para operações realizadas por este tipo de neurônio, ou seja operações de
adição e multiplicação. Porém, em redes neurais artificiais reais, as funções de ativação
podem não ser tão simples, como é o caso da função sigmóide logística. Para neurônios
com função de ativação deste tipo, um hardware composto por unidades básicas como
somadores e multiplicadores precisam aplicar técnicas especiais de representação de
funções ao realizarem seus cálculos. Os neurônios analisados nos próximos tópicos
usam função de ativação sigmóide logística. Como será apresentado, suas arquiteturas
procuram manter a simplicidade encontrada no neurônio de função linear, de forma que
o que as diferencia são suas abordagens de representação da função sigmóide.
4.5.2.3 Neurônio digital com função de ativação sigmóide O neurônio descrito nesta seção possui função de ativação sigmoidal. Trata-se
neurônio mais complexo que o neurônio com função de ativação linear, por trabalhar
com polinômios de maior grau para implementar em hardware a função sigmóide. Neste
trabalho, a sigmóide é representada através do uso da técnica de interpolação "spline”.
A figura 4.10 mostra a função de ativação sigmoidal utilizada neste trabalho e
representada por meio da interpolação “spline”.
Capítulo 4 – Descrição do hardware do sistema proposto______________________
49
Figura 4. 10 - Representação da função sigmóide por "Spline".
Na figura 4.10, a função sigmóide foi dividida em 7 subintervalos, atribuindo-
se a cada um deles um polinômio interpolador de grau igual 5. Cada trecho (ou intervalo
de interpolação) é identificado por um segmento de curva de cor diferente. Na figura
4.10, são apresentados somente cinco trechos, já que os dois omitidos representam o
comportamento da função em ∞− e ∞+ , ou seja, são exatamente as funções constante
igual a 0 e 1, respectivamente.
A arquitetura do neurônio apresentado nesta seção também foi construída
contendo duas unidades principais, uma "Unidade de Decisão" e uma "Unidade de
Execução". Um diagrama de blocos geral deste neurônio pode ser visto na figura 4.11.
GNDentrada[31..0] INPUT
GNDrel INPUT
GNDMeio_Ts[31..0] INPUT
GNDcontagem[5..0] INPUT
saida[31..0]OUTPUT
relhabsel1sel2copiapeso1[31..0]peso2[31..0]dado_M[31..0]
Mem[31..0]Mult[31..0]
Saida[31..0]
MAC_nao_linear_dupla
inst1
rel
contagem[5..0]
entrada[31..0]
atual[31..0]
Mult[31..0]
Mem[31..0]
Meio_Ts[31..0]
hab
sel1
sel2
copia
peso1[31..0]
peso2[31..0]
dado_M[31..0]
microprograma_nao_linear_duplo_18e_n1
inst
Figura 4. 11 - Neurônio digital com função de ativação sigmóide.
Os terminais de entrada e de saída deste neurônio são os mesmos encontrados
no neurônio com função de ativação linear, "rel", "contagem", "entrada" e "saída". Na
figura 4.11, a "Unidade de Decisão" é o bloco da esquerda e a "Unidade de Execução" o
Capítulo 4 – Descrição do hardware do sistema proposto______________________
50
da direita. Entre as duas unidades estão os mesmos sinais de controle enviados para a
"Unidade de Execução" já mencionados para o neurônio com função linear, com a
diferença dos sinais "cópia" e "Dado_M". O sinal "cópia" serve como sinal de gatilho
para gravação, em registrador na "Unidade de Execução", de um valor de 32 bits
enviado pelo sinal "Dado_M". A "Unidade de Execução" deste neurônio ainda
apresenta outra diferença, ela possui três terminais de saída de 32 bits "Mem", "Mult" e
"Saída". O terminal de saída "Mem" representa a saída do registrador interno da
"Unidade de Execução" e o terminal "Mult" vem da saída do multiplicador interno desta
unidade. Detalhes da "Unidade de Execução" podem ser vistos na figura 4.12.
Figura 4. 12 - Diagrama da "Unidade de Execução" do neurônio com função sigmóide.
Capítulo 4 – Descrição do hardware do sistema proposto______________________
51
O terminal de saída "Mult" serve para que a "Unidade de Decisão" tenha mais
facilidade para obter resultados de multiplicação gerados pela "Unidade de Decisão",
quando se está trabalhando com operações como potências e cálculos polinomiais. O
registrador interno na "Unidade de Execução" representa uma unidade para
armazenamento de dados temporários gerados pelos cálculos durante execução. Dessa
forma este registrador pode ser imaginado com uma unidade periférica de memória
local.
Semelhante ao neurônio com função de ativação linear, existe aqui um
programa de controle baseado em uma máquina de estados dentro da "Unidade de
Decisão". Ou seja, a "Unidade de Decisão" ainda representa um bloco de "Lógica de
Saída" de uma máquina de estados. Portanto, ainda aqui deve existir uma unidade de
"Controlador de Camada" com a "Lógica de Próximo estado" e a "Memória de estado"
embutidas. Continua sendo este "Controlador de Camada" que envia cada valor de
estado atual para a entrada "contagem" do neurônio durante as transições entre estados.
Um melhor entendimento do funcionamento dessa máquina de estados é possível
através do diagrama representado pela tabela 4.3.
Tabela 4. 3 - Microprograma da "Unidade de Decisão" do neurônio com função
sigmóide. rel Estado
atual Próximo estado
Hab,sel1,sel2,copia Dado_M Peso 1 Peso 2 X
↑ 0 1 0000 - - - -
↑ 1 2 1000 - XS1 1.0 -
↑ 2 3 1010 - XM1 Entrada -
↑ 3 4 1110 - - - -
↑ 4 5 1000 - P1 Atual -
↑ 5 6 1010 - BIAS 1.0 -
↑ 6 7 1110 - - - Atual
↑ 7 8 0000 - - - -
↑ 8 9 1001 Atual C0 1.0 -
↑ 9 10 1010 - C1 Mem -
↑ 10 11 1110 - X Mem -
↑ 11 12 1101 Mult C2 Mult -
↑ 13 14 1110 - X Mem -
↑ 13 14 1101 Mult C3 Mult -
↑ 14 15 1110 - X Mem -
↑ 15 16 1101 Mult C4 Mult -
↑ 16 17 1110 - X Mem -
↑ 17 18 1101 Mult C5 Mult -
↑ 18 0 1110 - - - -
Capítulo 4 – Descrição do hardware do sistema proposto______________________
52
Na tabela 4.3, nas colunas 2 e 3 (segunda e terceira da esquerda para direita)
estão os valores de estado atual e próximo estado respectivamente. Na coluna 4 estão os
bits representando a operação a ser executada pela "Unidade de Execução", e nas
colunas 5, 6, 7, estão os operandos dessa operação ("Dado_M", "peso1" e "peso2"). Na
coluna 8 está representada a variável de 32 bits "X", interna a "Unidade de Decisão". As
palavras na tabela 4.3, "Entrada", "Atual", "Mult", "Mem" representam os terminais de
entrada com igual nome da "Unidade de Decisão" (figura 4.11). Já as palavras "XS1",
"XM1", "P1", "BIAS", "C0 a C5", representam valores constantes usados nos cálculos
do neurônio.
Os estados 0 a 6, realizam o mesmo tipo de função que os estados de 0 a 6 do
neurônio com função de ativação linear, ou seja, pré-normalização da entrada,
multiplicação desse valor pré-normalizado por "P1", e posterior soma com "BIAS". O
resultado final dessa computação fica disponível em "atual" para ser armazenado na
variável interna X no próximo estado (estado 7).
O estado 7 representa um estado de verificação de "rumo" a ser tomado. Como
no momento já está na variável "X" um valor que representa a entrada para o cálculo da
função de ativação sigmóide, é preciso escolher qual trecho de spline usar para este
cálculo. Esta escolha de trecho (ou de rumo) é feita por uma unidade interna na
"Unidade de Decisão" que realiza seu trabalho durante o transcorrer do estado 7. Definir
um rumo pode ser entendido como determinar qual conjunto de coeficientes polinomiais
(C0,C1,C2,C3,C4,C5) deve ser utilizado nos cálculos de interpolação que se seguem.
Como foram escolhidos seis nós de interpolação, existem 7 trechos de spline
representando a sigmóide, ou seja, 7 conjuntos possíveis de coeficiente polinomiais.
Definidos os valores dos coeficientes "C0" a "C5", ocorre o cálculo da função
sigmóide nos estados 8 a 18. O resultado da interpolação realizada nos estados 8 a 18
pode ser representado pela equação 4.3:
5432 543210)( XCXCXCXCXCCXFsigmóide ⋅+⋅+⋅+⋅+⋅+= (4.3)
Finalizado o estado 18, a máquina de estados volta para o estado inicial 0,
ficando a espera de um novo comando de início. Para valores de "X" maiores que 8 a
função sigmóide aproxima-se da função constante 1 e, para valores "X" menores que -8
da função aproxima-se da constante 0. Este fato permite igualar o polinômio
interpolador a 0 para "X" menor que -8, e igualar a 1 para "X" maior que 8.
Capítulo 4 – Descrição do hardware do sistema proposto______________________
53
Consequentemente o cálculo da função sigmóide é mais simples fora do intervalo [-8,8],
podendo ser feito mais rapidamente.
As arquiteturas lineares e sigmoidais para neurônios digitais apresentadas até
aqui representam os modelos básicos utilizados na criação dos neurônios da versão final
das redes neurais do controlador do motor de indução. Nesta versão final das redes
existem também expansões dos modelos básicos, criadas para permitir reutilização de
capacidade de processamento em momentos ociosos de alguns neurônios.
Uma destas expansões já foi mencionada, anteriormente, ao ser apresentado o
“Neurônio com dupla função”, um dos neurônios da primeira camada da rede RNN-
MLP. Este neurônio especial possui uma arquitetura muito parecida com a de um
neurônio básico com função de ativação sigmóide. A diferença está em sua “Unidade de
Decisão” ampliada, composta por dois blocos de microprograma diferentes
compartilhando o uso de uma mesma “Unidade de Execução”. Cada um destes blocos
de microprograma executa em um momento diferente, evitando-se, assim, conflitos de
hardware (hazards). Um deles realiza cálculos de transformação trifásica para eixos dq
(equações 2.1 a 2.3), enquanto o outro realiza os cálculos normais de um neurônio de
entrada de rede (acumulação de entradas ponderadas e aplicação desta acumulação em
uma função de ativação).
Um outro exemplo de expansão dos modelos básicos de neurônios
apresentados até o momento, surge na estrutura interna da rede RNN (rede recorrente
pertencente ao bloco “Estimador de Fluxo”). Para permitir recorrência, ou seja, que esta
rede utilize os próprios resultados produzidos na execução anterior para produzir novas
saídas, a rede RNN deve memorizar um conjunto de variáveis a cada uma de suas
iterações de execução.
Ainda, outros exemplos de expansão de arquitetura de neurônios serão
apresentados nas próximas seções. Este é o momento de iniciar a apresentação de uma
plataforma digital que também está envolvida no processamento de sinais do
controlador do motor de indução deste trabalho. Esta plataforma, o DSP
TMS320C6711, é apresentada em detalhes no apêndice C deste trabalho. A seção a
seguir apresenta o primeiro bloco construído sob esta plataforma, ou seja, o bloco
“Estimador de Sinais”.
Capítulo 4 – Descrição do hardware do sistema proposto______________________
54
4.6 Hardware do bloco Estimador de Sinais Conforme já apresentado no capítulo 2, o bloco "Estimador de Sinais"
compreende um conjunto de equações envolvendo funções trigonométricas e de
radiciação. Neste trabalho, o "Estimador de Sinais" não foi modelado baseado em redes
neurais. Na prática este módulo está descrito como um código de programação em
linguagem C para execução sobre a plataforma de hardware do processador de sinais
TMS320C6711 da Texas Instruments. A seção a seguir descreve mais detalhadamente
este código de programação.
4.6.1 Código em C do “Estimador de Sinais”
O DSP do protótipo do controlador do motor de indução age como um ponto de
convergência de informações durante o funcionamento do sistema como um todo. O
DSP gerencia a “Interface com Usuário”, ativa e troca informações com as redes neurais
dentro do FPGA e ainda realiza os cálculos dos blocos “Estimador de Sinais” e
“Controlador” (seção a seguir). Todas estas operações são resultantes da execução de
rotinas em C apresentadas nesta seção e na seção a seguir.
Um único arquivo, chamado “programa_usuario.c”, contém linhas de código
representando os cálculos efetuados pelo bloco “Estimador de Sinais” e pelo bloco
“Controlador”. Durante o funcionamento normal do protótipo do controlador do motor,
um micro sistema operacional da Texas Instruments, chamado “DSP/BIOS”, executa no
DSP rotinas próprias de gerenciamento e as rotinas no arquivo “programa_usuario.c”.
Neste arquivo “programa_usuario.c” os cálculos dos blocos “Estimador de Sinais” e
“Controlador” fazem parte da função “Caminho_retroacao”, uma função de atendimento
de interrupções do contador “Timer 0” do DSP. A cada 100µs (valor de período de
amostragem ST programado no contador “Timer 0”) a função “Caminho_retroacao”
executa uma iteração. No início desta iteração a função “Caminho_retroacao”, recebe
entradas da “Interface com Usuário” e realiza os cálculos do “Estimador de Sinais” a
partir de dados gerados anteriormente pela rede RNN-MLP no FPGA. Finalizando a
iteração, ocorrem os cálculos do bloco “Controlador” utilizando os resultados do
“Estimador de Sinais” para gerar novos comandos para o bloco “Controle PWM Space-
Vector Baseado em Redes Neurais” (bloco no FPGA descrito no capítulo 3, seção 3.2).
Capítulo 4 – Descrição do hardware do sistema proposto______________________
55
Para execução mais rápida dos cálculos dentro da função “Caminho_retroacao”
foram utilizadas funções matemáticas da biblioteca “FastRTS67x.lib” disponibilizada
pela Texas Instruments. O código de programação representando especificamente o
bloco “Estimador de Sinais” é apresentado na figura 4.13. Declarações das variáveis e
constantes utilizadas no código estão no apêndice B deste trabalho.
//--------------------------------------------------------------------------------------------------------------------------------------------
// Fase de cálculos de estimação dos sinais recebidos da rede recorrente
//--------------------------------------------------------------------------------------------------------------------------------------------
1 //Lendo valores produzidos pelas redes neurais no FPGA
2 Yqss_int=Yqss;//Recebe do FPGA o fluxo Yqss
3 Ydss_int=Ydss;//Recebe do FPGA o fluxo Ydss
4 iqss_linha=iqssl;//Recebe do FPGA a corrente iqssl
5 idss_linha=idssl;//Recebe do FPGA a corrente idssl
6 Vqss_int=Vqssll;//Recebe do FPGA a tensão Vqssll (defasada)
7 Vdss_int=Vdssll;//Recebe do FPGA a tensão Vdssll (defasada)
8 //Realizando calculos de Estimacao
9 Ys2=Yqss_int*Yqss_int+Ydss_int*Ydss_int;
10 Omega_int=_divf(Vqss_int*Ydss_int-Vdss_int*Yqss_int,Ys2);
11 Omega=Omega_int*xm3+xs3;//Pré-normalização da entrada da rede recorrente.
12 controle_recorrente=1;//Ativa rede recorrente.
13 Ys_calc=sqrtf(Ys2);
14 senTETAe=_divf(Yqss_int,Ys_calc);
15 cosTETAe=_divf(Ydss_int,Ys_calc);
16 ids=iqss_linha*cosTETAe-idss_linha*senTETAe;
17 iqs=iqss_linha*senTETAe+idss_linha*cosTETAe;
18 idq=_divf((sigma*Ls*iqs*iqs),(Ydss_int-(sigma*Ls*ids)));
19 Yds=Yqss_int*cosTETAe-Ydss_int*senTETAe;
20 Yqs=Yqss_int*senTETAe+Ydss_int*cosTETAe;
21 Te_calc=0.75*P*(Yds*iqs-Yqs*ids);
Figura 4. 13 - Linhas de código representando o bloco “Estimador de Sinais”.
A rotina apresentada na figura 4.13 é iniciada pelas linhas 2 a 7, recebendo-se os
valores produzidos pela última execução da rede RNN-MLP no FPGA (bloco
“Estimador de Fluxo”). As linhas restantes (9 a 21) simplesmente utilizam estes valores
e executam os cálculos referentes ao bloco “Estimador de Sinais” (equações 2.8 a 2.16).
Na linha 12, o comando “controle_recorrente=1” não atribui um valor a uma variável,
na realidade ele ativa a entrada do “Controlador de Camada 01” da rede RNN-MLP,
iniciando um novo ciclo de trabalho do bloco “Estimador de Fluxo”. Não está previsto
no código apresentado na figura 4.13 qualquer método de leitura de sinal de resposta
Capítulo 4 – Descrição do hardware do sistema proposto______________________
56
vindo do FPGA que indique o momento em que a rede RNN-MLP termina seus
cálculos. Porém, uma iteração do código da figura 4.13 não envia uma nova ordem de
início para a rede RNN-MLP antes que ela tenha terminado seus cálculos. Isto ocorre,
pois, esta rede termina seus cálculos em um tempo menor que 100µs (período entre
iterações do código da figura 4.13, definido em [25] e [26]).
Após cada iteração, as respostas produzidas pelo DSP executando os cálculos do
bloco “Estimador de Sinais” são repassadas para o bloco descrito na seção a seguir, o
“Controlador”.
4.7 Hardware do bloco “Controlador”
Como já descrito, o bloco “Controlador” representa um local do sistema em que
estimações são comparadas com valores desejados, sendo os erros destas comparações
inseridos em controladores PI (proporcional e integral) para geração de saídas de
atuação. O hardware utilizado na implementação dos nós de comparação e dos PIs do
bloco “Controlador”, continua sendo a arquitetura de processador de sinais apresentada
na seção 4.6.1 (descrição do DSP TMS320C6711).
Conforme já mencionado, o bloco “Controlador” está representado no protótipo
de controlador do motor deste trabalho como um código de programação escrito em
linguagem C. A seção a seguir tem mais informações a respeito deste código.
4.7.1 Código em C do bloco “Controlador”
Conforme já mencionado, as linhas de comando representando o bloco
“Controlador” estão dentro do arquivo “programa_usuario.c”, juntamente com o código
representando o bloco “Estimador de Sinais”. A estrutura interna do bloco
“Controlador”, mostrada no capítulo 2, sugere que este módulo do sistema deve ter uma
interação direta tanto com a “Interface com Usuário” (fora do DSP) quanto com o bloco
“Estimador de Sinais”. A “Interface com Usuário” fornece ao bloco “Controlador”
valores estabelecidos pelo usuário referentes a torque ( *eT ) e fluxo de estator ( *ˆ sψ ). O
bloco “Estimador de Sinais” fornece valores estimados de corrente ( qsi , dsi , dqi ), de
Capítulo 4 – Descrição do hardware do sistema proposto______________________
57
torque ( eT ) e de fluxo de estator ( sψ ). Esta interação do bloco “Controlador” com os
dois módulos mencionados está explícita na figura 4.14.
A figura 4.14 apresenta o código de programação para realização dos cálculos do
bloco “Controlador”. As linhas 1 a 7 representam a recepção de valores atualizados
vindos das variáveis torque “Te” e fluxo “Ys”, variáveis que representam endereços de
memória dentro da faixa representando o hardware da “Interface com Usuário”.
//--------------------------------------------------------------------------------------------------------------------------------------------
// Fase de cálculos da malha de controladores PI em série
//--------------------------------------------------------------------------------------------------------------------------------------------
1 if(atualizar==1)//Verifica se existem atualizações para as variáveis de entrada
2
3 //Associando valores as variáveis
4 Te_star=Te;
5 Ys_star=Ys;
6 Meio_Ts=Ts*0.5;//Envia um novo valor de período para o FPGA
7
8 //Definindo saidas dos PIs em série
9 Vqs_star=Te_star+Te_calc+KI1+iqs+KI2;
10 Vds_star=Ys_star+Ys_calc+KI3+idq+ids+KI4;
11 //Vector Rotator. Definindo entradas da rede MLP Espace Vector
12 V_star=sqrtf(Vqs_star*Vqs_star+Vds_star*Vds_star);//Envia entrada de módulo
13 modulo=V_star*xm1+xs1;//Pré-normalização da entrada de módulo da rede SV.
14 TETAe=asinf(senTETAe);
15 TETAe_star=TETAe+atanf(_divf(Vqs_star,Vds_star));
16 TETAe_linha=TETAe_star-floorf(0.1591549*TETAe)*6.2831853;//Envia entrada de ângulo
17 ângulo=TETAe_linha*xm2+xs2;//Pré-normalização da entrada de módulo da rede SV.
18 //Ativando a rede PWM Space-Vector
19 controle_SV=1;
Figura 4. 14 - Código de programação do bloco “Controlador”.
As linhas 9 e 10 representam os cálculos realizados pelos quatro controladores
PI, ajustados através de suas constantes predefinidas “KI1”, “KI2”, “KI3”, “KI4”. As
linhas 12 a 17 representam os cálculos do subsistema “Vector-Rotator”, pertencente ao
bloco “Controlador”. Este subsistema produz como resultado, na linha 12, um valor de
módulo ( *V ) e na linha 16 um valor de ângulo ( *'eθ ), juntos eles representam o vetor de
referência de modulação PWM. Tanto o módulo quanto o ângulo são pré-normalizados
antes de serem aplicados (linhas 13 e 17) ao hardware do bloco “Controle PWM Space-
vector Baseado em Redes Neurais” (descrito na seção a seguir). A ordem de início de
Capítulo 4 – Descrição do hardware do sistema proposto______________________
58
operação do bloco “Controle PWM Space-vector Baseado em Redes Neurais” somente
é emitida pelo bloco “Controlador” durante a execução do comando “controle_SV=1”
(linha 19 do código da figura 4.14).
Todas as estimações e comparações com valores desejados pelo usuário,
culminam na geração de sinais de comando aplicados ao bloco “Controle PWM Space-
vector Baseado em Redes Neurais” no FPGA. Este bloco é descrito em maiores detalhes
na seção a seguir.
4.8 Hardware do bloco "Controle PWM Space-Vector Baseado em Redes Neurais"
O hardware do bloco “Controle PWM Space-Vector Baseado em Redes
Neurais” é o último módulo do “Subsistema de Processamento de Sinais” a atuar
durante um ciclo de trabalho do protótipo de controlador do motor de indução.
Conforme já discutido nos capítulo 2 e 3, as redes neurais no FPGA
pertencentes ao “Controle PWM Space-Vector Baseado em Redes Neurais” recebem em
suas entradas as saídas normalizadas de módulo ( *V ) e ângulo ( *'eθ ), geradas pelo
módulo “Controlador” (seção 4.7). Como resposta, estas redes produzem seis sinais de
modulação PWM, para controle das chaves do “Inversor Baseado em IGBT”
(Subsistema de Circuito de Potência).
No FPGA, o hardware do bloco "Controle PWM Space-Vector Baseado em
Redes Neurais" está implementado como três subsistemas interligados: a “Rede de
Módulo”, a “Rede de ângulo e de Cálculo de Ton” e o “Contador Trifásico”. As seções
a seguir detalham estes três módulos, iniciando pela “Rede de módulo”.
4.8.1 Rede de módulo
A implementação em hardware da “Rede de módulo” conta com quatro
processadores digitais (neurônios) interligados, formando duas camadas de rede neural.
Todos estes processadores seguem o mesmo modelo básico de arquitetura mostrado
para os neurônios com função de ativação sigmoidal na seção 4.5.2.3. A primeira
diferença entre os neurônios da “Rede de módulo” e os neurônios com a arquitetura
básica mencionada, está no fato dos neurônios da camada de entrada da “Rede de
Capítulo 4 – Descrição do hardware do sistema proposto______________________
59
módulo” não pré-normalizarem a entrada de módulo ( *V ) recebida do bloco
“Controlador” no DSP. A segunda diferença é devida ao fato do neurônio da segunda
camada possuir três entradas e produzir como saída final um valor que já sofreu pós-
normalização. Um diagrama mostrando a estrutura de hardware da “Rede de módulo” é
mostrado na figura 4.15.
GNDrel INPUT
GNDmodulo[31..0] INPUT
GNDcontrole INPUT
data2x[31..0]data1x[31..0]data0x[31..0]
sel[1..0]
result[31..0]
lpm_mux2
inst10
relcontagem[4..0]entrada[31..0]
saida[31..0]
neuronio_sigmoid_1e_01
inst
relcontagem[4..0]entrada[31..0]
saida[31..0]
neuronio_sigmoid_1e_02
inst4
relcontagem[4..0]entrada[31..0]
saida[31..0]
neuronio_sigmoid_1e_03
inst5
rel
anterior
estado[4..0]
proximo
controlador_camada_sigmoid_1e
inst31
relcontagem[4..0]entrada[31..0]
saida[31..0]
neuronio_sigmoid_3e_01
inst32
rel
anterior
entradas[1..0]
estado[4..0]
controlador_camada_sigmoid_3e
inst33
Controlador de Camada 01 Controlador de Camada 02
Mux entre camadasCamada 02
Camada 01
Modulo[31..0]
Figura 4. 15 - Estrutura da “Rede de módulo” no FPGA.
De forma análoga a estrutura da rede RNN-MLP do bloco “Estimador de
Fluxo”, existem dois controladores de camada compondo a “Rede de módulo”,
indicados na figura como: “Controlador de Camada 01” e “Controlador de Camada 02”.
Num ciclo completo de cálculos a camada de entrada da rede passa por 15 estados,
enquanto a camada de saída passa por 20 estados. Para direcionar as saídas dos
neurônios da camada de entrada para o neurônio da camada de saída existe o bloco
“Mux entre camadas”, gerenciado pelo “Controlador de Camada 02”. Como saída final
a “Rede de módulo” gera o valor )( ∗Vf .
A saída )( ∗Vf é utilizada, posteriormente, nos cálculos dos tempos “ ONAT − ”,
“ ONBT − ” e “ ONCT − ”, realizados pela “Rede de ângulo e de Cálculo de Ton”, descrita na
seção a seguir.
Capítulo 4 – Descrição do hardware do sistema proposto______________________
60
4.8.2 Módulo “Rede de ângulo e de Cálculo de Ton”
A “Rede de ângulo e de Cálculo de Ton” possui uma estrutura mais complexa
que a descrita para a “Rede de módulo”. Na “Rede de ângulo e de Cálculo de Ton” até
21 processadores independentes (neurônios) trabalham na geração dos seis sinais de
modulação de saída da rede. A estrutura inteira da rede conta com um “Controlador de
Camada 01” comandando 18 neurônios de entrada, um “Controlador de Camada 02”
comandando 3 neurônios da camada de saída, e um bloco “Limitador de Ton entre 0 e
Ts/2”. A figura 4.16 mostra parte da “Rede de ângulo e de Cálculo de Ton” no FPGA.
GNDMeio_Ts[31..0] INPUT
GNDangulo[31..0] INPUT
relcontagem[5..0]entrada[31..0]Meio_Ts[31..0]
saida[31..0]
neuronio_sigmoid_18e_01
inst16
relcontagem[5..0]entrada[31..0]Meio_Ts[31..0]
saida[31..0]
neuronio_sigmoid_18e_02
inst17
relcontagem[5..0]entrada[31..0]Meio_Ts[31..0]
saida[31..0]
neuronio_sigmoid_18e_03
inst18
data18x[31..0]data17x[31..0]data16x[31..0]data15x[31..0]data14x[31..0]data13x[31..0]data12x[31..0]data11x[31..0]data10x[31..0]data9x[31..0]data8x[31..0]data7x[31..0]data6x[31..0]data5x[31..0]data4x[31..0]data3x[31..0]data2x[31..0]data1x[31..0]data0x[31..0]
sel[4..0]
result[31..0]
lpm_mux1
inst2
relcontagem[4..0]entrada[31..0]
saida[31..0]
neuronio_sigmoid_1e_10
inst15
relcontagem[4..0]entrada[31..0]
saida[31..0]
neuronio_sigmoid_1e_11
inst19
relcontagem[4..0]entrada[31..0]
saida[31..0]
neuronio_sigmoid_1e_12
inst20
relcontagem[4..0]entrada[31..0]
saida[31..0]
neuronio_sigmoid_1e_13
inst21
relcontagem[4..0]entrada[31..0]
saida[31..0]
neuronio_sigmoid_1e_14
inst22
relcontagem[4..0]entrada[31..0]
saida[31..0]
neuronio_sigmoid_1e_15
inst23
rel
anterior
Ton1[31..0]
Ton2[31..0]
Ton3[31..0]
Meio_Ts[31..0]Ton1_saida[31..0]
Ton2_saida[31..0]
Ton3_saida[31..0]
proximo
limitador
inst46
Camada 02 e Cálculo de TonCamada 01
Mux entrecamadas
ângulo[31..0]
Ts/2
entre 0 e Ts/2Limitador de Ton
Figura 4. 16 - Hardware da “Rede de ângulo e de Cálculo de Ton”.
Para que se tenha maior resolução de detalhes na figura 4.16, são mostrados
apenas 6 dos 18 neurônios da camada de entrada e não são apresentados o “Controlador
de Camada 01” e o “Controlador de Camada 02”. Um “Mux entre camadas” extendido,
formado por 18 entradas e uma saída, interliga a camada de entrada com de saída. Este
Capítulo 4 – Descrição do hardware do sistema proposto______________________
61
multiplexador recebe um sinal de seleção de entradas vindo do “Controlador de Camada
02”. Durante um ciclo de trabalho completo da “Rede de ângulo e de Cálculo de Ton”,
os neurônios da camada de entrada passam por 15 estados, enquanto os neurônios da
camada de saída passam por 39 estados. O grande número de estados de cálculo para a
camada de saída deve-se ao fato desta camada também realizar operações relacionadas
com o “Cálculo de Ton”.
Como o nome “Rede de ângulo e de Cálculo de Ton” indica, este bloco é
constituído por duas partes interagindo diretamente, uma “Rede de ângulo” e um
módulo de “Cálculo de Ton”.
A “Rede de ângulo” sempre começa trabalhando. Inicialmente, ela recebe do
bloco “Controlador” (seção 4.7) um novo valor para a entrada “ângulo[31..0]” (figura
4.17). Depois de realizar todos os cálculos necessários, a “Rede de ângulo” gera três
resultados: “ )( *αAg ”, “ )( *αBg ”, e “ )( *αCg ”. A partir destes resultados, os três
neurônios da camada de saída da própria “Rede de ângulo” iniciam um novo trabalho,
os cálculos relacionados somente com a porção de “Cálculo de Ton” do bloco.
Para a realização das operações do “Cálculo de Ton”, estes neurônios ainda
utilizam duas entradas adicionais. A primeira, a entrada “Ts/2[31..0]” na figura 4.17, é
fornecida pelo DSP e representa a metade do período de amostragem da modulação
“Space-Vector”. A segunda entrada consiste na saída da “Rede de módulo” (descrita na
seção 4.8.1), ou seja, “ )( *Vf ”.
Após alguns cálculos adicionais os três neurônios produzem três valores de
tempo (em segundos): “ ONAT − ” (equação 2.19), “ ONBT − ” (equação 2.20) e “ ONCT − ”
(equação 2.21). Antes de serem aplicados em contadores para geração de sinais PWM,
os valores de tempo “ ONAT − ”, “ ONBT − ” e “ ONCT − ” passam por um subsistema chamado
“Limitador de Ton entre 0 e Ts/2”. Conforme já indicado pelo nome, este subsistema
impede que valores de tempo de “ ONT ” fora da faixa 0 a “Ts/2” sejam aplicados aos
contadores de geração de sinais PWM. Tempos negativos são truncados para 0 e tempos
maiores que “Ts/2” são truncados para “Ts/2”. Valores de tempo fora da faixa de 0 a
“Ts/2” surgem no momento em que o controlador de motor de indução opera em regiões
de sobremodulação conforme já mencionado no capítulo 2.
Estando devidamente limitados, os valores de tempo saem do subsistema
“Limitador de Ton entre 0 e Ts/2” chegando ao bloco “Contador Trifásico”. A operação
do bloco “Contador Trifásico” é detalhada na seção a seguir.
Capítulo 4 – Descrição do hardware do sistema proposto______________________
62
4.8.3 Módulo “Contador Trifásico”
O hardware do módulo “Contador Trifásico” representa o circuito de tradução
dos valores de tempo gerados pelo bloco “Rede de ângulo e de Cálculo de Ton” para
comprimentos de pulso de seis ondas quadradas, a serem aplicadas nas chaves de
potência do “Inversor Baseado em IGBT” (pertencente ao “Subsistema de Circuito de
Potência”). Um diagrama de entradas e saídas do “Contador Trifásico” é mostrado na
figura 4.17.
S1OUTPUT
S2OUTPUT
S3OUTPUT
S4OUTPUT
S5OUTPUT
S6OUTPUT
proximoOUTPUT
T=1 / f
ton
T=1 / f
ton
T=1 / f
ton
relnovoTs[31..0]Ton1[31..0]Ton2[31..0]Ton3[31..0]
saida_PWM1saida_PWM_inv1
saida_PWM2saida_PWM_inv2
saida_PWM3saida_PWM_inv3
Timer
inst6
AND2
inst1AND2
inst3
NOT
inst30
NOT
inst34
AND2
inst35AND2
inst36AND2
inst37AND2
inst38
NOT
inst39
NOT
inst40
NOT
inst41
NOT
inst42
Contador Trifásico
Lógica de segurançade acionamento
Figura 4. 17 - Diagrama do sistema “Contador Trifásico”.
A figura 4.17 mostra o “Contador Trifásico” ligado a um circuito de saída de
“Lógica de segurança de acionamento”. Durante operação normal, o “Contador
Trifásico” recebe valores atualizados de “ ONAT − ”, “ ONBT − ” e “ ONCT − ” (vindos do bloco
“Rede de ângulo e de Cálculo de Ton”, descrito na seção 4.8.2). Estes tempos são então
comparados com uma onda triangular de referência gerada internamente. Esta onda
triangular é gerada a partir de uma contagem “crescente/decrescente” produzida por um
acumulador dentro do bloco “Contador Trifásico”. Este acumulador trabalha com uma
resolução de contagem igual a um passo (incremento ou decremento) a cada 0,05µs. A
onda triangular final é simétrica e possui uma freqüência igual a “1/Ts”. O circuito de
“Lógica de segurança de acionamento” simplesmente assegura que cada saída PWM e a
Capítulo 4 – Descrição do hardware do sistema proposto______________________
63
saída representando seu par complementado não ativem (fiquem em nível 1) em
instantes iguais, caso contrário, curto-circuitaria o ramo em questão.
Do “Contador Trifásico”, os sinais PWM gerados saem do FPGA (na placa do
“Subsistema Digital”) e vão para circuitos opto-acopladores na placa de circuito do
“Subsistema Analógico”. Destes otpo-acopladores os sinais PWM chegam aos circuitos
de comando dos IGBTs, pertencentes ao “Inversor Baseado em IGBT”.
A cada ciclo de trabalho completo, o hardware do controlador do motor de
indução atualiza os comprimentos de pulso dos sinais PWM enviados ao “Inversor
Baseado em IGBT”. Isto causa modificações de grandezas como torque e/ou velocidade
rotacional do motor controlado.
4.9 Considerações finais
O principal motivo de se ter implementado o “Subsistema de Processamento de
Sinais” utilizando também um DSP, e não somente um FPGA, é a limitação de espaço
encontrada em um FPGA sem que haja um custo elevado. Além disso, a característica
não redutível em simples multiplicações e acumulações das operações matemáticas
executadas pelos blocos “Estimador de Sinais” e “Controlador” favorece a escolha de
um DSP, em vez de um outro FPGA para interação com o FPGA “Stratix 2” já
existente. Esta característica pode ser observada pela presença tanto de operações
elementares (como adições, subtrações e multiplicações), como de operações
transcendentais (como “seno”, “arco-seno”, raiz quadrada) nos cálculos do “Estimador
de Sinais” e do “Controlador”.
A escolha de um DSP permite o uso de bibliotecas matemáticas otimizadas para
a arquitetura do próprio DSP. Isto economiza tempo de desenvolvimento comparado ao
esforço que seria necessário para se criar um suporte dessas funções para uma
arquitetura voltada para implementação de redes neurais em FPGA.
Diferentemente, uma rede neural possui modularidade por possuir um neurônio
como bloco construtivo básico e, desta forma, a própria rede representa apenas uma
replicação deste bloco construtivo. O maior esforço de desenvolvimento neste caso
consiste na definição de uma estrutura de processamento representativa de um neurônio,
esforço redutível ao uso de unidades MAC (multiplicador-acumulador). Esta
modularidade unida à necessidade de rápido processamento paralelo, nortearam a
escolha de um dispositivo FPGA para a implementação das redes neurais deste trabalho.
Capítulo 4 – Descrição do hardware do sistema proposto______________________
64
Tendo sido finalizada a descrição de hardware do protótipo do controlador de
motor de indução, é chegado o momento de apresentar e discutir os resultados práticos
obtidos. A seguir, o capítulo 5 apresenta estes resultados, além de fotos dos circuitos e
da bancada utilizada durante os testes do protótipo.
Capítulo 5 – Protótipo e resultados________________________________________
65
CAPÍTULO 5 - PROTÓTIPO E RESULTADOS
5.1 Introdução
Como contribuição experimental deste trabalho, neste capítulo são apresentados
resultados de simulações e de testes práticos realizados com o protótipo do controlador
desenvolvido para o motor de indução. Além disso, estão também neste capítulo fotos
das placas de circuito impresso do protótipo, do motor de indução e do inversor
utilizados. Simulações do hardware no FPGA foram feitas com auxílio do gerador de
formas de onda, presente no programa "Quartus 2 v6.0" da Altera. Formas de onda do
protótipo representando variáveis de 32 bits do sistema foram obtidas com auxílio de
ferramentas do programa "Code Composer Studio" para DSPs da família
TMS320C6000, da Texas Instruments. Ondas PWM, tensões e correntes do sistema,
foram obtidas utilizando-se um osciloscópio, as quais, foram armazenadas digitalmente
como figuras para inclusão neste capítulo.
Este capítulo inicia apresentando especificações técnicas dos equipamentos
utilizados, e então, são apresentadas fotos do sistema e as formas de onda de simulação
e dos testes experimentais.
5.2 Especificações do sistema
Tabela 5. 1 - Especificações do sistema. Motor de indução trifásico: Conversor:
Fabricante: Weg, IP55 Fabricante: Semikron.
Número de pólos: 4, 1730 rpm Modelo: SKS 27F B6U+B6I+E1IF.
220 V (∆), Inom = 2,98A, 60Hz IGBT: SK 45GB 063.
Pnom = 1 HP (0,75 kW) Drivers: SKHI 20opA.
η = 82,6 %, cosϕ = 0,80 Potência: 3,7KW.
Link CC: 310V. Parâmetros de ensaios:
Ω= 65,7SR , Ω= 76,2'RR
Ω= 69,66magX ,
Ω=+= 45,5'RSeq XlXlX
Frequência de chaveamento: 10KHz.
Capítulo 5 – Protótipo e resultados________________________________________
66
5.3 O protótipo Vários são os elementos compondo o protótipo final do controlador do motor de
indução trifásico. A figura 5.1 inicia apresentando uma visão frontal (a) e uma lateral
(b) do motor de indução trifásico de alto rendimento controlado pelo protótipo.
Especificações deste motor foram apresentadas na seção 5.2.
(a) (b)
Figura 5. 1 - Motor de indução trifásico (MIT) utilizado.
A seguir, na figura 5.2, é mostrado o protótipo propriamente dito do controlador
de motor de indução construído. Na figura aparecem placas de circuito impresso de
todos os subsistemas mencionados nos capítulos anteriores: "Interface com Usuário",
"Subsistema Digital", "Subsistema Analógico" e "Inversor Baseado em IGBT". O
protótipo foi montado como uma estrutura em níveis, estando mais acima os circuitos
digitais e de interfaceamento com o usuário e, mais abaixo, os circuitos analógicos e de
potência.
Capítulo 5 – Protótipo e resultados________________________________________
67
Figura 5. 2 - Visão do protótipo do controlador de MIT.
A figura 5.3 apresenta uma visão ampliada da placa de circuito impresso da
"Interface com Usuário", composta por um módulo LCD (de 2 linhas e 16 colunas) e
por um teclado com 8 botões.
Figura 5. 3 - Placa de circuito da "Interface com Usuário".
A figura 5.4 mostra uma visão ampliada do circuito impresso do "Subsistema
Digital". Este circuito foi desenvolvido utilizando o programa Orcad 9.2 e representa
Capítulo 5 – Protótipo e resultados________________________________________
68
uma das contribuições deste trabalho. Nesta figura, estão destacados elementos
importantes como: o FPGA, o DSP, o conversor ADS8364 e os terminais ligados às
fontes de alimentação. Esta placa de circuito impresso é composta por 6 camadas:
"Top", "Bottom", "Roteamento interno", "GND", "VCC 5V e 3,3V", "VCC 1,2V e
1,2VPLL". Conectores laterais na placa permitem gravação da memória de dados do
FPGA (dispositivo "EPCS64"), além de interligação com a placa de demonstração para
DSPs "TMS320C6711" (ou seja, placa "TMS320C6711-DSK").
Figura 5. 4 - Placa do "Subsistema Digital".
Representando os circuitos de condicionamento de sinais do protótipo, na figura
5.5 está uma visão ampliada da placa de circuito impresso do "Subsistem Analógico".
Nesta figura estão os três sensores de tensão (transformadores), e os locais contendo os
dois sensores de corrente (os sensores estão na parte inferior da placa). Também são
mostrados três pares de circuitos opto-acopladores, para comando das chaves de
potência do "Inversor Baseado em IGBT", a partir de sinais vindos do "Subsistema
Digital". A placa de circuito do "Subsistema Analógico" possui duas camadas de
roteamento e é alimentada através dos 10 terminais localizados à direita na figura 5.5.
Capítulo 5 – Protótipo e resultados________________________________________
69
Figura 5. 5 - Placa do "Subsistema Analógico".
Para a tarefa de comutação de altas tensões e correntes, o protótipo final conta
com o módulo "Inversor Baseado em IGBT", mostrado na figura 5.6. Este é um módulo
de conversor trifásico de potência, adquirido da empresa "Semikron". Através de uma
alimentação trifásica, um retificador não controlado gera a tensão de "Link CC"
(terminais à direita na figura 5.6). Por meio de sinais de controle recebidos pelos
"Drivers(DRV)", a ponte de "IGBTs" transforma a tensão de "Link CC" nas formas de
ondas transmitidas para as saídas "OUT1", "OUT2" e "OUT3" do inversor. Estas saídas
estão interligadas com os terminais de entrada do motor controlado e representam, na
figura 5.6, os terminais indicados como "Saídas para MIT". Este é um inversor com
potência máxima de 3,7 KW e que alcança a freqüência máxima de chaveamento de 20
KHz.
Capítulo 5 – Protótipo e resultados________________________________________
70
Figura 5. 6 - Módulo "Inversor Baseado em IGBT".
Alimentando todos os circuitos do protótipo, foi utilizada uma combinação de
cinco fontes lineares, conforme mostrado na figura 5.7. A “Fonte 5” alimenta com
+15V as entradas de cinco reguladores de tensão “LM338”. Estes reguladores geram as
tensões: 1,2V (para os núcleos do FPGA e do DSP), 1,2V (alimentando circuitos “PLL”
no FPGA), 3,3V (para portas de E/S digitais do sistema) e 5V (para os sensores de
corrente e para o conversor ADS8364). Já as fontes de alimentação "Fonte1", "Fonte2",
"Fonte3" são isoladas entre si. Cada uma alimenta com +15V uma das três "pernas" do
módulo "Inversor Baseado em IGBT" (figura 5.6). Para suprir os circuitos de filtragem
baseados em amplificadores operacionais na placa de circuito do “Subsistema
Analógico”, a “Fonte 4” disponibiliza a tensão de ±15V. No lado esquerdo da figura
5.7, todas as tensões mencionadas estão acessíveis através dos conectores indicados na
figura como “Saídas”.
Capítulo 5 – Protótipo e resultados________________________________________
71
Figura 5. 7 - Fonte de alimentação do protótipo.
Finalizada a exposição do protótipo desenvolvido do controlador do motor de
indução, chega o momento de se apresentar resultados obtidos. A seção a seguir
apresenta resultados e discussões de testes e simulações do controlador do motor
trifásico de corrente alternada proposto neste trabalho.
5.4 Resultados experimentais e de simulação
Esta seção de apresentação de resultados inicia com simulações em VHDL da
execução de um neurônio com função de ativação sigmoidal e uma entrada.
Inicialmente, a figura 5.8 trata de um exemplo apresentando como são codificados os
valores recebidos pela entrada do neurônio. Todo valor está codificado em ponto
flutuante de 32 bits (padrão IEEE 754). A figura 5.8 realça os campos de sinal, expoente
e mantissa desta representação, além de suas respectivas conversões para decimal.
Figura 5. 8 - Valor 0.8078 aproximado em formato IEEE 754.
Capítulo 5 – Protótipo e resultados________________________________________
72
As figuras 5.9 à 5.11 apresentam formas de onda representando a execução deste
neurônio em três situações distintas. Matematicamente os cálculos realizados pelos
circuitos do neurônio podem ser representados pelas equações 5.1 e 5.2.
( )( ) neuroniosaidabiaspesoentradasigmoidxf entradaanormalizadsig _)( =+⋅= ∑ (5.1)
)1657.04276.1)1.000418848.0()( +⋅+⋅= xsigmoidxf sig (5.2)
Figura 5. 9 - Saída = 0.8078, para uma entrada sem normalização x =188.62638.
Latência do neurônio próxima de 500ns.
Figura 5. 10 - Saída = 0.0474, para uma entrada sem normalização x = −553.30284.
Latência do neurônio próxima de 500ns.
Figura 5. 11 - Saída = 1.0 (comportamento no mais infinito), resultado de uma entrada
não normalizada x =2456.99536. Latência do neurônio próxima de 250ns.
Os resultados de simulação apresentados nas figuras 5.9 à 5.11 utilizam um sinal
ideal "rel" (clock) com período igual a 0.03µs (33.333 MHz). No protótipo final, a
freqüência deste sinal de clock teve de ser reduzida para 20 MHz. Esta redução foi
necessária porque os circuitos reais das redes neurais apresentam atrasos adicionais de
cálculo não presentes em formas de onda de simulação. Um maior período de clock
permite que os circuitos dos neurônios tenham tempo suficiente para realizar seus
cálculos, mesmo na presença de variações momentâneas deste clock.
A entrada "contagem" (figuras 5.9 à 5.11) representa valores de estado para o
controle de fluxo do microprograma do neurônio (conforme já mencionado no capítulo
Capítulo 5 – Protótipo e resultados________________________________________
73
4). Cada uma das figuras representa uma situação de operação em que o neurônio
“escolhe” um diferente intervalo de "spline" para calcular o resultado da sua função de
ativação sigmoidal. Esta “escolha” é feita pelo neurônio, ao ser definido em qual trecho
de “spline” está contida a entrada “x” após ter sofrido uma pré-normalização.
Nas figuras 5.9 e 5.10 obteve-se um atraso de resposta do neurônio próximo a
500ns. Este atraso é devido principalmente aos cálculos polinomiais necessários para
representar a função sigmóide nos trechos de “spline” escolhidos. Já na figura 5.11,
forçosamente, foi escolhido um valor de entrada que, após ser pré-normalizado,
pertence a um trecho de saturação da função sigmóide (comportamento no +∞),
resultando em uma resposta do neurônio igual a 1.0. Neste caso, por não serem
realizados todos os cálculos polinomiais, como ocorrido nas situações das figuras 5.9 e
5.10, o atraso de resposta do neurônio foi de apenas 250 ns.
Prosseguindo com a apresentação dos resultados obtidos, nas figuras 5.12 à 5.14
são apresentadas curvas medidas em três das saídas PWM do protótipo. Conforme já
mencionado nos capítulos 2 e 3, as saídas PWM são produzidas pelo bloco “Controle
PWM Space-Vector Baseado em Redes Neurais”, dentro do FPGA (Subsistema
Digital). Como pode ser notado pelas figuras, as três ondas PWM apresentam período
igual a 100µs, ou seja, o próprio valor do período de amostragem utilizado pelo sistema
para geração das tensões e correntes aplicadas ao motor de indução.
Figura 5. 12 - Sinal PWM na fase A do inversor.
Capítulo 5 – Protótipo e resultados________________________________________
74
Figura 5. 13 - Sinal PWM na fase B do inversor.
Figura 5. 14 - Sinal PWM na fase C do inversor.
Nas figuras 5.12 à 5.14 os sinais PWM apresentados estão com largura de pulso
fixa. Porém para girar o motor, a cada 100µs (período de amostragem) a largura dos
pulsos nas três fases deve ser modificada. Quando estes pulsos PWM de largura variável
são filtrados, os resultados são curvas representando tempos de Ton, já discutidos no
capítulo 3 deste trabalho. A figura 5.15 representa uma curva de Ton com 30 Hz, sendo
suas características típicas de curvas pertencentes à região de submodulação. Já a figura
5.16 (com 57,2 Hz) representa o comportamento do sistema na região de
sobremodulação-modo1, enquanto a curva de Ton com 60 Hz (na figura 5.17) representa
operação na região de sobremodulação-modo2.
Capítulo 5 – Protótipo e resultados________________________________________
75
Figura 5. 15 - Exemplo de formas de onda de tempo de Ton para região de
submodulação.
Figura 5. 16 - Exemplo de formas de onda de tempo de Ton para região de
sobremodulação-modo 1.
Capítulo 5 – Protótipo e resultados________________________________________
76
Figura 5. 17 - Exemplo de formas de onda de tempo de Ton para região de
sobremodulação-modo 2.
O funcionamento do motor de indução a ser controlado permite a medição das
formas de onda de tensão e corrente trifásicas aplicadas em seus terminais de entrada. A
figura 5.18 apresenta formas de onda de tensão de duas fases do motor. Estas medições
foram feitas após os filtros passa-baixa de 300 Hz no "Subsistema Analógico". Neste
caso, o motor de indução foi operado com uma freqüência de tensão no estator igual a
30 Hz.
Capítulo 5 – Protótipo e resultados________________________________________
77
Figura 5. 18 - Tensões em duas fases do motor de indução.
As figuras 5.19 e 5.20 apresentam medições de corrente feitas diretamente em
dois terminais de entrada do motor de indução. No momento da medição, o motor
funcionava com uma freqüência de tensão no estator igual a 30 Hz. O osciloscópio
utilizado realiza medições de corrente por meio de ponteiras por efeito Hall. Desta
maneira, as formas de onda nas figuras apresentam unidades em volts (V) no eixo
vertical, podendo, porém, estes valores ser interpretados diretamente em ampéres.
Figura 5. 19 - Corrente da fase B do motor de indução.
Capítulo 5 – Protótipo e resultados________________________________________
78
Figura 5. 20 - Corrente da fase C do motor de indução.
Através de medições filtradas de tensões e correntes do motor de indução
controlado, os sistemas do caminho de retroação do controlador do motor podem iniciar
seu trabalho. A figura 5.21 apresenta um exemplo de simulação (realizada no programa
"Quartus 2") do funcionamento do módulo "Estimador de Fluxo" no FPGA (pontos em
vermelho). O bloco recebeu em suas entradas formas de onda de tensão, cujas
freqüências destas ondas foram variadas uma vez no tempo. O resultado é uma forma de
onda de fluxo de estator que acompanha a freqüência das tensões de entrada. Na mesma
figura há uma simulação no programa "Simulink" (em azul), realizada também nestas
condições de entradas.
Capítulo 5 – Protótipo e resultados________________________________________
79
Figura 5. 21 - Simulação de estimação de fluxo do MIT.
5.5 Considerações finais O capítulo buscou apresentar resultados experimentais e de simulação que
comprovem o funcionamento dos módulos mais importantes do controlador do motor de
indução construído. O protótipo final foi capaz de controlar a velocidade de um motor
de indução trifásico convencional, porém, somente a partir de um controle V/Hz (malha
aberta), não havendo tempo hábil para ser alcançado um controle total em malha
fechada. As redes neurais no FPGA realizaram cálculos, na prática, com latências
aceitáveis para a aplicação, de forma que o sistema possui um tempo de resposta total
próximo a 20µs (menor que o período de amostragem de 100µs utilizado).
Assim, finaliza-se a apresentação e discussão de vários resultados experimentais
e de simulação, realizados com os sistemas implementados. O capítulo 6 apresentará
conclusões finais a respeito do trabalho como um todo.
Capítulo 6 – Conclusões________________________________________________
80
CAPÍTULO 6 - CONCLUSÕES
6.1 Conclusões O presente trabalho mostrou a possibilidade da construção em hardware de
arquiteturas de redes neurais capazes de grande precisão numérica e alta capacidade de
processamento paralelo. Para isto, foi seguida uma estratégia de construção de
neurônios como processadores independentes reunidos, formando redes neurais
completas inseridas dentro de um FPGA. O problema da representação de funções de
ativação sigmoidais pôde ser resolvido através da representação desta função no
hardware dos neurônios utilizando interpolação polinomial. O trabalho utilizou como
base modelagens de redes definidas em trabalhos anteriores. As versões em hardware
destas redes neurais mostraram-se capazes de realizar, satisfatoriamente, tanto a função
de estimação de fluxo estatórico, quanto à função de modulação por vetores espaciais
"SVM".
Em contrapartida aos sucessos alcançados, o protótipo mostrou-se
excessivamente sensível aos ruídos de chaveamento gerados pelo funcionamento dos
IGBTs do inversor de potência. O fato dos sistemas digitais do protótipo utilizar baixas
tensões de alimentação (3,3V e 1,2V) cria uma exigência de alta relação sinal ruído,
somente alcançada com uso de blindagens adequadas e filtragens em pontos de
alimentação.
Os resultados finais deste trabalho representam uma porta de entrada para muitos
desenvolvimentos futuros na área de implementação de redes neurais em hardware. A
seção a seguir apresenta algumas propostas para trabalhos futuros.
6.2 Propostas para trabalhos futuros
Várias são as melhorias possíveis para trabalhos futuros, tais como utilização de
precisões com menor número de bits de representação nos neurônios implementados
dentro do FPGA. Esta melhoria poderia permitir a construção de redes com mais
neurônios dentro da mesma área de silício do FPGA.
Outra possibilidade de alteração seria a implementação em dispositivo único de
todo o sistema, ou seja, a implementação de todos os blocos do sistema em VHDL e
Capítulo 6 – Conclusões________________________________________________
81
dentro de um único FPGA de maior capacidade. Isto permitiria maior imunidade a
ruídos externos devido a maior proximidade dos componentes do sistema.
Uma terceira proposta de trabalho futuro seria a construção de arquiteturas de
redes neurais com pesos não fixos e interligação entre neurônios reconfigurável. Esta
abordagem representaria uma generalização do trabalho atual, permitindo a
implementação em hardware de diferentes tipos existentes de redes neurais artificiais.
Novos trabalhos na área devem procurar sempre alcançar melhores
compromissos entre área de silício ocupada, usar precisão numérica adequada para
aplicação e alcançar maior velocidade de processamento na arquitetura final proposta. A
figura 6.1 apresenta um trecho do arquivo de sumário de análise e síntese gerado ao ser
compilado, no software Quartus 2, os projetos em VHDL das redes neurais deste
trabalho. Nesta figura, estão dados de ocupação de recursos de hardware do FPGA
Stratix 2, tais como: número de ALUTs (tabelas de look-up adaptativas), ALMs
(módulos lógicos adaptativos, semelhantes aos blocos lógicos CLBs), número de blocos
de DSP, etc..
Figura 6. 1. Dados de utilização global do FPGA Stratix 2.
Anexo A____________________________________________________________
1
Anexo A:
Esquemáticos dos circuitos do
protótipo
Anexo A________________________________________________________________________________________________________________________
2 Esquemático do DSP TMS320C6711 e periféricos (Subsistema Digital)
AOE 3ARE 3AWE 3
rel_FPGA 3
VCC_3V32,3
CE2 3
VCC_3V32,3
EA[5..2] 3
pronto_rec3pronto_SV3
RESET_DSP3
Clock_4MHz_ADS 3
VCC_3V32,3
VCC_1V22,3
EOC_ADS83643
Clock_Oscilador_32MHz2
VCC_3V3 2,3
VCC_3V3 2,3 VCC_3V3 2,3
ED[31..0]3
VCC_3V32,3
Enable_LCD3
VCC_3V32,3
VCC_1V22,3
VCC_3V32,3
VCC_3V32,3
VCC_3V32,3
VCC_3V32,3
VCC_3V32,3
VCC_3V32,3
VCC_3V32,3
VCC_3V32,3 VCC_3V32,3
VCC_3V32,3VCC_3V3 2,3
VCC_3V3 2,3
VCC_3V32,3
ED9
ED5
ED6ED29
ED27
ED7
ED5
ED1
ED0
ED26
ED11
ED0
ED0
ED2
ED9
ED31
ED15
ED28
ED14
ED3
ED12
ED23
ED7
ED2
ED1ED0
ED8
ED10
ED15
ED20
ED6
ED5
ED5
ED1ED0
ED21
ED17
ED13
ED1
ED22
ED18
ED4
ED4
ED2
ED16
ED3
ED6
ED11
ED5
ED24
ED10
ED14
ED4
ED7
ED2
ED8
ED4
ED8
ED19
ED3
ED12
ED25
ED7
ED13
ED3
ED7ED30
ED3
ED6
ED4
ED2
ED6
ED1
ED
[31.
.0]
ED0ED1ED2ED3ED4ED5ED6ED7ED8ED9ED10ED11ED12ED13ED14ED15ED16ED17ED18ED19ED20ED21ED22ED23ED24ED25ED26ED27ED28ED29ED30ED31
AOECE3
ECLKOUT
AREAWE
CE2
EA5
EA10
EA16
EA7
EA5
EA19
EA20
EA4
EA15
EA18
EA11EA10
EA14EA6
EA13
EA9
EA11
EA19
EA4
EA17
EA20
EA3
EA3
EA13
EA2
EA4
EA17
EA9
EA7
EA5
EA8
EA6
EA4
EA12
EA12EA21
EA3
EA13
EA9
EA5
EA8
EA15
EA12
EA3
EA14
EA6
EA16
EA2
EA15EA14
EA2
EA16
EA2
EA11
EA7EA8
EA10
EA18
C43100n
R9 10K
R12 10K
C14100n
R11 10K
C7100n
C110u
C17100n
R8
10K
R14120
C10100n
R13120
C19100n
JH1CLOCK_EXT
11
C50100n
C21100n
C27100n
C42100n
U1A
SYM 1 OF 4
?
?tms320c6711dgdp200
V8W7V7Y6
J20
V5
Y10
V6
F20
N3P3
E18
Y4
W6
P2P1
F18
R2R3
E1
T2
K3
T1U3U1
C2
U2
M2
V1
J1
D10
J19
L2H2
H20
C1
U19
F2
U18
G2
Y18
C16B17
W18
A18
V2
C17
Y3
B18
W4
C19
C4
E19
V4
C20
T19
D18
M1
T20
D20
H3
V11
T18
E20
R20R19
D2
P20
L3G3
G19G18
P18N20
J18
N19
W17
N18
Y16
M20
B14
V16
M19
C14
Y15
L19
A15
W15
L18
C15
Y14
K19
A16
W14
E3
K18
B16
V20
V14W13V10
V17
Y11Y5
M3J3
C13
F1G1
L1H1
W10
A3
G20
H19
J17
A13
Y9
V12
V9Y8W8
Y12
EA5EA4EA3EA2
HINT*
BE3*
ECLKOUT
CE3*
HCS*
ED31ED30
HAS*
BE2*
CE2*
ED29ED28
HDS2*
ED27ED26
CLKS1
ED25
CLKS0
ED24ED23ED22
GP[4](EXT_INT4)
ED21
DR1
ED20
DR0
CLKOUT3
BUSREQ
DX1DX0
HHWIL
GP[5](EXT_INT5)
BE1*
TINP1
EA21
TINP0
EA20
HD9HD8
CE1*
HD7
ED19
HD6
ED18
HD5
ED17
HD4
CLKMODE0
HDS1*
ED16
HD3
ED15
HD2
CLKR1
ED14
HD1
CLKR0
ARE*/SDCAS*/SSADS*
ED13
HD0
ED12ED11
GP[6](EXT_INT6)
ED10
CLKX1CLKX0
HCNTL1HCNTL0
ED9ED8
HOLDA*
ED7
EA19
ED6
EA18
ED5
HD15
EA17
ED4
HD14
EA16
ED3
HD13
EA15
ED2
HD12
EA14
ED1
HD11
EA13
GP[7](EXT_INT7)
ED0
HD10
BE0*
EA12EA11EA10
CE0*
ECLKINARDY
FSR1FSR0
NMI
TOUT1TOUT0
FSX1FSX0
AOE*/SDRAS*/SSOE*
CLKIN
HR/W*
HRDY*
HOLD*
RESET*
EA9
AWE*/SDWE*/SSWE*
EA8EA7EA6
CLKOUT2/GP[2]
C3100n
JP3
Enderecos_teste
1234567891011
C2100n
C52100n
R1 1K
C23100n
C53100n
C54100n
C20100n
C4100n
C55100n
C57100n
C22100n
C56100n
C61100n
C16100n
C15100n
U4
74LV373/SO
1101120
2569
12151619
347813141718
OEGNDLEVCC
Q1Q2Q3Q4Q5Q6Q7Q8
D1D2D3D4D5D6D7D8
C49100n
C46100n
C58100n
C59100n
C39100n
C60100n
C29100n
C26100n
R10 10K
C24100n
JP2
LCD-16X2
12345678910111213141516
C8100n
R7 10K
C9100n
JP1
Botões_Usuário
12345678
C48100n
C35100n
U3TMS29LF040/SO
9
1011
12
1314151617181920 21
2223
24
2526272829
30
31
32
1
23
45
6
7
8
A18
A16A15
A12
A7A6A5A4A3A2A1A0 DQ0
DQ1DQ2
VSS
DQ3DQ4DQ5DQ6DQ7
CE
A10
OE
A11
A9A8
A13A14
A17
WE
VCC
C37100n
R15 10K
U1B
SYM 2 OF 4
?
?tms320c6711dgdp200
U17
D8
U13
U7
F17
T17
U5
J9
D4
J4
P4
B8
D15
A9
D14
C18
D11
B3
A4
B19
P19P17
C9C8
Y17
K20
C6
T3
N17
A10
U9
M17
U8
V19
W12
U4
M12M11M10
V15V13
L12L11
F4
U16
L10
U12
K12
L4
K11K10
B4
R4
J12
Y7J11
B1
C5
J10
H4
R18
H17
N4
T4
G17
F19
B20F3
W19
A20
E17
K4
V18
K1
D17
A2
R1
A1
M9
G4
M18
D13
U15
W2
U14
M4
U11U10
B15
A19
D6D5
Y2Y1
A14
R17
A11
W9
L9
H18
L20
W3
V3
Y20
C7C3
W20
D1
J2
D19
L17
D16
Y19
U6
K17
U20
K9
E4E2
Y13
K2
C10B13
A17
W16
W5W11
W1
B2
VSS
VSS
VSS
DVDD
CVDD
VSS
DVDD
VSS
VSS
VSS
VSS
DVDD
CVDD
CVDD
CVDD
CVDD
CVDD
DVDD
CVDD
CVDD
VSSVSS
VSSVSS
DVDD
VSS
VSS
DVDD
VSS
CVDD
VSS
VSS
VSS
DVDD
DVDD
VSS
VSSVSSVSS
DVDDDVDD
VSSVSS
CVDD
DVDD
VSS
DVDD
VSS
CVDD
VSSVSS
VSS
CVDD
VSS
DVDDVSS
VSS
PLLHV
VSS
VSS
DVDD
VSS
VSS
VSS
VSS
VSS
VSSDVDD
CVDD
VSS
VSS
CVDD
CVDD
CVDD
VSS
VSS
DVDD
VSS
VSS
VSS
DVDD
VSS
CVDD
CVDD
CVDD
VSS
CVDDCVDD
VSS
VSS
CVDDCVDD
VSSVSS
VSS
CVDD
VSS
DVDD
VSS
DVDD
CVDD
DVDD
CVDD
VSS
CVDDCVDD
VSS
DVDD
DVDD
DVDD
CVDD
DVDD
VSS
CVDD
CVDD
VSS
VSS
VSSVSS
VSS
VSS
DVDDDVDD
DVDD
VSS
VSSVSS
VSS
CVDD
R4 10K
R2 10K
C32100n
C47100n
C45100n
C41100n
C31100n
J1Pontos_teste
123456789
1011121314151617181920212223242526272829303132
C40100n
C33100n
C30100n
C38100n
C34100n
U2MT48LC4M16A2TG-75
245781011134244454748505153
232425262930313233342235
193837
2021
1817
16
15
40
13914
612
27
28
36
39
41
43
46
49
52
54
DQ0DQ1DQ2DQ3DQ4DQ5DQ6DQ7DQ8DQ9
DQ10DQ11DQ12DQ13DQ14DQ15
A0A1A2A3A4A5A6A7A8A9A10A11
CSCLKCKE
BA0BA1
RASCAS
WE
DQML
NC
VCCVCCVCCVCC
VssQVssQ
VDD
Vss
A12
DQMH
Vss
VddQ
VssQ
VddQ
VssQ
Vss
R6 10K
U1C SYM 3 OF 4
?
? tms320c6711dgdp200
D12D7
A12
N2N1
C12
A5
B5B11
RSVRSV
RSV
RSVRSV
RSV
RSV
RSVRSV
U1D SYM 4 OF 4
?
? tms320c6711dgdp200
B9D9
A8
B6
A7A6
B7
B12C11B10D3EMU1
EMU0
TDO
TRST*
TDITCK
TMS
EMU5EMU4EMU3EMU2
R3 10K
C51100n
U5
EMI FIlter
123
IGND
O
C36100n
C44100n
C13100n
C11100n
C6100n
C28100n
R5 10K
C5100n
C62100n
C25100n
C63100n
C18100n
C64100n
C12100n
Barramento de dados
Barramento de endereço
Flash para DSP
Dado 6 LCD
Dado 0 LCDDado 1 LCD
Dado 3 LCDDado 4 LCD
Dado 2 LCD
Dado 5 LCD
Dado 7 LCD
SDRAM para DSP
ER/WRSVoVDDVSSLEDALEDK
88MHz
Boot Modo ROM 8 bits
DSP TMS320C6711GDP
4MHz
Botoes
SDRAMFLASHFPGA E LCDBOTÕES
LCD 16X2
(Vindo do FPGA)
Clock suprido pelo CLKIN
TMS29LF040/SO
CVDD
MT48LC16M16A2TG-75
Capacitores de Desacoplamento
DVDD
74LV373
Não utilizado pois o EMIF clk vem do DSP
Interligacao com DSK6711
Anexo A________________________________________________________________________________________________________________________
3 Esquemático do FPGA Stratix 2 e periféricos (Subsistema Digital)
dados[0] 1dados[1] 1dados[2] 1dados[3] 1dados[4] 1dados[5] 1dados[6] 1dados[7] 1dados[8] 1dados[9] 1dados[10] 1dados[11] 1dados[12] 1dados[13] 1dados[14] 1dados[15] 1dados[16] 1dados[17] 1dados[18] 1dados[19] 1dados[20] 1dados[21] 1dados[22] 1dados[23] 1dados[24] 1dados[25] 1dados[26] 1dados[27] 1dados[28] 1dados[29] 1dados[30] 1dados[31] 1
ED[31..0]1
end0 1end1 1end2 1end3 1
EA[5..2]1
AOE1ARE1AWE1CE21
dados[12] 1dados[13] 1
dados[15] 1dados[14] 1
dados[19] 1dados[18] 1dados[17] 1dados[16] 1
dados[20] 1dados[21] 1
dados[22] 1dados[23] 1dados[24] 1dados[25] 1
dados[27] 1dados[26] 1dados[29] 1dados[28] 1
dados[30] 1dados[31] 1
end01end11
end3 1end2 1
rel_FPGA1
S1S2
S4S3
S5S6
pronto_SV 1pronto_rec 1
ASDO
CONF_DONE
DCLK
DATA0
nCE
nCONFIG
nSTATUS
nCSO
VCC_3V3 1,2
VCC_1V21,2
VCC_3V31,2
VCC_1V2_PLL 2
VCC_1V21,2
VCC_3V31,2
VCC_3V31,2
VCC_1V2_PLL2 VCC_1V2_PLL2
VCC_3V3 1,2
INIT_DONE
CONF_DONE
INIT_DONE
RESET_DSP1
S1S2S3S4S5S6
VCC_3V31,2
nSTATUS
DATA0
VCC_3V31,2
VCC_3V31,2
VCC_3V31,2
VCC_3V31,2
VCC_3V31,2
dados[7]1
dados[0]1
dados[2]1dados[3]1
dados[6]1
dados[9]1
dados[10]1
dados[1]1
dados[5]1
dados[8]1
dados[11]1
dados[4]1
dado_ADS[3]
dado_ADS[8]dado_ADS[9]
dado_ADS[4]dado_ADS[5]
dado_ADS[1]dado_ADS[2]
dado_ADS[7]
dado_ADS[0]
dado_ADS[10]
dado_ADS[6]
dado_ADS[13]
dado_ADS[11]
dado_ADS[15]
dado_ADS[12]
dado_ADS[14]
HOLD_ADSA[2]A[1]A[0]
CS_ADSRD_ADS
Enable_LCD1
MSEL3
MSEL1
nCEDCLK
ASDO
MSEL1
MSEL3
CONF_DONE
nCSO
nCONFIG
VCC_3V3 1,2
Geral_5V2
VCC_3V3 1,2
VCC_3V31,2 Geral_5V2
dado_ADS[5]
RD_ADS
Geral_5V2
dado_ADS[3]
dado_ADS[9]
dado_ADS[12]
A[0]
dado_ADS[2]
HOLD_ADS
dado_ADS[15]
dado_ADS[6]
VCC_3V31,2
dado_ADS[0]
dado_ADS[11]
A[2]dado_ADS[10]
RESET_DSP 1
dado_ADS[1]
dado_ADS[8]
dado_ADS[4]
A[1]
dado_ADS[14]
CS_ADS
dado_ADS[7]
Clock_4MHz_ADS 1
dado_ADS[13]
VCC_3V31,2 VCC_3V31,2
VCC_3V31,2
VCC_3V31,2
VCC_3V31,2
VCC_3V31,2
EOC_ADS83641
nSTATUS
nCONFIG
EA2EA3EA4EA5
ED4
ED29
ED31
ED5
ED26ED27
ED24
ED12
ED23
ED20ED19
ED30
ED28
ED17
ED7
ED21
ED13
ED18
ED10
ED2ED3
ED11
ED6
ED8
ED22
ED0
ED9
ED14
ED16ED15
ED25
ED1
C118100n
R20 10K
U8L
ALTERA EP2S60F484Version = 1.0
M22AA22B22L22A12A20A3A11B1L1M1AA1AB3AB11AB12AB20
L17L18N17N18N5N6L4L5
F10F11T11T12
C3A2
C19D16B14
Y3U3P4
W8W6
AA4
C4D7D9J4F3D3
D20F18L19
Y19W16
AA14
R20V20Y20 G10
R11
M17M19M4M6F12R12
M16M18M5L6G11U11
VCCIO1VCCIO1VCCIO2VCCIO2VCCIO3VCCIO3VCCIO4VCCIO4VCCIO5VCCIO5VCCIO6VCCIO6VCCIO7VCCIO7VCCIO8VCCIO8
GNDA_PLL1GNDA_PLL1GNDA_PLL2GNDA_PLL2GNDA_PLL3GNDA_PLL3GNDA_PLL4GNDA_PLL4GNDA_PLL5GNDA_PLL5GNDA_PLL6GNDA_PLL6
TEMPDIODEnTEMPDIODEp
VREFB3N2VREFB3N1VREFB3N0
VREFB6N0VREFB6N1VREFB6N2VREFB7N0VREFB7N1VREFB7N2
VREFB4N0VREFB4N1VREFB4N2VREFB5N0VREFB5N1VREFB5N2
VREFB2N0VREFB2N1VREFB2N2
VREFB8N0VREFB8N1VREFB8N2
VREFB1N0VREFB1N1VREFB1N2 VCC_PLL5_OUT
VCC_PLL6_OUT
VCCA_PLL1VCCA_PLL2VCCA_PLL3VCCA_PLL4VCCA_PLL5VCCA_PLL6
VCCD_PLL1VCCD_PLL2VCCD_PLL3VCCD_PLL4VCCD_PLL5VCCD_PLL6
JP5
Entrada_ADS
12345678910111213
R1710K
R1610K
U8C
ALTERA EP2S60F484Version = 1.0
A15B15C15C16E14F13G13
F15F16G15G16H14H16J15
A16A17A18B16B17B18C14C17C18D14D15E15F14G14
IO_VB3N0_A15IO_VB3N0_B15IO_VB3N0_C15IO_VB3N0_C16IO_VB3N0_E14IO_VB3N0_F13IO_VB3N0_G13
IO_VB3N2_F15IO_VB3N2_F16IO_VB3N2_G15IO_VB3N2_G16IO_VB3N2_H14IO_VB3N2_H16IO_VB3N2_J15
IO_VB3N1_A16IO_VB3N1_A17IO_VB3N1_A18IO_VB3N1_B16IO_VB3N1_B17IO_VB3N1_B18IO_VB3N1_C14IO_VB3N1_C17IO_VB3N1_C18IO_VB3N1_D14IO_VB3N1_D15IO_VB3N1_E15IO_VB3N1_F14IO_VB3N1_G14
C110100n
U8A
ALTERA EP2S60F484Version = 1.0
N15N16P16P17P18P19P20P21R16R17R18R19R21R22T17T18T19T20T21T22U19U20U21U22
U17U18V18V19V21V22W19W20W21W22Y21Y22
IO_VB1N0_N15IO_VB1N0_N16IO_VB1N0_P16IO_VB1N0_P17IO_VB1N0_P18IO_VB1N0_P19IO_VB1N0_P20IO_VB1N0_P21IO_VB1N0_R16IO_VB1N0_R17IO_VB1N0_R18IO_VB1N0_R19IO_VB1N0_R21IO_VB1N0_R22IO_VB1N0_T17IO_VB1N0_T18IO_VB1N0_T19IO_VB1N0_T20IO_VB1N0_T21IO_VB1N0_T22IO_VB1N0_U19IO_VB1N0_U20IO_VB1N0_U21IO_VB1N0_U22
IO_VB1N1_U17IO_VB1N1_U18IO_VB1N1_V18IO_VB1N1_V19IO_VB1N1_V21IO_VB1N1_V22
IO_VB1N1_W19IO_VB1N1_W20IO_VB1N1_W21IO_VB1N1_W22IO_VB1N1_Y21IO_VB1N1_Y22
C112100n
U8J
ALTERA EP2S60F484Version = 1.0
T16
U16
W11V12
E5D4B4A4
F6G7
D19
E13H12D17A19E16E17B19D18
C20E12
G12
E18
A21AA3W18W12D11AB2W17B20V16H11E11D12V5F17V11AA19AB21B3AA20AB19V17
U7W5
CS
CLKUSR
DEV_CLRnDEV_OE
MSEL0MSEL1MSEL2MSEL3
RDN4RUP4
DCLK
DATA0DATA1DATA2DATA3DATA4DATA5DATA6DATA7
CONF_DONECRC_ERROR
ASDO
INIT_DONE
nCEnCEO
nCONFIGnCS
nCSOnIO_PULLUP
nRSnSTATUS
nWSPGM0PGM1PGM2
PORSELRDYnBSY
RUnLUTCKTDI
TDOTMS
TRSTVCCSEL
RDN7RUP7
U8I
ALTERA EP2S60F484Version = 1.0
V9W9
AA10AB10Y9AA9
W13Y13
N2N1N4N3 Y4
C9B9
B10A10D10C10
L20L21M20M21N21N22N19N20
AA13AB13Y12
AA12Y11
AA11W10Y10
L3L2M3M2
C11B11C12B12B13A13D13C13
PLL6_FBnPLL6_FBp
PLL6_OUT0nPLL6_OUT0pPLL6_OUT1nPLL6_OUT1p
PLL12_FBnPLL12_OUT0p
CLK8nCLK8pCLK9nCLK9p PLL_ENA
PLL5_FBnPLL5_FBp
PLL5_OUT0nPLL5_OUT0pPLL5_OUT1nPLL5_OUT1p
CLK0nCLK0pCLK1nCLK1pCLK2nCLK2pCLK3nCLK3pCLK4nCLK4pCLK5nCLK5pCLK6nCLK6pCLK7nCLK7p
CLK10nCLK10pCLK11nCLK11pCLK12nCLK12pCLK13nCLK13pCLK14nCLK14pCLK15nCLK15p
C108100n
U8H
ALTERA EP2S60F484Version = 1.0
R14R15T14T15U15W14Y14
AA15AB15
V13V14Y15Y16
T13U12U13U14V15W15Y17Y18AA16AA17AA18AB16AB17AB18
IO_VB8N0_R14IO_VB8N0_R15IO_VB8N0_T14IO_VB8N0_T15IO_VB8N0_U15IO_VB8N0_W14IO_VB8N0_Y14
IO_VB8N2_AA15IO_VB8N2_AB15
IO_VB8N2_V13IO_VB8N2_V14IO_VB8N2_Y15IO_VB8N2_Y16
IO_VB8N1_T13IO_VB8N1_U12IO_VB8N1_U13IO_VB8N1_U14IO_VB8N1_V15
IO_VB8N1_W15IO_VB8N1_Y17IO_VB8N1_Y18
IO_VB8N1_AA16IO_VB8N1_AA17IO_VB8N1_AA18IO_VB8N1_AB16IO_VB8N1_AB17IO_VB8N1_AB18
U8G
ALTERA EP2S60F484Version = 1.0
AA6AA7AA8AB6AB7AB8
U10V10Y7Y8
R9T7T8U6V6V7
T9T10U8U9V8W7Y5Y6AA5AB5
IO_VB7N0_AA6IO_VB7N0_AA7IO_VB7N0_AA8IO_VB7N0_AB6IO_VB7N0_AB7IO_VB7N0_AB8
IO_VB7N0_U10IO_VB7N0_V10IO_VB7N0_Y7IO_VB7N0_Y8
IO_VB7N2_R9IO_VB7N2_T7IO_VB7N2_T8IO_VB7N2_U6IO_VB7N2_V6IO_VB7N2_V7
IO_VB7N1_T9IO_VB7N1_T10IO_VB7N1_U8IO_VB7N1_U9IO_VB7N1_V8
IO_VB7N1_W7IO_VB7N1_Y5IO_VB7N1_Y6
IO_VB7N1_AA5IO_VB7N1_AB5
C109100n
U8F
ALTERA EP2S60F484Version = 1.0
U4U5V1V2V3V4
W1W2W3W4Y1Y2
N7N8P2P3P5P6P7P8R1R2R3R4R5R6R7R8T1T2T3T4T5T6U1U2
IO_VB6N1_U4IO_VB6N1_U5IO_VB6N1_V1IO_VB6N1_V2IO_VB6N1_V3IO_VB6N1_V4IO_VB6N1_W1IO_VB6N1_W2IO_VB6N1_W3IO_VB6N1_W4IO_VB6N1_Y1IO_VB6N1_Y2
IO_VB6N2_N7IO_VB6N2_N8IO_VB6N2_P2IO_VB6N2_P3IO_VB6N2_P5IO_VB6N2_P6IO_VB6N2_P7IO_VB6N2_P8IO_VB6N2_R1IO_VB6N2_R2IO_VB6N2_R3IO_VB6N2_R4IO_VB6N2_R5IO_VB6N2_R6IO_VB6N2_R7IO_VB6N2_R8IO_VB6N2_T1IO_VB6N2_T2IO_VB6N2_T3IO_VB6N2_T4IO_VB6N2_T5IO_VB6N2_T6IO_VB6N2_U1IO_VB6N2_U2
U8E
ALTERA EP2S60F484Version = 1.0
F1F2G1G2G5G6H1H2H3H4H5H6J2J3J5J6J7J8K1K2K3K4K5K6K7K8L7L8
C1C2D1D2E1E2E3E4F4F5G3G4
IO_VB5N0_F1IO_VB5N0_F2IO_VB5N0_G1IO_VB5N0_G2IO_VB5N0_G5IO_VB5N0_G6IO_VB5N0_H1IO_VB5N0_H2IO_VB5N0_H3IO_VB5N0_H4IO_VB5N0_H5IO_VB5N0_H6IO_VB5N0_J2IO_VB5N0_J3IO_VB5N0_J5IO_VB5N0_J6IO_VB5N0_J7IO_VB5N0_J8IO_VB5N0_K1IO_VB5N0_K2IO_VB5N0_K3IO_VB5N0_K4IO_VB5N0_K5IO_VB5N0_K6IO_VB5N0_K7IO_VB5N0_K8IO_VB5N0_L7IO_VB5N0_L8
IO_VB5N1_C1IO_VB5N1_C2IO_VB5N1_D1IO_VB5N1_D2IO_VB5N1_E1IO_VB5N1_E2IO_VB5N1_E3IO_VB5N1_E4IO_VB5N1_F4IO_VB5N1_F5IO_VB5N1_G3IO_VB5N1_G4
C107100n
U8D
ALTERA EP2S60F484Version = 1.0
D5D6E6E7F7H7
A5B5C5C6D8E8F8F9G8G9H9
A6A7A8B6B7B8C7C8
E10E9
IO_VB4N0_D5IO_VB4N0_D6IO_VB4N0_E6IO_VB4N0_E7IO_VB4N0_F7IO_VB4N0_H7
IO_VB4N1_A5IO_VB4N1_B5IO_VB4N1_C5IO_VB4N1_C6IO_VB4N1_D8IO_VB4N1_E8IO_VB4N1_F8IO_VB4N1_F9IO_VB4N1_G8IO_VB4N1_G9IO_VB4N1_H9
IO_VB4N2_A6IO_VB4N2_A7IO_VB4N2_A8IO_VB4N2_B6IO_VB4N2_B7IO_VB4N2_B8IO_VB4N2_C7IO_VB4N2_C8
IO_VB4N2_E10IO_VB4N2_E9
C111100n
C113100n
J2
Byte_Blaster2
24681012
13579
11
R1810K
C115100n
C77100n
U8B
ALTERA EP2S60F484Version = 1.0
C21C22D21D22E19E20E21E22F19F20G19G20
J16J17J18J19J20J21K15K16K17K18K19K20K21K22L15L16
F21F22G17G18G21G22H17H18H19H20H21H22
IO_VB2N1_C21IO_VB2N1_C22IO_VB2N1_D21IO_VB2N1_D22IO_VB2N1_E19IO_VB2N1_E20IO_VB2N1_E21IO_VB2N1_E22IO_VB2N1_F19IO_VB2N1_F20IO_VB2N1_G19IO_VB2N1_G20
IO_VB2N2_J16IO_VB2N2_J17IO_VB2N2_J18IO_VB2N2_J19IO_VB2N2_J20IO_VB2N2_J21IO_VB2N2_K15IO_VB2N2_K16IO_VB2N2_K17IO_VB2N2_K18IO_VB2N2_K19IO_VB2N2_K20IO_VB2N2_K21IO_VB2N2_K22IO_VB2N2_L15IO_VB2N2_L16
IO_VB2N2_F21IO_VB2N2_F22IO_VB2N2_G17IO_VB2N2_G18IO_VB2N2_G21IO_VB2N2_G22IO_VB2N2_H17IO_VB2N2_H18IO_VB2N2_H19IO_VB2N2_H20IO_VB2N2_H21IO_VB2N2_H22
U12
EPCS64
12345678
910111213141516
VCCVCCNCNCNCNCnCSDATA
VCCGND
NCNCNCNC
ASDIDCLK
R21 10K
J3A
conf
147
10131619222528313437
C114100n
C127100n
C841n
C130100n
C791n
C129100n
C851n
C128100n
C811n
U9A
SN74LV08AD
1
23
147
C133100n
U9C
SN74LV08AD
9
108
147
C831n
C135100n
C801n
C821n
C131100n
C781n
C120100n
C891n
C123100n
C861n
C132100n
C881n
C134100n
U9B
SN74LV08AD
4
56
147
C871n
C126100n
C125100n
C121100n
C122100n
C124100n
C76100n
C75100n
C74100n
C73100n
U8K
ALTERA EP2S60F484Version = 1.0
N9
A1A9A14A22B2B21H15J1J10J12J14J22K9K11K13L10L12L14M7M9M11M13M15N10N12N14P1P11P13P22R10AA2AA21AB1AB4AB9AB14AB22
P15
P10R13
H13K14
H10L9
H8J9
J11J13K10K12L11L13M8
M10M12M14N11N13
P9P12P14
VCCPD6
GNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGND
VCCPD1
VCCPD7VCCPD8
VCCPD3VCCPD2
VCCPD4VCCPD5
VCCINTVCCINTVCCINTVCCINTVCCINTVCCINTVCCINTVCCINTVCCINTVCCINTVCCINTVCCINTVCCINTVCCINTVCCINTVCCINTVCCINT
C67100n
C66100n
C70100n
C69100n
C68100n
C72100n
C71100n
C97100n
C101100n
C100100n
C99100n
41
15
42
2
43
29
444546
10
47
13
4817
60
16
49
58
76
535455
51
64
8
63
3
26
57
21
62
9
52
4325
28
23
59
14
24
33343536
18
27
3738
50
19
22
20
56
61
31
11
30
25
12
3940
1
DB7
SGN
D15
DB6
CH A1+
DB5
RD*
DB4DB3DB2
SGN
D10
DB1
AV_D
D13
DB0CH C0-
AGN
D60
CH C0+
BGN
D49
HOLDC*
CH B0-CH B0+
A2A1A0
RESET*
CH A0-
AV_D
D8
CH A0+
AV_D
D3
FD
HOLDB*
DG
ND
REF_IN
AGN
D9
ADD
AGN
D4
BGN
D32
SGN
D5
CLK
BYTE
AV_D
D59
AGN
D14
BV_D
D24
DB15DB14DB13DB12
CH C1-
EOC*
DB11DB10
BV_D
D50
CH C1+
DV_
DD
NC
HOLDA*
REF_OUT
CS*
CH B1-
WR*
BGN
D25
CH B1+
DB9DB8
CH A1-
C98100n
C105100n
C104100n
C103100n
C102100n
C92100n
C91100n
C90100n
C106100n
C94100n
J3B
conf
25811141720232629323538
C93100n
C95100n
C96100n
C11710u
J3C
conf
36912151821242730333639
C116100n
C11910u
JP4
Acionamento_chaves_inversor
1234567
R19 10K
VCCIO
VCCINT
VCCPD
Capacitores de Desacoplamento do FPGA
VCCPLL
Circuito de sincronismo de reset
Interface FPGA com DSP
Interface FPGA com placa de controle
FPGA EP2S60F484C3
Circuito de conficguração do Stratix 2
VCC_EPCS64
Capacitores de Desacoplamento ADS
A0+
GND
A0-
A1-B0+B0-B1+B1-C0+C0-
A1+
Ref_IN (do circuito analogico)Ref_OUT (para circuito analogico)
Configuração PS Configuração AS (com ou sem cabo)
Conversor ADS8364
198MSEL3MSEL16nCEDCLKDATA07nSTATUSnCS0ASDO
1
7
MSEL3
DCLK
8
nCS0ASDO
9
DATA0
nSTATUS
6nCE
MSEL1MSEL3
6
DATA0
89
nSTATUS
ASDO
nCEDCLK
7
1
nCS0
MSEL1
Tempo de POR=12ms
Buffer 3,3V/2,5V selecionado
Remote Upgrade desabilitada
DSP só sai do reset depois do FPGAconfigurado
ADS só sai do reset depois do FPGAconfigurado
Ref 2,5V
Va
Vb
Vc
Ia
Ib
Anexo A________________________________________________________________________________________________________________________
4 Esquemático do módulo "Interface com Usuário"
J6
Conector_botoes
12345678
RS
VSS
Dado 5 LCD
Vo
J9botao7
34
12
VDD
J10botao8
34
12
J2botao1
34
12
R/W
LEDA
R510K
J4botao3
34
12
Dado 6 LCD
J1
Conector_lcd
12345678910111213141516
Dado 3 LCD
J5botao4
34
12
JP1
LCD16X2
12345678910111213141516
R110K
Dado 7 LCD
R410K
R810K
E
J8botao6
34
12
Dado 1 LCDDado 2 LCD
R610K
R210K
J3botao2
34
12
LEDK
Dado 4 LCD
R710K
J7botao5
34
12
Dado 0 LCD
R310K
Anexo A________________________________________________________________________________________________________________________
5 Esquemático dos circuitos de alimentação e geração de clock (Subsistema Digital)
VCC_3V31,3
VCC_3V31,3
Clock_Oscilador_32MHz 1
Geral_5V3
VCC_1V21,3
VCC_3V31,3
VCC_1V2_PLL3
C65100n
U6
XO-523BE32M
1
5
8
4NC
Output
VDC_3V3
GND
JH2
VCC_5V
11
JH3
GND_5V
11
JH4
VCC_1V2
11
JH5
GND_1V2
11
JH6
VCC_1V2_PLL
11
JH7
GND_1V2_PLL
11
JH8
VCC_3V3
11
JH9
GND_3V3
11
Capacitores de Desacoplamento
Circuito gerador de clock
Circuito gerador de alimentação
Anexo A________________________________________________________________________________________________________________________
6 Esquemático da placa de interligação do "Subsistema Digital" com a placa de demonstração "TMS320C6711-DSK"
D15
D2
D6
D26
CE3
D3
D8
D13
D16
D12
A2
D13
D20
J3
slot1
2468
101214161820222426283032343638404244464850525456586062646668707274767880
135791113151719212325272931333537394143454749515355575961636567697173757779
D21
D26
D15
D0
A4
A3
CE2
D0
CE3
D28
D22
D7
D18
D25
D12
D[3
1..0
]
D14
CE2
D5
D23
J4
slot2
2468
101214161820222426283032343638404244464850525456586062646668707274767880
135791113151719212325272931333537394143454749515355575961636567697173757779
D4
A4
ECLKOUT
D17
D30
D1
D24
D11
A2
D6
ARE
D27
A5
D19
D5D2
D21
ECLKOUT
AOE
ARE
D31
AWE
D19
D18
D24
D7D4
A3
D28
D14
D31
D10
D22
D9
D25
A5
D16
J2Dados
1234567891011121314151617181920212223242526272829303132
D9
D29
D20
D8
D3
D10
AOE
D29D30
D17
J1
Enderecos_teste
1234567891011
AWE
D23
D27
D11
D1
A[5..2]
Anexo A________________________________________________________________________________________________________________________
7 Esquemático dos circuitos de condicionamento de sinal e acionamento de "drivers" de potência (Subsistema Analógico)
0
0
-VCC
-VCC
R432.2k
Ref_OUT
U4
LM741
3
2
74
6
1
5+
-
V+V-
OUT
OS1
OS2
Configuracao para Ipn=15A,1volta
U10
LM741
3
2
74
6
1
5+
-
V+V-
OUT
OS1
OS2
C0+
Baixo
+VCC
U15
LM741
3
2
74
6
1
5+
-
V+V-
OUT
OS1
OS2
VCC_INV1
R4
1k
S5
0
VCC_INV3
R41
1.2K
-VCC
R462.2k
+VCC
GND
J2
CN1
2468
101214
135791113
0 POT1
U9
LM741
3
2
74
6
1
5+
-
V+V-
OUT
OS1
OS2
R55 22
S2
0
-VCC
VCC_INV3
R37
1.2K
C710u
U25
PC817
1
2 3
41
2 3
4
U16
Sensor_tensao
1
234
56
Pri0V
Pri230VSec6DirSec0Dir
Sec6EsqSec0Esq
JH5
VC1
11
R59 22
R35
1.2K
VCC5V
Ib
0
R65 22
D12
D1N4007
Configuracao para Ipn=15A,1voltaBaixo
VCC_INV3
JH16GNDINV3
11
JH1115VINV1
11
S1
R24
20K
R30
1k R32
510
A0-
POT2
R12
510
VCC_INV1
R51
470
0
0
+VCC
U14
LM741
3
2
74
6
1
5+
-
V+V-
OUT
OS1
OS2
B0+
D8
D1N4007
R472.2k
JH1
VA1
11
R62
2K
Topo
R5
2K
R9
1k
-VCC
U13
LM741
3
2
74
6
1
5+
-
V+V-
OUT
OS1
OS2
R7
20K
R60
2K
0
-VCC
POT3
D7
D1N4007
R2
2000
R56
2K
POT3
C2
1u
JH7GND
11
R49
470
U8
LM741
3
2
74
6
1
5+
-
V+V-
OUT
OS1
OS2
B1-
-VCC
+VCC
JH9-VCC
11
Baixo
0
0
U27
PC817
1
2 3
41
2 3
4
C6100n
R54
470
R33
1.2K
D11
D1N4007
-VCCVCC_INV1
R1
510
C5
1u
0
0
R10
1k
R38
1.2K
Ref_OUT (para circuito analogico)
VCC_INV3
R50
470
R26
1k
U24
PC817
1
2 3
41
2 3
4
R20
510
U7
LM741
3
2
74
6
1
5+
-
V+V-
OUT
OS1
OS2
J4
CN3
2468
101214
135791113
0
-VCC
-VCC
U19LTS15NP
789
4561 32
+0
OUT
p4p5p6p1 p3p2
R11
2000
C3
1u
0
POT2
JH12GNDINV1
11
R36
1.2K
U20LTS15NP
789
4561 32
+0
OUT
p4p5p6p1 p3p2
JH1515VINV3
11
C0-
+VCC
A1-
0VCC_INV2
JH6
VC2
11
J1
Gates_inversor
1234567
Alimentacao analogica
J3
CN2
2468
101214
135791113
0
R14
20K
U18
Sensor_tensao
1
234
56
Pri0V
Pri230VSec6DirSec0Dir
Sec6EsqSec0Esq
VCC5V
VCC_INV2
R57 22
R13
2K
R52
470
Vb
R21
2K
A0+
POT1
U22
PC817
1
2 3
41
2 3
4
JP6
Entrada_ADS
12345678910111213
JH10+VCC
11
D9
D1N4007
R23
2K
0
VCC_INV1
U6
LM741
3
2
74
6
1
5+
-
V+V-
OUT
OS1
OS2
Ref_IN (do circuito analogico)
0
+VCC
Ia
POT2
R6
2K
R29
1k
POT2
R34
1.2K
R39
1.2K
R8
20K
Alimentacao do acionamento dos gates
+VCC
0
0
+VCC
+VCC
JH14GNDINV2
11
C4
1u
S1
-VCC
R15
2K
R442.2k
0
+VCC
U23
PC817
1
2 3
41
2 3
4
R63 22
VCC_INV2
R16
20K
U17
Sensor_tensao
1
234
56
Pri0V
Pri230VSec6DirSec0Dir
Sec6EsqSec0Esq
U26
PC817
1
2 3
41
2 3
4
JH4
VB2
11
JH3
VB1
11
+VCC
+VCC
R28
510
R18
1k
R19
2000
S2
0
0
B1+
POT1
-VCC
VCC_INV20
R25
1k
POT3
R482.2k
R452.2k
S3
VCC_INV1
R27
510
Va
Circuito de condicionamento analogico
R31
510
+VCC
VCC5V
R66
2K
R22
20K
POT1
0
S4
S4
+VCC
VCC_INV3
A1+
Circuito de acionamento de gates do inversor
U11
LM741
3
2
74
6
1
5+
-
V+V-
OUT
OS1
OS2
R64
2K
JH2
VA2
110
POT1
R58
2K
C1
1u
-VCC
R40
1.2K
C8100n
U2
LM741
3
2
74
6
1
5+
-
V+V-
OUT
OS1
OS2
S5
VCC_INV2
POT2
U5
LM741
3
2
74
6
1
5 +
-
V+V-
OUT
OS1
OS2
R3
1k
B0-
Topo
-VCC
U3
LM741
3
2
74
6
1
5+
-
V+V-
OUT
OS1
OS2
0
0
S3
R53
470
JH1315VINV2
11
+VCC
JH85V
11
S6
0
POT3
R17
1k
R42
1.2K
Vc
Topo
-VCC
D10
D1N4007
POT3
R61 22
U12
LM741
3
2
74
6
1
5+
-
V+V-
OUT
OS1
OS2
S6
Anexo B____________________________________________________________
8
Anexo B: Códigos em VHDL e em C
Anexo B____________________________________________________________
9
Exemplo de código VHDL de um controlador de camada de rede neural:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
-- Entity Declaration
ENTITY controlador_camada_sigmoid_18e IS
-- ALTERA_IO_BEGIN DO NOT REMOVE THIS LINE!
PORT
(rel,anterior:in std_logic;
entradas:out std_logic_vector(4 downto 0);
estado:out std_logic_vector(5 downto 0);
proximo:out std_logic
);
-- ALTERA_IO_END DO NOT REMOVE THIS LINE!
END controlador_camada_sigmoid_18e;
-- Architecture Body
ARCHITECTURE interior OF controlador_camada_sigmoid_18e IS
signal fim,hab:std_logic;
signal conta,ent:integer;
constant limite:integer:=40;-- Igual ao numero de estados mais 1
constant limite_entradas:integer:=18;
BEGIN
captura:process(rel)
begin
if(rel'event and rel='1')then
if(anterior='1')then
hab<='1';
elsif(fim='1')then
hab<='0';
end if;
end if;
end process captura;
Anexo B____________________________________________________________
10
contagem:process(rel)
begin
if(rel'event and rel='0')then
if(hab='1')then
if(conta<limite)then
--Causa atraso entre contagem de estado e de seleção de entradas
if(conta>=1 and ent<limite_entradas)then
ent<=ent+1;
end if;
conta<=conta+1;
fim<='0';
else conta<=0;
ent<=0;
fim<='1';
end if;
else conta<=0;
fim<='0';
end if;
end if;
end process contagem;
entradas<=CONV_STD_LOGIC_VECTOR(ent,5);
estado<=CONV_STD_LOGIC_VECTOR(conta,6);
proximo<=fim;
END interior;
Anexo B__________________________________________________________________________________________________________
11
Exemplo de código VHDL de um neurônio digital de uma entrada e com função de ativação sigmoidal:
ENTITY microprograma_nao_linear_duplo_1e_n2_rec IS
-- ALTERA_IO_BEGIN DO NOT REMOVE THIS LINE!
PORT
(rel:in std_logic;
contagem:in UNSIGNED(4 downto 0);
entrada,atual,Mult,Mem:in std_logic_vector(31 downto 0);
hab,sel1,sel2,copia:out std_logic;
peso1,peso2,dado_M:out std_logic_vector(31 downto 0)
);
-- ALTERA_IO_END DO NOT REMOVE THIS LINE!
END microprograma_nao_linear_duplo_1e_n2_rec;
ARCHITECTURE interior OF microprograma_nao_linear_duplo_1e_n2_rec IS
-- Declaração dos sinais omitida!
BEGIN
------------------------------------------------------------------------------------------------------------------------------------------
--Rotina de controle do neurônio sigmoid
palavra<=
Anexo B__________________________________________________________________________________________________________
12
-- Comando: Dado_M: Peso1: Peso2: Contagem:
--Fazendo somatório de entradas ponderadas
\temp1=E*P;\ & sem & P1 & entrada when contagem=1 else
\temp2=temp1;temp1=BIAS;\ & sem & BIAS & um when contagem=2 else
\X=temp1+temp2\ & sem & sem & sem when contagem=3 else
--Esperando definição do intervalo de spline
\espera;\ & sem & sem & sem when contagem=4 else
--Comandos para geração de novas potências
\Gera potencia\ & sem & X & Mem when (rumo/="001" and rumo/="111") and (contagem=7 or
contagem=9 or contagem=11 or contagem=13) else
--Avaliando sigmoid no intervalo menor que -7
\7)Interpolando!;\ & sem & I1Ca & um when contagem>=5 and contagem<=15 and rumo="001" else
--Avaliando sigmoid no intervalo entre -7 e -3
\0)Interpolando!;\ & atual & I2Ca & um when contagem=5 and rumo="010" else
\1)Interpolando!;\ & sem & I2Pb & Mem when contagem=6 and rumo="010" else
\2)Interpolando!;\ & Mult & I2Pc & Mult when contagem=8 and rumo="010" else
Anexo B__________________________________________________________________________________________________________
13
\3)Interpolando!;\ & Mult & I2Pd & Mult when contagem=10 and rumo="010" else
\4)Interpolando!;\ & Mult & I2Pe & Mult when contagem=12 and rumo="010" else
\5)Interpolando!;\ & Mult & I2Pf & Mult when contagem=14 and rumo="010" else
--Avaliando sigmoid no intervalo entre -3 e -1
\0)Interpolando!;\ & atual & I3Ca & um when contagem=5 and rumo="011" else
\1)Interpolando!;\ & sem & I3Pb & Mem when contagem=6 and rumo="011" else
\2)Interpolando!;\ & Mult & I3Pc & Mult when contagem=8 and rumo="011" else
\3)Interpolando!;\ & Mult & I3Pd & Mult when contagem=10 and rumo="011" else
\4)Interpolando!;\ & Mult & I3Pe & Mult when contagem=12 and rumo="011" else
\5)Interpolando!;\ & Mult & I3Pf & Mult when contagem=14 and rumo="011" else
--Avaliando sigmoid no intervalo entre -1 e 1
\0)Interpolando!;\ & atual & I4Ca & um when contagem=5 and rumo="100" else
\1)Interpolando!;\ & sem & I4Pb & Mem when contagem=6 and rumo="100" else
\2)Interpolando!;\ & Mult & I4Pc & Mult when contagem=8 and rumo="100" else
\3)Interpolando!;\ & Mult & I4Pd & Mult when contagem=10 and rumo="100" else
\4)Interpolando!;\ & Mult & I4Pe & Mult when contagem=12 and rumo="100" else
\5)Interpolando!;\ & Mult & I4Pf & Mult when contagem=14 and rumo="100" else
Anexo B__________________________________________________________________________________________________________
14
--Avaliando sigmoid no intervalo entre 1 e 3
\0)Interpolando!;\ & atual & I5Ca & um when contagem=5 and rumo="101" else
\1)Interpolando!;\ & sem & I5Pb & Mem when contagem=6 and rumo="101" else
\2)Interpolando!;\ & Mult & I5Pc & Mult when contagem=8 and rumo="101" else
\3)Interpolando!;\ & Mult & I5Pd & Mult when contagem=10 and rumo="101" else
\4)Interpolando!;\ & Mult & I5Pe & Mult when contagem=12 and rumo="101" else
\5)Interpolando!;\ & Mult & I5Pf & Mult when contagem=14 and rumo="101" else
--Avaliando sigmoid no intervalo entre 3 e 7
\0)Interpolando!;\ & atual & I6Ca & um when contagem=5 and rumo="110" else
\1)Interpolando!;\ & sem & I6Pb & Mem when contagem=6 and rumo="110" else
\2)Interpolando!;\ & Mult & I6Pc & Mult when contagem=8 and rumo="110" else
\3)Interpolando!;\ & Mult & I6Pd & Mult when contagem=10 and rumo="110" else
\4)Interpolando!;\ & Mult & I6Pe & Mult when contagem=12 and rumo="110" else
\5)Interpolando!;\ & Mult & I6Pf & Mult when contagem=14 and rumo="110" else
--Avaliando sigmoid no intervalo maior que 7
\8)Interpolando!;\ & sem & I7Ca & um when contagem>=5 and contagem<=15 and rumo="111" else
--Finalizando Interpolação
Anexo B__________________________________________________________________________________________________________
15
\6)Interpolando!;\ & sem & sem & sem when contagem=15 else
--Esperando inicio
\espera;\ & sem & sem & sem ;
--Avaliador de X para escolha do intervalo de spline
define_rumo:process(rel)
begin
if(rel'event and rel='1')then
if(contagem=4)then
X<=atual;
if atual(31)>limite1(31) or (atual(31)=limite1(31) and atual(30 downto 0)>=limite1(30 downto 0))then
rumo<="001";
elsif atual(31)>limite2(31) or (atual(31)=limite2(31) and atual(30 downto 0)>=limite2(30 downto 0))then
rumo<="010";
elsif atual(31)>limite3(31) or (atual(31)=limite3(31) and atual(30 downto 0)>=limite3(30 downto 0))then
rumo<="011";
elsif atual(31)>limite4(31) or (atual(31)=limite4(31) and atual(30 downto 0)<=limite4(30 downto 0))then
rumo<="100";
elsif atual(31)>limite5(31) or (atual(31)=limite5(31) and atual(30 downto 0)<=limite5(30 downto 0))then
rumo<="101";
Anexo B__________________________________________________________________________________________________________
16
elsif atual(31)>limite6(31) or (atual(31)=limite6(31) and atual(30 downto 0)<=limite6(30 downto 0))then
rumo<="110";
else rumo<="111";
end if;
end if;
end if;
end process define_rumo;
------------------------------------------------------------------------------------------------------------------------------------------
--Distribuindo bits da palavra para as saídas
hab<=palavra(99);
sel1<=palavra(98);
sel2<=palavra(97);
copia<=palavra(96);
Dado_M<=palavra(95 downto 64);
peso1<=palavra(63 downto 32);
peso2<=palavra(31 downto 0);
------------------------------------------------------------------------------------------------------------------------------------------
END interior;
Anexo B____________________________________________________________
17
Declaração em C de variáveis importantes para o DSP TMS320C6711:
//-------------------------------------------------------------------------------------------------
// Incluindo cabeçalhos necessários para a geração dos arquivos de baixo nível
//-------------------------------------------------------------------------------------------------
#include <std.h>
#include <math.h>
#include <prd.h>
#include "configuracao_para_dskcfg.h"
//-------------------------------------------------------------------------------------------------
// Denições e constantes para o controle opcional VHz, na função "Caminho_retroacao"
//-------------------------------------------------------------------------------------------------
#define inic_cont 400//400*100us=0,04s. Período entre atualizações de freqüência do
motor.
#define Wstep 0.1//Valor de incremento (em Hz) da freqüência do motor.
#define Const2Pi 6.28318530718
#define cte 3.6//Para transformação de uma freqüência (Hz) em um valor de módulo
(volts)
#define per 100E-6;//Deve bater com a configuração do objeto "Iteracao_amostragem"
do DSP/BIOS
//-------------------------------------------------------------------------------------------------
// Variáveis do controle opcional VHz, na função "Caminho_retroacao"
//-------------------------------------------------------------------------------------------------
Float Watual=5;//Freqüência inicial desejada do motor
Float Wmeta=30;//Freqüência final desejada do motor
Float Theta=0,DeltaTheta,M,A;
int cont=inic_cont;//Contador para períodos de atualização de valores de freqüência
int inicio=0;//Inicia não permitindo o uso de algoritmo V/Hz
//-------------------------------------------------------------------------------------------------
// Variáveis de cálculo da função "Caminho_retroacao"
//-------------------------------------------------------------------------------------------------
Anexo B____________________________________________________________
18
Float iqss_linha,idss_linha,Vqss_int,Vdss_int;//Variaveis globais da função
"Transformação"
Float Te_star,Ys_star;//Variáveis de entrada por interface com usuário
Float Ys2,Ys_calc,idq,ids,iqs,senTETAe,cosTETAe,Yds,Yqs,Te_calc,Vqs_star,
Vds_star,TETAe_star;
Float TETAe_linha,TETAe,V_star;
Float Yqss_int,Ydss_int,Omega_int;
Float Vqss_linha,Vdss_linha;//Variaveis temporarias
int botoes_int,entra=0;
//-------------------------------------------------------------------------------------------------
// Constantes para cálculos da função "Caminho_retroacao"
//-------------------------------------------------------------------------------------------------
const Float Ls=40,sigma=2,P=4;
const Float KI1=50,KI2=10,KI3=10,KI4=5;
const Float xm1=0.00359,xs1=0.1,xm2=0.127323954473559,xs2=0.1;
const Float xm3=0.00402010050251,xs3=0.09597989949749;
//-------------------------------------------------------------------------------------------------
// Objetos criados com a ferramenta de configuração do DSPBIOS
//-------------------------------------------------------------------------------------------------
extern PRD_Obj Iteracao_amostragem,Atraso_trepidacao,Escreve_LCD;
extern LOG_Obj Monitora_variaveis;
//-------------------------------------------------------------------------------------------------
// Definição de nomes para posições nas faixas de endereçamento CE2 e CE3
//-------------------------------------------------------------------------------------------------
//Definição das variáveis espaço de endereçamento CE2
#define lcd *(int *) 0xA0000004 //Enable_LCD no FPGA
#define controle_SV *(float *) 0xA0000008
#define controle_recorrente *(float *) 0xA000000C
#define modulo *(float *) 0xA0000010
#define angulo *(float *) 0xA0000014
#define Meio_Ts *(float *) 0xA0000018
Anexo B____________________________________________________________
19
#define Omega *(float *) 0xA000001C
#define Rs *(float *) 0xA0000020
#define Yqss *(float *) 0xA0000024
#define Ydss *(float *) 0xA0000028
#define Vqssll *(float *) 0xA000002C
#define Vdssll *(float *) 0xA0000030
#define iqssl *(float *) 0xA0000034
#define idssl *(float *) 0xA0000038
#define senha *(float *) 0xA000003C
//Definição das variáveis espaço de endereçamento CE3
#define botoes *(int *) 0xB0000000
//-------------------------------------------------------------------------------------------------
// Definições e constantes para manipulação da "Interface com Usuário
//-------------------------------------------------------------------------------------------------
//Variáveis e definições para escrita de caracteres no LCD
#define dado 0x0100
#define torque 0
#define periodo 1
#define fluxo 2
Anexo C____________________________________________________________
20
Anexo C: Especificações de Componentes
Anexo C____________________________________________________________
21
O dispositivo TMS320C6711 é um processador digital de sinais da família
TMS320C6000 da Texas Instruments. Possui arquitetura superescalar conhecida como
“VelociTI”, baseada em VLWI (very large word instruction).
Sua UCP (unidade central de processamento) é capaz de executar um pacote de
instruções (palavra de programa) com até oito instruções de 32 bits por ciclo de
máquina. Para executar estas instruções, sua arquitetura conta com oito unidades
funcionais independentes: dois multiplicadores e seis ULAs (unidades lógicas e
aritméticas). Estas oito unidades dentro da UCP estão divididas em dois grupos (ou
caminhos de dados A e B), com quatro unidades funcionais em cada caminho. A
organização interna deste paralelismo de execução obedece a uma estratégia de pipeline.
O pipeline é composto por três estágios: “fetch” (carregamento de instrução), “decode”
(decodificação de instrução), e “execute” (execução de instrução em até 10 fases). O
usuário conta com o auxílio de ferramentas de projeto (como compilador, montador,
depurador) para otimizar seu código de programação, visando um melhor uso desta
estrutura de pipeline do hardware. A UCP ainda conta com dois bancos (arquivos
internos) de registrados, tendo cada um 16 registradores de 32 bits. Embora a
arquitetura deste processador seja construída para operar com representação numérica
em ponto flutuante de 32 bits, são predefinidas ainda instruções de máquina para dados
com 40 bits (ponto fixo) ou 64 bits (ponto flutuante, ou precisão dupla). No que se
refere à velocidade de processamento, esta UCP admite uma entrada de clock com até
250MHz (ciclo de instrução mínimo de 4ns), ou seja, admite a realização de até 1500
MFLOPS (milhões de operações em ponto flutuante por segundo) ou 500 MMACs
(milhões de multiplicações e acumulações por segundo).
No que se refere à memória, este processador de sinais trabalha com uma
hierarquia composta por dois níveis de cache interna (L1 com 8 Kbytes, L2 com 64
Kbytes) e um nível de memória externa com uma faixa de endereçamento de 32 bits. A
figura C1 mostra mais detalhes sobre a periferia em torna da UCP dentro deste
processador.
Anexo C____________________________________________________________
22
Figura C1. Arquitetura do DSP TMS320C6711.
A figura C1 mostra o encapsulamento (chip) do DSP representado pelo
retângulo tracejado. Dentro deste encapsulamento estão a UCP (Núcleo do DSP) e
vários periféricos controlados por ela (memórias cache, PLL, timers, além de outros).
Como pode ser observado, a arquitetura possui memória cache L1 dividida em porção
para programa (cache L1P) e porção para dados (cache L1D). No que se refere aos
sinais de clock (clock), existe dentro do DSP um circuito PLL (phase-locked-loop) que
supre a rede de sinais de clock interna do DSP através de uma referência fornecida por
um “Circuito de Clock” externo. Para permitir contagens precisas estão integrados
dentro do DSP dois contadores de 32 bits (Timer 0 e Timer 1). Para detecção de eventos
existe uma lógica de tratamento de interrupções (internas e externas) representada pelo
módulo “Seletor de interrupções”. Finalmente, para o interfaceamento do DSP com a
hierarquia de memórias externas, existe a “EMIF” (External Memory Interface). A
“EMIF” permite a subdivisão da faixa de endereçamento de memória externa utilizando
diversos dispositivos diferentes como: memórias SDRAM, FLASH, ROM, além de
outros dispositivos de E/S (entrada e saída). Neste trabalho, a faixa de endereçamento
Anexo C____________________________________________________________
23
de memória externa vista pelo DSP TMS320C6711 do protótipo foi subdividida
conforme a tabela C1.
Tabela C1. Mapa de memória simplificado do DSP TMS320C6711 do protótipo.
Faixa de endereços Nome do espaço Dispositivos contidos no espaço
80000000h a 8FFFFFFFh CE0 Memória SDRAM
90000000h a 9FFFFFFFh CE1 Memória Flash (Boot do DSP)
A0000000h a AFFFFFFFh CE2 FPGA e LCD (Interface com Usuário)
B0000000h a BFFFFFFFh CE3 Teclado (Interface com Usuário)
Na tabela C1, o espaço CE0 (primeira linha da tabela) foi destinado a uma
memória SDRAM (de 16Mbytes por 16 bits), necessária para conter as variáveis
definidas pelo programa do usuário e variáveis do micro sistema operativo “DSP/BIOS”
utilizado. No espaço CE1 está uma memória Flash de 4Kbytes por 8bits, contendo o
programa do usuário a ser carregado para o DSP no processo de “Boot do DSP”. Já no
espaço de endereçamento CE2, está o FPGA Stratix 2, visto pelo DSP somente como
um conjunto de variáveis de leitura e escrita modificadas também pela execução das
redes neurais dentro do FPGA. Além do FPGA, encontra-se no espaço CE2 o módulo
de LCD (da “Interface com Usuário”), tratado pelo DSP como um dispositivo
assíncrono utilizado somente para escrita de palavras de 8 bits. No último espaço de
endereçamento (o CE3), está o registrador de porta de entrada de 8 bits ligado ao
teclado da “Interface com Usuário”.
Referências Bibliográficas______________________________________________
24
REFERÊNCIAS BIBLIOGRÁFICAS
[1] A. Ba - Razzouk, A. Cheriti, G. Olivier, "Artificial neural networks rotor time constant adaptation indirect field oriented control drives", IEEE PESC, Baveno, pp. 701-707, June 1986. [2] A. Bakhshai, J. Espinoza, G. Joos and H. Jin, “A combined artificial neural network and DSP approach to the implementation of space vector modulation techniques”, in Conf. Rec. IEEE-IAS Annu. Meeting, pp. 934-940, 1996. [3] Felix Blaschke, “The Principle of Field Orientation as Applied to the New Transvektor Closed-Loop Control System for Rotating-Field Machines. Adjustable Speed AC Drive Systems”, IEEE Press, 1972. [4] Cursino B. Jacobina and Antônio M.N. Lima, “Estratégias de Controle para Sistemas de Acionamento com Máquina Assíncrona”, Controle & Automação, Vol. 7(1), 1996, pp. 15–28. [5] L. J. Garces, "Parameter adaptation for the speed controlled static AC-drive with squirrel cage induction motor", in Proc. IEEE Ind. Appl. Ann. Conf., pp. 843, 1979. [6] R. Ortega and D. Taoutaou, “Indirect Field-Orientation Speed Regulation for Induction Motor is Globally Stable”, IEEE Transactions on Automatic Control, vol. 35 (11), pp. 1238–1243, 1996. [7] D.W. Novotny and R.D. Lorenz, “Introduction to Field Orientation and High Performance AC Drives”, IEEE Industry Applications Society, 2nd Edition, 1986. [8] Paulo José C. Branco, "Controle Vetorial de Motor de Indução por Microcomputador com Adaptação da Constante de Tempo Rotórica", Universidade Federal do Rio de Janeiro, Dissertação de Mestrado, 1991, Rio de Janeiro-RJ. [9] José Andrés S. Larrea, "Estudo Comparativo dos Métodos de Controle Vetorial para Motores de Indução", Universidade Federal do Rio de Janeiro, Dissertação de Mestrado, 1993, Rio de Janeiro-RJ. [10] Takahashi, I., Noguchi, T., “A new quick response and high efficiency control strategy of an induction motor”, IEEE IAS Meeting, pp. 496-502, 1985. [11] M. Depenbrock. “Direct Self-Control (DSC) of Inverter-Fed Induction Machine”, IEEE Trans. On Power Electronics, vol. 3, nº 4, October 1988, pp. 420-429. [12] B. K. Bose, "Sliding Mode Control of Induction Motor", Conf. Rec. IEEE Indust. Applicat. Annu. Meeting, 1985, pp. 479–486. [13] E.Y.Y. Ho, P.C. Sen, "Decoupling control of induction motor drives", IEEE Trans. on Ind. Electron., vol. 35, nº 2, pp. 253 - 262, May, 1988.
Referências Bibliográficas______________________________________________
25
[14] Rogelio Soto and K. S. Yeung, “Sliding-Mode Control of an Induction Motor Without Flux Measurement”, IEEE Transactions on Industry Applications, Vol. 31(4), 1995, pp. 744–750. [15] L. A. Zadeh, “Fuzzy Sets”, Information Control, vol. 8, pp. 338-353, 1965. [16] E. H. Mamdani and S. Assilian, “An experiment in linguistic synthesis with a fuzzy logic controller”, Int. Journal of Man-Machine Studies, vol. 7, pp. 1-13, 1975. [17] Goldberg, D. E., “Genetic algorithms in search, optimization and machine learning”, Addison-Wesley, reading, MA, 1989. [18] G. Franceschini, A. Piazzi and C. Tassoni, “A genetic algorithm approach to design flux observers for induction servomotors”, IECOM, Bologna, 1994. [19] Narendra K, Parthasarathy K, "Identification and Control of Dynamical Systems using Neural Networks", IEEE Trans. on Neural Networks, March 1990, Vol. 1, No.1, pp 4-27. [20] Filippetti, F., Tassoni, C., Franceschini, G., Vas, P., “Integrated condition monitoring and diagnosis of electrical machines using minimum configuration artificial intelligence”, EPE’97, Trondheim, pp. 2983-2988, 1997. [21] J. J. Hopfield, "Neurons with graded response have collective computational properties like those of two-state neurons", Proceedings, National Academic Sciences, USA, 81, 1984, pp.3088-3092. [22] M. Sugeno and G. Kang, “Structure identification of fuzzy model”, Fuzzy Sets and Systems, vol. 28, pp. 15-33, 1988. [23] J. Si and A. N. Michel, "Analysis and synthesis of discrete-time neural networks with multi-level threshold functions", Proceedings of the IEEE International Symposium on Circuits and Systems, The Westin Stamford and Westin Plaza, Singapore, June 1991, pp. 1461-1464. [24] J. Yuh and R. W. Newcomb, "Circuits for multi-level nonlinealrities", Proceedings of the International Joint Conference on Neural Networks, Baltimore, MD, Vol.11, June 1992, pp.27-32. [25] João, O. P. Pinto, Bimal K. Bose, e Luiz Eduardo Borges da Silva. (2001). "A Stator-Flux-Oriented Vector-Controlled Induction Motor Drive With Space-Vector PWM and Flux-Vector Synthesis by Neural Networks". IEEE Trans. Ind. Aplications. [26] João, O. P. Pinto, Bimal K. Bose, e Luiz Eduardo Borges da Silva, "A Neural-Network-Based Space-Vector PWM Controller for Voltage-Fed Inverter Induction Motor Drive". IEEE Trans. on Ind. Applications, vol. 36, nº 6, nov/december 2000, pp. 1628-36. [27] K. Shimane, S. Tanaka, and S. Tadakuma, “Vector controlled IM using neural networks,” Trans. IEEE, vol. 113-D, no. 10, pp. 1154–1161, 1993.
Referências Bibliográficas______________________________________________
26
[28] Lazhar Ben-Brahim, Susumu Tadakuma and Alper Akdag, “Speed Control of Induction Motor Without Rotational Transducers”, IEEE Transactions on Industry Applications, Vol. 35, No. 4, July/August 1999, pp. 844-850. [29] W. Leonhard, "Field-Orientation for Controlling AC Machines-principle and Application". Power Electronics and Variable-Speed Drives, Third International Conference on, 13-14 Jul, 1988, pp. 277-282. [30] W. Leonhard, "Adjustable-speed AC Drives". Proceeding of the IEE, vol. 76, nº 4, April, 1988, pp. 455-471. [31] Li Zhang, K M Hasan, “Neural network aided energy efficiency control for a field-orientation induction machine drive”, Ninth international Conference on Electrical Machines and Drives, Conference Publication No. 468, IEE, 1999, pp. 356-360. [32] M. A. C.Maher, S. P. Deweerth, M. A. Mahowald, and C. A. Mead, "Implementing neural architectures using analog VLSl circuits," IEEE Transactions on Circuits and Systems, Vo1.36, No.5, 1989, pp.643-652. [33] Bimal Gisuthan, T. Srikanthan and K.V.Asari, “A High Speed Flat CORDIC Based Neuron with Multi-Level Activation Function for Robust Pattern Recognition”, IEEE, 2000, pp. 87-94. [34] Chen F.C., "Back-propogation neural network for nonlinear self-tuning adaptive control", Proc. IEEE Int. Symposium on Intelligent Control, Sept. 1989, Albany, New York, pp. 274-279. [35] F. Filippetti, G. Franceschini, C. Tassoni, "Neural network aided on - line diagnostics of induction motor rotor faults", IEEE Trans. Ind. Applicat, vol 3, nº 4, pp. 892-899, June 1995. [36] M. Furman and A. Abidi, "CMOS analog IC implementing the back propagation algorithm," Neural Networks, I , Sup. I , 1988, pp. 381. [37] Nguyen D, Widrow B, "The truck-backer-upper: an example of self-learning in neural networks", Proc. Int. Joint Conf. on Neural Network, Washington DC, Vol. 2, June 1989, pp. 11357-11363. [38] T. Fukuda and T. Shibata, “Theory and applications for neural networks for industrial control systems”, IEEE, Trans. Ind. Electron., vol. 39, pp. 472–489, Dec. 1992. [39] Y. Takahashi, “Adaptive control via neural networks", J. SICE, vol. 29, no. 8, pp. 729–733, Aug. 1990.