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