FUZZY LOGIC DESIGN TOOLS
An Overview of Xfuzzy
Xfuzzy is a design environment that eases the specification and verification of fuzzy systems, and their final implementation. The modules integrated into Xfuzzy are based on the XFL language. The power and flexibility of this language enable the use of Xfuzzy in a wide range of applications: from the evaluation of different fuzzy operators to the synthesis of fuzzy logic based systems.
The next figure shows the general structure of Xfuzzy. The kernel of the environment is formed by a set of common functions called the XFL library. The elements of this library perform the parsing and semantic analysis of XFL specifications and store them using an abstract syntax tree. This is the common format used inside the environment when handling system descriptions. The modules in charge of the different design stages lay around the kernel library, using its services. On top of these modules, the environment has a graphical user interface providing a simple and intuitive access to its elements. The user interface is based on X-Window, using the Athena-3D toolkit. The current version of Xfuzzy runs on any Unix-compatible operating system with X-Window, and on MS-Windows systems using the Cygwin development environment (http://sources.redhat.com/cygwin/).
Design flow in Xfuzzy is illustrated below. Systems are described in the XFL language by using any text editor or the graphical editors integrated into the environment. An XFL specification contains information about the knowledge base of the system and the mechanisms of inference to be used.
The behavior of the system can be verified using xfsim. This module allows the combination of the system under development with other elements defining its operational context. System definition can be adjusted with xfbpa, a supervised learning module able to tune the parameters of XFL definitions of any complexity.
Synthesis facilities constitute the most remarkable feature of Xfuzzy with respect to other fuzzy system development tools. If software synthesis is required, the fuzzy inference engine can be built into a C module by means of xfc, or into Java classes by using xfj. . For hardware synthesis, Xfuzzy provides two modules enabling the implementation of fuzzy systems defined in XFL. xftl translates an XFL description into a look-up table that can be implemented on a Field Programmable Gate Array (FPGA). As a second alternative, xfvhdl translates an XFL specification into a VHDL description based on a specific architecture. The VHDL code can be further synthesized as an Application Specific Integrated Circuit (ASIC) or as an FPGA.