SlideShare una empresa de Scribd logo
1 de 144
Descargar para leer sin conexión
´
        CENTRO DE INVESTIGACION Y DE ESTUDIOS AVANZADOS
                                 ´
              DEL INSTITUTO POLITECNICO NACIONAL
            DEPARTAMENTO DE INGENIER´ ELECTRICA
                                       IA   ´
                         ´ DE COMPUTACION
                    SECCION               ´




Dise˜ o de circuitos l´gicos combinatorios
    n                 o
usando optimizaci´n mediante c´ mulos de
                  o             u
                part´ıculas

                   Tesis que presenta


                Erika Hern´ndez Luna
                          a


                Para obtener el grado de


                 Maestro en Ciencias


                  En la especialidad de


                Ingenier´ El´ctrica
                        ıa e
                Opci´n Computaci´n
                    o             o



     Director de Tesis: Dr. Carlos A. Coello Coello


                                        M´xico, D.F., febrero 2004
                                         e
Resumen
     En esta tesis se propone un algoritmo para el dise˜ o y la posterior opti-
                                                            n
mizaci´n de circuitos l´gicos combinatorios a nivel de compuertas usando un
        o                o
algoritmo de optimizaci´n mediante c´ mulos de part´
                           o                u               ıculas y tres enfoques
de representaci´n distintos: binaria, entera A y entera B . A pesar de que
                 o
existen muchos criterios para determinar cual es el dise˜o de costo m´
                                                               n                 ınimo
de un circuito, en este trabajo se utiliza una m´trica basada en el n´ mero de
                                                    e                        u
compuertas necesarias para la implementaci´n en hardware del circuito.
                                                 o
     El algoritmo de optimizaci´n mediante c´ mulos de part´
                                  o                u                 ıculas (Particle
Swarm Optimization PSO) es una t´cnica de optimizaci´n num´rica de fun-
                                         e                     o        e
ciones no lineales que se encuentra influenciada fuertemente por algunas otras
corrientes como vida artificial, psicolog´ social, ingenier´ y ciencias de la
                                              ıa                 ıa
computaci´n, que ha conseguido su ´xito gracias a que tiene un bajo costo
            o                             e
computacional, una f´cil implementaci´n y un excelente desempe˜ o.
                        a                   o                             n
     Las t´cnicas evolutivas han sido sumamente utiles en el proceso de dise˜ o
          e                                           ´                             n
de circuitos electr´nicos debido a su poder exploratorio, pues al contar con
                    o
una poblaci´n de soluciones potenciales permiten evaluar diversas regiones
              o
del espacio de dise˜ o.
                     n
     Tambi´n se ha visto a los largo de los a˜os que el dise˜ o de circuitos
            e                                      n                  n
mediante las metodolog´ tradicionales es un proceso complejo que requie-
                           ıas
re de tiempo y experiencia por parte del dise˜ador humano, por lo que se
                                                    n
pretende que al utilizar t´cnicas evolutivas puedan hallarse dise˜os que son
                             e                                           n
radicalmente diferentes que los encontrados hasta el momento por estos di-
se˜ adores.
   n
     El PSO ha utilizado una representaci´n binaria y frecuentemente una re-
                                               o
presentaci´n real para codificar las soluciones de los problemas, sin embargo
            o
en este trabajo adem´s de presentarse una versi´n binaria, se hicieron los
                         a                              o
ajustes necesarios para presentar tambi´n una propuesta basada en dos enfo-
                                            e
ques distintos de una versi´n entera del algoritmo de optimizaci´n mediante
                               o                                        o
c´ mulos de part´
  u               ıculas para el dise˜ o de circuitos l´gicos combinatorios a nivel
                                     n                 o
de compuertas.
     Los dos enfoques de la representaci´n entera y el de la versi´n binaria
                                             o                             o
del algoritmo propuesto se validaron usando algunos ejemplos tomados de la
literatura y comparados contra otros tres enfoques: el dise˜o realizado por
                                                                    n
un experto humano, el dise˜ o resultante de aplicar el algoritmo gen´tico de
                                n                                              e
cardinalidad N (NGA), y el dise˜ o obtenido aplicando el algoritmo gen´tico
                                    n                                             e
multiobjetivo (MGA).

                                         iii
iv
Abstract
    This thesis presents an algorithm for the design and the optimization of
combinational logic circuits at gate-level using a particle swarm optimization
algorithm and three different representation approaches: binary, integer A
and integer B. Although there are many criteria to determine the minimal-
cost circuit design, in this work we used a metric based on the number of
gates necessaries for the hardware implementation of the circuit.
    The Particle Swarm Optimization (PSO) algorithm is a numerical op-
timization technique for nonlinear functions that is strongly influenced by
other areas such as artificial life, social psychology and computer science.
PSO has been very successful because it has a low computacional cost, an
easy implementation and an excellent performance.
    Evolutionary techniques have been very useful for designing electronic
circuits due to their exploratory power, since they operate using a population
of potential solutions which can evaluate several regions of design space at
the same time.
    It has been seen along the years that designing logic circuits using tradi-
tional techniques is a complex process which requires considerable time and
whose success depends on the human designer’s experience. Because of that,
we propose the use of evoluationary techniques to find circuits which, are
often radically different from those typically found by human designers.
    PSO has been used sometimes with a binary representation and more
often with a real numbers encoding. However in this thesis we present two
integer approaches besides the binary version of the particle swarm optimiza-
tion algorithm, which are intended for designing combinational logic circuits.
    The binary version and the two integer approaches of the proposed algo-
rithm are validated using several examples taken from the specialized lite-
rature and are compared against human designers, the n-cardinality genetic
algorithm (NGA) and the multiobjective genetic algorithm (MGA).




                                      v
vi
Agradecimientos




    A Gelus y a Manolo por haber guiado mis pasos para llegar hasta aqu´ y
                                                                         ı
en el camino darme a probar el sabor del triunfo y ense˜ arme a no querer
                                                        n
abandonarlo nunca. A Sandy y a Isra por estar siempre conmigo y por el gran
apoyo que me han brindado incluso cuando ni siquiera sab´ que lo necesita-
                                                         ıa
ba. A mi querido Daniel porque cuando estamos juntos todo parece ser mejor.

    A mis seres queridos y a todos aquellos que han influido en mi vida a lo
largo de mis a˜ os de estudio y que con sus acertadas palabras me condujeron
              n
por el mejor camino.

    Al Dr. Coello por sus invaluables consejos y por ser una fuente de inspi-
raci´n que motiva a seguir siempre adelante.
    o

   A CONACyT por el apoyo otorgado a trav´s de la beca proporcionada
                                               e
durante mi estancia en el programa de maestr´ y a trav´s del proyecto titula-
                                            ıa        e
do “Estudio y Desarrollo de T´cnicas Avanzadas de Manejo de Restricciones
                              e
para Algoritmos Evolutivos en el Contexto de Optimizaci´n Num´rica” (Ref.
                                                        o        e
32999-A), cuyo responsable es el Dr. Carlos A. Coello Coello.




                                     vii
viii
Contenido

1. Introducci´n
             o                                                                              1

2. Circuitos l´gicos combinatorios
               o                                                                             5
   2.1. Algebra booleana . . . . . . . . . . . . . . . . . . . . . .            .   .   .    6
        2.1.1. Tablas de verdad . . . . . . . . . . . . . . . . . .             .   .   .    7
        2.1.2. Compuertas l´gicas . . . . . . . . . . . . . . . . .
                             o                                                  .   .   .    8
        2.1.3. Postulados, leyes y teoremas del algebra booleana
                                                 ´                              .   .   .   12
   2.2. Formas Est´ndar . . . . . . . . . . . . . . . . . . . . . .
                   a                                                            .   .   .   14
        2.2.1. Minit´rminos y maxit´rminos . . . . . . . . . . .
                     e                e                                         .   .   .   14
        2.2.2. Suma de productos . . . . . . . . . . . . . . . . .              .   .   .   17
        2.2.3. Producto de sumas . . . . . . . . . . . . . . . . .              .   .   .   17
   2.3. Procedimiento de dise˜o de circuitos l´gicos . . . . . . .
                               n              o                                 .   .   .   18
   2.4. Planteamiento formal del problema de dise˜o de circuitos
                                                    n                           .   .   .   19
   2.5. Simplificaci´n de circuitos l´gicos . . . . . . . . . . . . .
                   o                o                                           .   .   .   20
        2.5.1. Simplificaci´n algebraica . . . . . . . . . . . . . .
                          o                                                     .   .   .   21
        2.5.2. Mapas de Karnaugh . . . . . . . . . . . . . . . .                .   .   .   22
        2.5.3. M´todo de Quine-McCluskey . . . . . . . . . . .
                 e                                                              .   .   .   27
        2.5.4. T´cnicas evolutivas . . . . . . . . . . . . . . . . .
                 e                                                              .   .   .   31

3. Conceptos b´sicos
                a                                                                           37
   3.1. Optimizaci´n . . . . . . . . . . . . . . . . . . . .
                  o                                             .   .   .   .   .   .   .   37
        3.1.1. Optimizaci´n con y sin restricciones . . . .
                          o                                     .   .   .   .   .   .   .   37
        3.1.2. Optimizaci´n global y local . . . . . . . .
                          o                                     .   .   .   .   .   .   .   38
        3.1.3. Optimizaci´n estoc´stica y determin´
                          o       a                   ıstica    .   .   .   .   .   .   .   38
        3.1.4. Algoritmos de optimizaci´n . . . . . . . .
                                         o                      .   .   .   .   .   .   .   39
   3.2. Computaci´n evolutiva . . . . . . . . . . . . . . .
                  o                                             .   .   .   .   .   .   .   39
        3.2.1. Programaci´n evolutiva . . . . . . . . . . .
                          o                                     .   .   .   .   .   .   .   40
        3.2.2. Estrategias evolutivas . . . . . . . . . . . .   .   .   .   .   .   .   .   41

                                      ix
x                                                                                                            Contenido

         3.2.3. Algoritmos gen´ticos . . . . . . . . . . . . . . . . .
                              e                                                                                      .   .    41
    3.3. Algoritmo de optimizaci´n mediante c´ mulos de part´
                                o              u               ıculas                                                .   .    41
         3.3.1. Algoritmo de PSO binario . . . . . . . . . . . . . .                                                 .   .    44
         3.3.2. Algoritmo de PSO real . . . . . . . . . . . . . . . .                                                .   .    47
         3.3.3. Par´metros del PSO . . . . . . . . . . . . . . . . .
                   a                                                                                                 .   .    48

4. Descripci´n de la t´cnica
              o           e                                                                                                  51
   4.1. Representaci´n de los circuitos l´gicos . . . . . . . . . . . . .
                      o                    o                                                                             .   51
        4.1.1. Representaci´n interna de las celdas . . . . . . . . . .
                              o                                                                                          .   54
        4.1.2. Cardinalidad . . . . . . . . . . . . . . . . . . . . . .                                                  .   55
   4.2. Evaluaci´n . . . . . . . . . . . . . . . . . . . . . . . . . . . .
                  o                                                                                                      .   57
   4.3. Obtenci´n de expresiones booleanas . . . . . . . . . . . . . .
                 o                                                                                                       .   58
   4.4. Algoritmo de optimizaci´n mediante c´ mulos de part´
                                  o             u               ıculas pa-
        ra el dise˜ o de circuitos l´gicos combinatorios . . . . . . . .
                   n                o                                                                                    . 60
   4.5. Mutaci´n uniforme . . . . . . . . . . . . . . . . . . . . . . .
                o                                                                                                        . 63
   4.6. Funci´n de aptitud . . . . . . . . . . . . . . . . . . . . . . .
              o                                                                                                          . 64

5. Circuitos de una salida                                                                                                    67
   5.1. Experimentos . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    68
   5.2. Ejemplo 1 . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    72
   5.3. Ejemplo 2 . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    75
   5.4. Ejemplo 3 . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    78
   5.5. Ejemplo 4 . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    81
   5.6. Ejemplo 5 . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    84
   5.7. Ejemplo 6 . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    87
   5.8. Ejemplo 7 . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    90
   5.9. Ejemplo 8 . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    93
   5.10. Ejemplo 9 . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    96

6. Circuitos de m´ltiples salidas
                  u                                                                                                       101
   6.1. Ejemplo 1 . . . . . . . . . .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   . 102
   6.2. Ejemplo 2 . . . . . . . . . .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   . 105
   6.3. Ejemplo 3 . . . . . . . . . .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   . 108
   6.4. Ejemplo 4 . . . . . . . . . .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   . 112

7. Conclusiones y trabajo futuro                                                                                             117

Bibliograf´
          ıa                                                                                                                 121
Lista de tablas

 2.1. Tabla de verdad para dos variables de entrada. . . . . . . . . .          7
 2.2. Distintos s´ımbolos y terminolog´ para la operaci´n AND. . .
                                        ıa                   o                  8
 2.3. Tabla de verdad de la compuerta AND. . . . . . . . . . . . . .            8
 2.4. Distintos s´ımbolos y terminolog´ para la operaci´n OR. . . .
                                        ıa                   o                  9
 2.5. Tabla de verdad de la compuerta OR. . . . . . . . . . . . . . .           9
 2.6. Tabla de verdad de la compuerta NOT. . . . . . . . . . . . . .           10
 2.7. Tabla de verdad de la compuerta XOR. . . . . . . . . . . . . .           11
 2.8. Minit´rminos de tres variables. . . . . . . . . . . . . . . . . . .
             e                                                                 15
 2.9. Maxit´rminos de tres variables. . . . . . . . . . . . . . . . . .
              e                                                                15
 2.10. Equivalencia entre una suma de minit´rminos y un producto
                                                 e
       de maxit´rminos. . . . . . . . . . . . . . . . . . . . . . . . . .
                e                                                              16
 2.11. Agrupaci´n de t´rminos para encontrar los implicantes primos
                o       e
       de la funci´n S = (0, 1, 2, 5, 6, 7, 8, 9, 10, 14). . . . . . . . . .
                  o                                                            28
 2.12. Resultado de la comparaci´n y combinaci´n de t´rminos en
                                   o                  o        e
       grupos adyacentes de la tabla 2.12. . . . . . . . . . . . . . . .       29
 2.13. Resultado de la comparaci´n y combinaci´n de t´rminos en
                                   o                  o        e
       grupos adyacentes de la tabla 2.12. . . . . . . . . . . . . . . .       29
 2.14. Diagrama de implicantes primos de las tablas 2.11, 2.12 y 2.13          30
 2.15. Resultado de la inclusi´n de los implicantes primos esenciales
                              o
       en la suma m´ ınima. . . . . . . . . . . . . . . . . . . . . . . . .    31

 5.1. Tabla de verdad del ejemplo 1. . . . . . . . . . . . . . . . . .     . 72
 5.2. An´lisis comparativo de 20 corridas del ejemplo 1. . . . . . .
         a                                                                 . 73
 5.3. Comparaci´n de resultados entre el PSO, un dise˜ ador huma-
                 o                                      n
      no, el MGA y el NGA para el ejemplo 1. . . . . . . . . . . .         . 74
 5.4. Tabla de verdad del ejemplo 2. . . . . . . . . . . . . . . . . .     . 75
 5.5. An´lisis comparativo de 20 corridas del ejemplo 2. . . . . . .
         a                                                                 . 76
 5.6. Comparaci´n de resultados entre el PSO, un dise˜ ador huma-
                 o                                      n
      no y el MGA para el ejemplo 2. . . . . . . . . . . . . . . . .       . 77

                                     xi
xii                                                               Lista de tablas

      5.7. Tabla de verdad del ejemplo 3. . . . . . . . . . . . . . . . . .    . 78
      5.8. An´lisis comparativo de 20 corridas del ejemplo 3. . . . . . .
               a                                                               . 79
      5.9. Comparaci´n de resultados entre el PSO, un dise˜ ador huma-
                       o                                      n
            no y el MGA para el ejemplo 3. . . . . . . . . . . . . . . . .     . 80
      5.10. Tabla de verdad del ejemplo 4. . . . . . . . . . . . . . . . . .   . 81
      5.11. An´lisis comparativo de 20 corridas del ejemplo 4. . . . . . .
               a                                                               . 82
      5.12. Comparaci´n de resultados entre el PSO, un dise˜ ador huma-
                       o                                      n
            no y el MGA para el ejemplo 4. . . . . . . . . . . . . . . . .     . 83
      5.13. Tabla de verdad del ejemplo 5. . . . . . . . . . . . . . . . . .   . 84
      5.14. An´lisis comparativo de 20 corridas del ejemplo 5. . . . . . .
               a                                                               . 85
      5.15. Comparaci´n de resultados entre el PSO, un dise˜ ador huma-
                       o                                      n
            no y el MGA para el ejemplo 5. . . . . . . . . . . . . . . . .     . 86
      5.16. Tabla de verdad del ejemplo 6. . . . . . . . . . . . . . . . . .   . 87
      5.17. An´lisis comparativo de 20 corridas del ejemplo 6. . . . . . .
               a                                                               . 88
      5.18. Comparaci´n de resultados entre el PSO, un dise˜ ador huma-
                       o                                      n
            no y el MGA para el ejemplo 6. . . . . . . . . . . . . . . . .     . 89
      5.19. Tabla de verdad del ejemplo 7. . . . . . . . . . . . . . . . . .   . 90
      5.20. An´lisis comparativo de 20 corridas del ejemplo 7. . . . . . .
               a                                                               . 91
      5.21. Comparaci´n de resultados entre el PSO, un dise˜ ador huma-
                       o                                      n
            no y el MGA para el ejemplo 7. . . . . . . . . . . . . . . . .     . 92
      5.22. Tabla de verdad del ejemplo 8. . . . . . . . . . . . . . . . . .   . 93
      5.23. An´lisis comparativo de 20 corridas del ejemplo 8. . . . . . .
               a                                                               . 94
      5.24. Comparaci´n de resultados entre el PSO, un dise˜ ador huma-
                       o                                      n
            no, el MGA y el NGA para el ejemplo 8. . . . . . . . . . . .       . 95
      5.25. Tabla de verdad del ejemplo 9. . . . . . . . . . . . . . . . . .   . 96
      5.26. An´lisis comparativo de 20 corridas del ejemplo 9. . . . . . .
               a                                                               . 97
      5.27. Comparaci´n de resultados entre el PSO, un dise˜ ador huma-
                       o                                      n
            no y el MGA para el ejemplo 9. . . . . . . . . . . . . . . . .     . 98

      6.1. Tabla de verdad del ejemplo 1. . . . . . . . . . . . . . . . . .    . 102
      6.2. An´lisis comparativo de 20 corridas del ejemplo 1. . . . . . .
              a                                                                . 103
      6.3. Comparaci´n de resultados entre el PSO, un dise˜ ador huma-
                      o                                      n
           no y el MGA para el ejemplo 1. . . . . . . . . . . . . . . . .      . 104
      6.4. Tabla de verdad del ejemplo 2. . . . . . . . . . . . . . . . . .    . 105
      6.5. An´lisis comparativo de 20 corridas del ejemplo 2. . . . . . .
              a                                                                . 106
      6.6. Comparaci´n de resultados entre el PSO, un dise˜ ador huma-
                      o                                      n
           no y el MGA para el ejemplo 2. . . . . . . . . . . . . . . . .      . 107
      6.7. Tabla de verdad del ejemplo 3. . . . . . . . . . . . . . . . . .    . 109
Lista de tablas                                                              xiii

   6.8. An´lisis comparativo de 20 corridas del ejemplo 3. . . . . . .
            a                                                               . 110
   6.9. Comparaci´n de resultados entre el PSO, un dise˜ ador huma-
                    o                                      n
         no y el MGA para el ejemplo 3. . . . . . . . . . . . . . . . .     . 111
   6.10. Tabla de verdad del ejemplo 4. . . . . . . . . . . . . . . . . .   . 113
   6.11. An´lisis comparativo de 20 corridas del ejemplo 4. . . . . . .
            a                                                               . 114
   6.12. Comparaci´n de resultados entre el PSO, un dise˜ ador huma-
                    o                                      n
         no, el MGA y el NGA para el ejemplo 4. . . . . . . . . . . .       . 114
xiv   Lista de tablas
Lista de figuras

 2.1. Ejemplo de una expresi´n booleana. . . . . . . . . . . . . . . .
                                  o                                               6
 2.2. Compuerta AND de dos entradas. . . . . . . . . . . . . . . . .              9
 2.3. Compuerta OR de dos entradas. . . . . . . . . . . . . . . . . .            10
 2.4. Compuerta NOT. . . . . . . . . . . . . . . . . . . . . . . . . .           10
 2.5. Compuerta XOR de dos entradas. . . . . . . . . . . . . . . . .             11
 2.6. Ejemplo de una suma de productos. . . . . . . . . . . . . . . .            17
 2.7. Diagrama de circuito de una suma de productos (SOP). . . . .               18
 2.8. Ejemplo de un producto de sumas. . . . . . . . . . . . . . . .             18
 2.9. Diagrama de circuito de un producto de sumas (POS). . . . .                19
 2.10. Ejemplo de funciones booleanas equivalentes. . . . . . . . . . .          21
 2.11. Ejemplo de un diagrama de circuito y su expresi´n booleana. .
                                                              o                  21
 2.12. Diagrama de circuito y su expresi´n booleana simplificada. . .
                                             o                                   22
 2.13. Mapa de Karnaugh de dos variables. (a)Forma general. (b)
       Mapa de S = A B + A B = (0, 1) = (2, 4) . . . . . . . . .                 23
 2.14. Mapa de Karnaugh de tres variables. (a)Forma general. (b)
       Mapa de S = A B C +A B C+A BC+AB C = (0, 1, 3, 4) =
          (2, 5, 6, 7) . . . . . . . . . . . . . . . . . . . . . . . . . . . .   24
 2.15. Mapa de Karnaugh de cuatro variables. (a)Forma general. (b)
       Mapa de S = A B C +A B C+A BC+AB C = (0, 1, 3, 4) =
          (2, 5, 6, 7) . . . . . . . . . . . . . . . . . . . . . . . . . . . .   25
 2.16. Adyacencia de celdas en los extremos de un mapa de cuatro
       variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      26
 2.17. Mapa de Karnaugh de cuatro variables con agrupamientos de
       1, 2, 4 y 8 celdas. . . . . . . . . . . . . . . . . . . . . . . . . .     26
 2.18. Representaci´n de matriz para el dise˜ o de circuitos l´gicos. .
                       o                          n                 o            33

 3.1. Algoritmo general de la programaci´n evolutiva. . . . . . . . . 40
                                          o
 3.2. Algoritmo general de las estrategias evolutivas. . . . . . . . . . 41
 3.3. Algoritmo general de los algoritmo gen´ticos. . . . . . . . . . . 42
                                             e

                                      xv
xvi                                                             Lista de figuras

  3.4. Modelo Gbest del PSO. . . . . . . . . . . . . . . . . . . . . .       . 44
  3.5. Modelo Lbest del PSO. . . . . . . . . . . . . . . . . . . . . .       . 44
  3.6. Versi´n binaria del algoritmo de optimizaci´n mediante c´mu-
            o                                        o               u
       los de part´ıculas. . . . . . . . . . . . . . . . . . . . . . . . .   . 46
  3.7. Versi´n real del algoritmo de optimizaci´n mediante c´ mulos
            o                                      o              u
       de part´ıculas. . . . . . . . . . . . . . . . . . . . . . . . . . .   . 48
  3.8. Efecto de la eliminaci´n del par´metro Vmax en el algoritmo
                               o          a
       de PSO [23]. . . . . . . . . . . . . . . . . . . . . . . . . . . .    . 49
  3.9. Efecto de la variaci´n del par´metro φ en el algoritmo de PSO
                           o          a
       [23]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   . 50

  4.1.  Representaci´n de matriz para el dise˜ o de circuitos l´gicos. .
                     o                           n                 o            52
                                                              75
  4.2.  Matriz de 5 × 5 con un espacio de b´squeda de 5 . . . . . . .
                                                u                               53
  4.3.  Distintos tipos de representaci´n. . . . . . . . . . . . . . . . .
                                         o                                      54
  4.4.  Una tercia de la matriz con representaci´n entera. . . . . . . .
                                                    o                           54
  4.5.  Una tercia de la matriz con representaci´n binaria. . . . . . .
                                                    o                           55
  4.6.  Uso de una cardinalidad de dos para la selecci´n de celdas . .
                                                          o                     56
  4.7.  Entradas a las celdas de la matriz. . . . . . . . . . . . . . . . .     57
  4.8.  Matriz de ejemplo para la obtenci´n de la expresi´n booleana.
                                             o                o                 58
  4.9.  Arbol de derivaci´n para la salida S0 de la expresi´n booleana
                          o                                   o
        en notaci´n prefija de la matriz mostrada en la figura 4.8. . . .
                  o                                                             59
  4.10. Derivaci´n completa de la expresi´n booleana para la salida
                 o                           o
        S0 a partir de la matriz de la figura 4.8. . . . . . . . . . . . . .     59
  4.11. Pseudoc´digo del algoritmo de optimizaci´n mediante c´ mulos
                 o                                   o              u
        de part´
               ıculas. . . . . . . . . . . . . . . . . . . . . . . . . . . .    61
  4.12. Ejemplo del funcionamiento de la representaci´n entera A y
                                                           o
        entera B. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   63
  4.13. Ejemplo de mutaci´n uniforme sobre una representaci´n entera.
                            o                                      o            64
  4.14. Aptitud de una soluci´n no factible. . . . . . . . . . . . . . . .
                               o                                                65
  4.15. Aptitud de una soluci´n factible. . . . . . . . . . . . . . . . .
                               o                                                66

  5.1. Archivo con formato blif. . . . . . . . . . . . . . . . . . . . .     . 69
  5.2. Programa en lenguaje Scheme que eval´a la expresi´n boolea-
                                                 u             o
       na obtenida del archivo blif de la figura 5.1. . . . . . . . . .       . 71
  5.3. Gr´fica de convergencia del ejemplo 1 de la corrida ubicada en
          a
       la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . .     . 73
  5.4. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para
                          o o
       el ejemplo 1. . . . . . . . . . . . . . . . . . . . . . . . . . . .   . 74
Lista de figuras                                                                xvii

   5.5. Gr´fica de convergencia del ejemplo 2 de la corrida ubicada en
            a
         la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . .     . 76
   5.6. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para
                            o o
         el ejemplo 2. . . . . . . . . . . . . . . . . . . . . . . . . . . .   . 77
   5.7. Gr´fica de convergencia del ejemplo 3 de la corrida ubicada en
            a
         la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . .     . 79
   5.8. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para
                            o o
         el ejemplo 3. . . . . . . . . . . . . . . . . . . . . . . . . . . .   . 80
   5.9. Gr´fica de convergencia del ejemplo 4 de la corrida ubicada en
            a
         la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . .     . 82
   5.10. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para
                            o o
         el ejemplo 4. . . . . . . . . . . . . . . . . . . . . . . . . . . .   . 83
   5.11. Gr´fica de convergencia del ejemplo 5 de la corrida ubicada en
            a
         la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . .     . 85
   5.12. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para
                            o o
         el ejemplo 5. . . . . . . . . . . . . . . . . . . . . . . . . . . .   . 86
   5.13. Gr´fica de convergencia del ejemplo 6 de la corrida ubicada en
            a
         la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . .     . 88
   5.14. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para
                            o o
         el ejemplo 6. . . . . . . . . . . . . . . . . . . . . . . . . . . .   . 89
   5.15. Gr´fica de convergencia del ejemplo 7 de la corrida ubicada en
            a
         la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . .     . 91
   5.16. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para
                            o o
         el ejemplo 7. . . . . . . . . . . . . . . . . . . . . . . . . . . .   . 92
   5.17. Gr´fica de convergencia del ejemplo 8 de la corrida ubicada en
            a
         la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . .     . 94
   5.18. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para
                            o o
         el ejemplo 8. . . . . . . . . . . . . . . . . . . . . . . . . . . .   . 95
   5.19. Gr´fica de convergencia del ejemplo 9 de la corrida ubicada en
            a
         la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . .     . 98
   5.20. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para
                            o o
         el ejemplo 9. . . . . . . . . . . . . . . . . . . . . . . . . . . .   . 99

   6.1. Gr´fica de convergencia del ejemplo 1 de la corrida ubicada en
           a
        la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
   6.2. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para
                           o o
        el ejemplo 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
xviii                                                           Lista de figuras

   6.3. Gr´fica de convergencia del ejemplo 2 de la corrida ubicada en
           a
        la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . .     . 107
   6.4. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para
                           o o
        el ejemplo 2. . . . . . . . . . . . . . . . . . . . . . . . . . . .   . 108
   6.5. Gr´fica de convergencia del ejemplo 3 de la corrida ubicada en
           a
        la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . .     . 110
   6.6. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para
                           o o
        el ejemplo 3. . . . . . . . . . . . . . . . . . . . . . . . . . . .   . 112
   6.7. Gr´fica de convergencia del ejemplo 4 de la corrida ubicada en
           a
        la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . .     . 115
   6.8. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para
                           o o
        el ejemplo 4. . . . . . . . . . . . . . . . . . . . . . . . . . . .   . 115
Cap´
   ıtulo 1

Introducci´n
          o

    La producci´n de circuitos electr´nicos es un proceso que demanda ca-
                  o                    o
da vez dise˜ os mejores y m´s complejos, debido a las tecnolog´ actuales
              n                a                                     ıas
de fabricaci´n. Sin embargo, tradicionalmente en el proceso de dise˜o se han
              o                                                         n
adoptado t´cnicas que utilizan un conjunto de reglas y principios que adem´s
             e                                                                a
de haber existido durante d´cadas dependen de la habilidad del dise˜ ador y
                              e                                           n
no aseguran llegar al dise˜o optimo. El dise˜ o de circuitos l´gicos combi-
                             n ´                 n                 o
natorios (no secuenciales) es un problema particular del dise˜o de circuitos
                                                                  n
electr´nicos que tiene una complejidad tal que ha permanecido como un pro-
       o
blema de investigaci´n abierto a lo largo del tiempo.
                      o
    El objetivo principal en el proceso de dise˜ o de circuitos l´gicos combina-
                                               n                 o
torios es encontrar la expresi´n que proporcione el comportamiento deseado
                                o
y que adem´s minimice un cierto criterio. En el caso de este trabajo de te-
              a
sis el criterio a minimizarse es el costo del circuito, medido en t´rminos del
                                                                      e
n´ mero necesario de compuertas para un dise˜o dado. Existen muchos crite-
  u                                             n
rios para determinar cu´l es esta expresi´n de costo m´
                         a                o              ınimo. Sin embargo, un
circuito l´gico es una implementaci´n en hardware de una funci´n booleana
           o                         o                               o
y la reducci´n del n´ mero de literales de cada t´rmino reduce el n´ mero de
              o       u                            e                    u
entradas de cada compuerta logrando con ello la reducci´n del n´ mero de
                                                              o         u
compuertas necesarias y por tanto la complejidad del circuito.
    Las t´cnicas evolutivas han sido aplicadas al dise˜o de circuitos [8, 31],
          e                                              n
codificando los posibles dise˜ os en genotipos a partir de los cuales se cons-
                               n
truyen los circuitos o fenotipos. Estas t´cnicas han resultado muy utiles en
                                          e                              ´
el dise˜ o de circuitos l´gicos combinatorios debido a su poder exploratorio,
        n                o
pues al contar con una poblaci´n de soluciones potenciales permiten eva-
                                  o
luar diversas regiones del espacio de dise˜o. El area dedicada al estudio y
                                            n        ´

                                       1
2                                                                    Introducci´n
                                                                               o

aplicaci´n de t´cnicas evolutivas para el dise˜ o de circuitos electr´nicos es
        o      e                              n                      o
el hardware evolutivo [39, 19, 42] el cual est´ influenciado por otras areas,
                                              a                         ´
principalmente ciencias de la computaci´n, biolog´ e ingenier´ electr´nica.
                                        o          ıa           ıa      o
El hardware evolutivo puede dividirse en dos grupos principales de acuerdo
a la forma en que se dise˜ an y prueban los circuitos:
                         n

        Evoluci´n intr´
                 o    ınseca: Es el proceso evolutivo en el cual cada fenotipo
        es contru´ y probado en hardware reconfigurable1 .
                 ıdo

        Evoluci´n extr´
                o        ınseca: Utiliza un modelo de hardware y eval´a los
                                                                     u
        fenotipos en software (simulaci´n).
                                       o

    En este trabajo se utiliz´ la t´cnica evolutiva denominada Optimizaci´n
                                o   e                                        o
mediante c´mulos de part´culas (Particle swarm optimization - PSO) [21] que
            u                 ı
es uno de los algoritmos de la llamada inteligencia colectiva (swarm intelli-
gence en ingl´s) [3] que se refiere a aquellas t´cnicas de b´ squeda inspiradas
               e                               e           u
en el comportamiento colectivo de las colonias de insectos y de algunas otras
sociedades de animales.
    El PSO tiene como idea principal simular el movimiento de un grupo
de aves que buscan comida. En esta simulaci´n, el comportamiento de ca-
                                                o
da individuo est´ afectado por un factor individual y uno social. El factor
                    a
individual se refiere a las decisiones que ha tomado el individuo y que han
funcionado mejor (en t´rminos de su aptitud) y que afectar´n las nuevas
                            e                                   a
decisiones que pueda tomar. El factor social se refiere a las decisiones que
han tomado el resto de los individuos de la poblaci´n (dentro de un cierto
                                                      o
vecindario) que han funcionado mejor y que afectar´n las nuevas decisiones
                                                      a
tomadas por los individuos en el vecindario. Cada individuo o part´  ıcula con-
tiene su posici´n actual en el espacio de b´ squeda, su velocidad actual y la
                  o                          u
mejor posici´n encontrada por el individuo hasta este punto de la b´squeda
              o                                                        u
(el factor individual) [23].
    Este trabajo de tesis se encuentra dentro del ambito de la evoluci´n ex-
                                                    ´                    o
tr´
  ınseca del hardware evolutivo al dise˜ ar circuitos l´gicos combinatorios a
                                         n             o
nivel de compuertas (s´lo utilizando las funciones AND, OR, NOT y XOR)
                          o
mediante la t´cnica evolutiva de PSO.
                e
    En el cap´  ıtulo 2 se da una introducci´n a la teor´ de circuitos l´gicos
                                            o           ıa               o
combinatorios y el proceso de dise˜ o. Tambi´n se describen algunas de las
                                      n        e
    1
    Sistemas cuyo hardware puede modificarse de manera que se adapte a nuevas condi-
ciones del mismo o a distintas aplicaciones.
Introducci´n
          o                                                                       3

distintas t´cnicas tradicionalmente usadas para el dise˜ o de circuitos l´gicos
           e                                                 n               o
como los mapas de Karnaugh y el m´todo de Quine-McCluskey, adem´s de
                                           e                                  a
algunos otros enfoques evolutivos como el algoritmo gen´tico de cardinalidad
                                                               e
N y el algoritmo gen´tico multiobjetivo.
                         e
    En el cap´ ıtulo 3 se presenta un panorama de lo que son los problemas de
optimizaci´n en ingenier´ y su importancia. Despu´s se da un breve repaso
           o                ıa                           e
de lo que es la computaci´n evolutiva, los t´rminos m´s importantes y sus
                              o                    e          a
principales paradigmas para despu´s dar una descripci´n del algoritmo de
                                         e                     o
optimizaci´n mediante c´ mulos de part´
           o                u                ıculas.
    En el cap´ıtulo 4 se describe la t´cnica propuesta para resolver el dise˜o de
                                       e                                      n
circuitos l´gicos combinatorios detallando cada uno de los elementos que la
           o
componen como la representaci´n, la evaluaci´n y obtenci´n de expresiones
                                    o                o           o
booleanas, el algoritmo utilizado y la funci´n de aptitud.
                                                 o
    En el cap´ ıtulo 5 se muestran los resultados obtenidos por la t´cnica pro-
                                                                        e
puesta a trav´s de una serie de experimentos realizados con circuitos l´gicos
                e                                                            o
combinatorios de una sola salida. Se presentan las tablas de verdad de los cir-
cuitos de los experimentos, tablas comparativas de las tres representaciones
(binaria, entera A y entera B) donde se eval´ a tambi´n el desempe˜ o contra
                                                  u        e              n
otras t´cnicas evolutivas adem´s de los diagramas l´gicos y las expresiones
       e                           a                      o
booleanas en notaci´n prefija de los mejores circuitos encontrados.
                       o
    En el cap´ ıtulo 6 se discuten los resultados obtenidos por la t´cnica para
                                                                       e
experimentos con circuitos de m´ ltiples salidas. La estructura de este cap´
                                    u                                          ıtulo
es similar a la del cap´   ıtulo 5 ya que se presentan tambi´n las tablas de
                                                                  e
verdad de los circuitos que se est´n probando, las tablas comparativas y los
                                      a
diagramas l´gicos con la expresi´n booleana correspondiente de los mejores
             o                       o
circuitos encontrados.
    Por ultimo, en el cap´
        ´                  ıtulo 7 se dan las conclusiones acerca de los resultados
obtenidos as´ como algunas ideas para realizar algunos trabajos posteriores
              ı
y que pudieran mejorar el desempe˜o del algoritmo presentado.
                                        n
4   Introducci´n
              o
Cap´
   ıtulo 2

Circuitos l´gicos combinatorios
           o

    Un sistema digital es una combinaci´n de dispositivos dise˜ada para ma-
                                       o                      n
nipular variables que solamente tomen valores discretos. Un circuito l´gico
                                                                       o
combinatorio es un sistema digital que opera en modo binario, es decir que
los valores que pueden existir s´lo son el 1 y el 0, adem´s de que en cual-
                                 o                        a
quier instante de tiempo la salida depende unicamente de los niveles l´gicos
                                            ´                         o
presentes a la entrada.

    En 1854, George Boole publica su libro titulado “Las leyes del pensa-
miento” en el que aproxim´ la l´gica en una nueva direcci´n reduci´ndola
                             o    o                         o         e
a una algebra simple llamada desde entonces algebra booleana. Sin embargo
       ´
fue hasta 1937 que Claude Shannon de los Laboratorios Bell llev´ a cabo el
                                                                 o
enlace entre la l´gica y la electr´nica [37, 11]. Shannon demostr´ c´mo las
                 o                o                              o o
operaciones booleanas elementales se pod´ representar mediante circuitos
                                           ıan
conmutados el´ctricos, y c´mo la combinaci´n de circuitos pod´ representar
               e           o                 o                ıa
operaciones aritm´ticas y l´gicas complejas. Posteriormente formaliz´ toda
                   e         o                                        o
la estructura matem´tica para que los ingenieros pudieran aplicar la teor´a a
                     a                                                   ı
la pr´ctica.
     a

    B´sicamente, el algebra booleana consiste en un m´todo para resolver
     a                ´                                  e
problemas de l´gica y que recurre s´lo a los valores binarios 0 y 1 y a tres
                 o                   o
operaciones b´sicas: AND, OR y NOT. Como ya se mencion´, los circuitos
               a                                              o
l´gicos combinatorios tienen la caracter´
 o                                      ıstica de ser binarios por lo que es
posible utilizar esta algebra como herramienta para su an´lisis y dise˜ o.
                      ´                                    a          n

                                     5
6                                            1. Circuitos l´gicos combinatorios
                                                           o

2.1.        Algebra booleana
    El ´lgebra booleana trata principalmente con constantes, variables y ope-
       a
raciones l´gicas y su principal diferencia con respecto al ´lgebra tradicional
          o                                                a
es que en este caso se utilizan variables y constantes binarias, es decir que
s´lo pueden tomar el valor de 0 o de 1. Estos dos valores con frecuencia re-
 o
presentan el nivel de voltaje presente en un determinado lugar del circuito, es
decir que no representan n´ meros sino el estado de una variable de voltaje,
                             u
mejor conocido como nivel l´gico. Debido a que s´lo existen dos valores, el
                               o                    o
a
´lgebra booleana es m´s f´cil de manejar que el ´lgebra ordinaria ya que no
                       a a                        a
se tiene que lidiar con n´ meros decimales, n´ meros negativos, logaritmos,
                           u                    u
n´ meros imaginarios, etc., de hecho s´lo cuenta con tres operaciones l´gicas
  u                                    o                                o
b´sicas:
  a

    1. Adici´n l´gica: Tambi´n conocida como operaci´n OR. El s´
            o o                e                      o            ımbolo m´s
                                                                            a
       com´ n para esta operaci´n es el (+). La salida ser´ 1 si alguna de las
           u                     o                        a
       variables es igual a 1.

    2. Multiplicaci´n l´gica: Se le conoce tambi´n como operaci´n AND. El
                   o o                             e                o
       s´
        ımbolo de esta operaci´n es el (·). La salida ser´ 1 s´lo cuando ambas
                               o                         a    o
       variables sean iguales a 1.

    3. Complemento: Conocida como operaci´n de inversi´n o NOT. Su s´
                                               o            o              ımbo-
       lo es el ( ). Como su nombre lo indica, la salida siempre ser´ la inversa
                                                                    a
       del valor de la variable de entrada, es decir que si a la entrada existe
       un valor 1, a la salida se tendr´ el valor 0.
                                       a

    En el ´lgebra booleana existen funciones booleanas (ver figura 2.1) que
          a
expresan la relaci´n l´gica entre las variables binarias y constan de una expre-
                  o o
si´n algebraica formada por variables binarias, constantes 0 o 1 y los s´mbolos
  o                                                                     ı
de operaci´n l´gica. Estas expresiones son muy utiles para la manipulaci´n
           o o                                      ´                        o
de variables l´gicas y para expresar el funcionamiento de un circuito digital
              o
para determinados valores de entrada [40].


                                 f = AB + BC


                Figura 2.1: Ejemplo de una expresi´n booleana.
                                                  o
Algebra booleana                                                             7

    Expl´
        ıcitamente, el ´lgebra booleana b(A) de un conjunto A es el conjunto
                       a
de subconjuntos de A que pueden ser obtenidos mediante la aplicaci´n de un
                                                                    o
n´ mero finito de operaciones del conjunto union (OR), intersecci´n (AND)
  u                                                               o
y complemento (NOT) y en donde cada uno de los elementos de b(A) es una
funci´n booleana. El algebra booleana tambi´n forma una lattice ya que un
     o                ´                      e
a
´lgebra L es llamada una lattice cuando L es un conjunto no vac´ y adem´s
                                                                ıo        a
existen dos operaciones binarias sobre L, ∨ y ∧ tales que son idempotentes,
conmutativas y asociativas adem´s de satisfacer las leyes de absorci´n (las
                                  a                                   o
cuales se explicar´n en la secci´n 2.1.3).
                  a             o


2.1.1.    Tablas de verdad
    Una tabla de verdad o de combinaciones (ver tabla 2.1) es un m´todoe
gr´fico para representar todos los posibles valores de las variables y mos-
  a
trar los resultados de la operaci´n deseada. Es decir, que en estas tablas se
                                 o
muestra la forma en que la salida del circuito se comportar´ con las diversas
                                                            a
combinaciones de los niveles l´gicos a la entrada [40, 11].
                              o


                                  A    B S
                                  0    0 1
                                  0    1 0
                                  1    0 0
                                  1    1 0


         Tabla 2.1: Tabla de verdad para dos variables de entrada.

    El tama˜ o de la tabla depende directamente del n´ mero de variables de
            n                                          u
entrada al circuito. Si por ejemplo se tienen dos valores de entrada, existen
entonces cuatro posibles combinaciones como puede verse en la tabla 2.1. La
relaci´n existente entre variables y combinaciones puede expresarse mediante
      o
la ecuaci´n 2.1.
         o

                                         ´
           N umero de combinaciones = 2N umero de variables booleanas
             ´                                                            (2.1)

   Debido a sus caracter´  ısticas, las tablas de verdad son utiles para repre-
                                                             ´
sentar el dise˜ o de un circuito l´gico.
              n                   o
8                                         1. Circuitos l´gicos combinatorios
                                                        o

2.1.2.    Compuertas l´gicas
                      o
    Las compuertas l´gicas son circuitos electr´nicos que implementan en
                      o                        o
hardware operaciones l´gicas del algebra booleana y que operan con una
                        o         ´
o m´s se˜ ales de entrada para generar una se˜ al de salida [27]. Cualquier
    a     n                                   n
circuito l´gico, por muy complejo que sea, puede ser realizado con las tres
          o
compuertas b´sicas AND, OR y NOT. Sin embargo, existen algunas confi-
               a
guraciones que se presentan muy frecuentemente y a las que, por ende, se les
ha asignado un nombre y s´ ımbolo propio.

Compuerta AND

    La compuerta AND implementa la multiplicaci´n l´gica, la cual puede
                                                  o o
ser representada mediante diferentes s´
                                      ımbolos y terminolog´ como puede
                                                          ıas
verse en la tabla 2.2.

                           Nombre           S´
                                             ımbolo
                             AND
                    Multiplicaci´n booleana
                                o              ·
                         Intersecci´n
                                   o           ∩
                          Conjunci´n
                                   o           ∧


    Tabla 2.2: Distintos s´
                          ımbolos y terminolog´ para la operaci´n AND.
                                              ıa               o


                             A B     S = AB
                             0 0        0
                             0 1        0
                             1 0        0
                             1 1        1


            Tabla 2.3: Tabla de verdad de la compuerta AND.

   En la tabla 2.3 se muestra la tabla de verdad de la operaci´n AND de
                                                               o
dos variables de entrada y como puede verse, la operaci´n AND proporciona
                                                       o
un valor de 1 cuando la variable A y la variable B toman un valor de 1 y es
0 en cualquier otro caso.
Algebra booleana                                                             9

   Se puede decir entonces que la operaci´n AND es exactamente igual que
                                            o
hacer una multiplicaci´n ordinaria, en donde el resultado ser´ 0 siempre que
                       o                                       a
alguna de las variables que se multiplica tome este valor. Es decir que la com-
puerta AND tendr´ un valor de 1 a la salida s´lo cuando todas las variables
                   a                            o
de entrada sean igual a 1. El s´ımbolo para representar una compuerta AND
en el diagrama de un circuito l´gico y la expresion booleana a su salida se
                                 o
muestra en la figura 2.2.

                          A
                                            S = AB
                          B

               Figura 2.2: Compuerta AND de dos entradas.

Compuerta OR

    La compuerta OR implementa la operaci´n de adici´n l´gica y al igual
                                           o          o o
que la compuerta AND existen diversos t´rminos y s´
                                        e         ımbolos para representar
a esta funci´n, como muestra la tabla 2.4.
            o


                           Nombre        S´
                                          ımbolo
                               OR           +
                        Adici´n booleana
                             o              +
                             Uni´n
                                 o          ∪
                          Disyunci´n
                                   o        ∨


    Tabla 2.4: Distintos s´
                          ımbolos y terminolog´ para la operaci´n OR.
                                              ıa               o


                            A   B S=A+B
                            0   0   0
                            0   1   1
                            1   0   1
                            1   1   1


              Tabla 2.5: Tabla de verdad de la compuerta OR.
10                                          1. Circuitos l´gicos combinatorios
                                                          o

    La tabla de verdad de la operaci´n OR se muestra en la tabla 2.5. Como
                                     o
puede observarse, para esta funci´n la salida ser´ 1 siempre que alguna de
                                   o              a
las variables de entrada tome el valor de 1. En cualquier otro caso el valor
de salida ser´ 0. Dicho de otra forma, la salida de la compuerta OR ser´ 0
              a                                                          a
s´lo cuando todas las variables de entrada sean 0. La figura 2.3 muestra la
 o
representaci´n de la compuerta OR en un diagrama de un circuito l´gico y
             o                                                      o
la expresi´n booleana a su salida.
          o

                           A
                                           S = A+B
                           B

                Figura 2.3: Compuerta OR de dos entradas.

Compuerta NOT

   La compuerta NOT es mejor conocida como inversor e implementa la
operaci´n de complemento como muestra la tabla 2.6.
       o

                                 A S = A’
                                 0    1
                                 1    0


             Tabla 2.6: Tabla de verdad de la compuerta NOT.

    La tabla de verdad de la compuerta NOT muestra que en esta operaci´n      o
s´lo se tiene una variable de entrada, la cual tendr´ como salida el nivel l´gi-
 o                                                  a                       o
co contrario al nivel l´gico de entrada, es decir que si a la entrada se tiene
                        o
el valor de 1, a la salida se tendr´ un 0 y viceversa. La figura 2.4 muestra la
                                   a
representaci´n de la compuerta NOT en un diagrama de un circuito l´gico y
             o                                                          o
la expresi´n booleana a su salida.
           o



                          A                   S = A’


                        Figura 2.4: Compuerta NOT.
Algebra booleana                                                            11

Compuerta XOR

    La compuerta XOR tambi´n es conocida como compuerta OR-exclusiva
                             e
y no implementa una operaci´n b´sica del algebra booleana. A pesar de eso
                            o a            ´
se presenta frecuentemente en los sistemas digitales y por ello es util en el
                                                                   ´
dise˜ o e implementaci´n de circuitos l´gicos. La tabla 2.7 muestra la tabla
    n                 o                o
de verdad de la compuerta XOR.

                             A B      S = A⊕B
                             0 0          0
                             0 1          1
                             1 0          1
                             1 1          0


             Tabla 2.7: Tabla de verdad de la compuerta XOR.

    Se puede ver en la tabla de verdad de la compuerta XOR que esta ope-
raci´n detecta cuando las variables de entrada tiene valores diferentes, ya
    o
que cuando los niveles l´gicos de las entradas son opuestos se tiene un 1 a la
                        o
salida, mientras que cuando los dos niveles l´gicos son iguales, se tiene un 0.
                                             o
En la ecuaci´n 2.2 se muestra la funci´n booleana de la compuerta XOR en
            o                          o
t´rminos de las operaciones b´sicas del algebra booleana.
 e                            a          ´

                          S = A B + AB = A ⊕ B                            (2.2)

    Debido a que la configuraci´n de compuertas de la ecuaci´n 2.2 se pre-
                              o                              o
senta muy a menudo se le ha asignado una representaci´n espec´
                                                     o         ıfica para los
diagramas de circuitos adem´s de un s´
                           a         ımbolo particular, los cuales se mues-
tra en la figura 2.5.


                         A
                                          S=A      B
                         B

               Figura 2.5: Compuerta XOR de dos entradas.
12                                        1. Circuitos l´gicos combinatorios
                                                        o

2.1.3.     Postulados, leyes y teoremas del ´lgebra boolea-
                                            a
           na
    Los postulados, leyes y teoremas booleanos sirven para poder simplificar
las expresiones booleanas que representan un circuito l´gico y en consecuen-
                                                       o
cia requerir un menor n´ mero de compuertas para su implementaci´n.
                        u                                           o

Postulados

    Los postulados describen el comportamiento de las operaciones b´sicas
                                                                   a
del ´lgebra booleana [11].
    a

 1.   a) 0 · 0 = 0
        b) 1 + 1 = 1

 2.   a) 1 · 1 = 1
        b) 0 + 0 = 0

 3.   a) 1 · 0 = 0 · 1 = 0
        b) 0 + 1 = 1 + 0 = 1

 4.   a) 0 = 1
        b) 1 = 0

Leyes

    Las tres leyes b´sicas del algebra booleana [11] se presentan a continua-
                    a
ci´n:
  o

 1. Ley Conmutativa : Esta ley establece que no importa el orden en que se
    eval´ en las operaciones AND y OR de dos variables ya que el resultado
        u
    es el mismo.

      a) A · B = B · A
        b) A + B = B + A

 2. Ley Asociativa : Establece que las variables de una operaci´n AND o
                                                               o
    de una operaci´n OR pueden ser agrupadas en cualquier forma.
                  o
Algebra booleana                                                           13

      a) A · (B · C) = (A · B) · C
      b) A + (B + C) = (A + B) + C

 3. Ley Distributiva : Se establece que una expresi´n puede desarrollarse
                                                   o
    multiplicando t´rmino a t´rmino como en el ´lgebra ordinaria as´ como
                    e          e                a                  ı
    llevar a cabo la factorizaci´n de t´rminos.
                                o      e

      a) A · B + A · C = A · (B + C)
      b) (A + B) · (A + C) = A + B · C

Teoremas

   Existen diversos teoremas que resultan de la aplicaci´n de los postulados
                                                         o
y de las leyes mencionadas [11], sin embargo s´lo se mostrar´n los m´s utiles.
                                              o             a       a ´

 1. Teorema de identidad

      a) A + 0 = A
      b) A · 1 = A

 2. Teorema del elemento nulo

      a) A + 1 = 1
      b) A · 0 = 0

 3. Teorema del complemento

      a) A + A = 1
      b) A · A = 0

 4. Teorema de idempotencia

      a) A + A = A
      b) A · A = A

 5. Teorema de absorci´n
                      o

      a) A · (A + B) = A
      b) A + A · B = A
14                                         1. Circuitos l´gicos combinatorios
                                                         o

 6. Teorema de involuci´n
                       o

       a) A = A

 7. Teorema de DeMorgan

       a) (A + B + C + · · ·) = A · B · C · · · ·
       b) (A · B · C · · · ·) = A + B + C + · · ·


2.2.      Formas Est´ndar
                    a
    Para poder aplicar las t´cnicas de reducci´n comunes es necesario que las
                            e                 o
expresiones booleanas se encuentren en su forma est´ndar ya que facilitan los
                                                    a
procedimiento de simplificaci´n [11]. Existen diversas maneras de represen-
                              o
tar una funci´n booleana algebraicamente pero pocas de ellas se consideran
             o
est´ndar. Las formas est´ndar tienen t´rminos de suma y t´rminos de pro-
   a                     a               e                  e
ducto que no implican operaciones aritm´ticas del ´lgebra booleana sino las
                                           e        a
operaciones l´gicas AND y OR respectivamente [27]. Un ejemplo de t´rmino
             o                                                        e
de suma puede ser A + B + C que consiste en una operaci´n OR entre lite-
                                                           o
rales. An´logamente un ejemplo de t´rmino producto es A BC que consiste
         a                            e
en una operaci´n AND entre literales.
               o


2.2.1.     Minit´rminos y maxit´rminos
                e              e
    Un t´rmino producto en el que aparecen todas las variables s´lo una
         e                                                          o
vez de forma complementada o no se llama minit´rmino. Una variable se
                                                    e
encuentra complementada cuando su valor es 0. Cada minit´rmino tiene la
                                                             e
caracter´
        ıstica de que tiene un valor de 1 para la combinaci´n de variables y
                                                           o
un valor de 0 para todas las dem´s. El s´
                                   a      ımbolo utilizado para designar un
minit´rmino es mj donde j denota el equivalente decimal de la combinaci´n
      e                                                                   o
binaria. En la tabla 2.8 se muestran los minit´rminos para tres variables y
                                               e
su s´
    ımbolo.
    Por su parte, un maxit´rmino es un t´rmino de suma que contiene a
                            e               e
todas las variables de forma complementada o no, adem´s de tener un valor
                                                        a
de 0 para la combinaci´n dada y un valor de 1 para todas las dem´s. Una
                        o                                           a
variable se encuentra complementada cuando su valor es 1. Los maxit´rminos
                                                                    e
se denotan con el s´ımbolo Mj donde al igual que los minit´rminos la j es el
                                                           e
Formas Est´ndar
          a                                                                15

                   A B      C Minit´rmino
                                   e             S´
                                                  ımbolo
                   0 0      0   ABC                 m0
                   0 0      1    ABC                m1
                   0 1      0    A BC               m2
                   0 1      1    A BC               m3
                   1 0      0    AB C               m4
                   1 0      1    AB C               m5
                   1 1      0    ABC                m6
                   1 1      1    ABC                m7


                  Tabla 2.8: Minit´rminos de tres variables.
                                  e

equivalente decimal de la combinaci´n binaria. En la tabla 2.9 se muestran
                                    o
los maxit´rminos para tres variables y su s´
         e                                 ımbolo correspondiente.

                   A B     C Maxit´rmino
                                  e              S´
                                                  ımbolo
                   0 0     0  A+B+C                 M0
                   0 0     1  A+B+C                 M1
                   0 1     0  A+B +C                M2
                   0 1     1  A+B +C                M3
                   1 0     0  A +B+C                M4
                   1 0     1  A +B+C                M5
                   1 1     0  A +B +C               M6
                   1 1     1 A +B +C                M7


                 Tabla 2.9: Maxit´rminos de tres variables.
                                 e

    En las tablas 2.8 y 2.9 puede apreciarse que los minit´rminos y los ma-
                                                           e
xit´rminos tienen la caracter´
   e                         ıstica de que representan a una sola de las com-
binaciones de entrada por lo que se puede afirmar que existen tantos mi-
nit´rminos o maxit´rminos como combinaciones de los valores de las varia-
   e                e
bles de entrada, adem´s de que un minit´rmino y el maxit´rmino con el
                        a                   e                  e
mismo sub´ ındice son complementarios, es decir que mj = Mj lo cual puede
ser f´cilmente verificado con las leyes de DeMorgan.
     a
    Como se mencion´ anteriormente, una tabla de verdad representa el com-
                      o
portamiento del circuito debido a un determinado nivel l´gico de las variables
                                                        o
de entrada. A partir de una tabla de verdad se puede obtener una expresi´n o
16                                         1. Circuitos l´gicos combinatorios
                                                         o

algebraica de la funci´n booleana que est´ representando. Para poder obtener
                       o                 a
dicha expresi´n se tiene que hacer la suma l´gica de los t´rminos de producto
             o                              o             e
para los que la funci´n tome el valor de 1, que es lo mismo que llevar a cabo
                      o
la suma de los minit´rminos que producen un valor de 1 es decir una suma
                       e
de minit´rminos [27].
         e
    De manera an´loga se puede obtener un producto de maxit´rminos como
                   a                                           e
expresi´n algebraica de la funci´n booleana, que resulta de tomar el pro-
       o                         o
ducto de los maxit´rminos que a su salida tengan el valor de 0. La suma
                     e
de minit´rminos y el producto de maxit´rminos describen la misma funci´n
         e                               e                                 o
booleana, como puede verse en la tabla 2.10.

                               A B C        S
                               0 0 0        0
                               0 0 1        1
                               0 1 0        0
                               0 1 1        1
                               1 0 0        0
                               1 0 1        1
                               1 1 0        0
                               1 1 1        1
                                                         7
              S = A B C + A BC + AB C + ABC =            j=0   mj

                                                                    7
     S = (A + B + C)(A + B + C)(A + B + C)(A + B + C) =             j=0 Mj



Tabla 2.10: Equivalencia entre una suma de minit´rminos y un producto de
                                                e
maxit´rminos.
     e

    En el dise˜ o de circuitos, el producto de maxit´rminos no es de uso fre-
              n                                     e
cuente ya que siempre puede ser sustituido por una suma de minit´rminos.
                                                                     e
A continuaci´n se resumir´n algunas de las caracter´
             o             a                        ısticas m´s sobresalientes
                                                             a
de los minit´rminos.
            e

 1. Existen una cantidad de minit´rminos igual al n´mero de combinacio-
                                  e                 u
    nes de las variables de entrada, es decir que existen 2n minit´rminos
                                                                  e
    donde n es el n´ mero de variables.
                   u

 2. Una expresi´n booleana puede derivarse directamente de la tabla de
               o
Formas Est´ndar
          a                                                                17

     verdad como la suma l´gica de minit´rminos que tengan como salida
                          o             e
     un valor de 1.

 3. El complemento f de una funci´n f es igual a la suma de los minit´rmi-
                                 o                                   e
    nos no incluidos en f .

 4. Si una funci´n contiene a los 2n minit´rminos, su valor siempre ser´ igual
                o                         e                            a
    a 1.


2.2.2.    Suma de productos
   La suma de minit´rminos es una expresi´n algebraica que contiene la
                       e                        o
cantidad m´xima de literales en cada t´rmino lo que a menudo conlleva
            a                              e
a que tenga m´s t´rminos producto de los necesarios. En la simplificaci´n
                a e                                                         o
de circuitos l´gicos se tiene como objetivo reducir la cantidad de t´rminos
              o                                                        e
producto y de literales en los t´rminos, obteniendo as´ una expresi´n reducida
                                e                     ı            o
equivalente en forma de suma de productos (SOP - sum of products) [11].
En la figura 2.6 se muestra un ejemplo de SOP.

                           S = AC + B C + A B


              Figura 2.6: Ejemplo de una suma de productos.

    El diagrama de circuito de una suma de productos consiste en un conjunto
de compuertas AND seguido de una sola compuerta OR (figura 2.7), donde
cada t´rmino producto necesita una compuerta AND y la suma l´gica se
       e                                                             o
forma con una compuerta OR que tiene como entrada las salidas de todas
las compuertas AND. Este esquema de compuertas AND seguidas de una
compuerta OR se conoce como implementaci´n en dos niveles.
                                             o


2.2.3.    Producto de sumas
    El producto de sumas (POS - product of sums) es una forma est´ndara
de expresi´n algebraica de funciones booleanas y se obtiene formando un
          o
producto l´gico de t´rminos de suma [11]. Un ejemplo de un POS se muestra
          o          e
en la figura 2.8. La estructura de compuertas de un POS consiste de un grupo
de compuertas OR seguidas de una compuerta AND que da como resultado
una implementaci´n en dos niveles (figura 2.9).
                  o
18                                        1. Circuitos l´gicos combinatorios
                                                        o

                          A
                          C’

                          B’
                          C

                           A’
                           B


     Figura 2.7: Diagrama de circuito de una suma de productos (SOP).

                      S = (A + C )(B + C)(A + B)


               Figura 2.8: Ejemplo de un producto de sumas.

2.3.      Procedimiento de dise˜o de circuitos l´gi-
                               n                o
          cos
    El proceso de dise˜ o de un circuito l´gico comienza con la especificaci´n
                      n                   o                                o
del problema a resolver y termina con un diagrama de circuito o una expresi´n
                                                                           o
booleana que lo represente [44]. De forma general se pueden enumerar los
siguientes pasos en el proceso de dise˜ o de un circuito l´gico:
                                       n                  o

 1. Determinar, a partir del enunciado del problema, la cantidad de entra-
    das y de salidas necesarias.

 2. Una vez determinadas las entradas y salidas se construye la tabla de
    verdad que ejemplifique el comportamiento deseado del circuito para
    todas las combinaciones posibles y establecer as´ la relaci´n entre en-
                                                    ı          o
    tradas y salidas.

 3. A partir de la tabla de verdad se construye la expresi´n booleana que
                                                           o
    ser´ simplificada posteriormente para tener as´ una funci´n de salida en
       a                                           ı         o
    t´rminos de las entradas. La simplificaci´n es un paso muy importante
     e                                       o
    en el dise˜ o de circuitos ya que permite generar expresiones booleanas
              n
    equivalentes y m´s sencillas.
                      a

 4. Con las expresiones booleanas se traza el diagrama de circuitos l´gicos
                                                                     o
    que ayudar´ para su implementaci´n en hardware.
               a                      o
Planteamiento formal del problema de dise˜o de circuitos
                                         n                                    19

                             A
                             C’

                             B’
                             C

                             A’
                             B


    Figura 2.9: Diagrama de circuito de un producto de sumas (POS).


 5. Por ultimo, se lleva a cabo la verificaci´n del comportamiento del cir-
         ´                                  o
    cuito.

    Un dise˜ o pr´ctico debe considerar algunas restricciones como la canti-
            n     a
dad de compuertas, cantidad de entradas y de interconexiones, as´ como las
                                                                    ı
limitaciones f´
              ısicas de los circuitos integrados. En la mayor´ de los casos, la
                                                             ıa
simplificaci´n de las expresiones booleanas busca satisfacer un solo objetivo
            o
y luego se intenta cumplir con nuevos criterios de desempe˜o.n


2.4.      Planteamiento formal del problema de
          dise˜ o de circuitos
              n
    Formalmente podemos decir que el espacio booleano unidimensional B
esta definido por el conjunto {0, 1}. Una variable booleana x puede tomar
cualquier valor de este conjunto. Todos los vectores booleanos con n compo-
nentes forman el espacio booleano n-dimensional Bn .


            Bn = {X/X = (x1 , x2 , . . . , xn ), xi ∈ B, ∀i = 1, . . . , n}

Sea X = (x1 , x2 , . . . , xn ) un conjunto de n variables booleanas. El mapeo
unico de Bn a B es una funci´n booleana f (X).
´                                 o

Sea C = {OR, AND, NOT, XOR} un conjunto de compuertas l´gicas boo-
                                                               o
leanas con dos variables de entrada y sea EB(C) el conjunto de expresiones
booleanas sobre C, por ejemplo:
20                                          1. Circuitos l´gicos combinatorios
                                                          o



                          eb1 : y AND z
                          eb2 : w XOR (y OR z)

donde w, y y z son variables booleanas. Sea x ∈ EB(C) y definimos |x| como
el n´ mero de compuertas de x, por ejemplo:
    u


       x1 : (NOT y) AND (w OR z); |x1 | = 3 (NOT, AND, OR)
       x2 : y XOR (NOT w);        |x2 | = 2 (XOR, NOT )


Sea f (X) una funci´n booleana y F ⊂ EB(C) tal que ∀x ∈ F , x = f (X).
                   o
Nuestro problema es encontrar x∗ ∈ F tal que |x∗ | = min |x|, ∀x ∈ F .


2.5.      Simplificaci´n de circuitos l´gicos
                     o                o
    El objetivo principal de la simplificaci´n de circuitos l´gicos es normal-
                                             o                o
mente la minimizaci´n de la cantidad de hardware necesario para construir
                      o
un sistema en particular, ya que a menor hardware se tendr´ un menor costo
                                                              a
final.
    Por otro lado, la complejidad de un circuito l´gico est´ relacionada direc-
                                                   o        a
tamente con la expresi´n booleana a partir de la cual se implement´. Esta
                          o                                             o
expresi´n puede ser reducida para que contenga menos t´rminos y que a su
        o                                                   e
vez cada uno de ´stos contenga menos literales. La nueva expresi´n puede
                    e                                                 o
entonces ser utilizada para implementar un nuevo circuito equivalente al ori-
ginal, es decir que genere la misma salida y por tanto la misma tabla de
verdad pero mediante una funci´n booleana distinta con un menor n´mero
                                   o                                     u
de compuertas y conexiones.
    La forma m´s simple de t´rminos de suma de productos es una funci´n
                 a              e                                            o
llamada suma m´nima que representar´ la suma con menor n´mero de t´rmi-
                  ı                     a                       u         e
nos. Si existe m´s de una suma de productos que contenga el m´
                 a                                                ınimo n´ mero
                                                                         u
de t´rminos, la suma m´
     e                    ınima ser´ aquella que contenga el menor n´mero de
                                   a                                  u
literales. Por ejemplo, las funciones de la figura 2.10 son equivalentes, pero la
tercera de ellas es la suma m´ ınima ya que contiene cuatro literales mientras
que las otras dos tienen cinco literales cada una. Esto da como consecuen-
cia una implementaci´n en dos niveles con un diagrama de circuito con la
                        o
Simplificaci´n de circuitos l´gicos
           o                o                                             21

menor cantidad de compuertas y con la menor cantidad de entradas a las
compuertas.

                             S = BC + ABC
                             S = A BC + AB
                             S = BC + AB


         Figura 2.10: Ejemplo de funciones booleanas equivalentes.



2.5.1.    Simplificaci´n algebraica
                     o
    Las expresiones booleanas pueden simplificarse mediante manipulaciones
algebraicas. Sin embargo, como se ver´ a continuaci´n, el procedimiento re-
                                      a             o
sulta complicado pues al carecer de reglas espec´
                                                ıficas para predecir los pasos
sucesivos se requiere de una gran experiencia por parte del dise˜ador para
                                                                 n
poder aplicar los postulados y teoremas del algebra booleana de manera que
                                             ´
las expresiones puedan ser minimizadas.


         A



         B                                                        S

         C




                    S = A’BC + A’BC’ + AC

Figura 2.11: Ejemplo de un diagrama de circuito y su expresi´n booleana.
                                                            o

    Otra desventaja de la simplificaci´n algebraica es que despu´s de llevar a
                                     o                         e
cabo toda la manipulaci´n algebraica no se puede saber cu´ndo se ha llegado
                        o                                 a
a la expresi´n m´s sencilla. En la figura 2.11 se muestra el diagrama de
             o    a
circuito y la funci´n booleana sin simplificar obtenida como resultado del
                   o
22                                        1. Circuitos l´gicos combinatorios
                                                        o

proceso de dise˜ o para resolver alg´ n problema. Si a la expresi´n booleana
               n                      u                           o
de la figura 2.11 se le aplican los postulados y teoremas del algebra booleana
                                                             ´
podr´ obtenerse una expresi´n simplificada. En la figura 2.12 se muestra
     ıa                        o
el resultado obtenido de la manipulaci´n algebraica llevada a cabo para la
                                         o
reducci´n as´ como el diagrama de circuito donde puede apreciarse que la
        o    ı
cantidad de compuertas necesarias para la implementaci´n es menor que las
                                                          o
necesitadas por el circuito original.


2.5.2.    Mapas de Karnaugh
    El mapa de Karnaugh es un m´todo gr´fico [18, 28] utilizado para simpli-
                                 e       a
ficar una ecuaci´n l´gica o para convertir una tabla de verdad a su circuito
                o o
l´gico correspondiente mediante un proceso simple y ordenado. Como una
 o
tabla de verdad, el mapa de Karnaugh especifica el valor de la funci´n de
                                                                      o
salida para cada combinaci´n de valores de las variables independientes de
                           o
entrada. El mapa ofrece tambi´n un diagrama visual de las distintas maneras
                             e
en que puede expresarse una funci´n booleana en forma est´ndar.
                                  o                        a


              A
              B
                                                             S

              C

                     S = A’BC + A’BC’ + AC
                      S = A’B(C+C’) + AC
                        S = A’B(1) + AC
                          S = A’B + AC

  Figura 2.12: Diagrama de circuito y su expresi´n booleana simplificada.
                                                o

    El resultado producido por el mapa siempre est´ en forma de suma de
                                                   a
productos o de producto de sumas. Es decir, que se permite la simplificaci´n
                                                                         o
de implementaciones en dos niveles pero el m´todo no puede ser aplicado
                                              e
directamente a implementaciones m´s sencillas de los casos generales de un
                                   a
mayor n´ mero de niveles.
         u
Simplificaci´n de circuitos l´gicos
           o                o                                             23

Mapas de dos, tres y cuatro variables

    En la figura 2.13 se muestra un mapa de una funci´n de dos variables que
                                                    o
es un cuadrado de cuatro celdas (una celda para cada minit´rmino).
                                                           e

                         A                   A
                     B       0     1     B       0     1
                     0       F0    F2    0       1     0

                     1       F1    F3    1       1     0

                             (a)                 (b)



Figura 2.13: Mapa de Karnaugh de dos variables. (a)Forma general. (b) Mapa
de S = A B + A B = (0, 1) = (2, 4)

    Para llenar el valor de cada celda se buscan sus coordenadas como valores
de entrada en la tabla de verdad y se coloca un 1 en aquellas celdas cuyo
valor en la salida sea 1 y 0 en las restantes [28]. Por ejemplo, en los mapas
de la figura 2.13 se puede observar que las celdas F0 y F1 contienen un 1
mientras que F2 y F4 contienen un 0, ya que la funci´n booleana de salida es
                                                      o
S = A B + A B es decir que las coordenadas 00 y 01 del mapa de Karnaugh
tendr´n el valor 1 mientras que las coordenadas 10 y 11 tendr´n el valor 0.
     a                                                          a
    Es importante recalcar que la designaci´n decimal de cada celda es igual
                                             o
al equivalente decimal del n´ mero binario formado por sus coordenadas. Los
                              u
mapas para las funciones de tres y cuatro variables son extensiones directas
del mapa de dos variables. El mapa de tres variables se muestra en la figura
2.14 con 23 = 8 celdas y el mapa de cuatro variables se muestra en la figura
2.15 con 24 = 16 celdas.
    Cada 1 en el mapa corresponde a un minit´rmino de la funci´n de salida y
                                               e                o
pueden leerse directamente de aqu´ tal como se hace en las tablas de verdad.
                                    ı,
Los minit´rminos en cuadros adyacentes en el mapa pueden ser combinados
          e
debido a que s´lo difieren en una sola variable.
               o
24                                           1. Circuitos l´gicos combinatorios
                                                           o


           AB                              AB
                    01 11       10                   01 11      10
         C 00                            C 00
         0    F0    F2     F6   F4       0    1       0     0    1

         1    F1    F3     F7   F5       1      1     1     0    0

                     (a)                              (b)



Figura 2.14: Mapa de Karnaugh de tres variables. (a)Forma general. (b) Mapa
de S = A B C + A B C + A BC + AB C = (0, 1, 3, 4) = (2, 5, 6, 7)

Implicantes primos

    Los cuadrados adyacentes de los mapas de Karnaugh pueden combinarse
debido al teorema del algebra booleana que establece que AB + AB = A.
                        ´
Es decir, que los t´rminos producto puden ser combinados o simpilifcados
                    e
cuando los n´ meros binarios difieren en un solo bit [28].
             u
    La expresion ABCD + ABCD = ABC tiene dos productos de cuatro
variables con los n´ meros binarios 1111 y 1110 los cuales difieren solamente
                    u
en el bit de menor orden por lo que pueden ser combinados. Sin embargo, los
productos ABCD y A BCD no pueden ser combinados porque sus n´ meros    u
binarios correspondientes son 1111 y 0110 que difieren en las posiciones de
mayor y menor orden. Dos productos s´lo pueden ser combinados si sus pun-
                                       o
tos correspondientes en un cubo de dimensi´n n de un mapa se encuentran a
                                            o
una distancia de 1. Los puntos con una distancia de 1 en un cubo de n dimen-
siones son celdas adyacentes en el mapa y por tanto representan productos
que pueden ser combinados y que pueden ser r´pidamente determinados por
                                               a
inspecci´n.
         o
    En el proceso de inspecci´n debe recordarse que las celdas a los extremos
                             o
del mapa son adyacentes con las celdas que se encuentran exactamente al
otro extremo en l´ ınea recta. La figura 2.16 ilustra estas adyacencias como
por ejemplo las celdas F0 y F2 con n´ meros binarios 0000, 0010 y F3 y F11
                                      u
que tienen los n´ meros binarios 0011 y 1011.
                u
    En un mapa de cuatro variables, cada celda es adyacente a otras cuatro
celdas correspondientes a las posiciones de los cuatro bits en los cuales el
n´ mero binario puede diferir. Solamente se deben de tomar en cuenta para
  u
Simplificaci´n de circuitos l´gicos
           o                o                                               25


          AB                                AB
             00      01    11    10            00     01    11   10
        CD                                CD
        00 F0        F4    F12   F8       00    1     1     0     0

         01    F1    F5    F13   F9       01     1    0     0     0

         11    F3    F7    F15   F11      11     0    0     1     1

         10    F2    F6    F14   F10      10     1    0     0     1

                     (a)                              (b)



Figura 2.15: Mapa de Karnaugh de cuatro variables. (a)Forma general. (b)
Mapa de S = A B C +A B C +A BC +AB C = (0, 1, 3, 4) = (2, 5, 6, 7)

la simplificaci´n aquellas celdas que tengan el valor de 1 y el resto debe de
               o
ser ignorado [28].
    La regla para obtener la expresi´n booleana simplificada a partir del mapa
                                    o
es escribir un producto t´rmino por cada par de celdas adyacentes con valor
                          e
1 y un producto t´rmino por cada celda que tenga valor de 1 y que no sea
                   e
adyacente a ninguna otra celda. La figura 2.17 muestra el mapa de Karnaugh
y la expresi´n booleana resultante para esta regla.
             o
    Las siguientes reglas en la obtenci´n de la expresi´n booleana se aplican
                                       o               o
en los casos en que pueden ser agrupadas m´s de un par de celdas. Primero se
                                            a
considerar´ el caso en que se pueden combinar cuatro celdas por la aplicaci´n
           a                                                               o
sucesiva del teorema AB + AB = A. En la simplificaci´n    o

           S = ABCD + ABCD + ABC D + ABC D =
    (ABCD + ABCD ) + (ABC D + ABC D ) = ABC + ABC = AB

puede observarse como cuatro productos de cuatro variables pueden ser sim-
plificados para obtener un solo t´rmino.
                                   e
    La caracter´ıstica principal de la combinaci´n de cuatro t´rminos es que
                                                  o              e
dos de las variables son iguales en los cuatro productos y los n´meros binarios
                                                                u
correspondientes son id´nticos a excepci´n de dos bits. El t´rmino resultante
                         e                 o                  e
de la combinaci´n de estos cuatro productos es igual a la adyacencia de dos
                 o
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf
Tesis Luna.Pdf

Más contenido relacionado

Similar a Tesis Luna.Pdf

Maite freitez 25927093 importancia de la integral definida
Maite freitez 25927093 importancia de la integral definidaMaite freitez 25927093 importancia de la integral definida
Maite freitez 25927093 importancia de la integral definidamaitefreitez1997
 
Integrales definidas en el área tecnológica
Integrales definidas en el área tecnológicaIntegrales definidas en el área tecnológica
Integrales definidas en el área tecnológicamanuel macea
 
Electrónica digital: diseño de un circuito sumador completo usando evolución ...
Electrónica digital: diseño de un circuito sumador completo usando evolución ...Electrónica digital: diseño de un circuito sumador completo usando evolución ...
Electrónica digital: diseño de un circuito sumador completo usando evolución ...SANTIAGO PABLO ALBERTO
 
Incremento en el desempeño de la multiplicación Matriz-Vector
Incremento en el desempeño de la multiplicación Matriz-VectorIncremento en el desempeño de la multiplicación Matriz-Vector
Incremento en el desempeño de la multiplicación Matriz-VectorSotero Ordones
 
Trabado de Grado "ESTUDIO DE PROTOCOLO DE RED DEFINIDO POR ASTM PARA EL CÁLCU...
Trabado de Grado "ESTUDIO DE PROTOCOLO DE RED DEFINIDO POR ASTM PARA EL CÁLCU...Trabado de Grado "ESTUDIO DE PROTOCOLO DE RED DEFINIDO POR ASTM PARA EL CÁLCU...
Trabado de Grado "ESTUDIO DE PROTOCOLO DE RED DEFINIDO POR ASTM PARA EL CÁLCU...Rebeca Orellana
 
Relé neuronal para protección de lineas de transmisión
Relé neuronal para protección de lineas de transmisiónRelé neuronal para protección de lineas de transmisión
Relé neuronal para protección de lineas de transmisiónOmar Jaramillo
 
Equivalentes dinamicos para estudios de estabilidad transitoria de sistemas e...
Equivalentes dinamicos para estudios de estabilidad transitoria de sistemas e...Equivalentes dinamicos para estudios de estabilidad transitoria de sistemas e...
Equivalentes dinamicos para estudios de estabilidad transitoria de sistemas e...lfandrade
 
Algoritmos_geneticos
Algoritmos_geneticosAlgoritmos_geneticos
Algoritmos_geneticosMao Herrera
 
Redes neuronales artificiales_aplicadas
Redes neuronales artificiales_aplicadasRedes neuronales artificiales_aplicadas
Redes neuronales artificiales_aplicadasIvan Gooseman
 
Electrónica digital: Aplicación de herramientas computacionales al diseño sec...
Electrónica digital: Aplicación de herramientas computacionales al diseño sec...Electrónica digital: Aplicación de herramientas computacionales al diseño sec...
Electrónica digital: Aplicación de herramientas computacionales al diseño sec...SANTIAGO PABLO ALBERTO
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...RaymondCode
 
Implementación de un módulo para el entrenamiento y evaluación de redes neuro...
Implementación de un módulo para el entrenamiento y evaluación de redes neuro...Implementación de un módulo para el entrenamiento y evaluación de redes neuro...
Implementación de un módulo para el entrenamiento y evaluación de redes neuro...Adrián Palacios Corella
 

Similar a Tesis Luna.Pdf (20)

Control
ControlControl
Control
 
Economía
EconomíaEconomía
Economía
 
Maite freitez 25927093 importancia de la integral definida
Maite freitez 25927093 importancia de la integral definidaMaite freitez 25927093 importancia de la integral definida
Maite freitez 25927093 importancia de la integral definida
 
Integrales definidas en el área tecnológica
Integrales definidas en el área tecnológicaIntegrales definidas en el área tecnológica
Integrales definidas en el área tecnológica
 
Electrónica digital: diseño de un circuito sumador completo usando evolución ...
Electrónica digital: diseño de un circuito sumador completo usando evolución ...Electrónica digital: diseño de un circuito sumador completo usando evolución ...
Electrónica digital: diseño de un circuito sumador completo usando evolución ...
 
Incremento en el desempeño de la multiplicación Matriz-Vector
Incremento en el desempeño de la multiplicación Matriz-VectorIncremento en el desempeño de la multiplicación Matriz-Vector
Incremento en el desempeño de la multiplicación Matriz-Vector
 
Trabado de Grado "ESTUDIO DE PROTOCOLO DE RED DEFINIDO POR ASTM PARA EL CÁLCU...
Trabado de Grado "ESTUDIO DE PROTOCOLO DE RED DEFINIDO POR ASTM PARA EL CÁLCU...Trabado de Grado "ESTUDIO DE PROTOCOLO DE RED DEFINIDO POR ASTM PARA EL CÁLCU...
Trabado de Grado "ESTUDIO DE PROTOCOLO DE RED DEFINIDO POR ASTM PARA EL CÁLCU...
 
Anteproyecto tesis mpn (24092013c)
Anteproyecto tesis mpn (24092013c)Anteproyecto tesis mpn (24092013c)
Anteproyecto tesis mpn (24092013c)
 
Relé neuronal para protección de lineas de transmisión
Relé neuronal para protección de lineas de transmisiónRelé neuronal para protección de lineas de transmisión
Relé neuronal para protección de lineas de transmisión
 
Integrales
IntegralesIntegrales
Integrales
 
Equivalentes dinamicos para estudios de estabilidad transitoria de sistemas e...
Equivalentes dinamicos para estudios de estabilidad transitoria de sistemas e...Equivalentes dinamicos para estudios de estabilidad transitoria de sistemas e...
Equivalentes dinamicos para estudios de estabilidad transitoria de sistemas e...
 
Algoritmos_geneticos
Algoritmos_geneticosAlgoritmos_geneticos
Algoritmos_geneticos
 
Redes neuronales artificiales_aplicadas
Redes neuronales artificiales_aplicadasRedes neuronales artificiales_aplicadas
Redes neuronales artificiales_aplicadas
 
Electrónica digital: Aplicación de herramientas computacionales al diseño sec...
Electrónica digital: Aplicación de herramientas computacionales al diseño sec...Electrónica digital: Aplicación de herramientas computacionales al diseño sec...
Electrónica digital: Aplicación de herramientas computacionales al diseño sec...
 
Cp223
Cp223Cp223
Cp223
 
Método de kani
Método de kaniMétodo de kani
Método de kani
 
Conclusiones
ConclusionesConclusiones
Conclusiones
 
Analisisdelmetodo
AnalisisdelmetodoAnalisisdelmetodo
Analisisdelmetodo
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
 
Implementación de un módulo para el entrenamiento y evaluación de redes neuro...
Implementación de un módulo para el entrenamiento y evaluación de redes neuro...Implementación de un módulo para el entrenamiento y evaluación de redes neuro...
Implementación de un módulo para el entrenamiento y evaluación de redes neuro...
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 

Último (12)

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 

Tesis Luna.Pdf

  • 1. ´ CENTRO DE INVESTIGACION Y DE ESTUDIOS AVANZADOS ´ DEL INSTITUTO POLITECNICO NACIONAL DEPARTAMENTO DE INGENIER´ ELECTRICA IA ´ ´ DE COMPUTACION SECCION ´ Dise˜ o de circuitos l´gicos combinatorios n o usando optimizaci´n mediante c´ mulos de o u part´ıculas Tesis que presenta Erika Hern´ndez Luna a Para obtener el grado de Maestro en Ciencias En la especialidad de Ingenier´ El´ctrica ıa e Opci´n Computaci´n o o Director de Tesis: Dr. Carlos A. Coello Coello M´xico, D.F., febrero 2004 e
  • 2.
  • 3. Resumen En esta tesis se propone un algoritmo para el dise˜ o y la posterior opti- n mizaci´n de circuitos l´gicos combinatorios a nivel de compuertas usando un o o algoritmo de optimizaci´n mediante c´ mulos de part´ o u ıculas y tres enfoques de representaci´n distintos: binaria, entera A y entera B . A pesar de que o existen muchos criterios para determinar cual es el dise˜o de costo m´ n ınimo de un circuito, en este trabajo se utiliza una m´trica basada en el n´ mero de e u compuertas necesarias para la implementaci´n en hardware del circuito. o El algoritmo de optimizaci´n mediante c´ mulos de part´ o u ıculas (Particle Swarm Optimization PSO) es una t´cnica de optimizaci´n num´rica de fun- e o e ciones no lineales que se encuentra influenciada fuertemente por algunas otras corrientes como vida artificial, psicolog´ social, ingenier´ y ciencias de la ıa ıa computaci´n, que ha conseguido su ´xito gracias a que tiene un bajo costo o e computacional, una f´cil implementaci´n y un excelente desempe˜ o. a o n Las t´cnicas evolutivas han sido sumamente utiles en el proceso de dise˜ o e ´ n de circuitos electr´nicos debido a su poder exploratorio, pues al contar con o una poblaci´n de soluciones potenciales permiten evaluar diversas regiones o del espacio de dise˜ o. n Tambi´n se ha visto a los largo de los a˜os que el dise˜ o de circuitos e n n mediante las metodolog´ tradicionales es un proceso complejo que requie- ıas re de tiempo y experiencia por parte del dise˜ador humano, por lo que se n pretende que al utilizar t´cnicas evolutivas puedan hallarse dise˜os que son e n radicalmente diferentes que los encontrados hasta el momento por estos di- se˜ adores. n El PSO ha utilizado una representaci´n binaria y frecuentemente una re- o presentaci´n real para codificar las soluciones de los problemas, sin embargo o en este trabajo adem´s de presentarse una versi´n binaria, se hicieron los a o ajustes necesarios para presentar tambi´n una propuesta basada en dos enfo- e ques distintos de una versi´n entera del algoritmo de optimizaci´n mediante o o c´ mulos de part´ u ıculas para el dise˜ o de circuitos l´gicos combinatorios a nivel n o de compuertas. Los dos enfoques de la representaci´n entera y el de la versi´n binaria o o del algoritmo propuesto se validaron usando algunos ejemplos tomados de la literatura y comparados contra otros tres enfoques: el dise˜o realizado por n un experto humano, el dise˜ o resultante de aplicar el algoritmo gen´tico de n e cardinalidad N (NGA), y el dise˜ o obtenido aplicando el algoritmo gen´tico n e multiobjetivo (MGA). iii
  • 4. iv
  • 5. Abstract This thesis presents an algorithm for the design and the optimization of combinational logic circuits at gate-level using a particle swarm optimization algorithm and three different representation approaches: binary, integer A and integer B. Although there are many criteria to determine the minimal- cost circuit design, in this work we used a metric based on the number of gates necessaries for the hardware implementation of the circuit. The Particle Swarm Optimization (PSO) algorithm is a numerical op- timization technique for nonlinear functions that is strongly influenced by other areas such as artificial life, social psychology and computer science. PSO has been very successful because it has a low computacional cost, an easy implementation and an excellent performance. Evolutionary techniques have been very useful for designing electronic circuits due to their exploratory power, since they operate using a population of potential solutions which can evaluate several regions of design space at the same time. It has been seen along the years that designing logic circuits using tradi- tional techniques is a complex process which requires considerable time and whose success depends on the human designer’s experience. Because of that, we propose the use of evoluationary techniques to find circuits which, are often radically different from those typically found by human designers. PSO has been used sometimes with a binary representation and more often with a real numbers encoding. However in this thesis we present two integer approaches besides the binary version of the particle swarm optimiza- tion algorithm, which are intended for designing combinational logic circuits. The binary version and the two integer approaches of the proposed algo- rithm are validated using several examples taken from the specialized lite- rature and are compared against human designers, the n-cardinality genetic algorithm (NGA) and the multiobjective genetic algorithm (MGA). v
  • 6. vi
  • 7. Agradecimientos A Gelus y a Manolo por haber guiado mis pasos para llegar hasta aqu´ y ı en el camino darme a probar el sabor del triunfo y ense˜ arme a no querer n abandonarlo nunca. A Sandy y a Isra por estar siempre conmigo y por el gran apoyo que me han brindado incluso cuando ni siquiera sab´ que lo necesita- ıa ba. A mi querido Daniel porque cuando estamos juntos todo parece ser mejor. A mis seres queridos y a todos aquellos que han influido en mi vida a lo largo de mis a˜ os de estudio y que con sus acertadas palabras me condujeron n por el mejor camino. Al Dr. Coello por sus invaluables consejos y por ser una fuente de inspi- raci´n que motiva a seguir siempre adelante. o A CONACyT por el apoyo otorgado a trav´s de la beca proporcionada e durante mi estancia en el programa de maestr´ y a trav´s del proyecto titula- ıa e do “Estudio y Desarrollo de T´cnicas Avanzadas de Manejo de Restricciones e para Algoritmos Evolutivos en el Contexto de Optimizaci´n Num´rica” (Ref. o e 32999-A), cuyo responsable es el Dr. Carlos A. Coello Coello. vii
  • 9. Contenido 1. Introducci´n o 1 2. Circuitos l´gicos combinatorios o 5 2.1. Algebra booleana . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1.1. Tablas de verdad . . . . . . . . . . . . . . . . . . . . . 7 2.1.2. Compuertas l´gicas . . . . . . . . . . . . . . . . . o . . . 8 2.1.3. Postulados, leyes y teoremas del algebra booleana ´ . . . 12 2.2. Formas Est´ndar . . . . . . . . . . . . . . . . . . . . . . a . . . 14 2.2.1. Minit´rminos y maxit´rminos . . . . . . . . . . . e e . . . 14 2.2.2. Suma de productos . . . . . . . . . . . . . . . . . . . . 17 2.2.3. Producto de sumas . . . . . . . . . . . . . . . . . . . . 17 2.3. Procedimiento de dise˜o de circuitos l´gicos . . . . . . . n o . . . 18 2.4. Planteamiento formal del problema de dise˜o de circuitos n . . . 19 2.5. Simplificaci´n de circuitos l´gicos . . . . . . . . . . . . . o o . . . 20 2.5.1. Simplificaci´n algebraica . . . . . . . . . . . . . . o . . . 21 2.5.2. Mapas de Karnaugh . . . . . . . . . . . . . . . . . . . 22 2.5.3. M´todo de Quine-McCluskey . . . . . . . . . . . e . . . 27 2.5.4. T´cnicas evolutivas . . . . . . . . . . . . . . . . . e . . . 31 3. Conceptos b´sicos a 37 3.1. Optimizaci´n . . . . . . . . . . . . . . . . . . . . o . . . . . . . 37 3.1.1. Optimizaci´n con y sin restricciones . . . . o . . . . . . . 37 3.1.2. Optimizaci´n global y local . . . . . . . . o . . . . . . . 38 3.1.3. Optimizaci´n estoc´stica y determin´ o a ıstica . . . . . . . 38 3.1.4. Algoritmos de optimizaci´n . . . . . . . . o . . . . . . . 39 3.2. Computaci´n evolutiva . . . . . . . . . . . . . . . o . . . . . . . 39 3.2.1. Programaci´n evolutiva . . . . . . . . . . . o . . . . . . . 40 3.2.2. Estrategias evolutivas . . . . . . . . . . . . . . . . . . . 41 ix
  • 10. x Contenido 3.2.3. Algoritmos gen´ticos . . . . . . . . . . . . . . . . . e . . 41 3.3. Algoritmo de optimizaci´n mediante c´ mulos de part´ o u ıculas . . 41 3.3.1. Algoritmo de PSO binario . . . . . . . . . . . . . . . . 44 3.3.2. Algoritmo de PSO real . . . . . . . . . . . . . . . . . . 47 3.3.3. Par´metros del PSO . . . . . . . . . . . . . . . . . a . . 48 4. Descripci´n de la t´cnica o e 51 4.1. Representaci´n de los circuitos l´gicos . . . . . . . . . . . . . o o . 51 4.1.1. Representaci´n interna de las celdas . . . . . . . . . . o . 54 4.1.2. Cardinalidad . . . . . . . . . . . . . . . . . . . . . . . 55 4.2. Evaluaci´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . o . 57 4.3. Obtenci´n de expresiones booleanas . . . . . . . . . . . . . . o . 58 4.4. Algoritmo de optimizaci´n mediante c´ mulos de part´ o u ıculas pa- ra el dise˜ o de circuitos l´gicos combinatorios . . . . . . . . n o . 60 4.5. Mutaci´n uniforme . . . . . . . . . . . . . . . . . . . . . . . o . 63 4.6. Funci´n de aptitud . . . . . . . . . . . . . . . . . . . . . . . o . 64 5. Circuitos de una salida 67 5.1. Experimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 5.2. Ejemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 5.3. Ejemplo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 5.4. Ejemplo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 5.5. Ejemplo 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 5.6. Ejemplo 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.7. Ejemplo 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 5.8. Ejemplo 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 5.9. Ejemplo 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 5.10. Ejemplo 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 6. Circuitos de m´ltiples salidas u 101 6.1. Ejemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 6.2. Ejemplo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 6.3. Ejemplo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 6.4. Ejemplo 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 7. Conclusiones y trabajo futuro 117 Bibliograf´ ıa 121
  • 11. Lista de tablas 2.1. Tabla de verdad para dos variables de entrada. . . . . . . . . . 7 2.2. Distintos s´ımbolos y terminolog´ para la operaci´n AND. . . ıa o 8 2.3. Tabla de verdad de la compuerta AND. . . . . . . . . . . . . . 8 2.4. Distintos s´ımbolos y terminolog´ para la operaci´n OR. . . . ıa o 9 2.5. Tabla de verdad de la compuerta OR. . . . . . . . . . . . . . . 9 2.6. Tabla de verdad de la compuerta NOT. . . . . . . . . . . . . . 10 2.7. Tabla de verdad de la compuerta XOR. . . . . . . . . . . . . . 11 2.8. Minit´rminos de tres variables. . . . . . . . . . . . . . . . . . . e 15 2.9. Maxit´rminos de tres variables. . . . . . . . . . . . . . . . . . e 15 2.10. Equivalencia entre una suma de minit´rminos y un producto e de maxit´rminos. . . . . . . . . . . . . . . . . . . . . . . . . . e 16 2.11. Agrupaci´n de t´rminos para encontrar los implicantes primos o e de la funci´n S = (0, 1, 2, 5, 6, 7, 8, 9, 10, 14). . . . . . . . . . o 28 2.12. Resultado de la comparaci´n y combinaci´n de t´rminos en o o e grupos adyacentes de la tabla 2.12. . . . . . . . . . . . . . . . 29 2.13. Resultado de la comparaci´n y combinaci´n de t´rminos en o o e grupos adyacentes de la tabla 2.12. . . . . . . . . . . . . . . . 29 2.14. Diagrama de implicantes primos de las tablas 2.11, 2.12 y 2.13 30 2.15. Resultado de la inclusi´n de los implicantes primos esenciales o en la suma m´ ınima. . . . . . . . . . . . . . . . . . . . . . . . . 31 5.1. Tabla de verdad del ejemplo 1. . . . . . . . . . . . . . . . . . . 72 5.2. An´lisis comparativo de 20 corridas del ejemplo 1. . . . . . . a . 73 5.3. Comparaci´n de resultados entre el PSO, un dise˜ ador huma- o n no, el MGA y el NGA para el ejemplo 1. . . . . . . . . . . . . 74 5.4. Tabla de verdad del ejemplo 2. . . . . . . . . . . . . . . . . . . 75 5.5. An´lisis comparativo de 20 corridas del ejemplo 2. . . . . . . a . 76 5.6. Comparaci´n de resultados entre el PSO, un dise˜ ador huma- o n no y el MGA para el ejemplo 2. . . . . . . . . . . . . . . . . . 77 xi
  • 12. xii Lista de tablas 5.7. Tabla de verdad del ejemplo 3. . . . . . . . . . . . . . . . . . . 78 5.8. An´lisis comparativo de 20 corridas del ejemplo 3. . . . . . . a . 79 5.9. Comparaci´n de resultados entre el PSO, un dise˜ ador huma- o n no y el MGA para el ejemplo 3. . . . . . . . . . . . . . . . . . 80 5.10. Tabla de verdad del ejemplo 4. . . . . . . . . . . . . . . . . . . 81 5.11. An´lisis comparativo de 20 corridas del ejemplo 4. . . . . . . a . 82 5.12. Comparaci´n de resultados entre el PSO, un dise˜ ador huma- o n no y el MGA para el ejemplo 4. . . . . . . . . . . . . . . . . . 83 5.13. Tabla de verdad del ejemplo 5. . . . . . . . . . . . . . . . . . . 84 5.14. An´lisis comparativo de 20 corridas del ejemplo 5. . . . . . . a . 85 5.15. Comparaci´n de resultados entre el PSO, un dise˜ ador huma- o n no y el MGA para el ejemplo 5. . . . . . . . . . . . . . . . . . 86 5.16. Tabla de verdad del ejemplo 6. . . . . . . . . . . . . . . . . . . 87 5.17. An´lisis comparativo de 20 corridas del ejemplo 6. . . . . . . a . 88 5.18. Comparaci´n de resultados entre el PSO, un dise˜ ador huma- o n no y el MGA para el ejemplo 6. . . . . . . . . . . . . . . . . . 89 5.19. Tabla de verdad del ejemplo 7. . . . . . . . . . . . . . . . . . . 90 5.20. An´lisis comparativo de 20 corridas del ejemplo 7. . . . . . . a . 91 5.21. Comparaci´n de resultados entre el PSO, un dise˜ ador huma- o n no y el MGA para el ejemplo 7. . . . . . . . . . . . . . . . . . 92 5.22. Tabla de verdad del ejemplo 8. . . . . . . . . . . . . . . . . . . 93 5.23. An´lisis comparativo de 20 corridas del ejemplo 8. . . . . . . a . 94 5.24. Comparaci´n de resultados entre el PSO, un dise˜ ador huma- o n no, el MGA y el NGA para el ejemplo 8. . . . . . . . . . . . . 95 5.25. Tabla de verdad del ejemplo 9. . . . . . . . . . . . . . . . . . . 96 5.26. An´lisis comparativo de 20 corridas del ejemplo 9. . . . . . . a . 97 5.27. Comparaci´n de resultados entre el PSO, un dise˜ ador huma- o n no y el MGA para el ejemplo 9. . . . . . . . . . . . . . . . . . 98 6.1. Tabla de verdad del ejemplo 1. . . . . . . . . . . . . . . . . . . 102 6.2. An´lisis comparativo de 20 corridas del ejemplo 1. . . . . . . a . 103 6.3. Comparaci´n de resultados entre el PSO, un dise˜ ador huma- o n no y el MGA para el ejemplo 1. . . . . . . . . . . . . . . . . . 104 6.4. Tabla de verdad del ejemplo 2. . . . . . . . . . . . . . . . . . . 105 6.5. An´lisis comparativo de 20 corridas del ejemplo 2. . . . . . . a . 106 6.6. Comparaci´n de resultados entre el PSO, un dise˜ ador huma- o n no y el MGA para el ejemplo 2. . . . . . . . . . . . . . . . . . 107 6.7. Tabla de verdad del ejemplo 3. . . . . . . . . . . . . . . . . . . 109
  • 13. Lista de tablas xiii 6.8. An´lisis comparativo de 20 corridas del ejemplo 3. . . . . . . a . 110 6.9. Comparaci´n de resultados entre el PSO, un dise˜ ador huma- o n no y el MGA para el ejemplo 3. . . . . . . . . . . . . . . . . . 111 6.10. Tabla de verdad del ejemplo 4. . . . . . . . . . . . . . . . . . . 113 6.11. An´lisis comparativo de 20 corridas del ejemplo 4. . . . . . . a . 114 6.12. Comparaci´n de resultados entre el PSO, un dise˜ ador huma- o n no, el MGA y el NGA para el ejemplo 4. . . . . . . . . . . . . 114
  • 14. xiv Lista de tablas
  • 15. Lista de figuras 2.1. Ejemplo de una expresi´n booleana. . . . . . . . . . . . . . . . o 6 2.2. Compuerta AND de dos entradas. . . . . . . . . . . . . . . . . 9 2.3. Compuerta OR de dos entradas. . . . . . . . . . . . . . . . . . 10 2.4. Compuerta NOT. . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.5. Compuerta XOR de dos entradas. . . . . . . . . . . . . . . . . 11 2.6. Ejemplo de una suma de productos. . . . . . . . . . . . . . . . 17 2.7. Diagrama de circuito de una suma de productos (SOP). . . . . 18 2.8. Ejemplo de un producto de sumas. . . . . . . . . . . . . . . . 18 2.9. Diagrama de circuito de un producto de sumas (POS). . . . . 19 2.10. Ejemplo de funciones booleanas equivalentes. . . . . . . . . . . 21 2.11. Ejemplo de un diagrama de circuito y su expresi´n booleana. . o 21 2.12. Diagrama de circuito y su expresi´n booleana simplificada. . . o 22 2.13. Mapa de Karnaugh de dos variables. (a)Forma general. (b) Mapa de S = A B + A B = (0, 1) = (2, 4) . . . . . . . . . 23 2.14. Mapa de Karnaugh de tres variables. (a)Forma general. (b) Mapa de S = A B C +A B C+A BC+AB C = (0, 1, 3, 4) = (2, 5, 6, 7) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.15. Mapa de Karnaugh de cuatro variables. (a)Forma general. (b) Mapa de S = A B C +A B C+A BC+AB C = (0, 1, 3, 4) = (2, 5, 6, 7) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.16. Adyacencia de celdas en los extremos de un mapa de cuatro variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.17. Mapa de Karnaugh de cuatro variables con agrupamientos de 1, 2, 4 y 8 celdas. . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.18. Representaci´n de matriz para el dise˜ o de circuitos l´gicos. . o n o 33 3.1. Algoritmo general de la programaci´n evolutiva. . . . . . . . . 40 o 3.2. Algoritmo general de las estrategias evolutivas. . . . . . . . . . 41 3.3. Algoritmo general de los algoritmo gen´ticos. . . . . . . . . . . 42 e xv
  • 16. xvi Lista de figuras 3.4. Modelo Gbest del PSO. . . . . . . . . . . . . . . . . . . . . . . 44 3.5. Modelo Lbest del PSO. . . . . . . . . . . . . . . . . . . . . . . 44 3.6. Versi´n binaria del algoritmo de optimizaci´n mediante c´mu- o o u los de part´ıculas. . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.7. Versi´n real del algoritmo de optimizaci´n mediante c´ mulos o o u de part´ıculas. . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.8. Efecto de la eliminaci´n del par´metro Vmax en el algoritmo o a de PSO [23]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.9. Efecto de la variaci´n del par´metro φ en el algoritmo de PSO o a [23]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.1. Representaci´n de matriz para el dise˜ o de circuitos l´gicos. . o n o 52 75 4.2. Matriz de 5 × 5 con un espacio de b´squeda de 5 . . . . . . . u 53 4.3. Distintos tipos de representaci´n. . . . . . . . . . . . . . . . . o 54 4.4. Una tercia de la matriz con representaci´n entera. . . . . . . . o 54 4.5. Una tercia de la matriz con representaci´n binaria. . . . . . . o 55 4.6. Uso de una cardinalidad de dos para la selecci´n de celdas . . o 56 4.7. Entradas a las celdas de la matriz. . . . . . . . . . . . . . . . . 57 4.8. Matriz de ejemplo para la obtenci´n de la expresi´n booleana. o o 58 4.9. Arbol de derivaci´n para la salida S0 de la expresi´n booleana o o en notaci´n prefija de la matriz mostrada en la figura 4.8. . . . o 59 4.10. Derivaci´n completa de la expresi´n booleana para la salida o o S0 a partir de la matriz de la figura 4.8. . . . . . . . . . . . . . 59 4.11. Pseudoc´digo del algoritmo de optimizaci´n mediante c´ mulos o o u de part´ ıculas. . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.12. Ejemplo del funcionamiento de la representaci´n entera A y o entera B. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.13. Ejemplo de mutaci´n uniforme sobre una representaci´n entera. o o 64 4.14. Aptitud de una soluci´n no factible. . . . . . . . . . . . . . . . o 65 4.15. Aptitud de una soluci´n factible. . . . . . . . . . . . . . . . . o 66 5.1. Archivo con formato blif. . . . . . . . . . . . . . . . . . . . . . 69 5.2. Programa en lenguaje Scheme que eval´a la expresi´n boolea- u o na obtenida del archivo blif de la figura 5.1. . . . . . . . . . . 71 5.3. Gr´fica de convergencia del ejemplo 1 de la corrida ubicada en a la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 5.4. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para o o el ejemplo 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
  • 17. Lista de figuras xvii 5.5. Gr´fica de convergencia del ejemplo 2 de la corrida ubicada en a la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 5.6. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para o o el ejemplo 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 5.7. Gr´fica de convergencia del ejemplo 3 de la corrida ubicada en a la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 5.8. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para o o el ejemplo 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 5.9. Gr´fica de convergencia del ejemplo 4 de la corrida ubicada en a la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 5.10. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para o o el ejemplo 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 5.11. Gr´fica de convergencia del ejemplo 5 de la corrida ubicada en a la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 5.12. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para o o el ejemplo 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 5.13. Gr´fica de convergencia del ejemplo 6 de la corrida ubicada en a la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 5.14. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para o o el ejemplo 6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 5.15. Gr´fica de convergencia del ejemplo 7 de la corrida ubicada en a la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 5.16. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para o o el ejemplo 7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 5.17. Gr´fica de convergencia del ejemplo 8 de la corrida ubicada en a la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 5.18. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para o o el ejemplo 8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 5.19. Gr´fica de convergencia del ejemplo 9 de la corrida ubicada en a la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 5.20. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para o o el ejemplo 9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 6.1. Gr´fica de convergencia del ejemplo 1 de la corrida ubicada en a la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 6.2. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para o o el ejemplo 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
  • 18. xviii Lista de figuras 6.3. Gr´fica de convergencia del ejemplo 2 de la corrida ubicada en a la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 6.4. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para o o el ejemplo 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 6.5. Gr´fica de convergencia del ejemplo 3 de la corrida ubicada en a la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 6.6. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para o o el ejemplo 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 6.7. Gr´fica de convergencia del ejemplo 4 de la corrida ubicada en a la mediana. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 6.8. Diagrama y ecuaci´n l´gica del mejor circuito encontrado para o o el ejemplo 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
  • 19. Cap´ ıtulo 1 Introducci´n o La producci´n de circuitos electr´nicos es un proceso que demanda ca- o o da vez dise˜ os mejores y m´s complejos, debido a las tecnolog´ actuales n a ıas de fabricaci´n. Sin embargo, tradicionalmente en el proceso de dise˜o se han o n adoptado t´cnicas que utilizan un conjunto de reglas y principios que adem´s e a de haber existido durante d´cadas dependen de la habilidad del dise˜ ador y e n no aseguran llegar al dise˜o optimo. El dise˜ o de circuitos l´gicos combi- n ´ n o natorios (no secuenciales) es un problema particular del dise˜o de circuitos n electr´nicos que tiene una complejidad tal que ha permanecido como un pro- o blema de investigaci´n abierto a lo largo del tiempo. o El objetivo principal en el proceso de dise˜ o de circuitos l´gicos combina- n o torios es encontrar la expresi´n que proporcione el comportamiento deseado o y que adem´s minimice un cierto criterio. En el caso de este trabajo de te- a sis el criterio a minimizarse es el costo del circuito, medido en t´rminos del e n´ mero necesario de compuertas para un dise˜o dado. Existen muchos crite- u n rios para determinar cu´l es esta expresi´n de costo m´ a o ınimo. Sin embargo, un circuito l´gico es una implementaci´n en hardware de una funci´n booleana o o o y la reducci´n del n´ mero de literales de cada t´rmino reduce el n´ mero de o u e u entradas de cada compuerta logrando con ello la reducci´n del n´ mero de o u compuertas necesarias y por tanto la complejidad del circuito. Las t´cnicas evolutivas han sido aplicadas al dise˜o de circuitos [8, 31], e n codificando los posibles dise˜ os en genotipos a partir de los cuales se cons- n truyen los circuitos o fenotipos. Estas t´cnicas han resultado muy utiles en e ´ el dise˜ o de circuitos l´gicos combinatorios debido a su poder exploratorio, n o pues al contar con una poblaci´n de soluciones potenciales permiten eva- o luar diversas regiones del espacio de dise˜o. El area dedicada al estudio y n ´ 1
  • 20. 2 Introducci´n o aplicaci´n de t´cnicas evolutivas para el dise˜ o de circuitos electr´nicos es o e n o el hardware evolutivo [39, 19, 42] el cual est´ influenciado por otras areas, a ´ principalmente ciencias de la computaci´n, biolog´ e ingenier´ electr´nica. o ıa ıa o El hardware evolutivo puede dividirse en dos grupos principales de acuerdo a la forma en que se dise˜ an y prueban los circuitos: n Evoluci´n intr´ o ınseca: Es el proceso evolutivo en el cual cada fenotipo es contru´ y probado en hardware reconfigurable1 . ıdo Evoluci´n extr´ o ınseca: Utiliza un modelo de hardware y eval´a los u fenotipos en software (simulaci´n). o En este trabajo se utiliz´ la t´cnica evolutiva denominada Optimizaci´n o e o mediante c´mulos de part´culas (Particle swarm optimization - PSO) [21] que u ı es uno de los algoritmos de la llamada inteligencia colectiva (swarm intelli- gence en ingl´s) [3] que se refiere a aquellas t´cnicas de b´ squeda inspiradas e e u en el comportamiento colectivo de las colonias de insectos y de algunas otras sociedades de animales. El PSO tiene como idea principal simular el movimiento de un grupo de aves que buscan comida. En esta simulaci´n, el comportamiento de ca- o da individuo est´ afectado por un factor individual y uno social. El factor a individual se refiere a las decisiones que ha tomado el individuo y que han funcionado mejor (en t´rminos de su aptitud) y que afectar´n las nuevas e a decisiones que pueda tomar. El factor social se refiere a las decisiones que han tomado el resto de los individuos de la poblaci´n (dentro de un cierto o vecindario) que han funcionado mejor y que afectar´n las nuevas decisiones a tomadas por los individuos en el vecindario. Cada individuo o part´ ıcula con- tiene su posici´n actual en el espacio de b´ squeda, su velocidad actual y la o u mejor posici´n encontrada por el individuo hasta este punto de la b´squeda o u (el factor individual) [23]. Este trabajo de tesis se encuentra dentro del ambito de la evoluci´n ex- ´ o tr´ ınseca del hardware evolutivo al dise˜ ar circuitos l´gicos combinatorios a n o nivel de compuertas (s´lo utilizando las funciones AND, OR, NOT y XOR) o mediante la t´cnica evolutiva de PSO. e En el cap´ ıtulo 2 se da una introducci´n a la teor´ de circuitos l´gicos o ıa o combinatorios y el proceso de dise˜ o. Tambi´n se describen algunas de las n e 1 Sistemas cuyo hardware puede modificarse de manera que se adapte a nuevas condi- ciones del mismo o a distintas aplicaciones.
  • 21. Introducci´n o 3 distintas t´cnicas tradicionalmente usadas para el dise˜ o de circuitos l´gicos e n o como los mapas de Karnaugh y el m´todo de Quine-McCluskey, adem´s de e a algunos otros enfoques evolutivos como el algoritmo gen´tico de cardinalidad e N y el algoritmo gen´tico multiobjetivo. e En el cap´ ıtulo 3 se presenta un panorama de lo que son los problemas de optimizaci´n en ingenier´ y su importancia. Despu´s se da un breve repaso o ıa e de lo que es la computaci´n evolutiva, los t´rminos m´s importantes y sus o e a principales paradigmas para despu´s dar una descripci´n del algoritmo de e o optimizaci´n mediante c´ mulos de part´ o u ıculas. En el cap´ıtulo 4 se describe la t´cnica propuesta para resolver el dise˜o de e n circuitos l´gicos combinatorios detallando cada uno de los elementos que la o componen como la representaci´n, la evaluaci´n y obtenci´n de expresiones o o o booleanas, el algoritmo utilizado y la funci´n de aptitud. o En el cap´ ıtulo 5 se muestran los resultados obtenidos por la t´cnica pro- e puesta a trav´s de una serie de experimentos realizados con circuitos l´gicos e o combinatorios de una sola salida. Se presentan las tablas de verdad de los cir- cuitos de los experimentos, tablas comparativas de las tres representaciones (binaria, entera A y entera B) donde se eval´ a tambi´n el desempe˜ o contra u e n otras t´cnicas evolutivas adem´s de los diagramas l´gicos y las expresiones e a o booleanas en notaci´n prefija de los mejores circuitos encontrados. o En el cap´ ıtulo 6 se discuten los resultados obtenidos por la t´cnica para e experimentos con circuitos de m´ ltiples salidas. La estructura de este cap´ u ıtulo es similar a la del cap´ ıtulo 5 ya que se presentan tambi´n las tablas de e verdad de los circuitos que se est´n probando, las tablas comparativas y los a diagramas l´gicos con la expresi´n booleana correspondiente de los mejores o o circuitos encontrados. Por ultimo, en el cap´ ´ ıtulo 7 se dan las conclusiones acerca de los resultados obtenidos as´ como algunas ideas para realizar algunos trabajos posteriores ı y que pudieran mejorar el desempe˜o del algoritmo presentado. n
  • 22. 4 Introducci´n o
  • 23. Cap´ ıtulo 2 Circuitos l´gicos combinatorios o Un sistema digital es una combinaci´n de dispositivos dise˜ada para ma- o n nipular variables que solamente tomen valores discretos. Un circuito l´gico o combinatorio es un sistema digital que opera en modo binario, es decir que los valores que pueden existir s´lo son el 1 y el 0, adem´s de que en cual- o a quier instante de tiempo la salida depende unicamente de los niveles l´gicos ´ o presentes a la entrada. En 1854, George Boole publica su libro titulado “Las leyes del pensa- miento” en el que aproxim´ la l´gica en una nueva direcci´n reduci´ndola o o o e a una algebra simple llamada desde entonces algebra booleana. Sin embargo ´ fue hasta 1937 que Claude Shannon de los Laboratorios Bell llev´ a cabo el o enlace entre la l´gica y la electr´nica [37, 11]. Shannon demostr´ c´mo las o o o o operaciones booleanas elementales se pod´ representar mediante circuitos ıan conmutados el´ctricos, y c´mo la combinaci´n de circuitos pod´ representar e o o ıa operaciones aritm´ticas y l´gicas complejas. Posteriormente formaliz´ toda e o o la estructura matem´tica para que los ingenieros pudieran aplicar la teor´a a a ı la pr´ctica. a B´sicamente, el algebra booleana consiste en un m´todo para resolver a ´ e problemas de l´gica y que recurre s´lo a los valores binarios 0 y 1 y a tres o o operaciones b´sicas: AND, OR y NOT. Como ya se mencion´, los circuitos a o l´gicos combinatorios tienen la caracter´ o ıstica de ser binarios por lo que es posible utilizar esta algebra como herramienta para su an´lisis y dise˜ o. ´ a n 5
  • 24. 6 1. Circuitos l´gicos combinatorios o 2.1. Algebra booleana El ´lgebra booleana trata principalmente con constantes, variables y ope- a raciones l´gicas y su principal diferencia con respecto al ´lgebra tradicional o a es que en este caso se utilizan variables y constantes binarias, es decir que s´lo pueden tomar el valor de 0 o de 1. Estos dos valores con frecuencia re- o presentan el nivel de voltaje presente en un determinado lugar del circuito, es decir que no representan n´ meros sino el estado de una variable de voltaje, u mejor conocido como nivel l´gico. Debido a que s´lo existen dos valores, el o o a ´lgebra booleana es m´s f´cil de manejar que el ´lgebra ordinaria ya que no a a a se tiene que lidiar con n´ meros decimales, n´ meros negativos, logaritmos, u u n´ meros imaginarios, etc., de hecho s´lo cuenta con tres operaciones l´gicas u o o b´sicas: a 1. Adici´n l´gica: Tambi´n conocida como operaci´n OR. El s´ o o e o ımbolo m´s a com´ n para esta operaci´n es el (+). La salida ser´ 1 si alguna de las u o a variables es igual a 1. 2. Multiplicaci´n l´gica: Se le conoce tambi´n como operaci´n AND. El o o e o s´ ımbolo de esta operaci´n es el (·). La salida ser´ 1 s´lo cuando ambas o a o variables sean iguales a 1. 3. Complemento: Conocida como operaci´n de inversi´n o NOT. Su s´ o o ımbo- lo es el ( ). Como su nombre lo indica, la salida siempre ser´ la inversa a del valor de la variable de entrada, es decir que si a la entrada existe un valor 1, a la salida se tendr´ el valor 0. a En el ´lgebra booleana existen funciones booleanas (ver figura 2.1) que a expresan la relaci´n l´gica entre las variables binarias y constan de una expre- o o si´n algebraica formada por variables binarias, constantes 0 o 1 y los s´mbolos o ı de operaci´n l´gica. Estas expresiones son muy utiles para la manipulaci´n o o ´ o de variables l´gicas y para expresar el funcionamiento de un circuito digital o para determinados valores de entrada [40]. f = AB + BC Figura 2.1: Ejemplo de una expresi´n booleana. o
  • 25. Algebra booleana 7 Expl´ ıcitamente, el ´lgebra booleana b(A) de un conjunto A es el conjunto a de subconjuntos de A que pueden ser obtenidos mediante la aplicaci´n de un o n´ mero finito de operaciones del conjunto union (OR), intersecci´n (AND) u o y complemento (NOT) y en donde cada uno de los elementos de b(A) es una funci´n booleana. El algebra booleana tambi´n forma una lattice ya que un o ´ e a ´lgebra L es llamada una lattice cuando L es un conjunto no vac´ y adem´s ıo a existen dos operaciones binarias sobre L, ∨ y ∧ tales que son idempotentes, conmutativas y asociativas adem´s de satisfacer las leyes de absorci´n (las a o cuales se explicar´n en la secci´n 2.1.3). a o 2.1.1. Tablas de verdad Una tabla de verdad o de combinaciones (ver tabla 2.1) es un m´todoe gr´fico para representar todos los posibles valores de las variables y mos- a trar los resultados de la operaci´n deseada. Es decir, que en estas tablas se o muestra la forma en que la salida del circuito se comportar´ con las diversas a combinaciones de los niveles l´gicos a la entrada [40, 11]. o A B S 0 0 1 0 1 0 1 0 0 1 1 0 Tabla 2.1: Tabla de verdad para dos variables de entrada. El tama˜ o de la tabla depende directamente del n´ mero de variables de n u entrada al circuito. Si por ejemplo se tienen dos valores de entrada, existen entonces cuatro posibles combinaciones como puede verse en la tabla 2.1. La relaci´n existente entre variables y combinaciones puede expresarse mediante o la ecuaci´n 2.1. o ´ N umero de combinaciones = 2N umero de variables booleanas ´ (2.1) Debido a sus caracter´ ısticas, las tablas de verdad son utiles para repre- ´ sentar el dise˜ o de un circuito l´gico. n o
  • 26. 8 1. Circuitos l´gicos combinatorios o 2.1.2. Compuertas l´gicas o Las compuertas l´gicas son circuitos electr´nicos que implementan en o o hardware operaciones l´gicas del algebra booleana y que operan con una o ´ o m´s se˜ ales de entrada para generar una se˜ al de salida [27]. Cualquier a n n circuito l´gico, por muy complejo que sea, puede ser realizado con las tres o compuertas b´sicas AND, OR y NOT. Sin embargo, existen algunas confi- a guraciones que se presentan muy frecuentemente y a las que, por ende, se les ha asignado un nombre y s´ ımbolo propio. Compuerta AND La compuerta AND implementa la multiplicaci´n l´gica, la cual puede o o ser representada mediante diferentes s´ ımbolos y terminolog´ como puede ıas verse en la tabla 2.2. Nombre S´ ımbolo AND Multiplicaci´n booleana o · Intersecci´n o ∩ Conjunci´n o ∧ Tabla 2.2: Distintos s´ ımbolos y terminolog´ para la operaci´n AND. ıa o A B S = AB 0 0 0 0 1 0 1 0 0 1 1 1 Tabla 2.3: Tabla de verdad de la compuerta AND. En la tabla 2.3 se muestra la tabla de verdad de la operaci´n AND de o dos variables de entrada y como puede verse, la operaci´n AND proporciona o un valor de 1 cuando la variable A y la variable B toman un valor de 1 y es 0 en cualquier otro caso.
  • 27. Algebra booleana 9 Se puede decir entonces que la operaci´n AND es exactamente igual que o hacer una multiplicaci´n ordinaria, en donde el resultado ser´ 0 siempre que o a alguna de las variables que se multiplica tome este valor. Es decir que la com- puerta AND tendr´ un valor de 1 a la salida s´lo cuando todas las variables a o de entrada sean igual a 1. El s´ımbolo para representar una compuerta AND en el diagrama de un circuito l´gico y la expresion booleana a su salida se o muestra en la figura 2.2. A S = AB B Figura 2.2: Compuerta AND de dos entradas. Compuerta OR La compuerta OR implementa la operaci´n de adici´n l´gica y al igual o o o que la compuerta AND existen diversos t´rminos y s´ e ımbolos para representar a esta funci´n, como muestra la tabla 2.4. o Nombre S´ ımbolo OR + Adici´n booleana o + Uni´n o ∪ Disyunci´n o ∨ Tabla 2.4: Distintos s´ ımbolos y terminolog´ para la operaci´n OR. ıa o A B S=A+B 0 0 0 0 1 1 1 0 1 1 1 1 Tabla 2.5: Tabla de verdad de la compuerta OR.
  • 28. 10 1. Circuitos l´gicos combinatorios o La tabla de verdad de la operaci´n OR se muestra en la tabla 2.5. Como o puede observarse, para esta funci´n la salida ser´ 1 siempre que alguna de o a las variables de entrada tome el valor de 1. En cualquier otro caso el valor de salida ser´ 0. Dicho de otra forma, la salida de la compuerta OR ser´ 0 a a s´lo cuando todas las variables de entrada sean 0. La figura 2.3 muestra la o representaci´n de la compuerta OR en un diagrama de un circuito l´gico y o o la expresi´n booleana a su salida. o A S = A+B B Figura 2.3: Compuerta OR de dos entradas. Compuerta NOT La compuerta NOT es mejor conocida como inversor e implementa la operaci´n de complemento como muestra la tabla 2.6. o A S = A’ 0 1 1 0 Tabla 2.6: Tabla de verdad de la compuerta NOT. La tabla de verdad de la compuerta NOT muestra que en esta operaci´n o s´lo se tiene una variable de entrada, la cual tendr´ como salida el nivel l´gi- o a o co contrario al nivel l´gico de entrada, es decir que si a la entrada se tiene o el valor de 1, a la salida se tendr´ un 0 y viceversa. La figura 2.4 muestra la a representaci´n de la compuerta NOT en un diagrama de un circuito l´gico y o o la expresi´n booleana a su salida. o A S = A’ Figura 2.4: Compuerta NOT.
  • 29. Algebra booleana 11 Compuerta XOR La compuerta XOR tambi´n es conocida como compuerta OR-exclusiva e y no implementa una operaci´n b´sica del algebra booleana. A pesar de eso o a ´ se presenta frecuentemente en los sistemas digitales y por ello es util en el ´ dise˜ o e implementaci´n de circuitos l´gicos. La tabla 2.7 muestra la tabla n o o de verdad de la compuerta XOR. A B S = A⊕B 0 0 0 0 1 1 1 0 1 1 1 0 Tabla 2.7: Tabla de verdad de la compuerta XOR. Se puede ver en la tabla de verdad de la compuerta XOR que esta ope- raci´n detecta cuando las variables de entrada tiene valores diferentes, ya o que cuando los niveles l´gicos de las entradas son opuestos se tiene un 1 a la o salida, mientras que cuando los dos niveles l´gicos son iguales, se tiene un 0. o En la ecuaci´n 2.2 se muestra la funci´n booleana de la compuerta XOR en o o t´rminos de las operaciones b´sicas del algebra booleana. e a ´ S = A B + AB = A ⊕ B (2.2) Debido a que la configuraci´n de compuertas de la ecuaci´n 2.2 se pre- o o senta muy a menudo se le ha asignado una representaci´n espec´ o ıfica para los diagramas de circuitos adem´s de un s´ a ımbolo particular, los cuales se mues- tra en la figura 2.5. A S=A B B Figura 2.5: Compuerta XOR de dos entradas.
  • 30. 12 1. Circuitos l´gicos combinatorios o 2.1.3. Postulados, leyes y teoremas del ´lgebra boolea- a na Los postulados, leyes y teoremas booleanos sirven para poder simplificar las expresiones booleanas que representan un circuito l´gico y en consecuen- o cia requerir un menor n´ mero de compuertas para su implementaci´n. u o Postulados Los postulados describen el comportamiento de las operaciones b´sicas a del ´lgebra booleana [11]. a 1. a) 0 · 0 = 0 b) 1 + 1 = 1 2. a) 1 · 1 = 1 b) 0 + 0 = 0 3. a) 1 · 0 = 0 · 1 = 0 b) 0 + 1 = 1 + 0 = 1 4. a) 0 = 1 b) 1 = 0 Leyes Las tres leyes b´sicas del algebra booleana [11] se presentan a continua- a ci´n: o 1. Ley Conmutativa : Esta ley establece que no importa el orden en que se eval´ en las operaciones AND y OR de dos variables ya que el resultado u es el mismo. a) A · B = B · A b) A + B = B + A 2. Ley Asociativa : Establece que las variables de una operaci´n AND o o de una operaci´n OR pueden ser agrupadas en cualquier forma. o
  • 31. Algebra booleana 13 a) A · (B · C) = (A · B) · C b) A + (B + C) = (A + B) + C 3. Ley Distributiva : Se establece que una expresi´n puede desarrollarse o multiplicando t´rmino a t´rmino como en el ´lgebra ordinaria as´ como e e a ı llevar a cabo la factorizaci´n de t´rminos. o e a) A · B + A · C = A · (B + C) b) (A + B) · (A + C) = A + B · C Teoremas Existen diversos teoremas que resultan de la aplicaci´n de los postulados o y de las leyes mencionadas [11], sin embargo s´lo se mostrar´n los m´s utiles. o a a ´ 1. Teorema de identidad a) A + 0 = A b) A · 1 = A 2. Teorema del elemento nulo a) A + 1 = 1 b) A · 0 = 0 3. Teorema del complemento a) A + A = 1 b) A · A = 0 4. Teorema de idempotencia a) A + A = A b) A · A = A 5. Teorema de absorci´n o a) A · (A + B) = A b) A + A · B = A
  • 32. 14 1. Circuitos l´gicos combinatorios o 6. Teorema de involuci´n o a) A = A 7. Teorema de DeMorgan a) (A + B + C + · · ·) = A · B · C · · · · b) (A · B · C · · · ·) = A + B + C + · · · 2.2. Formas Est´ndar a Para poder aplicar las t´cnicas de reducci´n comunes es necesario que las e o expresiones booleanas se encuentren en su forma est´ndar ya que facilitan los a procedimiento de simplificaci´n [11]. Existen diversas maneras de represen- o tar una funci´n booleana algebraicamente pero pocas de ellas se consideran o est´ndar. Las formas est´ndar tienen t´rminos de suma y t´rminos de pro- a a e e ducto que no implican operaciones aritm´ticas del ´lgebra booleana sino las e a operaciones l´gicas AND y OR respectivamente [27]. Un ejemplo de t´rmino o e de suma puede ser A + B + C que consiste en una operaci´n OR entre lite- o rales. An´logamente un ejemplo de t´rmino producto es A BC que consiste a e en una operaci´n AND entre literales. o 2.2.1. Minit´rminos y maxit´rminos e e Un t´rmino producto en el que aparecen todas las variables s´lo una e o vez de forma complementada o no se llama minit´rmino. Una variable se e encuentra complementada cuando su valor es 0. Cada minit´rmino tiene la e caracter´ ıstica de que tiene un valor de 1 para la combinaci´n de variables y o un valor de 0 para todas las dem´s. El s´ a ımbolo utilizado para designar un minit´rmino es mj donde j denota el equivalente decimal de la combinaci´n e o binaria. En la tabla 2.8 se muestran los minit´rminos para tres variables y e su s´ ımbolo. Por su parte, un maxit´rmino es un t´rmino de suma que contiene a e e todas las variables de forma complementada o no, adem´s de tener un valor a de 0 para la combinaci´n dada y un valor de 1 para todas las dem´s. Una o a variable se encuentra complementada cuando su valor es 1. Los maxit´rminos e se denotan con el s´ımbolo Mj donde al igual que los minit´rminos la j es el e
  • 33. Formas Est´ndar a 15 A B C Minit´rmino e S´ ımbolo 0 0 0 ABC m0 0 0 1 ABC m1 0 1 0 A BC m2 0 1 1 A BC m3 1 0 0 AB C m4 1 0 1 AB C m5 1 1 0 ABC m6 1 1 1 ABC m7 Tabla 2.8: Minit´rminos de tres variables. e equivalente decimal de la combinaci´n binaria. En la tabla 2.9 se muestran o los maxit´rminos para tres variables y su s´ e ımbolo correspondiente. A B C Maxit´rmino e S´ ımbolo 0 0 0 A+B+C M0 0 0 1 A+B+C M1 0 1 0 A+B +C M2 0 1 1 A+B +C M3 1 0 0 A +B+C M4 1 0 1 A +B+C M5 1 1 0 A +B +C M6 1 1 1 A +B +C M7 Tabla 2.9: Maxit´rminos de tres variables. e En las tablas 2.8 y 2.9 puede apreciarse que los minit´rminos y los ma- e xit´rminos tienen la caracter´ e ıstica de que representan a una sola de las com- binaciones de entrada por lo que se puede afirmar que existen tantos mi- nit´rminos o maxit´rminos como combinaciones de los valores de las varia- e e bles de entrada, adem´s de que un minit´rmino y el maxit´rmino con el a e e mismo sub´ ındice son complementarios, es decir que mj = Mj lo cual puede ser f´cilmente verificado con las leyes de DeMorgan. a Como se mencion´ anteriormente, una tabla de verdad representa el com- o portamiento del circuito debido a un determinado nivel l´gico de las variables o de entrada. A partir de una tabla de verdad se puede obtener una expresi´n o
  • 34. 16 1. Circuitos l´gicos combinatorios o algebraica de la funci´n booleana que est´ representando. Para poder obtener o a dicha expresi´n se tiene que hacer la suma l´gica de los t´rminos de producto o o e para los que la funci´n tome el valor de 1, que es lo mismo que llevar a cabo o la suma de los minit´rminos que producen un valor de 1 es decir una suma e de minit´rminos [27]. e De manera an´loga se puede obtener un producto de maxit´rminos como a e expresi´n algebraica de la funci´n booleana, que resulta de tomar el pro- o o ducto de los maxit´rminos que a su salida tengan el valor de 0. La suma e de minit´rminos y el producto de maxit´rminos describen la misma funci´n e e o booleana, como puede verse en la tabla 2.10. A B C S 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 1 1 1 7 S = A B C + A BC + AB C + ABC = j=0 mj 7 S = (A + B + C)(A + B + C)(A + B + C)(A + B + C) = j=0 Mj Tabla 2.10: Equivalencia entre una suma de minit´rminos y un producto de e maxit´rminos. e En el dise˜ o de circuitos, el producto de maxit´rminos no es de uso fre- n e cuente ya que siempre puede ser sustituido por una suma de minit´rminos. e A continuaci´n se resumir´n algunas de las caracter´ o a ısticas m´s sobresalientes a de los minit´rminos. e 1. Existen una cantidad de minit´rminos igual al n´mero de combinacio- e u nes de las variables de entrada, es decir que existen 2n minit´rminos e donde n es el n´ mero de variables. u 2. Una expresi´n booleana puede derivarse directamente de la tabla de o
  • 35. Formas Est´ndar a 17 verdad como la suma l´gica de minit´rminos que tengan como salida o e un valor de 1. 3. El complemento f de una funci´n f es igual a la suma de los minit´rmi- o e nos no incluidos en f . 4. Si una funci´n contiene a los 2n minit´rminos, su valor siempre ser´ igual o e a a 1. 2.2.2. Suma de productos La suma de minit´rminos es una expresi´n algebraica que contiene la e o cantidad m´xima de literales en cada t´rmino lo que a menudo conlleva a e a que tenga m´s t´rminos producto de los necesarios. En la simplificaci´n a e o de circuitos l´gicos se tiene como objetivo reducir la cantidad de t´rminos o e producto y de literales en los t´rminos, obteniendo as´ una expresi´n reducida e ı o equivalente en forma de suma de productos (SOP - sum of products) [11]. En la figura 2.6 se muestra un ejemplo de SOP. S = AC + B C + A B Figura 2.6: Ejemplo de una suma de productos. El diagrama de circuito de una suma de productos consiste en un conjunto de compuertas AND seguido de una sola compuerta OR (figura 2.7), donde cada t´rmino producto necesita una compuerta AND y la suma l´gica se e o forma con una compuerta OR que tiene como entrada las salidas de todas las compuertas AND. Este esquema de compuertas AND seguidas de una compuerta OR se conoce como implementaci´n en dos niveles. o 2.2.3. Producto de sumas El producto de sumas (POS - product of sums) es una forma est´ndara de expresi´n algebraica de funciones booleanas y se obtiene formando un o producto l´gico de t´rminos de suma [11]. Un ejemplo de un POS se muestra o e en la figura 2.8. La estructura de compuertas de un POS consiste de un grupo de compuertas OR seguidas de una compuerta AND que da como resultado una implementaci´n en dos niveles (figura 2.9). o
  • 36. 18 1. Circuitos l´gicos combinatorios o A C’ B’ C A’ B Figura 2.7: Diagrama de circuito de una suma de productos (SOP). S = (A + C )(B + C)(A + B) Figura 2.8: Ejemplo de un producto de sumas. 2.3. Procedimiento de dise˜o de circuitos l´gi- n o cos El proceso de dise˜ o de un circuito l´gico comienza con la especificaci´n n o o del problema a resolver y termina con un diagrama de circuito o una expresi´n o booleana que lo represente [44]. De forma general se pueden enumerar los siguientes pasos en el proceso de dise˜ o de un circuito l´gico: n o 1. Determinar, a partir del enunciado del problema, la cantidad de entra- das y de salidas necesarias. 2. Una vez determinadas las entradas y salidas se construye la tabla de verdad que ejemplifique el comportamiento deseado del circuito para todas las combinaciones posibles y establecer as´ la relaci´n entre en- ı o tradas y salidas. 3. A partir de la tabla de verdad se construye la expresi´n booleana que o ser´ simplificada posteriormente para tener as´ una funci´n de salida en a ı o t´rminos de las entradas. La simplificaci´n es un paso muy importante e o en el dise˜ o de circuitos ya que permite generar expresiones booleanas n equivalentes y m´s sencillas. a 4. Con las expresiones booleanas se traza el diagrama de circuitos l´gicos o que ayudar´ para su implementaci´n en hardware. a o
  • 37. Planteamiento formal del problema de dise˜o de circuitos n 19 A C’ B’ C A’ B Figura 2.9: Diagrama de circuito de un producto de sumas (POS). 5. Por ultimo, se lleva a cabo la verificaci´n del comportamiento del cir- ´ o cuito. Un dise˜ o pr´ctico debe considerar algunas restricciones como la canti- n a dad de compuertas, cantidad de entradas y de interconexiones, as´ como las ı limitaciones f´ ısicas de los circuitos integrados. En la mayor´ de los casos, la ıa simplificaci´n de las expresiones booleanas busca satisfacer un solo objetivo o y luego se intenta cumplir con nuevos criterios de desempe˜o.n 2.4. Planteamiento formal del problema de dise˜ o de circuitos n Formalmente podemos decir que el espacio booleano unidimensional B esta definido por el conjunto {0, 1}. Una variable booleana x puede tomar cualquier valor de este conjunto. Todos los vectores booleanos con n compo- nentes forman el espacio booleano n-dimensional Bn . Bn = {X/X = (x1 , x2 , . . . , xn ), xi ∈ B, ∀i = 1, . . . , n} Sea X = (x1 , x2 , . . . , xn ) un conjunto de n variables booleanas. El mapeo unico de Bn a B es una funci´n booleana f (X). ´ o Sea C = {OR, AND, NOT, XOR} un conjunto de compuertas l´gicas boo- o leanas con dos variables de entrada y sea EB(C) el conjunto de expresiones booleanas sobre C, por ejemplo:
  • 38. 20 1. Circuitos l´gicos combinatorios o eb1 : y AND z eb2 : w XOR (y OR z) donde w, y y z son variables booleanas. Sea x ∈ EB(C) y definimos |x| como el n´ mero de compuertas de x, por ejemplo: u x1 : (NOT y) AND (w OR z); |x1 | = 3 (NOT, AND, OR) x2 : y XOR (NOT w); |x2 | = 2 (XOR, NOT ) Sea f (X) una funci´n booleana y F ⊂ EB(C) tal que ∀x ∈ F , x = f (X). o Nuestro problema es encontrar x∗ ∈ F tal que |x∗ | = min |x|, ∀x ∈ F . 2.5. Simplificaci´n de circuitos l´gicos o o El objetivo principal de la simplificaci´n de circuitos l´gicos es normal- o o mente la minimizaci´n de la cantidad de hardware necesario para construir o un sistema en particular, ya que a menor hardware se tendr´ un menor costo a final. Por otro lado, la complejidad de un circuito l´gico est´ relacionada direc- o a tamente con la expresi´n booleana a partir de la cual se implement´. Esta o o expresi´n puede ser reducida para que contenga menos t´rminos y que a su o e vez cada uno de ´stos contenga menos literales. La nueva expresi´n puede e o entonces ser utilizada para implementar un nuevo circuito equivalente al ori- ginal, es decir que genere la misma salida y por tanto la misma tabla de verdad pero mediante una funci´n booleana distinta con un menor n´mero o u de compuertas y conexiones. La forma m´s simple de t´rminos de suma de productos es una funci´n a e o llamada suma m´nima que representar´ la suma con menor n´mero de t´rmi- ı a u e nos. Si existe m´s de una suma de productos que contenga el m´ a ınimo n´ mero u de t´rminos, la suma m´ e ınima ser´ aquella que contenga el menor n´mero de a u literales. Por ejemplo, las funciones de la figura 2.10 son equivalentes, pero la tercera de ellas es la suma m´ ınima ya que contiene cuatro literales mientras que las otras dos tienen cinco literales cada una. Esto da como consecuen- cia una implementaci´n en dos niveles con un diagrama de circuito con la o
  • 39. Simplificaci´n de circuitos l´gicos o o 21 menor cantidad de compuertas y con la menor cantidad de entradas a las compuertas. S = BC + ABC S = A BC + AB S = BC + AB Figura 2.10: Ejemplo de funciones booleanas equivalentes. 2.5.1. Simplificaci´n algebraica o Las expresiones booleanas pueden simplificarse mediante manipulaciones algebraicas. Sin embargo, como se ver´ a continuaci´n, el procedimiento re- a o sulta complicado pues al carecer de reglas espec´ ıficas para predecir los pasos sucesivos se requiere de una gran experiencia por parte del dise˜ador para n poder aplicar los postulados y teoremas del algebra booleana de manera que ´ las expresiones puedan ser minimizadas. A B S C S = A’BC + A’BC’ + AC Figura 2.11: Ejemplo de un diagrama de circuito y su expresi´n booleana. o Otra desventaja de la simplificaci´n algebraica es que despu´s de llevar a o e cabo toda la manipulaci´n algebraica no se puede saber cu´ndo se ha llegado o a a la expresi´n m´s sencilla. En la figura 2.11 se muestra el diagrama de o a circuito y la funci´n booleana sin simplificar obtenida como resultado del o
  • 40. 22 1. Circuitos l´gicos combinatorios o proceso de dise˜ o para resolver alg´ n problema. Si a la expresi´n booleana n u o de la figura 2.11 se le aplican los postulados y teoremas del algebra booleana ´ podr´ obtenerse una expresi´n simplificada. En la figura 2.12 se muestra ıa o el resultado obtenido de la manipulaci´n algebraica llevada a cabo para la o reducci´n as´ como el diagrama de circuito donde puede apreciarse que la o ı cantidad de compuertas necesarias para la implementaci´n es menor que las o necesitadas por el circuito original. 2.5.2. Mapas de Karnaugh El mapa de Karnaugh es un m´todo gr´fico [18, 28] utilizado para simpli- e a ficar una ecuaci´n l´gica o para convertir una tabla de verdad a su circuito o o l´gico correspondiente mediante un proceso simple y ordenado. Como una o tabla de verdad, el mapa de Karnaugh especifica el valor de la funci´n de o salida para cada combinaci´n de valores de las variables independientes de o entrada. El mapa ofrece tambi´n un diagrama visual de las distintas maneras e en que puede expresarse una funci´n booleana en forma est´ndar. o a A B S C S = A’BC + A’BC’ + AC S = A’B(C+C’) + AC S = A’B(1) + AC S = A’B + AC Figura 2.12: Diagrama de circuito y su expresi´n booleana simplificada. o El resultado producido por el mapa siempre est´ en forma de suma de a productos o de producto de sumas. Es decir, que se permite la simplificaci´n o de implementaciones en dos niveles pero el m´todo no puede ser aplicado e directamente a implementaciones m´s sencillas de los casos generales de un a mayor n´ mero de niveles. u
  • 41. Simplificaci´n de circuitos l´gicos o o 23 Mapas de dos, tres y cuatro variables En la figura 2.13 se muestra un mapa de una funci´n de dos variables que o es un cuadrado de cuatro celdas (una celda para cada minit´rmino). e A A B 0 1 B 0 1 0 F0 F2 0 1 0 1 F1 F3 1 1 0 (a) (b) Figura 2.13: Mapa de Karnaugh de dos variables. (a)Forma general. (b) Mapa de S = A B + A B = (0, 1) = (2, 4) Para llenar el valor de cada celda se buscan sus coordenadas como valores de entrada en la tabla de verdad y se coloca un 1 en aquellas celdas cuyo valor en la salida sea 1 y 0 en las restantes [28]. Por ejemplo, en los mapas de la figura 2.13 se puede observar que las celdas F0 y F1 contienen un 1 mientras que F2 y F4 contienen un 0, ya que la funci´n booleana de salida es o S = A B + A B es decir que las coordenadas 00 y 01 del mapa de Karnaugh tendr´n el valor 1 mientras que las coordenadas 10 y 11 tendr´n el valor 0. a a Es importante recalcar que la designaci´n decimal de cada celda es igual o al equivalente decimal del n´ mero binario formado por sus coordenadas. Los u mapas para las funciones de tres y cuatro variables son extensiones directas del mapa de dos variables. El mapa de tres variables se muestra en la figura 2.14 con 23 = 8 celdas y el mapa de cuatro variables se muestra en la figura 2.15 con 24 = 16 celdas. Cada 1 en el mapa corresponde a un minit´rmino de la funci´n de salida y e o pueden leerse directamente de aqu´ tal como se hace en las tablas de verdad. ı, Los minit´rminos en cuadros adyacentes en el mapa pueden ser combinados e debido a que s´lo difieren en una sola variable. o
  • 42. 24 1. Circuitos l´gicos combinatorios o AB AB 01 11 10 01 11 10 C 00 C 00 0 F0 F2 F6 F4 0 1 0 0 1 1 F1 F3 F7 F5 1 1 1 0 0 (a) (b) Figura 2.14: Mapa de Karnaugh de tres variables. (a)Forma general. (b) Mapa de S = A B C + A B C + A BC + AB C = (0, 1, 3, 4) = (2, 5, 6, 7) Implicantes primos Los cuadrados adyacentes de los mapas de Karnaugh pueden combinarse debido al teorema del algebra booleana que establece que AB + AB = A. ´ Es decir, que los t´rminos producto puden ser combinados o simpilifcados e cuando los n´ meros binarios difieren en un solo bit [28]. u La expresion ABCD + ABCD = ABC tiene dos productos de cuatro variables con los n´ meros binarios 1111 y 1110 los cuales difieren solamente u en el bit de menor orden por lo que pueden ser combinados. Sin embargo, los productos ABCD y A BCD no pueden ser combinados porque sus n´ meros u binarios correspondientes son 1111 y 0110 que difieren en las posiciones de mayor y menor orden. Dos productos s´lo pueden ser combinados si sus pun- o tos correspondientes en un cubo de dimensi´n n de un mapa se encuentran a o una distancia de 1. Los puntos con una distancia de 1 en un cubo de n dimen- siones son celdas adyacentes en el mapa y por tanto representan productos que pueden ser combinados y que pueden ser r´pidamente determinados por a inspecci´n. o En el proceso de inspecci´n debe recordarse que las celdas a los extremos o del mapa son adyacentes con las celdas que se encuentran exactamente al otro extremo en l´ ınea recta. La figura 2.16 ilustra estas adyacencias como por ejemplo las celdas F0 y F2 con n´ meros binarios 0000, 0010 y F3 y F11 u que tienen los n´ meros binarios 0011 y 1011. u En un mapa de cuatro variables, cada celda es adyacente a otras cuatro celdas correspondientes a las posiciones de los cuatro bits en los cuales el n´ mero binario puede diferir. Solamente se deben de tomar en cuenta para u
  • 43. Simplificaci´n de circuitos l´gicos o o 25 AB AB 00 01 11 10 00 01 11 10 CD CD 00 F0 F4 F12 F8 00 1 1 0 0 01 F1 F5 F13 F9 01 1 0 0 0 11 F3 F7 F15 F11 11 0 0 1 1 10 F2 F6 F14 F10 10 1 0 0 1 (a) (b) Figura 2.15: Mapa de Karnaugh de cuatro variables. (a)Forma general. (b) Mapa de S = A B C +A B C +A BC +AB C = (0, 1, 3, 4) = (2, 5, 6, 7) la simplificaci´n aquellas celdas que tengan el valor de 1 y el resto debe de o ser ignorado [28]. La regla para obtener la expresi´n booleana simplificada a partir del mapa o es escribir un producto t´rmino por cada par de celdas adyacentes con valor e 1 y un producto t´rmino por cada celda que tenga valor de 1 y que no sea e adyacente a ninguna otra celda. La figura 2.17 muestra el mapa de Karnaugh y la expresi´n booleana resultante para esta regla. o Las siguientes reglas en la obtenci´n de la expresi´n booleana se aplican o o en los casos en que pueden ser agrupadas m´s de un par de celdas. Primero se a considerar´ el caso en que se pueden combinar cuatro celdas por la aplicaci´n a o sucesiva del teorema AB + AB = A. En la simplificaci´n o S = ABCD + ABCD + ABC D + ABC D = (ABCD + ABCD ) + (ABC D + ABC D ) = ABC + ABC = AB puede observarse como cuatro productos de cuatro variables pueden ser sim- plificados para obtener un solo t´rmino. e La caracter´ıstica principal de la combinaci´n de cuatro t´rminos es que o e dos de las variables son iguales en los cuatro productos y los n´meros binarios u correspondientes son id´nticos a excepci´n de dos bits. El t´rmino resultante e o e de la combinaci´n de estos cuatro productos es igual a la adyacencia de dos o