Ambiente integrato per lo sviluppo di strutture fuzzy : realizzazione di uno strumento CAD per la generazione automatica di codice per sistemi microprogrammati. Relatore Correlatore Correlatore Prof. Gian Carlo Cardarilli Ing. M. Salmeri Ing. M.Re FACOLTÀ DI INGEGNERIA Tesi di Laurea in Ingegneria Elettronica Laureando Marco Sottilaro
Realizzazione di un GENERATORE di CODICE per microcontrollori all’interno del tool di sintesi di sistemi fuzzy Realizzazione di un GENERATORE di CODICE per microcontrollori all’interno del tool di sintesi di sistemi fuzzy OBIETTIVO : FSDT ( Fuzzy System Development Tool )
Svolgimento della tesi: Microcontrollori in commercio (Hitachi, Microchip, Motorola, Atmel,…..) Problemi legati alla generazione del codice Esame dei tool di sviluppo per fuzzy logic in commercio Realizzazione del “Fuzzy Code Generator” per FSDT Analisi dei moduli di FSDT già realizzati
Descrizione sistema fuzzy Descrizione sistema fuzzy OTTIMIZZATORE SIMULATORE HDL CODE GENERATOR VHDL Verilog FSDT : Fuzzy System Development Tool
Descrizione sistema fuzzy Descrizione sistema fuzzy OTTIMIZZATORE SIMULATORE HDL CODE GENERATOR FSDT : Fuzzy System Development Tool AssemblerC / C++ FUZZY CODE GENERATOR
Microcontrollori:Microcontrollori:Flessibilità Risorse limitate VHDL Verilog ASICs, FPGA: Ottime prestazioni Costosi, No Flessibili Complesso Istruction set specifico Programmazione facilitata Portabilità del codice Controllo h/w complesso Overhead in compilazione Controllo diretto dell’hw Ottimizzazione del codice C / C++ Assembler FUZZY CODE GENERATOR HDL
Dove si usano i C programmati in logica fuzzy ? Controllo funzioni per macchine fotografiche, telecamere, auto, … Auto-programmazione di elettrodomestici (lavatrici, lavastoviglie, …) Reti neurali (Neuro-Fuzzy). Controllo processi industriali (alternativi ai tradizionali PID). Diagnosi mediche. Trattamento immagini. Sistemi di condizionamento dell’aria. Nel campo finanziario Se il sistema deve compiere analisi “vicine” al pensiero umano al pensiero umano Se il sistema deve compiere analisi “vicine” al pensiero umano al pensiero umano Se il processo da controllare non è non è facilmente modellizzabile Se il processo da controllare non è non è facilmente modellizzabile
Perché generare codice in modo automatico ? Progettazione estesa a non esperti di programmazione Tempi più brevi per sviluppo s/w (basso time-to-market) Costi più bassi per la fase di progettazione Certezza di ottenere un programma “corretto” Certezza di avere: (1) un codice molto compatto (pochi kbytes di memoria) (2) risposta “real-time” del processo fuzzy
[ System] Inference=MINIMUM Defuzzification=SUGENO1 OutputMethod=COG Datatype=float Vars=3 Inputs=2 Outputs=1 Rules=15 [VarsIn] #Temperatura Molto_Bassa=(5,1),(10,0) Bassa=(5,0),(15,1),(25,0) Media=(15,0),(20,1),(30,1),(35,0) …………………… [Inputs] T=Temperatura U=Umidità [Outputs] AC=Aria_Condizionatore [Rules] IF (T=Molto_Bassa) (U=Bassa) THEN (AC=Molto_calda) …………………………………... “Fuzzy-description” file. Informazioni generali Algoritmi “fuzzy” Grandezze “fuzzy” Configurazione i/o Regole “fuzzy”
Fuzzy Graphic Editor Fuzzy Text Editor * ****************************** ****************************** ******** Project: file: Fuzzification.c ****************************** ****************************** ********* #include "System.h" * ****************************** ****************************** ******** Project: file: Fuzzification.c ****************************** ****************************** ********* #include "System.h" * ****************************** ****************************** ******** Project: file: Fuzzification.c ****************************** ****************************** ********* #include "System.h" * ****************************** ****************************** ******** Project: file: Fuzzification.c ****************************** ****************************** ********* #include "System.h" * ****************************** ****************************** ******** Project: file: Fuzzification.c ****************************** ****************************** ********* #include "System.h" * ****************************** ****************************** ******** Project: file: Fuzzification.c ****************************** ****************************** ********* #include "System.h" Descrizione sistema fuzzy Descrizione sistema fuzzy Generazione del codice per FSDT: Fuzzy Code Generator Altri moduli di FSDT (ottimizzatore, simulatore, HDL generator) FuzzyCodeFuzzyCode Microcontroller Support Tools Microcontroller Support Tools
Pacchetti “fuzzy” esistenti : (1) Generalmente l’utente non può agire direttamente sul formato del codice da generare (2) Ci sono edizioni dedicate a target specifici o con generazione di codice troppo generico Lo scopo di questa tesi non è stato quello di fornire semplicemente un nuovo software! Si sono volute introdurre NUOVE METODOLOGIE nel campo della sintesi per i sistemi in logica fuzzy su microcontrollori
Novità introdotte dal “Fuzzy Code Generator” : Gli aggiornamenti della libreria non devono comportare la ricompilazione dell’intero tool Realizzare una libreria per generare codice per diverse architetture dei microcontrollori in commercio Flessibilità della struttura : possibilità di indicare il formato di codifica dei dati fuzzy in modo che l’utente possa “personalizzare” la libreria Il cambio di microcontrollore non deve comportare l’acquisto di un nuovo CAD
Novità introdotte dal “Fuzzy Code Generator” : Gli aggiornamenti della libreria non devono comportare la ricompilazione dell’intero tool Realizzare una libreria per generare codice per diverse architetture dei microcontrollori in commercio Flessibilità della struttura : possibilità di indicare il formato di codifica dei dati fuzzy in modo che l’utente possa “personalizzare” la libreria L’utente può modificare le routine esistenti
Libreria codice fuzzy ESTERNA al modulo di generazione! Libreria codice fuzzy ESTERNA al modulo di generazione! Aggiornamenti della “Fuzzy-Library”: FuzzyLibraryFuzzyCodeGenerator NEW RICOMPILAZIONE dell’intero TOOL NEW
FUZZY CODE GENERATOR Motore di generazione FuzzyMain1.c Inference.c Fuzzification.c Aggiornamenti della “Fuzzy-Library”: ANSI H8_3644 H8S_2144 NEW (1) Inserire le nuove routine nella Fuzzy- Library F u z z y - L i b r a r y Riconoscimento automatico del nuovo elemento della libreria ! Riconoscimento automatico del nuovo elemento della libreria ! (2) Il modulo del motore di generazione rimane invariato I FILE ALL’INTERNO delle“FOLDERs-LIBRARY” delle“FOLDERs-LIBRARY” è è Implementano i processi fuzzy è è Comandano le interfacce i/o hardware è è Indicano le modalità di codifica dei dati fuzzy
Implementazione dei dati fuzzy: OBIETTIVO : consentire di scegliere nuove modalità di “traduzione” dei dati fuzzy nel codice OBIETTIVO : consentire di scegliere nuove modalità di “traduzione” dei dati fuzzy nel codice Negli altri pacchetti l’utente può intervenire in modo limitato su questa operazione SCOPO : Personalizzazione delle routine Introduzione di un linguaggio descrittivo per poter indicare al “Fuzzy Code Generator” il tipo di implementazione che l’utente predilige
Fuzzy Code Generator Generator
Variables Membership functions Membership functions Fuzzy Graphic Editor
Input / Output Ruleseditor Fuzzy Graphic Editor
Fuzzy FuzzyTextEditor TextEditor
Sviluppi futuri : Estensione della Fuzzy Library Spinta verso una maggiore flessibilità Introduzione in FSDT di moduli per il debugging in sintonia con i tool di sviluppo dei controllori Conclusioni : Semplificazione delle operazioni da effettuare Introduzione di nuove metodologie di sintesi