Implementação de Controladores Fuzzy em Hardware

Propaganda
UNIVERSIDADE FEDERAL DE MINAS GERAIS
Programa de Pós-Graduação em Engenharia Elétrica
Implementação de
Controladores Fuzzy em Hardware
Aluno: Wilian Soares Lacerda
Professor: Walmir Matos Caminhas - DELT/UFMG
Belo Horizonte, outubro de 2002
Sumário
1 Introdução
4
2 Hardware/software codesign
5
3 Alternativas de implementação
8
3.1
Soluções de propósito geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3.2
Processadores de propósito geral com suporte fuzzy . . . . . . . . . . . . . . . . .
9
3.3
Coprocessadores de propósito especial . . . . . . . . . . . . . . . . . . . . . . . . .
11
3.4
ASIC’s dedicados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
4 Inferência fuzzy
13
5 Ferramentas para implementação
19
6 Implementação analógica de sistema fuzzy
21
7 Implementação digital de sistema fuzzy em FPGA
35
8 Conclusão
46
1
Lista de Figuras
2.1
Metodologia codesign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3.1
Conjunto de instruções RISC com suporte fuzzy . . . . . . . . . . . . . . . . . . .
10
4.1
Taxonomia de sistemas de inferência fuzzy . . . . . . . . . . . . . . . . . . . . . .
13
4.2
Diagramas de blocos de arquitetura fuzzy . . . . . . . . . . . . . . . . . . . . . . .
14
4.3
Diagramas de blocos de implementação de função em tabela . . . . . . . . . . . .
15
4.4
Arimética MFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
4.5
Diagramas de blocos para diferentes métodos de desfuzzificação . . . . . . . . . .
16
4.6
Desfuzzificador multifuncional . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
4.7
Ambiente de trabalho de um chip fuzzy programável . . . . . . . . . . . . . . . .
17
5.1
Metodologia de projeto e ferramentas disponı́veis . . . . . . . . . . . . . . . . . .
20
6.1
Operação de soma usando modo de corrente . . . . . . . . . . . . . . . . . . . . .
21
6.2
Arquitetura de máquina de inferência fuzzy proposto por Yamakawa . . . . . . . .
22
6.3
Arquitetura de máquina de inferência fuzzy proposto por Baturone . . . . . . . .
23
6.4
Arquitetura de máquina de inferência fuzzy proposto por Huertas . . . . . . . . .
23
6.5
MFC proposto por Huertas: a) esquema b) parâmetros ajustáveis para função
trapezóide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
Circuito min utilizando transistor bipolar . . . . . . . . . . . . . . . . . . . . . . .
25
6.6
2
6.7
Circuito max utilizando transistor bipolar . . . . . . . . . . . . . . . . . . . . . .
26
6.8
Circuito min utilizando CMOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
6.9
Circuito max utilizando CMOS . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
6.10 Circuito max utilizando componentes discretos: a) com diodos b) com diodos e
amplificadores operacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
6.11 Circuito MFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
6.12 Funções de pertinência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
6.13 Porta de truncagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
6.14 Vetor max . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
6.15 Circuito desfuzzificador de Yamakawa . . . . . . . . . . . . . . . . . . . . . . . . .
33
6.16 Circuito em modo de corrente utilizando conversor A/D para implementar a divisão 34
7.1
Arquitetura de uma FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
7.2
Métodos de reconfiguração de uma FPGA . . . . . . . . . . . . . . . . . . . . . .
36
7.3
Arquitetura digital de inferência fuzzy proposta por Hung
. . . . . . . . . . . . .
37
7.4
Arquitetura digital de inferência fuzzy proposta por Himavathi . . . . . . . . . . .
38
7.5
Algoritmo da divisão, calcula a/b onde a < b . . . . . . . . . . . . . . . . . . . . .
39
7.6
Algoritmo da função de pertinência, calcula r = 2−x quando 0 < x < n e x = w1 + w2 39
7.7
Algoritmo de normalização, calcula nr do vetor de pesos r . . . . . . . . . . . . . .
40
7.8
Arquitetura digital de inferência fuzzy proposta por Masmoudi . . . . . . . . . . .
42
7.9
Algoritmo de divisão proposto por Masmoudi e implementado em FPGA . . . . .
43
7.10 Mecanismo de inferência fuzzy de Sugeno ordem zero . . . . . . . . . . . . . . . .
44
7.11 Arquitetura de controlador fuzzy proposta por Kim com reconfiguração da FPGA
em tempo de execução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
3
Capı́tulo 1
Introdução
Este compêndio apresenta os aspectos tecnológicos da implementação de sistemas de inferência
fuzzy, ou controladores fuzzy.
Algumas técnicas de projeto de sistemas fuzzy são apresentadas, evidenciando a metodologia
integrada de alto nı́vel utilizada no projeto de tais sistemas. Ferramentas que facilitam o trabalho
do projetista também são apresentadas.
Para classificar os tipos de implementações e alternativas de projeto de sistemas fuzzy, as
principais caracteristicas desejadas dos controladores fuzzy são exploradas, bem como as opções
de projeto.
São apresentados exemplos de implementações digital e analógica encontrados na literatura, e
as dificuldades tecnológicas de implementação. Diversas soluções são propostas para contornar os
problemas de implementação.
Finalmente, podemos concluir que há muito ainda para desenvolver e pesquisar na área de
lógica fuzzy, inclusive no aspecto de implementação em hardware.
4
Capı́tulo 2
Hardware/software codesign
Duas alternativas podem ser consideradas quando explorando o projeto de um sistema eletrônico
complexo. Um deles é usando componentes padrões os quais podem ter sua funcionalidade definida por programação. O outro modo é a implementação desta funcionalidade via circuito
microeletrônico especialmente feito para aquela aplicação [7].
A alternativa por software providencia soluções que apresentam grande flexibilidade mas com
necessidade de grande área de silı́cio e longos tempos de execução, enquanto que a segunda opção
(alternativa de hardware) otimiza o tamanho e a velocidade, mas limita a flexibilidade da solução.
O meio termo entre ambos, a técnica de hardware/software codesign tenta obter um apropriado
compromisso entre as vantagens e desvantagens destas duas abordagens.
Em processos de sistemas codesign, todas as tarefas que o sistema deve realizar devem ser
analizados, avaliando o impacto que as opções da possı́vel implementação pode ter nos fatores
que definem a funcionalidade do sistema e seu custo. Os principais parâmetros para considerar
na avaliação são a velocidade de execução e a área necessária pela implementação em hardware.
Baseado nestes resultados, um processo de particionamento é obtido, o qual consiste em decidir
qual tarefa deva ser executada por software e qual deve ser implementada por hardware.
Há diferentes abordagens para aplicações de técnicas codesign no desenvolvimento de sistemas
de controle baseados em lógica fuzzy. Eles são distintos pelo modo no qual o partcionamento
HW/SW é realizado. Um deles analisa a influência do conjunto de instruções do processador
na implementação do sistema de inferência fuzzy, reprojetando ele de tal modo que ele suporte
aquelas operações as quais melhor contribuem ao incremento da velocidade de inferência. Neste
caso o processo de particionamento é obtido no nı́vel de instruções do processador.
Uma outra alternativa consiste na implementação do sistema de inferência, totalmente ou parcialmente, por meio de hardware dedicado com arquitetura especı́fica, o que contribui significantemente ao incremento da velocidade do controlador.
5
As diferentes fases da metodologia de codesign para implementação de controladores fuzzy são
mostradas na Figura 2.1 e detalhadas a seguir.
Figure 2.1: Metodologia codesign
1. Fase de descrição
A descrição do sistema de inferência fuzzy definindo a estratégia de operação do controlador
é obtida durante esta fase usando a linguagem de especificação de sistema fuzzy (XFL).
2. Fase de simulação
Uma simulação off-line do ambiente do sistema de inferência fuzzy na planta a ser controlada é obtida nesta fase. O principal objetivo desta fase é obter um ajuste preliminar dos
parâmetros de controle.
3. Fase de verificação on-line
A principal caracterı́stica desta fase é a inclusão da planta real no loop de controle, com
objetivo de obter o ajuste ótimo da base de conhecimento do controlador fuzzy.
6
4. Fase de particionamento
Embora as tarefas especı́ficas que o controlador fuzzy deve obter dependerá da aplicação do
controle, elas são usualmente relatadas para seguir as seguintes ações gerais:
• Sistema de inicialização
• Determinação do objetivo
• Sistema de leitura dos sensores
• Pré-processamento de entrada
• Inferência fuzzy
• Saı́da pós-processamento
• Generalização dos sinais de controle
Uma vez que as tarefas as quais necessitam ser executadas tem sido identificadas, o processo de particionamento HW/SW pode ser realizado. O sistema de inferência deve ser
implementado em hardware e as tarefas restantes devem ser avaliadas com objetivo de obter
o melhor compromisso velocidade x flexibilidade. O cálculo da inferência fuzzy pode ser
associado a um controlador de propósito especı́fico construı́do em uma FPGA, enquanto
os algoritmos de pré e pós-processamento, e as demais tarefas, podem ser programadas em
microcontrolador.
5. Fase de implementação em hardware
Para o desenvolvimento desta fase é necessária uma ferramenta CAD permitindo a translação
da especificação do sistema de inferência fuzzy para um formato o qual a arquitetura descrita pode ser sintetizada (uma linguagem de descrição de hardware). O uso de FPGA’s é
especialmente adequada para obter um primeiro protótipo do sistema.
6. Fase de desenvolvimento de software
Durante esta fase, diferentes rotinas são desenvolvidas as quais suportam as tarefas que
serão implementadas pelo software.
7. Fase de validação
A integração de implementações em hardware e software no desenvolvimento do sistema
e o ajuste definitivo dos parâmetros do controlador são obtidos nesta fase. Desde que as
tarefas do microcontrolador e os parâmetros de inferência podem ser facilmente modificados,
diferentes versões do controlador podem ser validados com o objetivo de obter um com a
melhor performance [7].
7
Capı́tulo 3
Alternativas de implementação
Uma base de regras fuzzy é caracterizado por um conjunto de parâmetros que identificam sua
complexidade computacional, a saber:
• Número de entradas exatas e entradas fuzzy.
• Número de saı́das exatas e saı́das fuzzy.
• Número e forma das funções de pertinência por entrada/saı́da.
• Número de regras.
• Número de antecedentes/consequentes por regra.
• Precisão: número de bits para discretização das funções de pertinência.
• Variância do algoritmo: método de computação das funções de pertinência, método de regras
de inferência, método de desfuzzificação.
Como uma taxonomia, podemos identificar quatro classes entre as diferentes alternativas de
implementação:
1. Soluções de software e hardware com componentes de propósito geral.
2. Processadores de propósito geral com instruções para cálculos especiais.
3. Coprocessadores fuzzy dedicados.
4. ASIC’s fuzzy com capacidade de operações stand-alone.
8
3.1
Soluções de propósito geral
Implementações em software de algoritmos fuzzy em microcontroladores padrões são hoje as
técnicas mais largamente utilizadas. As seguintes vantagens e desvantagens esta abordagem possui:
• flexibilidade completa
• suporte a processamento não fuzzy
• avaliabilidade de sistemas de desenvolvimento
• avaliabilidade de ferramentas de sistemas de suporte
• baixa velocidade
Uma abordagem alternativa que requer apenas componentes padrões é representada por implementação em tabelas (look-up tables). Nesta abordagem, os valores de saı́da são pré-computados
para muitos valores de entrada e armazenados em RAM. Neste caso a velocidade de inferência é
muito alta, mas há crescimento exponencial da memória requerida se o número de variáveis de
entrada e saı́da, ou a resolução, incrementam. Usualmente esta técnica é limitada para aplicações
com 2 a 3 entradas e 1 a 2 saı́das, com baixa resolução.
3.2
Processadores de propósito geral com suporte fuzzy
Uma abordagem alternativa que ainda mantém capacidade de computação de propósito geral
emprega o uso de processadores de propósito geral com a adição de pequenas instruções especializadas para acelerar tarefas fuzzy. As vantagens e desvantagens desta abordagem são:
• flexibilidade completa
• alta velocidade comparada aos microcontroladores padrões
• simples extensão do núcleo existente
• suporte automático de computação não fuzzy
• alto custo comparado aos microcontroladores padrões devido ao pequeno volume de produção
• performance limitada para aplicações
Nós podemos distinguir duas técnicas alternativas que correspondem as diferentes filosofias de
projeto do núcleo do microcontrolador:
9
• Para conjunto de instruções complexas (arquitetura CISC) é possı́vel adicionar firmware
dedicado ao suporte de lógica fuzzy, modificando apropriadamente o microprograma do
controlador.
• Para processadores de instruções reduzidas (arquitetura RISC), uma possibilidade interessante é somar poucas instruções dedicadas para um conjunto de instruções de propósito
geral que permitem ao compilador otimizar aplicações fuzzy. Na Figura 3.1 encontra-se um
exemplo.
Figure 3.1: Conjunto de instruções RISC com suporte fuzzy
10
3.3
Coprocessadores de propósito especial
Muitos processadores fuzzy dedicados são desta classe. Existem processadores de propósito
especial dedicados a computação fuzzy que não podem implementar sozinhos sistema de controle
devido a falta de capacidade computacional do propósito geral, mas ainda providenciam alguma
flexibilidade e configurabilidade. São as seguintes vantagens e desvantagens desta abordagem:
• alta velocidade
• modularidade
• alguma flexibilidade
• regras e faixa de funções de pertinência limitadas
• alto custo
• necessidade de processador de propósito geral para suportar partes não fuzzy
Estes coprocessadores de propósito especial usualmente adotam funções de pertinência triangulares, formato de regras flexı́veis (número de antecedentes e consequentes), método de inferência
max-min, 8 bits de precisão, e método de desfuzzificação centróide.
3.4
ASIC’s dedicados
A última solução para aumentar a performance em aplicações fuzzy é o desenvolvimento de
uma arquitetura dedicada. Devido a natureza particular dos processos de inferência fuzzy, é
possı́vel implementar diretamente um algoritmo fuzzy com estrutura de hardware dedicado de
modo a maximizar a velocidade e minimizar a área de silı́cio, usando técnicas de alto nı́vel. O
resultado da solução é obvialmente para uma aplicação simples, e os parâmetros de configuração
são reduzidos a um conjunto mı́nimo, o que não compromete a área e a velocidade. São as
seguintes as vantagens e desvantagens desta abordagem:
• processamento muito rápido, direcionado a aplicação
• projeto rápido (sı́ntese automática)
• baixo custo em termos de área de silı́cio (5 a 10 mil portas)
• disponı́vel como um bloco em um sistema de controle de chip único
• implementável em FPGA para prototipação
11
• efetivo custo para alto volume de produção
• sem flexibilidade (a aplicação é fixa)
• complexidade limitada
• apenas para sistemas baseados em ASIC
• necessidade de microprocessador para suportar partes não fuzzy
Enfim, soluções por software providenciam flexibilidade para definir a base do conhecimento
fuzzy, para selecionar os operadores fuzzy, e para escolher os algoritmos de inferência. Entretanto,
eles se tornam inadequados para problemas que demandam alta velocidade de inferência. Neste
caso, soluções de hardware devem ser adotadas [16].
12
Capı́tulo 4
Inferência fuzzy
O termo inferência fuzzy indica o processo que computa um valor de saı́da de um valor de
entrada por meio de aplicação de regras linguı́sticas.
Taxonomias distintas podem ser utilizadas para sistemas de inferência fuzzy de acordo com
diferentes critérios. Entretanto, com objetivo de comparar as implementações em hardware, é
preferı́vel introduzir uma classificação dependendo do tipo de informação que eles manipulam na
entrada do sistema e a descrição das regras consequentes. Neste sentido, na literatura [20] são
encontradas uma das três categorias mostradas na Figura 4.1.
Figure 4.1: Taxonomia de sistemas de inferência fuzzy
Em sistemas de inferência fuzzy convencionais, a regra base é descrita por rótulos linguı́sticos
representados por conjuntos fuzzy. Em aplicações de decisão e problemas de controle complexos,
as entradas de sistemas de inferência fuzzy são descritos por uma distribuição de possibilidades
representada também por um conjunto fuzzy (FIFC). Em muitas outras aplicações, ao contrário,
a entrada vem de sensores os quais dão valores exatos que podem ser associados a singleton fuzzy
(SIFC). Neste caso, o cálculo do nı́vel de ativação de cada regra é reduzido para combinar cada
grau de pertinência antecedente por meio de um operador. Em outras aplicações, o controlador
deve dar um valor de saı́da concreto, o que impõe a introdução de um estágio desfuzzificador
(SISC).
13
Em um sistema de inferência fuzzy, o valor da saı́da é calculada da estimação das regras base,
levando em conta a contribuição de regras simples, através de três principais passos [22], mostrados
na Figura 4.2:
Figure 4.2: Diagramas de blocos de arquitetura fuzzy
1. Fuzzificação
Esta operação translada um valor de dado exato em uma variável linguı́stica para um grau
de pertinência. Há duas estratégias básicas para a estimação do grau de pertinência:
• Abordagem orientada a memória: o grau de pertinência de cada entrada e saı́da são
estimados off-line e armazenados em memória como valores discretos. Se for necessário
alta resolução de discretização, a memória ocupada será muito grande. Esta alternativa
permite-nos definir conjuntos fuzzy de formas irrestritas. O circuito de microeletrônica
disponı́vel para implementação desta técnica são memórias padrões e PLD’s (Programmable Logic Devices). A Figura 4.3 mostra o diagrama em blocos deste tipo de CI,
assumindo que entradas e saı́das são analógicas. Uma vantagem deste tipo de realização
é que o tempo de resposta é muito curto porque a única operação a ser feita é o acesso
do dado da memória que pode ser feita em poucos nanosegundos. Em contrapartida, a
implementação em tabela é prática apenas quando o número de entradas e seu grau de
quantificação são baixos, senão o número total de bits para armazenar é muito grande
[5].
• Abordagem orientada a computação: o grau de pertinência é calculado on-line, e devemos armazenar apenas os parâmetros necessários para calcular o grau de pertinência.
O tempo de execução depende da forma da função de pertinência. Quando o baixo
custo em termo de área de silı́cio é o objetivo, esta abordagem trás melhores resultados
[21].
Um conjunto de circuitos de funções de pertinência (MFC), tal como mostrado na Figura 4.4
pode ser considerado para manter o tamanho e velocidade de operação do estágio fuzzificador
de acordo com outras partes do controlador fuzzy.
14
Figure 4.3: Diagramas de blocos de implementação de função em tabela
Figure 4.4: Arimética MFC
15
2. Inferência fuzzy
É a operação que usa a regra base e o grau de pertinência para deduzir a saı́da fuzzy. Os
métodos mais clássicos de inferência são os métodos max-min e o max-produto.
3. Desfuzzificação
É o passo que translada a saı́da fuzzy para uma resposta precisa. O método mais comum é
o método de centro de gravidade. Por exemplo, se nós decidirmos usar o método centróide
ou centro de gravidade, nós necessitamos executar um número de multiplicações que é
proporcional ao número de regras. Neste caso, a complexidade é logarı́tmica com respeito
ao número de regras. As Figuras 4.5 e 4.6 apresentam diagramas de blocos de circuitos
implementando métodos de desfuzzificação.
Figure 4.5: Diagramas de blocos para diferentes métodos de desfuzzificação
Figure 4.6: Desfuzzificador multifuncional
16
Uma vantagem significativa do chip fuzzy programável é a sua capacidade de resolver o controle
para diferentes problemas. Ele pode ser adaptado para providenciar uma superfı́cie de controle
estática ou pode ser ajustado dinamicamente em aplicações as quais requerem superfı́cies de
controle variantes no tempo [2]. Neste caso, um dos seguintes mecanismos de sintonização dos
parâmetros fuzzy podem ser empregados (veja Figura 4.7):
• Ajuste manual off-chip.
• Ajuste automático off-chip, comandado por computador padrão.
• Ajuste automático on-chip.
Figure 4.7: Ambiente de trabalho de um chip fuzzy programável
Quando projetamos um controlador fuzzy, devemos conhecer os seguinte itens [23]:
• Quais são os atuadores (motor, aquecedor, altofalante)? Quais são as variáveis nas regras
fuzzy consequentes?
• O que poderia ser medido para controlar o sistema? Quais são as variáveis nas regras fuzzy
antecedentes?
• Qual a faixa de valores dos atuadores e sensores? Quais são os valores mı́nimos e máximos
das variáveis?
17
• Qual a precisão que o sistema deve ser descrito?
• Qual a forma das funções de pertinência para descrever a intuição de um especialista?
• Qual é o conjunto de regras fuzzy e suas combinações?
Portanto, um sistema de inferência fuzzy deve ser muito bem planejado e estudado antes de se
iniciar o processo de implementação.
18
Capı́tulo 5
Ferramentas para implementação
Muitos circuitos conhecidos como coprocessadores fuzzy são disponı́veis no mercado de microeletrônica. Eles são dispositivos de propósito geral que trabalham junto com processadores
padrões para aumentar a velocidade de operações tı́picas de sistemas de inferência baseados em
lógica fuzzy. O problema é que este tipo de circuito não é eficiente o bastante em termos de área
de silı́cio, consumo de potência e velocidade quando considerando sua aplicação para setores industriais relacionados a telecomunicações e automotivo ou produtos de cosumidores. Uma solução
mais vantajosa, como acontece em muitas outras áreas de microeletrônica, é o uso de hardware
dedicado adaptado para o problema particular. Viabilidade desta abordagem é grandemente incrementada pelo uso de metodologias de projeto, técnicas de circuito e ferramentas CAD, que
facilitam a realização do sistema, então reduzindo o tempo para mercado [1].
Os principais passos para projeto de controlador fuzzy com a respectiva ferramenta CAD disponı́vel é mostrado na Figura 5.1.
O ponto inicial é a especificação da funcionalidade do controlador. Para este propósito, o ambiente de projeto providencia uma linguagem flexı́vel de alto nı́vel chamada XFL, que permite uma
descrição unificada de sistema fuzzy que ajuda todo o processo de projeto. Uma especificação
XFL define o mecanismo de inferência, o método de desfuzzificação e a base de conhecimento
selecionado (a regra base e funções antecedentes e consequentes). Uma especificação consiste de
um tipo de definição de módulo que descreve as funções de pertinência, e as regras respectivamente. XFL suporta um conjunto de classes de funções de pertinência tão bem como um método
para definir funções genéricas lineares por partes. Ela também suporta o uso de regras de base
hierárquicas empregando operadores de composição serial e paralelo.
Tendo feito estas seleções, o usuário tem dois modos para verificar a funcionalidade do sistema.
Um deles é simulando o ambiente do sistema com simulador fuzzy (XFSIM), o qual está incluı́do
no ambiente de desenvolvimento.
Uma abordagem mais realı́stica inclui a própria planta dentro do loop do simulador (estratégia
19
Figure 5.1: Metodologia de projeto e ferramentas disponı́veis
do hardware no loop). Para este propósito, o ambiente de desenvolvimento providencia o utilitário
XFLAB o qual basicamente consiste de uma interface de aquisição de dados e drivers para ler e
escrever dados.
Uma vez que as especificações do controlador tem sido validadas, inicia-se a fase de implementação. Uma ferramenta automática de sı́ntese, chamada XFVHDL, pode ser usada para
transladar a especificação XFL em descrição VHDL capaz de ser implementada em circuitos de
microeletrônica. Em [10] é proposto um pacote em VHDL para descrição de controladores de
lógica fuzzy. Uma vantagem da linguagem padrão VHDL é que permite a simulação do circuito
em vários simuladores comerciais.
Duas técnicas genéricas de implementação podem ser seguidas. A primeira utiliza FPGA (Field
Programmable Gate Array). Esta abordagem é útil para propósito de prototipação por causa
da capacidade para mudar a funcionalidade por programação. A segunda abordagem é para
projeto em ASIC (Application Specific Integrated Circuit) usando um ambiente de projeto e uma
biblioteca de tecnologia de silı́cio [1].
20
Capı́tulo 6
Implementação analógica de sistema
fuzzy
A implementação em hardware de controlador fuzzy é realizada em modo analógico ou digital.
Chips fuzzy digitais possuem boa programabilidade, projeto fácil, boa compatibilidade com sistemas digitais. Chips fuzzy analógicos tem caracterı́sticas distintas, tais como alta velocidade, boa
compatibilidade com sensores, facilidade de implementação [4] (veja operação de soma na Figura
6.1). A solução analógica pode enfocar uma abordagem em tensão ou corrente, ou ambas. A
adoção de um modo ou outro deve ser feito de acordo com as circunstâncias.
Figure 6.1: Operação de soma usando modo de corrente
Yamakawa, em seu pioneiro trabalho [23], propõe um sistema de inferência fuzzy analógico.
Estes circuitos são diferentes dos tradicionais circuitos analógicos tais como amplificadores operacionais, um multiplicador/divisor e seus derivados. Os circuitos empregados em máquinas de
inferência são não lineares e são diferentes nos seguintes aspectos:
• Desde que a função de pertinência manipula valores entre 0 e 1 e uma resolução de 10%
é bastante, o projetista não precisa de se preocupar com a precisão, além da linearidade,
baixo desvio térmico, baixo offset, etc.
• Um circuito fuzzy essencialmente não necessita de ganho maior do que a unidade.
21
• Um circuito fuzzy deve ser projetado em uma arquitetura simples (com poucos dispositivos)
para ativar alta velocidade de processamento.
As caracterı́sticas de entrada-saı́da de circuitos intrinsecamente fuzzy são não lineares, tais que
um circuito fuzzy pode ser chamado circuito não linear analógico.
O circuito proposto por Yamakawa é mostrado na Figura 6.2, que será detalhado mais a frente
por cada bloco.
Figure 6.2: Arquitetura de máquina de inferência fuzzy proposto por Yamakawa
Uma outra alternativa de implementação analógica mais simplificada é proposto por Baturone
[3] [12] e mostrada na Figura 6.3. Nota-se o divisor no estágio final.
Huertas [13] também propõe melhoria na arquitetura original de Yamakawa, e define um ciclo
de operação cuja duração depende da precisão desejada. Cada regra é implementada em uma
RAM digital com conversores digital/analógico em corrente (veja Figura 6.4). O núcleo desta
arquitetura é um MFC (Figura 6.5) hábil para gerar um grande número de funções de pertinência
que permite algum tipo de reconfigurabilidade eletrônica.
22
Figure 6.3: Arquitetura de máquina de inferência fuzzy proposto por Baturone
Figure 6.4: Arquitetura de máquina de inferência fuzzy proposto por Huertas
23
Figure 6.5: MFC proposto por Huertas: a) esquema b) parâmetros ajustáveis para função
trapezóide
A seguir será detalhado cada bloco da arquitetura proposta por Yamakawa.
1. Função de pertinência
O primeiro estágio de uma máquina de inferência fuzzy é um circuito de função de pertinência (MFC). As caracterı́sticas de entrada-saı́da de um MFC exibe a forma da função
de pertinência, a qual pode ser associada externamente.
2. Circuito min
O segundo estágio é um circuito min o qual aceita mais do que um sinal de entrada e
produz o menor valor deles no terminal de saı́da. Este circuito ativa uma função AND
no antecedente das regras if-then. Se variáveis no antecedente são conectadas com OR, o
circuito min deve ser substituı́do por um circuito max. A saı́da destes circuitos representam
o grau de concordância entre o antecedente e a entrada e então alimenta o próximo estágio
para pesar a função de pertinência consequente.
Os circuitos min e max podem ser implementados empregando transistores bipolares como
mostram as Figuras 6.6 e 6.7. O compensador (seguidor de emissor) compensa o deslocamento de tensão de 0,7V para produzir a tensão de saı́da igual a mı́nima ou máxima tensão
de entrada.
Outras alternativas de circuitos min e max utilizando tecnologia CMOS [19] e dispositivos
discretos [4] são mostradas nas Figuras 6.9, 6.8, e 6.10.
24
Figure 6.6: Circuito min utilizando transistor bipolar
A exceção do estágio de desfuzzificação, o núcleo da computação da máquina fuzzy pode
todo ser implementado usando operadores elementares de min e max, daı́ a importância
destes circuitos para implementação em hardware dedicado [8]. Circuitos max e min podem
ser implementados com espelhos de corrente, transistores MOS conectados como diodos e
conexões.
3. Circuito MFC
Funções de pertinência de variáveis no antecedente são implementadas por um MFC. Um
circuito de função de pertinência é o qual as caracterı́sticas de entrada/saı́da podem ser
associadas a sinais externos ou dispositivos. A Figura 6.11 mostra a configuração do circuito
de um MFC o qual pode realizar cinco funções: Z, S, trapezoidal, triangular, e NA (não
importa) como mostra a Figura 6.12. XIN e FX são os terminais de entrada e saı́da. AS é
um chave analógica controlado pelo sinal externo P.
4. Gerador de função de pertinência
Uma função de pertinência do consequente é amostrado para valores discretos como mostra
a Figura 6.2. A forma e o rótulo da função de pertinência podem ser mudadas.
5. Porta de truncagem
Uma porta de truncagem recebe um vetor de sinal fuzzy B e um sinal fuzzy escalar “a”, e
produz um vetor de sinal fuzzy B’ truncado pelo sinal fuzzy escalar de entrada. Isto pode
25
Figure 6.7: Circuito max utilizando transistor bipolar
ser construı́do por arranjando circuitos min em um vetor, como mostra a Figura 6.13.
6. Vetor de max
As portas de saı́da de uma máquina de inferência fuzzy devem ser usualmente alimentadas
a um vetor max para agregar todas as conclusões individuais antes da desfuzzificação, como
mostra a Figura 6.14. Uma máquina de inferência fuzzy com estrutura de coletor aberto
e um desfuzzificador envolvendo fonte de corrente no terminal de entrada facilita a sua
implementação.
7. Desfuzzificador
Para obter um valor determinı́stico de uma função de pertinência da conclusão final da
inferência fuzzy, a desfuzzificação deve ser ativada. A Figura 6.15 mostra um desfuzzificador
proposto por Yamakawa.
Sistemas fuzzy tı́picos como Mandani ou Takagi-Sugeno inferem uma saı́da exata (não fuzzy)
agregando todas as respostas das regras e realizando uma divisão. Um dos principais problemas que aparecem quando implementando um sistema fuzzy em hardware é a seleção
do circuito de divisão adequado. O divisor é o circuito que limita a velocidade, precisão
e capacidade de interfaceamento do bloco de saı́da do chip fuzzy. Circuitos multiplicadores/divisores podem ser empregados com combinações de conversores A/D e D/A.
Baturone [6] [2] propõe um divisor eficiente com projeto baseado em conversores de dados
26
Figure 6.8: Circuito min utilizando CMOS
27
Figure 6.9: Circuito max utilizando CMOS
Figure 6.10: Circuito max utilizando componentes discretos: a) com diodos b) com diodos e
amplificadores operacionais
28
Figure 6.11: Circuito MFC
29
Figure 6.12: Funções de pertinência
30
Figure 6.13: Porta de truncagem
31
Figure 6.14: Vetor max
32
Figure 6.15: Circuito desfuzzificador de Yamakawa
33
em modo de corrente. A entrada do conversor A/D é o numerador em forma de corrente,
enquanto o valor do denominador é usado como referência da corrente no conversor, conforme
mostra a Figura 6.16. A saı́da digital representa a divisão, daı́ a necessidade de um conversor
D/A.
Figure 6.16: Circuito em modo de corrente utilizando conversor A/D para implementar a divisão
Técnicas convencionais log-antilog ou bipolar translinear tem sido empregadas em chips
fuzzy analógicos. Estas estruturas podem ser realizadas com tecnologia CMOS usando
transistores MOS trabalhando na região abaixo da limiar. Entretanto, a baixa corrente que
eles tem que operar fazem o circuito ficar lento. Baixa velocidade é também a limitação de
multiplicadores e divisores baseados na técnica de divisão de tempo.
O princı́pio translinear MOS é outra abordagem. Neste caso, a principal limitação é a baixa
resolução por causa da performance dos circuitos resultantes que é sensı́vel ao desvio da lei
quadrática do modelo dos transistores em saturação. Outra técnica amplamente empregada
é para inverter o ambiente do multiplicador por usando realimentação local ou por inserindo
ele no caminho de realimentação de um amplificador inversor. A precisão é limitada pelos
offsets associados com entrada e saı́da das variáveis.
Outra alternativa é a técnica de aproximação sucessiva que emprega dois acumuladores.
Enfim, existem na literatura várias propostas de arquiteturas de implementação de sistemas
fuzzy analógicos, cada uma propondo uma solução diferente, parcialmente ou totalmente.
34
Capı́tulo 7
Implementação digital de sistema fuzzy
em FPGA
FPGA’s (Field Programmable Gate Arrays) são circuitos integrados que combinam as caracterı́sticas dos dispositivos lógicos programáveis (PLD’s) - tempo de projeto curto, programável
pelo usuário, produtos padronizados - e arranjos de portas - alta densidade, arquitetura flexı́vel
e software avançados. A flexibilidade e rápida prototipação caracterı́sticos da FPGA permitem
verificação rápida do projeto em hardware. Técnicas de implementação de controladores fuzzy
em FPGA são descritas na literatura [17].
A arquitetura da FPGA consiste de um programa de armazenamento da configuração e três tipos
de elementos configuráveis: blocos de entrada/saı́da, um núcleo de blocos lógicos configuráveis
(CLB’s), e áreas de conexão. Veja a Figura 7.1.
Recursos de interconexão configuráveis ocupam os canais entre as linhas e colunas dos blocos
lógicos, e entre os blocos lógicos e os blocos de entrada/saı́da. Os blocos lógicos de configuração,
blocos de entrada/saı́da, e suas interconexões são controladas por um programa de configuração
armazenado em uma memória on-chip. O programa de configuração é carregado automaticamente
de uma memória PROM externa, na inicialização do sistema. Ferramentas de projetos em FPGA
de alto nı́vel são disponı́veis no mercado.
Uma desvantagem de usar sistema baseado em FPGA para implementação em hardware é a sua
limitação da capacidade disponı́vel de células digitais, o que pode não permitir que o sistema fuzzy
caiba em um único chip FPGA. Pode-se contornar este problema de dois modos. Um modo seria
a utilização de múltiplos chips FPGA, onde o sistema é dividido em subsistemas independentes
e cada um é implementado em um chip FPGA separado. Uma outra alternativa seria utilizar o
método de reconfiguração da FPGA em tempo de execução, onde a tarefa do sistema é separada
em várias subtarefas independentes no tempo e cada tarefa é configurada em uma mesma FPGA,
uma de cada vez [15]. Na Figura 7.2 são mostradas as técnicas de reconfiguração de FPGA.
35
Figure 7.1: Arquitetura de uma FPGA
Figure 7.2: Métodos de reconfiguração de uma FPGA
36
Na implementação de sistemas de inferência fuzzy em FPGA, duas abordagens são possı́veis.
A primeira opção é baseada na sı́ntese lógica de equações booleanas descrevendo as relações de
entrada/saı́da do controlador. A segunda abordagem utiliza hardware dedicado para implementar
os algoritmos fuzzy de acordo com a arquitetura especı́fica baseada em biblioteca de células em
VHDL [16].
O diagrama em blocos da Figura 7.3 ilustra o caminho de dados de uma máquina de inferência
fuzzy utilizando tecnologia digital em FPGA proposta por Hung [14].
Figure 7.3: Arquitetura digital de inferência fuzzy proposta por Hung
As seis entradas das SRAM’s, o módulo min, módulo max, módulo produto e módulo somatório
além de registradores e lógica de controle são implementados em uma FPGA. Apenas a parte da
divisão do desfuzzificador é implementado usando um EPROM externa. A arquitetura completamente paralela e eliminação de multiplicador e divisor garantem incremento na performance com
relação a velocidade.
Utilizando o método de centro de gravidade (COG) para desfuzzificação, uma tabela que armazena os resultados da operação de divisão é implementada em um EPROM com ambos numerador
e denominador como linhas de endereço. A EPROM oferece velocidade mais rápida que algoritmos de divisão iterativos responsável pelo gargalo da performance do sistema, e é independente
do resto da máquina fuzzy de inferência [14] tais como o número de entradas, a escolha das
funções de pertinência e regras de inferência. A EPROM armazena todos os possı́veis valores da
desfuzzificação.
Himavathi [11] propõe em seu trabalho um acelerador de computação fuzzy (FCA) implementado em FPGA. O FCA reduz a carga do processador realizando as operações complexas de
divisão, pertinência e normalização, e então ajudando a aumentar a velocidade computacional. A
estrutura básica do FCA é apresentada na Figura 7.4, que é compatı́vel com os processadores de
16 bits da Intel.
Os blocos de divisão, pertinência e normalização da Figura 7.4 implementam os algoritmos
mostrados nas Figuras 7.5, 7.6 e 7.7.
37
38
Figure 7.4: Arquitetura digital de inferência fuzzy proposta por Himavathi
Figure 7.5: Algoritmo da divisão, calcula a/b onde a < b
Figure 7.6: Algoritmo da função de pertinência, calcula r = 2−x quando 0 < x < n e x = w1 +w2
39
Figure 7.7: Algoritmo de normalização, calcula nr do vetor de pesos r
40
Masmoudi em seu trabalho [18] propõe uma solução de implementação em FPGA de sistema
fuzzy semelhante a Himavathi, como pode ser visualizado na Figura 7.8. O algoritmo de divisão
utilizado por Masmoudi é apresentado na Figura 7.9.
O FCA proposto por Himavathi utiliza o método de inferência de Sugeno, de ordem zero,
e funções de pertinência de potências negativas de dois, o que simplifica a implementação em
hardware. Na Figura 7.10 é mostrado o mecanismo de inferência para duas entradas e três regras,
cujas etapas de processamento são:
1. Camada 1: As entradas são adquiridas.
2. Camada 2: O valor das entradas são fuzzificadas.
3. Camada 3: As regras são computadas usando o operador de produto.
4. Camada 4: É realizada a normalização das regras.
5. Camada 5: Determina-se fi = wi .ci
6. Camada 6: Obtem-se a saı́da.
Na arquitetura do controlador fuzzy proposto por Kim [15] utilizando FPGA, o controlador
é particionado em módulos independentes temporais, e cada módulo é implementado individualmente no sistema a cada momento. Para isto, cada módulo é armazenado em um sistema de
carregamento em hardware que é responsável pela reconfiguração da FPGA com um módulo de
cada vez. O particionamento e sincronismo do carregamento dos módulos é mostrado na Figura
7.11.
A velocidade de inferência de um sistema fuzzy implementado com FPGA é limitada pelo
atraso de propagação nos circuitos de conexão interna da FPGA. A operação do controlador
implementado em FPGA é baixa quando uma arquitetura especı́fica é usada porque muitos ciclos
de clock são necessários para calcular uma inferência. Um compromisso entre custo, precisão e
velocidade devem ser considerados no projeto de um controlador fuzzy. A técnica de consulta em
tabela (look-up table) é a melhor escolha em termos de precisão e velocidade, mas o custo torna
impraticável a solução quando a resolução cresce. Técnicas baseadas em hardware especı́fico são
mais adequadas para controladores de alta resolução. Arquiteturas particulares usando aritmética
MFC podem ser usadas para construir controladores de alta resolução [16].
41
Figure 7.8: Arquitetura digital de inferência fuzzy proposta por Masmoudi
42
Figure 7.9: Algoritmo de divisão proposto por Masmoudi e implementado em FPGA
43
Figure 7.10: Mecanismo de inferência fuzzy de Sugeno ordem zero
44
Figure 7.11: Arquitetura de controlador fuzzy proposta por Kim com reconfiguração da FPGA
em tempo de execução
45
Capı́tulo 8
Conclusão
Após abordar os tipos mais comuns de tecnologia de implementação de controladores fuzzy,
podemos concluir alguns pontos.
Existem várias alternativas de implementação em hardware de controladores fuzzy: hardware
ou software, digital ou analógica, transistor ou CMOS, consulta em tabela ou função booleana,
reconfigurável ou fixa. Ou seja, há várias soluções de implementação de um controlador fuzzy e
para se determinar a melhor alternativa devemos levar em conta os aspectos de custo, velocidade
de execução e flexibilidade. Estes aspectos devem ser balanceados para se ter o menor custo, com
maior velocidade e flexibilidade. E, ainda, para cada aplicação de um sistema de inferência fuzzy
podem existir várias alternativas ótimas diferentes.
A medida que a tecnologia eletrônica evolue, novas propostas de implementação surgem, aumentando as alternativas de implementação de modo a melhorar a performance dos sistemas, e
tornando a aplicação dos controladores fuzzy mais viáveis no nosso cotidiano.
46
Referências Bibliográficas
[1] A. Barriga, R. Senhadji, C. J. Jiménez, I. Baturone, S. Sánchez-Solano. A Design Methodology
for Application Specific Fuzzy Integrated Circuits. Proc. 5th IEEE Int. Conf. on Electronics,
Circuits and Systems, Vol. 1, pp. 431-434, Lisboa, Sep. 1998.
[2] I. Baturone, S. Sánchez-Solano, J. L. Huertas. CMOS Fuzzy Controllers Implemented as
Mixed-Signal ICs. IEEE International Symposium on Circuits and Systems (ISCAS’96), vol. 3,
pp. 422-425, Atlanta, May 12-15, 1996. Disponı́vel em citeseer.nj.nec.com/139630.html, acesso
em setembro de 2002.
[3] I. Baturone, S. Sánchez-Solano, J. L Huertas. Current-Mode Singleton Fuzzy Controller. Proc.
3rd. Int. Conf. on Fuzzy Logic, Neural Networks and Soft Computing, pp. 647-648, Iizuka,
Aug, 1994.
[4] I. Baturone and S. Sanchez-Solano and A. Barriga and J. Huertas. Implementation of CMOS
Fuzzy Controllers as Mixed-Signal Integrated Circuits. Circuits, Trans. Fuzzy Systems, vol. 5,
no. 1, Feb. 1997, pp. 1-19. Disponı́vel em citeseer.nj.nec.com/baturone97implementation.html,
acesso em setembro de 2002.
[5] I. Baturone, G. Hernández, S. Sánchez-Solano. VLSI Design of Universal Approximator Systems. Proc. Information Processing and Management of Uncertainty in Knowledge-based Systems, Vol. 1, pp. 36-43, Madrid, July 2000.
[6] I. Baturone, S. Sánchez Solano, J. L. Huertas. CMOS Design of a Current-Mode Multiplier/Divider Circuit with Applications to Fuzzy Controllers. Analog Integrated Circuits and
Signal Processing, Kluwer Academic publishers, Vol. 23, N. 3, pp. 199-210, June 2000.
[7] Cabrera, A.; Sanchez-Solano, S.; Senhadji, R.; Barriga, A.; Jimenez, C.J. Hardware/software
codesign methodology for fuzzy controller implementation. Proceedings of the IEEE International Conference on Fuzzy Systems, Volume 1, 2002, pp. 464-469.
[8] Catania, V.; Russo, M. Design of basic hardware gates for efficient fuzzy computing. Microelectronics for Neural Networks and Fuzzy Systems, Proceedings of the Fourth International
Conference on, 1994, pp. 100-109.
[9] Costa, A.; De Gloria, A.; Faraboschi, P.; Pagni, A.; Rizzotto, G. Hardware solutions for fuzzy
control. Proceedings of the IEEE , Volume 83, Issue 3, March 1995, pp. 422-434.
47
[10] D. Galán and C. J. Jiménez and A. Barriga and S. Sánchez Solano. VHDL Package For
Description Of Fuzzy Logic Controllers. European Design Automation Conference (EUROVHDL’95), pp. 528-533, Great-Britain, September 18-22, 1995.
[11] Himavahi, S.; Umamaheswari, B. FPGA based fuzzy computation accelerator. Proceedings
of the 2002 IEEE International Conference on Fuzzy Systems, 2002, Volume 1, pp. 352-357.
[12] J. L. Huertas, S. Sánchez-Solano, I. Baturone, A. Barriga. Integrated Circuit Implementation
of Fuzzy Controllers. IEEE Journal of Solid-State Circuits, vol. 31, no. 7, July 1996, pp.
1051-1058. Disponı́vel em citeseer.nj.nec.com/huertas96integrated.html, acesso em setembro
de 2002.
[13] J. L. Huertas, S. Sánchez-Solano, A. Barriga, I. Baturone. Serial Architecture for Fuzzy
Controllers: Hardware Implementation Using Analog/Digital VLSI Techniques. Proc. 2nd.
Int. Conf. on Fuzzy Logic and Neural Networks, pp. 535-538, Iizuka, Jul. 1992.
[14] Hung, D.; Zajac, W. Implementing a fuzzy inference engine using FPGA. ASIC Conference
and Exhibit, Proceedings Sixth Annual IEEE International, Sept. 1993, pp. 349-352.
[15] Daijin Kim. An implementation of fuzzy logic controller on the reconfigurable FPGA system.
IEEE Transactions on Industrial Electronics, Volume 47, Issue 3, June, 2000, pp. 703-715.
[16] E. Lago, M. A. Hinojosa, C. J. Jiménez, A. Barriga, S. Sánchez-Solano. FPGA Implementation of Fuzzy Controllers. Proc. XII Conf. on Design of Circuits and Integrated Systems, pp.
715-720, Sevilla, Nov. 1997.
[17] Manzoul, M.A.; Jayabharathi, D. Fuzzy controller on FPGA chip. IEEE International Conference on Fuzzy Systems, 1992, pp. 1309-1316.
[18] Masmoudi, N.; Hachicha, M.; Kamoun, L. Hardware design of programmable fuzzy controller on FPGA. Fuzzy Systems Conference Proceedings, FUZZ-IEEE ’99, IEEE International,
Volume 3, 1999, pp. 1675-1679.
[19] Yakout, M.A.; El-Masry, E.I.; Abdel-Fattah, A.I. Hardware realization of analog CMOS
current-mode minimum circuit. Radio Science Conference, 1998. NRSC ’98. Proceedings of
the Fifteenth National, 1998, pp. D8/1-D8/7.
[20] C. J. Jiménez, A. Barriga, S. Sánchez-Solano. Digital Implementation of SISC Fuzzy Controllers. Proc. 3rd. Int. Conf. on Fuzzy Logic, Neural Networks and Soft Computing, pp. 651-652,
Iizuka, Aug, 1994.
[21] C. J. Jiménez, S. Sánchez-Solano, A. Barriga. Hardware Implementation of a General Purpuse
Fuzzy Controller. Proc. 6th International Fuzzy Systems Association World Congress, vol. 2,
pp. 185-188 , Sao Paulo, Jul, 1995.
[22] S. Sánchez-Solano, A. Barriga, C. J. Jiménez, J. L. Huertas. Design and Application of Digital
Fuzzy Controllers. Proc. 6th IEEE Int. Conf. on Fuzzy Systems, vol. 2, pp. 869-874, Barcelona,
Jul., 1997.
48
[23] Yamakawa, T. A fuzzy inference engine in nonlinear analog mode and its application to a
fuzzy logic control. IEEE Transactions on Neural Networks, Volume 4, Issue 3, May 1993, pp.
496-522.
49
Download