• Nenhum resultado encontrado

IMPLEMENTAÇÃO DE PROCESSADOR DIGITAL BASEADO EM LÓGICA FUZZY USANDO UM FPGA

N/A
N/A
Protected

Academic year: 2021

Share "IMPLEMENTAÇÃO DE PROCESSADOR DIGITAL BASEADO EM LÓGICA FUZZY USANDO UM FPGA"

Copied!
12
0
0

Texto

(1)

IMPLEMENTAÇÃO DE PROCESSADOR DIGITAL BASEADO EM LÓGICA FUZZY USANDO UM FPGA

Leonardo Mesquita

Paloma Maria Silva Rocha Rizol mesquita@feg.unesp.br

paloma@feg.unesp.br

Departamento de Engenharia Elétrica, Universidade Estadual Paulista (UNESP) Av. Ariberto Pereira da Cunha, 333 - 12516-410, Guaratingueta-SP - Brasil Thiago José Michelin

thiagojmihelin@gmail.com TIM Celular SA.

Resumo: O artigo apresenta o desenvolvimento e implementação de um algoritmo de controle

baseado em lógica difusa usando um dispositivo FPGA. A teoria da lógica difusa expressa as leis operacionais de controle na forma de expressões linguísticas. A implementação de um sistema de controle baseado em tal lógica pode ser realizada tanto via software quanto por hardware. As soluções implementadas via hardware estão cada vez mais sendo utilizadas, pois possuem como vantagens a alta velocidade de processamento das informações, a compactação do sistema e o sigilo do mesmo quando comparadas com as implementações por software. O algoritmo de controle foi desenvolvido com o auxilio da linguagem de programação de hardware denominada VHDL tendo como alvo um componente FPGA da família Cyclone II do fabricante Altera.

(2)

1. INTRODUÇÃO

A lógica difusa, proposta por L. Zadeh em 1965 [Zad65-Zad73], é uma lógica de múltiplos valores que pode ser utilizada para resolver problemas em sistemas de controle onde o modelamento do mesmo é muito difícil ou quase impossível de ser obtido pelo método clássico devido às suas não-linearidades, às variações do processo ao longo do tempo ou à própria imperícia humana em se obter um modelo que represente o sistema. A lógica difusa utiliza a opinião de um especialista da área onde se deseja implementar o controle para que se possa estabelecer um conjunto de regras condicionais que serão utilizadas na implementação do referido controle. As regras condicionais utilizadas em sistemas de controle baseado em tal lógica estão na forma de expressões lingüísticas, ao invés de expressões matemáticas, como nos sistemas de controle baseado na metodologia clássica.

A lógica difusa possui como característica principal o fato de manusear informações imprecisas, fornecendo um método para transladar estas informações, como as expressões utilizadas diariamente na comunicação humana, para uma forma compreensível por sistemas industriais. A lógica difusa é uma metodologia de projeto que incorpora a forma humana de raciocínio em sistemas de controle.

A primeira aplicação da lógica difusa em um sistema de controle foi realizada por Mandami [Klir95]. A partir deste trabalho pioneiro, outras aplicações surgiram mostrando a eficiência desta metodologia e, como conseqüência, vários produtos de consumo acabaram por incorporar tais sistemas de controle.

Um processador difuso é constituído por três blocos principais: o bloco fuzificador, o bloco de inferência e o bloco defuzificador. O diagrama em blocos de um processador fuzzy é apresentado na Figura 1.

O bloco fuzificador possui a função de converter o valor da variável de entrada para o seu correspondente valor difuso, ou seja, este bloco possui como função principal realizar a translação, da variável medida, do domínio real para o domínio difuso. O valor real da variável é convertido para o mundo difuso para que o mesmo expresse o valor das incertezas existentes na medida realizada. A variável de entrada fuzificada é então inserida no módulo de inferência do processador.

No módulo de inferência, são armazenadas as regras que formam a base de conhecimento utilizada pelo processador para solucionar um determinado problema. Em implementações em hardware tal máquina é projetada para operar de modo paralelo. Deste modo a velocidade de operação do processador pode ser sensivelmente aumentada. O módulo de inferência avalia as regras de controle armazenadas e produz como saída um conjunto difuso definido no universo de possíveis ações que o sistema deve produzir.

(3)

BLOCO FUZIFICADOR BLOCO DEFUZIFICADOR MÓDULO DE INFERÊNCIA BASE DE REGRAS DIFUSAS PROCESSADOR LÓGICO DIFUSO

SISTEMA SOB CONTROLE condições ações MÁQUINA DE INFERÊNCIA ENTRADAS SAÍDAS

Figura 1 - Diagrama em blocos de um microprocessador lógico difuso.

O bloco defuzificador tem a função de converter o conjunto difuso, que representa a possível ação a ser tomada no sistema de controle, em um valor real que melhor representa tal conjunto, ou seja, este bloco possui a função inversa do bloco fuzificador existente no processador.

2. OBJETIVOS

Desenvolver de processador digital baseado na lógica fuzzy Sintetizar o algoritmo do processador em um componente FPGA.

Usar a linguagem de programação para hardware VHDL de modo a obter a portabilidade da solução.

3. MATERIAS E MÉTODOS 3.1 MATERIAL

Ferramenta de Hardware

O projeto foi desenvolvido usando Cyclone II FPGA starter development Kit, tendo como principais características o componente FPGA da família Cyclone II EP2C20F484C7, 8MB SDRAM, 512KB SRAM, 4MB FLASH e um sistema de áudio CODEC. [CYC06-CYC08]

Ferramenta de Software

A ferramenta usada foi o Quartus II v9.1, sendo este ambiente de projeto completamente integrado para desenvolver projetos baseados em FPGAs do fabricante Altera. Todo o projeto foi descrito usando linguagem VHDL, pois essa apresenta como principal vantagem a portabilidade da mesma.

3.2 METODOS

O propósito deste trabalho é implementar um processador digital genérico baseado na lógica fuzzy para ser usado como um controlador digital em diversas aplicações, como por exemplo como bloco constituinte de um controlador de velocidade de um motor universal. Tal controle pode ser mais facilmente implementado através do uso de algoritmos baseados em inteligência artificial do que quando comparados às técnicas de controle tradicionais, visto que toda a modelagem matemática é substituída pela descrição do comportamento do sistema com o auxilio de variáveis linguísticas. A Figura 2 apresenta o diagrama fundamental da aplicação.

(4)

Figura 2 - Diagrama fundamental do controlador.

Este controlador fuzzy foi desenvolvido especificamente para a operação citada, sendo que as especificações do processador fuzzy foram desenvolvidas baseadas no trabalho de Dannenberg [DANN05]. Um processador dedicado traz ganhos de desempenho para a aplicação quando comparado a processadores genéricos, entretanto perde-se a flexibilidade de adaptação do componente já desenvolvido. Uma forma de reduzir este problema é a construção do controlador por meio de blocos funcionais. Esta foi a abordagem escolhida no desenvolvimento deste projeto, e isto foi possível devido à uma das formas de descrição de hardware oferecida pela linguagem VHDL: o modelamento estrutural. Este tipo de modelagem é bastante útil para o desenvolvimento de sistemas digitais complexos, pois, o projetista pode desenvolver o modelo do sistema especificado completamente de modo hierárquico. O algoritmo do controlador baseado em lógica fuzzy consiste da execução de três etapas: fuzificação, inferência e defuzificação.

A etapa de fuzzificação é necessária para transladar as variáveis de entrada do sistema do domínio real (crisp) para o domínio fuzzy. Neste passo, as entradas numéricas são mapeadas em conjuntos fuzzy através das respectivas funções de pertinência associadas à cada variável.

Nesta aplicação foram definidas cinco funções de pertinência para cada uma das variáveis de entrada do sistema, erro e derro, as quais são listadas na Tabela 1. As funções de pertinência foram implementadas possuindo a forma triangular, Z e S (Figura 3). O algoritmo do módulo fuzificador é representado pelo fluxograma fornecido na Figura 4. Este algoritmo baseia-se numa divisão da faixa de valores que as variáveis de entrada podem assumir.

Tabela 1 - Descrição das Funções de Pertinência do sistema

Função de Pertinência Descrição

NM Negativo Médio

NP Negativo Pequeno

ZI Zero Igual

PP Positivo Pequeno

PM Positivo Médio

Figura 3 - Funções de pertinência representando as variáveis de entrada denominadas erro e derro respectivamente.

(5)

Figura 4 - Fluxograma do algoritmo do módulo denominado fuzificador.

Quando um sinal de entrada é inserido no controlador o módulo fuzificador determinada quais são as funções de pertinência ativas, determinando deste modo o grau de ativação para essa variável de acordo com as equações pré-definidas para cada uma das funções de pertinência que representam essa variável de entrada no domínio difuso. A Tabela 2 exibe quais as faixas adotadas bem como suas respectivas equações usadas na definição da função de pertinência, para a variável de entrada erro, quando as mesmas estiverem ativas.

Tabela 2 - Atribuições de regras ativas

Condição Atribuições das

Regras Erro < -2047 NM = 1024 NP = 0 ZI = 0 PP = 0 PM = 0 -2047 < Erro < -1025 NM = |Erro| - 1024 NP = 2048 - |Erro| ZI = 0 PP = 0 PM = 0 Erro = -1024 NM = 0 NP = 1024 ZI = 0 PP = 0 PM = 0 -1023 < Erro < -1 NM = 0 NP = |Erro| ZI = 1024 - |Erro|

(6)

PP = 0 PM = 0 Erro = 0 NM = 0 NP = 0 ZI = 1024 PP = 0 PM = 0 1 < Erro < 1023 NM = 0 NP = 0 ZI = 1024 – Erro PP = Erro PM = 0 Erro = 1024 NM = 0 NP = 0 ZE = 0 PP = 1024 PM = 0 1025 < Erro < 2047 NM = 0 NP = 0 ZE = 0 PP = 2048 – Erro PM = Erro – 1024 Erro > 2047 NM = 0 NP = 0 ZE = 0 PP = 0 PM = 1024

Da Tabela 2 verifica-se que não há operações de multiplicação ou divisão para o cálculo das equações de reta, justamente pelo fato de, durante a especificação do projeto, ter-se optado por funções de pertinência de forma triangular, Z ou S.

No módulo de inferência, são armazenadas as regras que formam a base de conhecimento utilizada pelo processador para solucionar um determinado problema. Em implementações em hardware tal máquina é projetada para operar de modo paralelo. Deste modo a velocidade de operação do processador pode ser sensivelmente aumentada. O módulo de inferência avalia as regras de controle armazenadas e produz como saída um conjunto difuso definido no universo de possíveis ações que o sistema deve produzir. A unidade de inferência desenvolvida nesta proposta segue o modelo de inferência definido por Mandami, ou seja, usando operadores de máximos e de mínimos para realizar o calculo das regras existentes no sistema.

Uma regra é uma instrução lingüística do tipo “if erro = X and derro = Y then S = Z”. Como anteriormente foram especificadas cinco funções de pertinência para cada variável de entrada a base de regras desta aplicação será composta por 25 regras condicionais (Tabela 3).

(7)

O algoritmo proposto por Mamdani consiste em executar as 25 combinações de regras possíveis. Cada execução consiste em comparar os valores de ativação das funções de pertinência e armazenar o menor encontrado. Isto é feito para as 25 combinações. De acordo com a Tabela 3, a mesma função de pertinência de saída pode ser acionada por mais de uma combinação. Neste caso, toma-se o máximo dos valores que ativarem a mesma função de saída. Desta maneira a implementação do algoritmo de inferência reduz-se a:

y_nm = max(min(ZI, PM), min(PP, PP), min(PP, PM), min(PM, ZI), min(PM, PP), min(PM, PM)) y_np = max(min(NP, PM), min(ZI, PP), min(PP, ZI), min(PM, NP))

y_zi = max(min(NM, PM), min(NP, PP), min(ZI, ZI), min(PP, NP), min(PM, NM)) y_pp = max(min(NM, PP), min(NP, ZI), min(ZI, NP), min(PP, NM))

y_pm = max(min(NM,NM), min(NM, NP), min(NM, ZI), min(NP, NM), min(NP,NP), min(ZI, NM)) sendo: “y_nm”, “y_np”, “y_zi”, “y_pp” e “y_pm” referem-se as variáveis de saída do componente;

“max” refere-se à função máximo, a qual retorna o valor máximo dentre todos os seus parâmetros/ “min” à função mínimo, que retorna o menor valor dentre todos os seus parâmetros.

A Figura 5 fornece o fluxograma do algoritmo usado para implementar o módulo de inferência do controlador proposto.

Figura 5 - Fluxograma do algoritmo usado para implementar o módulo de inferência do controlador fuzzy.

A etapa de defuzzificação converte o conjunto fuzzy obtido na saída da etapa de inferência em um valor real. Este será o valor a ser aplicado no atuador, nesta aplicação, a ação prevista é controlar a velocidade de operação de um motor universal A variável de saída é representada por singletons ao invés de funções de pertinência do tipo convencional (triangular, trapexoidal, Z ou S). As funções de pertinência do tipo singletons são representadas por pontos únicos sobre o eixo horizontal da função de saída. Quando singletons são utilizados, é realizada a média ponderada dos valores de ativação de cada função de pertinência de saída obtidos a partir da etapa de inferência. O uso de singletons reduz o tempo para obtenção de uma resposta válida, pois requer menor poder computacional da unidade de processamento. A Figura 6 fornece as funções de pertinência de saída do sistema.

(8)

Figura 6 – Funções de pertinência representando a variável de saída.

A equação usada no cálculo do valor defuzificado, de acordo com as funções de pertinência de saída no formato singleton, ilustradas na Figura 6 é fornecida a seguir:

YPM YPP YZI YNP YNM YPM YPP YNP YNM Defuz ( 1024 ) ( 512) 512 1024

(eq. 1)

onde: YNM, YNP, YZI, YPP e YPM correspondem aos valores de ativação de cada função de pertinência de saída após a etapa de inferência.

A Figura 7 fornece o fluxograma desenvolvido para implementar o algoritmo de defuzificação do processado proposto;

Figura 7 - Fluxograma do algoritmo do módulo de defuzificação. 4. RESULTADOS E DISCUSSÕES

O código VHDL para implementar o processo de fuzificação deste controlador é fornecido na Figura 8 (código VHDL parcial). As saídas do componente Fuzzificador são vetores de 11 bits cada, declarados como sinais do tipo “unsigned”. O módulo fuzificador irá mapear as entradas

(9)

numéricas em conjuntos fuzzy. Como este bloco foi especificado para ter duas variáveis de entrada, sendo cada representada por 5 funções de pertinência, este bloco possui 10 saídas. As saídas deste módulo representam o grau de ativação das variáveis de entrada do sistema no domínio difuso. A Tabela 4 fornece os valores usados para realizar a validação, em nível de simulação, da operação deste módulo.

fuzzification_erro : process(erro) is begin

--Função utilizada para a conversão de tipo de dado “signed” para --inteiro da variável de entrada erro.

erro_int <= TO_INTEGER(erro);

--Instrução “case” utilizada para verificar em qual faixa de --valores de entrada se encaixa a variável erro.

case erro_int is

when -2047 to -1025 =>

--Função “abs” retorna o modulo do número passado como parâmetro --Foi utilizada esta função porque, para efeito de cálculo e

--programação, a função de pertinência foi espelhada em relação --a seu eixo central. Assim este intervalo utiliza as mesmas equações --de reta que seu intervalo correspondente na parte positiva do eixo --horizontal.

e_nm <= TO_UNSIGNED(abs(erro_int) - 1024, 11); e_ns <= TO_UNSIGNED(2048 - abs(erro_int), 11); e_ze <= TO_UNSIGNED(0, 11); e_ps <= TO_UNSIGNED(0, 11); e_pm <= TO_UNSIGNED(0, 11); when -1024 => e_nm <= TO_UNSIGNED(0, 11); e_ns <= TO_UNSIGNED(1024, 11); e_ze <= TO_UNSIGNED(0, 11); e_ps <= TO_UNSIGNED(0, 11); e_pm <= TO_UNSIGNED(0, 11); when -1023 to -1 => e_nm <= TO_UNSIGNED(0, 11);

e_ns <= TO_UNSIGNED(abs(erro_int), 11); e_ze <= TO_UNSIGNED(1024 - abs(erro_int), 11); e_ps <= TO_UNSIGNED(0, 11);

e_pm <= TO_UNSIGNED(0, 11);

Figura 8 - Modelo VHDL: Módulo de Fuzificação variável Erro

Tabela 4 – Vetores de entrada e resultados esperados de simulação para o teste do bloco fuzificador.

Variaveis de

Entradas Resultados esperados no domínio difuso

Erro Derro e_nm e_ns e_ze e_ps e_pm de_nm de_ns de_ze de_ps de_pm

48 16 0 0 976 48 0 0 0 1008 16 0

-1100 -900 76 948 0 0 0 0 900 124 0 0

(10)

Figura 9 - Resultado da simulação do bloco fuzificador realizada na ferramenta Quartus II.

Dos resultados de simulação apresentados do bloco fuzificador observa-se que, de acordo com a Figura 2, quando a variável de entrada erro varia entre [0. 1024], a função de pertinência PP é ativada com a mesma magnitude do valor do erro, fato comprovado pela saída “e_ps”, a qual representa a função de pertinência “Positivo Pequeno” no programa, e está ativada com valor 48.

Conforme apresentado anteriormente o bloco de inferência possui a função de realizar o processamento da informação no domínio difuso de acordo com as regras de controle armazenadas em sua base de dados. Na simulação realizada foram usados como vetores de entrada, os resultados obtidos da simulação do módulo fuzificador. A Tabela 5 apresenta os valores usados, como vetores de entrada, para a realização desta simulação. Os resultados da simulação são fornecidos na Figura 10. Os valores obtidos de simulação do bloco de inferência foram: [16, 48, 976, 0, 0] e [0, 0, 0, 124, 900], os quais estão de acordo com os valores esperados conforme indicado na Tabela 5.

Tabela 5 - Vetores de entrada e resultados esperados de simulação para o teste do módulo de inferência.

Vetores de entradas. Valores esperados como resultados de

saídas do modulo de inferência

e_nm e_ns e_ze e_ps e_pm de_nm de_ns de_ze de_ps de_pm yout_nm yout_ns yout_ze yout_ps yout_pm

0 0 976 48 0 0 0 1008 16 0 16 48 976 0 0

76 948 0 0 0 0 900 124 0 0 0 0 0 124 900

(11)

O módulo defuzificador converte o resultado obtido do processamento da informação do domínio fuzzy para o domínio crisp. Este bloco funcional também foi simulado para validação de sua operação tendo como vetores de entrada os sinais gerados/processados pelo módulo de inferência desenvolvido previamente. A Tabela 6 fornece os vetores usados como sinais de entrada desta simulação e os resultados esperados como saída deste bloco funcional. Os resultados de simulação são fornecidos na Figura 11.

Tabela 6 – Vetores de entrada e resultados esperados de simulação para o teste do defuzificador.

Vetores de entrada Valor esperado de saída

yin_nm yin_ns yin_ze yin_ps yin_pm Defuz

16 48 976 0 0 -39

0 0 0 124 900 962

Figura 11 - Resultado da simulação realizada na ferramenta Quartus II do bloco defuzificador.

Por fim, também foi realizada a simulação do processador fuzzy completo considerando-se como vetores de entrada os sinais usados anteriormente no bloco fuzificador (Tabela 7). A Figura 12 fornece os resultados obtidos de simulação do processador fuzzy desenvolvido em hardware digital, com o uso de linguagem de programação VHDL, tendo como alvo um componente FPGA. A Figura 13 mostra o circuito sintetizado desenvolvido.

Tabela 7 – Vetores de entrada e resultados esperados de simulação para o teste do processador fuzzy.

Entradas Valor Esperado na Saída

Erro Derro Defuz

48 16 -39

-1100 -900 962

(12)

Figura 13 - Circuito sintetizado do processador fuzzy. 5. CONCLUSÃO

Neste artigo foi realizado o desenvolvimento de um processador fuzzy digital usando a linguagem de descrição de hardware VHDL e tendo como alvo um componente programável após o encapsulamento - FPGA. O processador fuzzy desenvolvido pode ser usado para controle de diversos processos sendo somente necessário o projetista desenvolver/adequar os componentes de interfaces na qual o processador será usado. Este aspecto de portabilidade é uma das principais vantagens do uso da linguagem VHDL para desenvolvimento de aplicações de sistemas digitais.

REFERÊNCIAS

[Zad65] Zadeh, L. A., Fuzzy sets, Information Sciences, 8, 1965, pp. 338-353.

[Zad73] Zadeh, L. A., Outline of a new approach to the analysis of complex systems and decision processes, IEEE Transactions on Systems, Man, and Cybernetics, vol. SMC3, no. 1, January 1973, pp. 28-44.

[Klir95] Klir, G. J. and Yuan, B., Fuzzy sets and fuzzy logic: theory and applications, Prentice Hall P T R, ISBN: 0-13-101171-5, 1995.

[DANN05] DANNENBERG, A., Texas Instruments, Fuzzy Logic Motor Control with MSP430x14x, Application Report SLAA235, 2005,

[CYC06] ____,Cyclone II FPGA Starter Development Kit, 2006 , Altera Corporation

[CYC08] ____, Cyclone II Device Handbook, Volume 1, 2008, Altera Corporation

Referências

Documentos relacionados

A participação foi observada durante todas as fases do roadmap (Alinhamento, Prova de Conceito, Piloto e Expansão), promovendo a utilização do sistema implementado e a

Objetivo: Garantir estimativas mais realistas e precisas para o projeto, ao considerar nesta estimativa o esforço necessário (em horas ou percentual do projeto) para

A Lei nº 2/2007 de 15 de janeiro, na alínea c) do Artigo 10º e Artigo 15º consagram que constitui receita do Município o produto da cobrança das taxas

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

 Buscar nos manuais pedagógicos, orientações para tentar solucionar o problema de pesquisa do presente trabalho. Ou seja, elucidar que propostas de ensino em

Resumidamente a forma de comercialização dos apartamentos FLAT e operação de locação dos apartamentos do HOTEL para uma bandeira hoteleira proposta a seguir objetiva a

O MINISTRO DE ESTADO DA EDUCAÇÃO, no uso de suas atribuições, CONSIDERANDO a necessidade de estimular a formação de mestres profissionais habilitados para desenvolver atividades

RESUMO - O trabalho objetivou avaliar a qualidade das sementes de arroz utilizadas pelos agricultores em cinco municípios (Matupá, Novo Mundo, Nova Guarita, Alta Floresta e Terra