SlideShare a Scribd company logo
1 of 116
Download to read offline
1 Introdução

        Um sistema pode ser definido como sendo um conjunto de elementos que são
interligados de alguma maneira para compor um todo e assim realizar funcionalidade
específica. Por exemplo, um aparelho de som hi-fi é composto de vários componentes, tais
como compartimento para discos e fitas, amplificador e auto-falantes. Todos são
interconectados por cabos elétricos.
        Um sistema também possui uma função bem definida, a qual pode ser identificada a
partir das funcionalidades de seus componentes. Por exemplo, a função do aparelho de som
hi-fi é transformar a informação armazenada em discos e/ou fitas em som audível, o que é
algo que nenhum dos componentes do sistema pode realizar por si só.
       Neste sentido, pode-se identificar dois aspectos fundamentais em qualquer sistema: sua
estrutura e seu comportamento. A estrutura reflete os componentes e como eles estão
interconectados e o comportamento reflete a funcionalidade do sistema.
       Sistemas em que o número de componentes é alto e/ou as inter-relações entre eles não
são muito claras ou difíceis de serem estabelecidas e entendidas são ditos complexos. No
projeto de tais sistemas complexos, a identificação de alguma ordem ou regularidade é de
extrema importância, o que normalmente requer uma abordagem estruturada e sistemática.
       Dependendo de quais aspectos se está tentando identificar, deve-se usar um tipo de
representação e um nível de abstração adequados. Os três tipos mais comuns de representação
são o comportamental, o estrutural e o físico.
       Uma representação comportamental captura o sistema como uma caixa preta e se
concentra na especificação do comportamento como uma função dos valores de entrada e o
tempo (ver figura 1.1). Em outras palavras, uma representação comportamental descreve a
funcionalidade mas não a implementação de um dado sistema, definindo as respostas da caixa
preta para qualquer combinação dos valores de entrada mas sem descrever como projetar ou
construir o sistema usando dados componentes.


                                x                         z
                                           z=f(x,y)
                                y


                         Figura 1.1 - Sistema como uma caixa preta.

       Uma representação estrutural define a caixa preta como um conjunto de
componentes e suas interconexões. Diferente da representação comportamental, a
representação estrutural especifica a implementação do sistema sem qualquer referência à sua
funcionalidade. Isto é ilustrado na figura 1.2.
         Obviamente, muitas vezes a funcionalidade pode ser derivada a partir dos componentes
interconectados. No entanto, derivar a funcionalidade de um sistema desta maneira é muito
difícil, principalmente se o sistema possui um grande número de componentes.
Introdução aos Sistemas Digitais (v.2001/1)              José Luís Güntzel e Francisco Assis do Nascimento   1-2



                                        x
                                                     a

                                                                               z
                                                                     c


                                         y           b

             Figura 1.2 - Sistema como um conjunto de componentes interconectados.

        Uma representação física especifica as características físicas da caixa preta, indicando
as dimensões e as posições de cada componente e conexão existentes na descrição estrutural
do sistema. Enquanto a representação estrutural fornece a conectividade do sistema, somente a
representação física é que descreve precisamente as relações espaciais dos vários
componentes. Ou seja, a representação física é usada para descrever o sistema depois que ele
foi fabricado, especificando seu peso, tamanho, consumo de potência e posição de cada pino
de entrada ou saída.
       Uma maneira natural e conveniente para representar a estrutura de um sistema é o uso
de diagramas de bloco, onde componentes são representados por retângulos, chamados
blocos, e conexões que são denotadas por linhas interligando os blocos. A figura 1.3 mostra
um diagrama do aparelho de som hi-fi.

                 Compartimento                                                       Compartimento
                  para discos                       Amplificador                       para fitas




                                     Auto-falante                     Auto-falante
                                      esquerdo                          direito

                     Figura 1.3 - Diagrama de blocos para o aparelho de som hi-fi.

       O processo de projeto de sistemas, principalmente produtos eletrônicos em geral e
sistemas digitais em particular, consiste sempre de pelo menos três fases, cada uma centrada
em uma das representações de projeto:
         1. derivar uma representação comportamental da funcionalidade do produto
         2. converter esta representação para uma representação estrutural contendo
            componentes de uma dada biblioteca de componentes
         3. produzir uma representação física que especifica como montar e fabricar o produto

       Qualquer projeto pode ser realizado seguindo estes passos usando diferentes níveis de
abstração. Em um nível de abstração apenas determinados detalhes são representados.
Normalmente, os detalhes capturados em uma dada fase do projeto dependem da
complexidade do sistema. Por exemplo, é praticamente impossível projetar um
microprocessador inteiro usando apenas portas lógicas básicas. Normalmente, inicia-se o
projeto pelos blocos básicos no nível lógico. A seguir, estes blocos são interconectados para
compor um sistema mais complexo, como por exemplo um microprocessador.
Introdução aos Sistemas Digitais (v.2001/1)          José Luís Güntzel e Francisco Assis do Nascimento      1-3



        Na próxima seção, serão abordados outros formalismos para a representação da
estrutura e do comportamento de sistemas, além dos níveis de abstração mais comumente
utilizados no projeto de sistemas digitais.



1.1 Sistemas Digitais

       Este texto tem por objetivo introduzir o estudo de sistemas digitais, dando especial
atenção aos componentes básicos destes sistemas. Um sistema digital pode ser definido como
um conjunto de componentes interconectados que processam informações em forma digital ou
discreta. Na maioria dos sistemas digitais, os componentes básicos utilizados são dispositivos
eletrônicos chamados circuitos integrados (CIs). As ligações entre estes componentes
eletrônicos são conexões físicas através das quais a informação digital pode ser transmitida.
       Sistemas digitais modernos abrangem uma vasta gama de graus de complexidade. Os
componentes disponíveis para a construção de sistemas digitais vão desde chaves do tipo liga-
desliga até computadores completos. O número de componentes em um sistema digital pode
variar de um, dois ou de milhares de componentes. Obviamente, quanto mais componentes
são necessários à implementação de um sistema digital, mais complexo ele é e,
conseqüentemente, mais difícil de entender seu funcionamento e de projetá-lo. Daí a
importância do uso de níveis de abstração no processo de projeto de sistemas digitais.
        Um nível de abstração, ou de granularidade, é caracterizado pelo tipo de objetos
utilizados na representação. Em geral, pode-se identificar quatro diferentes tipos de objetos
em um produto eletrônico: transistores, portas, registradores e processadores. Os
correspondentes níveis de abstração são sumarizados na tabela 1.1.

                                        Tabela 1.1 – Níveis de abstração.
     Nível                 Comportamento                     Estrutura                        Físico
  Transistor           Equações diferenciais,          Transistores,                 Células analógicas e
                       diagramas corrente-             resistores,                   digitais
                       voltagem                        capacitores
  Portas               Equações Booleanas,             Portas lógicas,               Módulos, unidades
                       máquinas de estado              Flip-flops
                       finitas (FSM)
  Registrador          Algoritmos, flowcharts,         Somadores,                    Microcircuitos
                       conjunto de instruções,         comparadores,
                       generalizações de FSMs          contadores,
                                                       registradores
  Processador          Especificação                   Processadores,                Placas de circuito
                       executável, programas           controladores,                impresso, módulos
                                                       ASICs                         multicircuitos

        Como mostrado na tabela 1.1, os principais componentes no nível de transistores são
transistores, resistores e capacitores, que são combinados para formar circuitos analógicos e
digitais que realizam uma dada funcionalidade. Esta funcionalidade é usualmente descrita por
um conjunto de equações diferenciais ou por algum tipo de relacionamento entre corrente e
tensão. A representação física destes circuitos, denominados células, podem consistir de
componentes do nível de transistores e as conexões que os interconectam.
Introdução aos Sistemas Digitais (v.2001/1)            José Luís Güntzel e Francisco Assis do Nascimento   1-4



        Os principais componentes do nível de portas são portas lógicas e flip-flops. Portas
lógicas são circuitos especiais que implementam operações Booleanas, tais como E e OU. Um
flip-flop é um elemento básico de memória que é capaz de armazenar um bit de informação,
podendo assumir o valor 0 (falso) ou 1 (verdadeiro). Portas e flip-flops são células digitais que
podem ser grupadas para formar módulos ou unidades aritméticas e de memória. Os módulos
são utilizados como componentes básicos no nível de registradores. O comportamento de cada
módulo pode ser descrito com o uso de equações Booleanas e diagramas de máquinas de
estados finitas (Finite State Machines - FSMs).
        No nível de registradores, os principais componentes são unidades aritméticas e de
memória, tais como, somadores, comparadores, multiplicadores, contadores, registradores,
bancos de registradores, filas, etc. Cada um destes componentes é um módulo com dimensões
fixas, um atraso de propagação e um conjunto de posições (fixas) para as entradas e saídas do
módulo. Estes componentes do nível de registradores podem ser montados e interconectados
em microcircuitos, que podem ser usados como componentes básicos no nível de abstração
acima. Usualmente, estes microcircuitos são descritos por fluxogramas, conjuntos de
instruções, diagramas de FSMs ou tabelas de estados.
        O mais alto nível de abstração apresentado na tabela é o nível de processador, onde os
componentes básicos são processadores, memórias, controladores e interfaces, além de
circuitos de aplicação específica (Application Specific Integrated Circuits - ASICs).
Geralmente, um ou mais destes componentes são montados em uma placa de circuito
impresso e conectados com fios que são impressos na placa. O comportamento de sistemas
compostos destes componentes do nível de processadores é usualmente descrito utilizando-se
uma linguagem natural, uma especificação executável em alguma linguagem de descrição de
hardware (Hardware Description Language - HDL), ou um algoritmo ou programa escrito em
uma linguagem de programação convencional.
        A representação estrutural mais comum para sistemas digitais é o diagrama de blocos.
Dependendo do nível de abstração, cada bloco pode representar objetos correspondentes ao
nível, por exemplo, portas lógicas no nível de abstração de portas; registradores, somadores,
etc. no nível de registradores; e controladores e ASICs no nível de processador. As
interconexões representam as conexões entre os objetos.
       A figura 1.4 mostra o diagrama de blocos para a unidade lógica e aritmética (ULA) e
os registradores de entrada e saída, os quais constituem partes essenciais de qualquer
sistema computacional. No diagrama de blocos, não há detalhamento dos componentes, mas
apenas uma idéia genérica da estrutura como um todo. Cada bloco pode ser mostrado com
mais detalhes, em algum outro diagrama de blocos mais detalhado, ou num diagrama
esquemático. Isto revela a natureza hierárquica existente por detrás de qualquer projeto de
sistema.
                                                  R1               R2
                                              4                         4

                                                                        1
                                     Cout              ULA                  controle
                                                  1

                                                           4

                                                        R3

           Figura 1.4 - Diagrama de blocos genéricos de uma ULA e seus registradores.
Introdução aos Sistemas Digitais (v.2001/1)                               José Luís Güntzel e Francisco Assis do Nascimento                       1-5



       A figura 1.5 mostra o diagrama de blocos mais detalhado para a unidade lógico-
aritmética (ULA) da figura 1.4. Já a figura 1.6 detalha o somador completo, que é o tipo de
bloco usado para compor a ULA.

                     R13 R2 3                  R12 R2 2                                 R11 R2 1                   R10 R2 0
                                                                                                                                       Controle



                            xor 3                         xor 2                              xor 1                        xor 0


                                 I3                            I2                                 I1                           I0

                                    Ci                            Ci                                 Ci                           Ci

                         FAD 3                     FAD 2                                  FAD 1                        FAD 0
            Cout
                    Co                        Co                                     Co                           Co




                          R3 3                          R3 2                               R3 1                         R3 0

                     Figura 1.5 - Diagrama de blocos mais detalhado de uma ULA.


                                                                       R1 i                 Ii
                                                                                                     FAD i

                                                                                                             Ci
                                                                                   X0




                                                   A0             A1          A2                     X1




                                                                  O0
                                         Co




                                                                                   R3 i

               Figura 1.6 - Esquemático de um somador completo (full-adder - FAD).

       Para representar o comportamento de sistemas digitais no nível de portas lógicas usam-
se tabelas verdades e equações Booleanas. No nível de registradores, usa-se algum tipo de
linguagem para descrever as transferências de dados entre os registradores. Para possibilitar a
simulação do sistema no nível de processador são geralmente utilizadas linguagens
procedurais para descrever os algoritmos na forma de programas executáveis.
       Por exemplo, para a estrutura da ULA dada na figura 1.4, a descrição algorítmica
poderia ser:

         se (controle=0)
            R3_ R1+R2;
         senão
            R3_ R1-R2;

      Esta descrição indica que o valor de controle determina se a ULA realizará uma
soma ou uma subtração.
Introdução aos Sistemas Digitais (v.2001/1)            José Luís Güntzel e Francisco Assis do Nascimento   1-6




1.2 Tipos de Dados e Representação de Dados

       Nesta seção, iremos estudar os tipos de dados mais comumente encontrados nos
sistemas digitais, mostrando como eles podem ser codificados em formato binário. Os dados
encontrados nos sistemas digitais (note-se que os computadores atuais são sistemas digitais)
podem ser classificados em uma das seguintes categorias:
         •    Números usados em cálculos aritméticos;
         •    Letras do alfabeto, usadas no processamento de dados;
         •    Símbolos discretos, usados para diversos propósitos

        Todos os dados são representados em formato binário porque o uso deste formato
facilita o projeto de circuitos eletrônicos que exibem duas condições possíveis, as quais são
convenientemente interpretadas como os valores 0 e 1 de um dígito binário (bit). Tais
circuitos eletrônicos são projetados para realizar um repertório de operações necessárias que
são disponibilizadas nos computadores.


1.2.1 Notação Posicional
       Todos os sistemas numéricos utilizados pelo ser humano são posicionais. Em um
sistema posicional, cada dígito possui um peso associado. Assim, o valor de um dado número
corresponde a uma soma ponderada de seus dígitos, como por exemplo:

                                 1999 = 1 × 1000 + 9 × 100 + 9 × 10+ 9 × 1

       Note que, no número anterior, o peso de cada posição é 10i, onde i corresponde à
posição do dígito, contada a partir da direita, e sendo i=0. para o dígito mais à direita.
         Em geral, qualquer número decimal D , no formato d1 d0 d-1 d-2 tem como valor:

                               D = d1 × 101 + d0 × 100 + d-1 × 10-1 + d-2 × 10-2

onde 10 é chamado base.
       Num sistema posicional genérico, a base pode ser qualquer valor inteiro r, e um dígito
numa posição i assume peso ri . Logo, podemos escrever o formato genérico de um número
em tal sistema como sendo

                                         dm-1 dm-2 … d1 d0 . d-1 d-2 … d-n

onde há m dígitos à esquerda do ponto e n dígitos à direita do ponto. Note que, se não houver
ponto, assume-se que este está à direita do dígito mais à direita. O valor deste número é o
somatório dos produtos de cada dígito pela correspondente potência da base:
                                                        m−1
                                                  D=    ∑d      i   × ri
                                                       i =− n
Introdução aos Sistemas Digitais (v.2001/1)            José Luís Güntzel e Francisco Assis do Nascimento   1-7



       Para um número qualquer, o dígito mais à direita é comumente referenciado como
dígito menos significativo (least-significative bit - LSB, em inglês), ao passo que o dígito
mais à esquerda é denominado dígito mais significativo (most-significative bit – MSB, em
inglês).
       Desde que sistemas digitais usam dígitos binários, estaremos particularmente
interessados no sistema binário. Neste sistema, a base utilizada é 2, de modo que um número
em binário assume a forma:

                                         bm-1 bm-2 … b1 b0 . b-1 b-2 … b-n

e seu valor pode ser encontrado por
                                                        m −1
                                                  B=    ∑b ×2   i
                                                                     i

                                                        i= −n


       Similarmente ao sistema decimal, o ponto no sistema binário é denominado ponto
binário. Normalmente, quando se trabalha com sistemas de base não-decimal, indica-se a
base subscrevendo-se o valor da base à direita do número. Exemplos:

                          101012 = 1 × 16 + 0 × 8 + 1 × 4 + 0 × 2 + 1 × 1 = 2110

                   .11112 = 1 × 0.5 + 1 × 0.25 + 1 × 0.125 + 1 × 0.0625 = 0.937510




1.2.2 Números Octais e Hexadecimais
       Além do sistema decimal e do sistema binário, dois outros sistemas são de grande
importância por proverem representações convenientemente compactas de números grandes.
Trata-se dos sistemas octal (base 8) e hexadecimal (base 16).
        No sistema octal, cada dígito representa um valor entre 0 e 7. Já no sistema
hexadecimal, cada dígito representa um valor entre 0 e 15. Para representar os valores maiores
do que 9 usando apenas um dígito, utilizam-se letras. Assim, o valor 10 é representado por A,
o 11, por B e assim por diante, até 15 (que é representado por F). A tabela 1.2 mostra os
inteiros binários de 0 a 10001, juntamente com os equivalentes octal, decimal e hexadecimal.
Note que cada dígito octal pode ser representado por 3 dígitos binários, enquanto que um
dígito hexadecimal pode ser representado por 4 dígitos binários.

         Tabela 1.2 - Representação de inteiros em binário, octal, decimal e hexadecimal.
                                Binário         Octal               Decimal         Hexa
                                      0             0                     0            0
                                      1             1                     1            1
                                     10             2                     2            2
                                     11             3                     3            3
                                   100              4                     4            4
                                   101              5                     5            5
                                   110              6                     6            6
Introdução aos Sistemas Digitais (v.2001/1)           José Luís Güntzel e Francisco Assis do Nascimento   1-8



                                    111              7                  7              7
                                   1000             10                  8              8
                                   1001             11                  9              9
                                   1010             12                 10              A
                                   1011             13                 11              B
                                   1100             14                 12              C
                                   1101             15                 13              D
                                   1110             16                 14              E
                                   1111             17                 15              F
                                  10000             20                 16             10
                                  10001             21                 17             11


       A tabela 1.3 mostra os inteiros binários de 0 a 10001 e seus equivalentes octal, decimal
e hexadecimal codificados em binário.

         Tabela 1.3 - Representação de inteiros em binário, octal, decimal e hexadecimal.
                      Binário                 Octal            Decimal             Hexadecimal
                                          codificado em     codificado em          codificado em
                                             binário           binário                binário
                                    0              000                  0000                  0000
                                    1              001                  0001                  0001
                                  10               010                  0010                  0010
                                  11               011                  0011                  0011
                                 100               100                  0100                  0100
                                 101               101                  0101                  0101
                                 110               110                  0110                  0110
                                 111               111                  0111                  0111
                                1000           001 000                  1000                  1000
                                1001           001 001                  1001                  1001
                                1010           001 010           0001 0000                    1010
                                1011           001 011           0001 0001                    1011
                                1100           001 100           0001 0010                    1100
                                1101           001 101           0001 0011                    1101
                                1110           001 110           0001 0100                    1110
                                1111           001 111           0001 0101                    1111
                              10000            010 000           0001 0110              0001 0000
                              10001            010 001           0001 0111              0001 0001


       Para se converter um número binário em octal separam-se os dígitos em grupos de 3, a
partir do ponto binário para a esquerda. Após, substitui-se cada grupo pelo dígito octal
correspondente. Exemplo:
Introdução aos Sistemas Digitais (v.2001/1)          José Luís Güntzel e Francisco Assis do Nascimento   1-9



                                  10100111002 = 001 010 011 100 = 12348

      E para converter-se um número em binário para hexadecimal, o procedimento é
análogo, exceto que os grupos deverão ser de 4 dígitos.



Exemplo 1.1: converter-o número binário que segue para hexadecimal

                                       10100111002 = 0010 1001 1100 = 29C16

      Note que nestes exemplos foram adicionados zeros à esquerda, de modo que todos os
grupos tivessem 3 dígitos, no caso da conversão direta binário-octal, e 4 dígitos no caso da
conversão direta binário-hexadecimal.
       A conversão no sentido oposto também é bastante simples. Substitui-se cada dígito
octal ou hexadecimal pelo conjunto de 3 ou 4 dígitos binários que o representa.

Exemplo 1.2: converter-os números que seguem para binário.
                                                 7658 = 1111101012
                                              FED16 = 1111111011012



1.2.3 Conversão entre Sistemas Numéricos
       Como regra geral, não se pode converter um número representado numa determinada
base para outra base simplesmente substituindo-se dígitos de uma base pelos seus
equivalentes na outra. Isto funciona somente nos casos em que ambas bases são potências de
um mesmo número (como os casos mostrados anteriormente). Quando não é este o caso, será
necessário utilizar-se um procedimento mais complexo o qual requer operações aritméticas..
A seguir, será mostrado como converter um número em qualquer base para a base 10, e vice-
versa, usando aritmética de base 10.
       Como indicado na sub-seção 1.2.1, o valor de um número em qualquer base é
representado pela fórmula:

                                                      m−1
                                                D=    ∑d      i   × ri
                                                     i =− n


       Onde r é a base do número, m indica o número de dígitos à esquerda do ponto e n
indica o número de dígitos à direita do ponto.
         Uma outra alternativa à equação anterior é re-escrever a parte inteira da equação por:

                              D = ((…(( dm-1 ) r + dm-2 ) r + … ) r + d1 ) r + d0

       Desta equação, é possível derivar um procedimento iterativo que obtém cada um dos
dígitos do número a partir do mais significativo, acumulando a soma decimal ponderada.
Introdução aos Sistemas Digitais (v.2001/1)           José Luís Güntzel e Francisco Assis do Nascimento        1-10



      Essa equação é também um bom ponto de partida para converter um número decimal
D para outra base r qualquer. Se dividirmos D por r na equação, a parte parametrizável da
equação representa o quociente

                                     Q = (…(( dm-1 ) r + dm-2 ) r + … ) r + d1

com resto R = d0 . Em outras palavras, d0 é obtido como o resto da divisão inteira de D por r.
Além disso, como o quociente Q na equação anterior tem o mesmo formato do número
original, sabe-se que sucessivas divisões por r permitem obter-se sucessivos dígitos de D, da
direita para a esquerda, até que todos os dígitos de D tenham sido encontrados.


1.2.4 Soma e Subtração de Números Binários
       O procedimento para a adição e subtração de números binários é semelhante ao que se
usa para números decimais. A principal diferença está nas tabelas de adição e subtração, que
contêm apenas os dígitos 0 e 1.
       Para somar dois números decimais, faz-se a soma de um par de dígitos de cada vez,
começando com o dígito menos significativo de cada número. Se a soma de um dado par é
igual ou maior que 10, o excesso (também chamado de transporte ou carry) é usado na soma
do próximo par de dígitos mais significativos. Para somar dois números binários, o
procedimento é basicamente o mesmo, mas usa-se um carry inicial c0 igual a 0. A tabela 1.4
mostra a soma si e o bit de carry ci+1 para cada possível combinação de xi, yi e ci.

                                  Tabela 1.4 - Adição de números binários.
                                              xi + yi + ci     si    ci+1
                                              0    0    0       0    0
                                              0    0    1       1    0
                                              0    1    0       1    0
                                              0    1    1       0    1
                                              1    0    0       1    0
                                              1    0    1       0    1
                                              1    1    0       0    1
                                              1    1    1       1    1


Exemplo 1.3: Somar os números binários 987 e 123.

                               512      256     128    64      32       16       8       4        2       1
       x                        1        1       1      1       0        1       1       0        1       1
       y                                                1       1        1       1       0        1       1
       carries          1       1        1       1      1       1        1       0       1        1
       x+y              1       0        0       0      1       0        1       0       1        1       0
                       S10      S9       S8      S7    S6      S5       S4       S3      S2       S1      S0

       Primeiro se soma x0 = 1 e y0 = 1, produzindo carry c1 = 1 e soma s0 = 0. Em seguida, se
soma x1 = 1, y1 = 1 e c1 = 1, obtendo-se carry c2 = 1 e soma s1 = 1. Este processo continua até
se gerar c11 = 1 e carry s10 = 0.
Introdução aos Sistemas Digitais (v.2001/1)           José Luís Güntzel e Francisco Assis do Nascimento       1-11



       A subtração de números binários é realizada de maneira semelhante, subtraindo-se um
par de bits, um a cada vez, no entanto, é sempre gerado um bit de empréstimo (borrow) e não
um bit de carry, e um bit de diferença ao invés de um bit de soma. A tabela 1.5 mostra a
diferença di e o bit de borrow bi+1 para cada possível combinação de xi, yi e bi.

                                 Tabela 1.5 - Subtração de números binários.
                                              xi - yi - bi        di    bi+1
                                               0    0    0         0    0
                                               0    0    1         1    1
                                               0    1    0         1    1
                                               0    1    1         0    1
                                               1    0    0         1    0
                                               1    0    1         0    0
                                               1    1    0         0    0
                                               1    1    1         1    1

        O procedimento para subtração é muito semelhante ao de adição: a partir dos dígitos
menos significativos, gera-se os bits de borrow b1 e de diferença d0, de acordo com a Tabela
4, e assim por diante, da direita para a esquerda, até o bit de borrow mais significativo bm e o
bit de diferença mais significativo dm-1.


Exemplo 1.4: Subtrair o número binário 123 de 987.

                           512      256       128   64       32        16      8      4       2           1
           x                1        1         1     1        0         1      1      0       1           1
           y                                         1        1         1      1      0       1           1
           borrows          0        0         1     1        0         0      0      0       0
           x-y              1        1         0     1        1         0      0      0       0       0
                            D9       D8        D7    D6      D5        D4      D3    D2      D1       d0

       Primeiro faz-se a subtração entre x0 = 1 e y0 = 1, produzindo borrow b1 = 0 e diferença
d0 = 0. Em seguida, faz-se a subtração de y1 = 1, b1 = 1 de x1 = 1, obtendo-se borrow b2 = 0 e
soma s1 = 0. Este processo continua até se gerar d9 = 1.



1.2.5 Representação de Números Negativos
       Até o presente momento, tratamos somente de números positivos. Números negativos
podem ser representados de diversas formas. A representação que usamos normalmente é
denominada sinal-magnitude. No entanto, a maioria dos computadores usa o sistema de
representação em complemento, para facilitar a implementação dos circuitos aritméticos.


1.2.5.1 Representação de números binários positivos e negativos

       Números binários positivos podem ser representados como números sem sinal. No
entanto, para se representarem números negativos, é necessária a utilização de alguma
Introdução aos Sistemas Digitais (v.2001/1)     José Luís Güntzel e Francisco Assis do Nascimento   1-12



notação. A forma de representação mais simples é sinal-magnitude. Nesta representação, o
número consiste de duas partes: a magnitude e o sinal. A magnitude expressa a quantidade e
o sinal indica se a quantidade é positiva ou negativa.
        Quando sinal-magnitude é usado para números binários, o sinal é representado pelo
dígito mais significativo: “0’” indica sinal positivo ao passo que “1” indica sinal negativo.
Assim, os números +9 e –9 escritos em binário se diferenciam somente pelo bit mais
significativo:
                                              +9 = 01001
                                              -9 = 11001
       Note que foram necessários 5 bits para representar esses números: 4 para a magnitude
e 1 (o mais da esquerda) para representar o sinal.
      Dado um número binário com n bits, o intervalo de representação possível será de -
(2 -1) até +(2n-1-1). Note também que há duas representações possíveis para o zero: -0 e +0.
  n-1




1.2.5.2 Sistema de representação em complementos

       A representação em complemento foi criada com o intuito de simplificar a operação de
subtração e manipulações lógicas, evitando a necessidade de comparações de magnitude e
sinal.
         Dado um sistema de base r qualquer, existem dois tipos de complementos possíveis:
         •    Complemento de r
         •    Complemento de (r-1).
       Iniciemos o estudo pelo complemento de (r-1). Seja um número N na base r
representado com n dígitos. O complemento de (r-1) de N é definido por (rn-1) – N. Para
números decimais, r = 10, (r-1) = 9 e o complemento de 9 de N é dado por (10n-1) – N.


Exemplo 1.5: encontrar o complemento de 9 dos números decimais que seguem.
         98710: (1000 - 1) - 987 = 999 - 987 = 12
         54670010:


         1238910:


      No caso de N ser um número binário, r = 2, (r-1) = 1 e o complemento de 1 de N é
dado por (2n-1) – N.


Exemplo 1.6: encontrar o complemento de 1 dos números binários que seguem.
         101112: (32 - 1) - 23 = 31 - 23 = 8 = 10002
         10110012:


         00011112:
Introdução aos Sistemas Digitais (v.2001/1)       José Luís Güntzel e Francisco Assis do Nascimento   1-13



       Já o complemento de r de um número N na base r representado com n dígitos é
definido por rn – N, se N ≠ 0 e 0 se N = 0. Comparando-se com o complemento de (r-1),
notamos que o complemento de r é obtido somando-se 1 ao complemento de (r-1). Para
números decimais, r = 10, e o complemento de 10 de N é dado por 10n – N.
       O complemento de r de um número binário é chamado complemento de dois e a
representação derivada dele é chamada representação em complemento de dois.
        Para números binários, o sinal do número é representado pelo bit mais significativo,
que é 0 para números positivos e 1 para negativos. Assim, pode-se obter um número negativo
a partir de um número positivo, complementando-se cada bit (i.e., substituindo-se cada 0 por 1
e cada 1 por 0), incluindo o bit de sinal e somando-se 1. O bit de carry que ocorra deve ser
ignorado. Portanto, quando se complementa o 0 e o bit de carry mais significativo é
descartado, obtém-se 0 como complemento de dois. Isto mostra que o 0 tem uma
representação única em complemento de dois. Como o 0 é um número positivo, se terá um
número positivo não-zero a menos do que números negativos, ou seja, o intervalo de números
que podem ser representados em complemento de dois é -(2n-1) até +(2 n-1 - 1).


Exemplo 1.7: determine o intervalo de representação para números binários com 4 dígitos
            (bits), assumindo-se o uso de complemento de 2
       Pelas fórmulas acima, conclui-se que o intervalo de representação para números de
quatro bits em complemento de 2 vai de -2 3 = -8 até 2 3 - 1 = +7.

      Uma maneira simples de se obter o complemento de dois de um número binário é fazer
o complemento do número e somar 1 a ele.


Exemplo 1.8: encontre o complemento de 2 do número binário que segue.
         101112: 010002 + 12 = 010012



1.2.5.3 Adição e subtração em complemento de dois

      Como dito anteriormente, a representação em complemento de dois foi desenvolvida
para facilitar a implementação de adição e subtração de números binários. Com o
complemento de dois é possível realizar somas e subtrações de números com e sem sinal
usando o mesmo circuito lógico.
       Para somar números em complemento de dois, usa-se a aritmética binária mostrada na
tabela 1.4 e ignora-se qualquer bit de carry além do bit de sinal. Por exemplo, somar dois
números positivos gera um resultado positivo correto:

                                                  0010 (+2)
                                              +   0100 (+4)
                                                  0110 (+6)

       Da mesma maneira, somar dois números negativos sempre produzirá uma soma
negativa correta, desde que seja ignorado o bit de carry além do bit de sinal:
Introdução aos Sistemas Digitais (v.2001/1)         José Luís Güntzel e Francisco Assis do Nascimento   1-14




                                                   1110 (-2)
                                              +    1100 (-4)
                                                   1010 (-6)

       No entanto, existem casos em que uma operação produz um resultado que excede o
intervalo de representação do sistema numérico, criando uma condição chamada estouro ou
overflow.
       Via de regra, a adição de dois números com sinais diferentes nunca produz um
overflow. Entretanto, quando se somam dois números com o mesmo sinal que produz uma
soma que é maior que o maior número representável, pode-se obter um resultado incorreto.
Por exemplo,
                                                   0100 (+4)
                                              +    0101 (+5)
                                                   1001 (-7)
         Do mesmo modo,
                                                   1100 (-4)
                                              +    1011 ( -5)
                                                   0111 (+7)

       Como os exemplos sugerem, é possível identificar uma regra simples para detectar
overflow em adições: ocorre um overflow sempre que o sinal da soma é diferente do sinal dos
operandos. Mas, como será visto, para implementar um circuito implementando a soma, é
mais fácil identificar oveflow usando a seguinte regra: ocorre um overflow sempre que os bits
de carry para o bit de sinal e a partir do bit de sinal são diferentes.
       Para realizar a subtração em complemento de dois, pode-se usar o mesmo
procedimento usado para números binários sem sinal e as regras para a detecção de overflow
são as mesmas da adição. Mas, para implementar a subtração não se usa este procedimento.
Ao invés disto, faz-se o complemento de dois do número que se quer subtrair (subtraendo) e
faz-se a soma dele com o número do qual vai se subtrair. Por exemplo,

                                 0010 (+2)
                           +     1100             Complemento de dois de (+4)
                                 000              Carries
                                 1110 ( -2)       Em complemento de dois

     Para se implementar esta subtração basta um circuito complementador e um somador.
Como se está realizando uma adição, a regra para detecção de overflow é a da adição.



Exercícios

Exercício 1.1 - Realizar as conversões indicadas a seguir.
a) 179 para binário
Introdução aos Sistemas Digitais (v.2001/1)        José Luís Güntzel e Francisco Assis do Nascimento   1-15



         179 ÷ 2 = 89         resto = 1 (dígito menos significativo)
         89 ÷ 2 = 44         resto = 1




b) 467 para octal
         467 ÷ 8 = 58         resto = 3 (dígito menos significativo)
         58 ÷ 8 =




c) 3417 para hexadecimal
         3417 ÷ 16 =




Exercício 1.2 - Encontrar a representação em complemento de r para os exemplos anteriores.
98710 : 1000 - 987 = 13
54670010:


1238910:


101112: 32 - 23 = 9 = 10012
10110012:


00011112:
Introdução aos Sistemas Digitais (v.2001/1)   José Luís Güntzel e Francisco Assis do Nascimento   1-16



Exercício 1.3 - Encontrar, para os exemplos anteriores, a representação em complemento de 2
              usando operações de complemento.
10110012:


00011112:



Bibliografia Suplementar

[1] GAJSKI, Daniel D. Principles of Digital Design, New Jersey: Prentice Hall, 1997 (ISBN
     0-13-301144-5)

[2] MANO, M. Morris; Computer Engineering: Hardware Design. New Jersey: Prentice
    Hall, 1988 (ISBN 0-13-162926-3)
2 Álgebra Booleana e Circuitos Lógicos

      Uma álgebra Booleana pode ser definida com um conjunto de operadores e um
conjunto de axiomas, que são assumidos verdadeiros sem necessidade de prova.
       Em 1854, George Boole introduziu o formalismo que até hoje se usa para o tratamento
sistemático da lógica, que é a chamada Álgebra Booleana. Em 1938, C. E. Shannon aplicou
esta álgebra para mostrar que as propriedades de circuitos elétricos de chaveamento podem
ser representadas por uma álgebra Booleana com dois valores.
       Diferentemente da álgebra ordinária dos reais, onde as variáveis podem assumir
valores no intervalo (-∞;+∞), as variáveis Booleanas só podem assumir um número finito de
valores. Em particular, na álgebra Booleana de dois valores, cada variável pode assumir um
dentre dois valores possíveis, os quais podem ser denotados por [F,V] (falso ou verdadeiro),
[H,L] (high and low) ou ainda [0,1]. Nesta disciplina, adotaremos a notação [0,1], a qual
também é utilizada em eletrônica digital. Como o número de valores que cada variável pode
assumir é finito (e pequeno), o número de estados que uma função Booleana pode assumir
também será finito, o que significa que podemos descrever completamente as funções
Booleanas utilizando tabelas. Devido a este fato, uma tabela que descreva uma função
Booleana recebe o nome de tabela verdade, e nela são listadas todas as combinações de
valores que as variáveis de entrada podem assumir e os correspondentes valores da função
(saídas).



2.1 Operações Básicas da Álgebra Booleana (ou Álgebra de
Chaveamento)

      Na álgebra Booleana, existem três operações ou funções básicas. São elas, operação
OU, operação E e complementação. Todas as funções Booleanas podem ser representadas
em termos destas operações básicas.


2.1.1 Operação OU (Adição Lógica)

      Uma definição para a operação OU, que também é denominada adição lógica, é:
      “A operação OU resulta 1 se pelo menos uma das variáveis de entrada vale 1”.
       Como uma variável Booleana ou vale 1 ou vale 0, e como o resultado de uma operação
qualquer pode ser encarado como (ou atribuído a) uma variável Booleana, basta que
definamos quando a operação vale 1. Automaticamente, a operação resultará 0 nos demais
casos. Assim, pode-se dizer que a operação OU resulta 0 somente quando todas as variáveis
de entrada valem 0.
      Um símbolo possível para representar a operação OU é “+”, tal como o símbolo da
adição algébrica (dos reais). Porém, como estamos trabalhando com variáveis Booleanas,
Introdução aos Sistemas Digitais (v.2001/1)           José Luís Güntzel e Francisco Assis do Nascimento   2-2



sabemos que não se trata da adição algébrica, mas sim da adição lógica. Outro símbolo
também encontrado na bibliografia é “∨”.
       Listando as possibilidades de combinações entre dois valores Booleanos e os
respectivos resultados para a operação OU, tem-se:

                                                  0+0         =     0
                                                  0+1         =     1
                                                  1+0         =     1
                                                  1+1         =     1

        Note que a operação OU só pode ser definida se houver, pelo menos, duas variáveis
envolvidas. Ou seja, não é possível realizar a operação sobre somente uma variável. Devido a
isso, o operador “+” (OU) é dito binário.
        Nas equações, não costuma-se escrever todas as possibilidades de valores. Apenas
adotamos uma letra (ou uma letra com um índice) para designar uma variável Booleana. Com
isso, já se sabe que aquela variável pode assumir ou o valor 0 ou o valor 1. Então, supondo
que queiramos demonstar o comportamento da equação A+B (lê-se A ou B), poderíamos
fazê-lo utilizando uma tabela verdade, como segue:

                                                      A   B    A+B
                                                      0   0     0
                                                      0   1     1
                                                      1   0     1
                                                      1   1     1

      Da mesma forma, podemos mostrar o comportamento da equação A+B+C (lê-se A ou
B ou C) por meio de uma tabela verdade. Como na equação há somente o símbolo “+”, trata-
se da operação OU sobre três variáveis. Logo, pode-se aplicar diretamente a definição da
operação OU: o resultado será 1 se pelo menos uma das variáveis de entrada valer 1.

                                              A   B   C     A+B+C
                                              0   0   0       0
                                              0   0   1       1
                                              0   1   0       1
                                              0   1   1       1
                                              1   0   0       1
                                              1   0   1       1
                                              1   1   0       1
                                              1   1   1       1

       É importante notar que, devido ao fato de haver somente um operador na equação,
pode-se também avaliar a equação decompondo-a em pares. Por exemplo, pode-se
primeiramente achar o resultado de A+B, para depois operar os valores resultantes com os
respectivos valores de C. Esta propriedade é conhecida como associativa. Também a ordem
em que são avaliadas as variáveis A, B e C é irrelevante (propriedade comutativa). Estas
propriedades são ilustradas pela tabela verdade a seguir. Nela, os parêntesis indicam
subexpressões já avaliadas em coluna imediatamente à esquerda. Note que os valores das
Introdução aos Sistemas Digitais (v.2001/1)         José Luís Güntzel e Francisco Assis do Nascimento   2-3



colunas referentes às expressões A+B+C, (A+B)+C e (B+C)+A são os mesmos (na mesma
ordem).


                    A   B   C     A+B+C       A+B       (A+B)+C         B+C        (B+C)+A
                    0   0   0       0          0           0             0            0
                    0   0   1       1          0           1             1            1
                    0   1   0       1          1           1             1            1
                    0   1   1       1          1           1             1            1
                    1   0   0       1          1           1             0            1
                    1   0   1       1          1           1             1            1
                    1   1   0       1          1           1             1            1
                    1   1   1       1          1           1             1            1


2.1.2 Operação E (Multiplicação Lógica)

         A operação E, ou multiplicação lógica, pode ser definida da seguinte forma:
         “A operação E resulta 0 se pelo menos uma das variáveis de entrada vale 0”.
      Pela definição dada, pode-se deduzir que o resultado da operação E será 1 se, e
somente se, todas as entradas valerem 1.
        O símbolo usualmente utilizado na operação E é “⋅”, porém outra notação possível é
“∧”. Podemos, também, listar as possibilidades de combinações entre dois valores Booleanos
e os respectivos resultados, para a operação E:

                                                0⋅0         =     0
                                                0⋅1         =     0
                                                1⋅0         =     0
                                                1⋅1         =     1

       Assim como a operação OU, a operação E só pode ser definida entre, pelo menos duas
variáveis. Ou seja, o operador “⋅” (E) também é binário.
      Para mostrar o comportamento da equação A ⋅ B (lê-se A e B), escreve-se uma tabela
verdade, como segue:

                                                    A   B       A⋅B
                                                    0   0        0
                                                    0   1        0
                                                    1   0        0
                                                    1   1        1

        De forma semelhante, pode-se determinar o resultado da equação A⋅B⋅C (lê-se A e B e
C) utilizando diretamente a definição da operação E: o resultado será 0 se pelo menos uma
das variáveis de entrada valer 0.
Introdução aos Sistemas Digitais (v.2001/1)           José Luís Güntzel e Francisco Assis do Nascimento   2-4




                                              A   B   C       A⋅B⋅C
                                              0   0   0         0
                                              0   0   1         0
                                              0   1   0         0
                                              0   1   1         0
                                              1   0   0         0
                                              1   0   1         0
                                              1   1   0         0
                                              1   1   1         1

       Também para a operação E valem as propriedades associativa e comutativa. Então, a
equação A⋅BC pode ainda ser avaliada tomando-se as variáveis aos pares, em qualquer ordem.
Veja a tabela verdade a seguir e compare os resultados.

                    A   B   C      A⋅B⋅C      A⋅B         (A⋅B)⋅C          B⋅C        A⋅(B⋅C)
                    0   0   0        0         0             0              0            0
                    0   0   1        0         0             0              0            0
                    0   1   0        0         0             0              0            0
                    0   1   1        0         0             0              1            0
                    1   0   0        0         0             0              0            0
                    1   0   1        0         0             0              0            1
                    1   1   0        0         1             0              0            0
                    1   1   1        1         1             1              1            1


2.1.3 Complementação (ou Negação, ou Inversão)

        A operação complementação dispensa uma definição. É a operação cujo resultado é
simplesmente o valor complementar ao que a variável apresenta. Também devido ao fato de
uma variável Booleana poder assumir um entre somente dois valores, o valor complementar
será 1 se a variável vale 0 e será 0 se a variável vale 1.
       Os símbolos utilizados para representar a operação complementação sobre uma
variável Booleana A são A , ~A e A' (lê-se A negado). Nesta disciplina, adotaremos o
primeiro símbolo. O resultado da operação complementação pode ser listado:

                                                      0       =   1
                                                      1       =   0

       Diferentemente das operações OU e E, a complementação só é definida sobre uma
variável, ou sobre o resultado de uma expressão. Ou seja, o operador complementação é
dito unário.
         E a tabela verdade para A é:
                                                          A       A
                                                          0       1
                                                          1       0
Introdução aos Sistemas Digitais (v.2001/1)   José Luís Güntzel e Francisco Assis do Nascimento   2-5



2.2 Avaliação de Expressões Booleanas

       Dada a equação que descreve uma função Booleana qualquer, deseja-se saber
detalhadamente como esta função se comporta para qualquer combinação das variáveis de
entrada. O comportamento de uma função é descrito pela sua tabela verdade e este problema é
conhecido como avaliação da função ou da expressão que descreve a função considerada. Em
suma, deseja-se achar a tabela verdade para a função Booleana.
        Uma tabela verdade consiste basicamente de um conjunto de colunas, nas quais são
listadas todas as combinações possíveis entre as variáveis de entrada (à esquerda) e o
resultado da função (à direita). Também, pode-se criar colunas intermediárias, onde são
listados os resultados de subexpressões contidas na expressão principal. Isto normalmente
facilita a avaliação, principalmente no caso de equações muito complexas e/ou contendo
muitas variáveis.
       Quando numa mesma equação Booleana aparecem operações E e OU, é necessário
seguir a ordem de precedência. Tal como na álgebra dos reais, a multiplicação (lógica) tem
precedência sobre a adição (lógica). Além disso, expressões entre parêntesis têm precedência
sobre operadores E e OU que estejam no mesmo nível. Quanto à complementação, esta deve
ser avaliada tão logo seja possível. Caso a complementação seja aplicada sobre uma
subexpressão inteira, é necessário que se avalie primeiramente a subexpressão para, só após,
inverter o seu resultado.
       O número de combinações que as variáveis de entrada podem assumir pode ser
calculado por 2n, onde n é o número de variáveis de entrada.
         O procedimento para a criação da tabela verdade a partir de uma equação Booleana é:
         1. Criar colunas para as variáveis de entrada e listar todas as combinações
            possíveis, utilizando a fórmula no de combinações = 2n (onde n é o
            número de variáveis de entrada);
         2. Criar uma coluna para cada variável de entrada que apareça
            complementada na equação e anotar os valores resultantes;
         3. Avaliar a equação seguindo a ordem de precedência, a partir do nível de
            parêntesis mais internos:
                1o multiplicação lógica
                2o adição lógica
       Tomemos como exemplo a expressão W = X + Y ⋅ Z . A variável W representa a
função Booleana propriamente dita. Esta variável depende das variáveis que estão à direita do
sinal =, ou seja, depende de X, Y e Z. Logo, são 3 as variáveis de entrada. O total de
combinações entre 3 variáveis será 23=8. Então, a tabela verdade para W deverá ter 3 colunas
à esquerda e 8 linhas. Seguindo o procedimento dado acima, cria-se uma coluna, na qual
listam-se os valores para Z. Após, inicia-se a avaliação propriamente dita, a partir do nível
mais interno de parêntesis. Como não há parêntesis na expressão, resolvem-se as
subexpressões que envolvem a operação E. No caso em questão, há somente uma tal
subexpressão, que é X ⋅Y . Então, cria-se uma coluna para X ⋅Y , na qual anotam-se os
resultados para este produto. Finalmente, utilizam-se os resultados de X ⋅Y , listados na
coluna anterior, para operar o OU com a variável X. Repare os passos descritos na tabela
verdade que segue. Nela, os parêntesis em torno do produto X ⋅Y indicam somente que este
Introdução aos Sistemas Digitais (v.2001/1)               José Luís Güntzel e Francisco Assis do Nascimento   2-6



termo já foi avaliado e que no passo referente a esta coluna, tomaram-se apenas os valores
previamente encontrados.


                                  X Y Z              Z         X ⋅Y        W = X + Y⋅ Z
                                   0   0   0         1          0               0
                                   0   0   1         0          0               0
                                   0   1   0         1          1               1
                                   0   1   1         0          0               0
                                   1   0   0         1          0               1
                                   1   0   1         0          0               1
                                   1   1   0         1          1               1
                                   1   1   1         0          0               1


2.3 Portas Lógicas

       Já vimos que uma função Booleana pode ser representada por uma equação ou
detalhada pela sua tabela verdade. Mas uma função Booleana também pode ser representada
de forma gráfica, onde cada operador está associado a um símbolo específico, permitindo o
imediato reconhecimento visual. Tais símbolos são conhecidos por portas lógicas.
         Na realidade, mais do que símbolos de operadores lógicos, as portas lógicas
representam recursos físicos, isto é, circuitos eletrônicos, capazes de realizar as operações
lógicas. Na eletrônica que trabalha com somente dois estados, a qual é denominada eletrônica
digital, o nível lógico 0 normalmente está associado à ausência de tensão (0 volt) enquanto o
nível lógico 1, à presença de tensão (a qual geralmente é 5 volts). Nesta disciplina, nos
limitaremos ao mundo da álgebra Booleana, admitindo que as portas lógicas representam
também circuitos eletrônicos que, de alguma maneira, realizam as funções Booleanas
simbolizadas. Então, ao conjunto de portas lógicas e respectivas conexões que simbolizam
uma equação Booleana, denominaremos circuito lógico.


2.3.1 Porta OU

       O símbolo da porta OU pode ser visto na figura 2.1. Tal como na porta E, as entradas
são colocadas à esquerda e a saída, à direita. Deve haver no mínimo duas entradas, mas há
somente uma saída. O funcionamento da porta E segue a definição da operação E, dada na
seção 2.1.1.
                                                                       A
                              A                          A+B                                  A+B+C
                                                                       B
                              B                                        C


                                               (a)                                  (b)

        Figura 2.1 - Símbolo da porta lógica OU com 2 entradas (a) e com 3 entradas (b).
Introdução aos Sistemas Digitais (v.2001/1)         José Luís Güntzel e Francisco Assis do Nascimento   2-7



2.3.2 Porta E

        O símbolo da porta E é mostrado na figura 2.2. À esquerda estão dispostas as entradas
(no mínimo duas, obviamente) e à direita, a saída (única). As linhas que conduzem as
variáveis de entrada e saída podem ser interpretadas como fios que transportam os sinais
elétricos associados às variáveis. O comportamento da porta E segue extritamente a definição
(e tabela verdade) dada na seção 2.1.2.

                                                               A                        A.B.C
                             A                      A.B
                                                               B
                             B                                 C


                                          (a)                               (b)

         Figura 2.2 - Símbolo da porta lógica E com 2 entradas (a) e com 3 entradas (b).


2.3.3 Inversor (ou Porta Inversora, ou Negador)

       A porta que simboliza a operação complementação é conhecida como inversor (ou
porta inversora, ou negador). Como a operação complementação só pode ser realizada sobre
uma variável por vez (ou sobre o resultado de uma subexpressão), o inversor só possui uma
entrada e, obviamente, uma saída. Caso se queira complementar uma expressão, é necessário
obter-se primeiramente o seu resultado, para só então aplicar a complementação. O símbolo
do inversor é mostrado na figura 2.3.


                                                                       A
                                                A


   Figura 2.3 - Símbolo do inversor (também conhecido como negador ou porta inversora).


2.3.4 Exemplo de Circuito Lógico

        Dada uma equação Booleana qualquer, é possível desenhar-se o circuito lógico que a
implementa. O circuito lógico é composto das portas lógicas relacionadas às operações que
são realizadas sobre as variáveis de entrada. Os resultados das operações são conduzidos por
fios, os quais, no desenho, são representados por linhas simples.
       Os passos a serem seguidos para se realizar o desenho do circuito lógico a partir de
uma equação são praticamente os mesmos usados na avaliação da expressão. Tomemos como
exemplo a equação, avaliada na seção 2.2. Inicialmente, identificamos as variáveis
independentes, que no caso são X, Y e Z. Para cada uma destas, traçamos uma linha (da
esquerda para a direita), representando os fios que conduzem os valores. Feito isto, deve-se
seguir desenhando as portas necessárias para representar cada uma das subexpressões, na
mesma ordem tomada para a avaliação, ou seja:
               1o parêntesis (dos mais internos para os mais externos);
               2o operações E;
Introdução aos Sistemas Digitais (v.2001/1)          José Luís Güntzel e Francisco Assis do Nascimento   2-8



               3o operações OU.

         A figura 2.4 mostra o circuito lógico para a equação W = X + Y ⋅ Z .


                                 X
                                                                                          W
                                 Y

                                 Z

                                        Figura 2.4 - Um circuito lógico.



2.4 Leis Fundamentais e Propriedades da Álgebra Booleana

       As leis da álgebra Booleana dizem respeito ao espaço Booleano (isto é., valores que
uma variável pode assumir) e operações elementares deste espaço. Já as propriedades podem
ser deduzidas a partir das definições das operações.
         Sejam A e B duas variáveis Booleanas. Então, o espaço Booleano é definido:
         se A≠0, então A=1;
         se A≠1, então A=0.
       As operações elementares deste espaço são operação OU, operação E e
complementação, cujas definições foram dadas nas seções 2.1.1, 2.1.2 e 2.1.3,
respectivamente.
         As propriedades da álgebra Booleana são as seguintes.
         Da adição lógica:
                           (1)        A+0 = A
                           (2)        A +1 = 1
                           (3)        A+A = A
                           (4)        A+A = 1

         Da multiplicação lógica:
                           (5)        A⋅ 0 = 0
                           (6)        A ⋅1 = A
                           (7)        A⋅ A = A
                           (8)        A⋅ A = 0

         Da complementação:

                          (9)         A=A
         Comutatividade:
                           (10)       A + B = B+ A
                           (11)       A⋅ B = B ⋅ A
Introdução aos Sistemas Digitais (v.2001/1)           José Luís Güntzel e Francisco Assis do Nascimento   2-9




         Associatividade:
                           (12)       A +(B + C ) =(A + B )+ C = ( A + C )+ B
                           (13)       A ⋅ (B ⋅ C) = (A ⋅ B) ⋅ C = (A ⋅ C) ⋅ B

         Distributiva (da multiplicação em relação à adição):
                           (14)       A ⋅ (B + C) = A ⋅ B + A ⋅ C



2.4.1 Teoremas de De Morgan

       O primeiro teorema de De Morgan diz que a complementação de um produto (lógico)
equivale à soma (lógica) das negações de cada variável do referido produto. Sob a forma de
equação, teríamos:

                                       A ⋅ B⋅ C ⋅... = A + B + C + ... (2.1)
      O segundo teorema é o dual ( i.e., o espelho) do primeiro, ou seja, a complementação
de uma soma (lógica) equivale ao produto das negações individuais das variáveis:
                                       A + B + C + ... = A ⋅ B⋅ C⋅... (2.2)

         Particularizando os teoremas de De Morgan para duas variáveis, temos:
                                              A⋅ B = A + B          (2.3)

                                              A + B = A⋅ B          (2.4)



2.5 Derivação de Expressões Booleanas

       Dada uma função Booleana, descrita por sua tabela verdade, derivar uma expressão
Booleana para esta função é encontrar uma equação que a descreva. Logo, a derivação de
expressões Booleanas é o problema inverso da avaliação de uma expressão Booleana, descrito
na seção 2.2
       Há basicamente duas maneiras de se definir (ou descrever) uma função Booleana:
descrevendo-se todas as situações das variáveis de entrada para as quais a função vale 1 ou,
alternativamente, todas as situações em que a função vale 0. O primeiro método é conhecido
por soma de produtos (SdP), enquanto que o segundo é chamado produto de somas (PdS).
Qualquer função Booleana pode ser descrita por meio de soma de produtos ou por meio de
produto de somas. Como as funções Booleanas só podem assumir um dentre dois valores (0
ou 1), basta usar-se um dos dois métodos para se encontrar uma equação para uma função.
         A seguir, são detalhados os métodos de derivação de expressões Booleanas.
Introdução aos Sistemas Digitais (v.2001/1)             José Luís Güntzel e Francisco Assis do Nascimento   2-10



2.5.1 Derivação de Expressões usando Soma de Produtos (SdP)

      Dada uma função Booleana de n variáveis (ou seja, n entradas), haverá 2n combinações
possíveis de valores. Dizemos que esse conjunto de valores que as variáveis podem assumir,
juntamente com os respectivos valores da função, constituem o espaço da função. A cada
combinação de entradas podemos associar um termo produto, no qual todas as variáveis da
função estão presentes, e que é construído da seguinte forma: se a variável correspondente
vale 0, ela deve aparecer negada; se a variável vale 1, ela deve aparecer não negada. A tabela
a seguir lista os termos produto associados a cada combinação de entradas para uma função
Booleana de três variáveis (A, B e C, por exemplo).

                                              A B C          mintermo
                                              0 0 0           A⋅ B ⋅ C
                                              0 0 1           A ⋅ B ⋅C
                                              0 1 0           A⋅ B ⋅ C
                                              0 1 1           A ⋅ B ⋅C
                                              1 0 0           A⋅ B ⋅ C
                                              1 0 1           A⋅ B ⋅ C
                                              1 1 0           A ⋅ B⋅ C
                                              1 1 1           A ⋅ B⋅ C

       Cada termo produto construído conforme a regra anteriormente descrita é denominado
mintermo (ou minitermo). Note que, para um dado mintermo, se substituirmos os valores das
variáveis associadas, obteremos 1. Porém, se substituirmos nesse mesmo mintermo quaisquer
outras combinações de valores, obteremos 0. Dessa forma, se quisermos encontrar a equação
para uma função a partir de sua tabela verdade, basta montarmos um OU entre os mintermos
associados aos 1s da função (também chamados mintermos 1 ).

Exemplo 2.1: encontrar a equação em soma de produtos (SdP) para a função F, descrita pela
seguinte tabela verdade:
                                                A B C             F
                                                0   0    0        0
                                                0   0    1        0
                                                0   1    0        1
                                                0   1    1        1
                                                1   0    0        0
                                                1   0    1        1
                                                1   1    0        1
                                                1   1    1        0

        F é função das variáveis A, B e C. Os valores de (A,B,C) para os quais F=1 são (0,1,0),
(0,1,1), (1,0,1) e (1,1,0). Os mintermos associados a essas condições (ou seja, os mintermos
1), são A ⋅ B ⋅ C , A ⋅ B ⋅C , A ⋅ B ⋅ C e A ⋅ B⋅ C , respectivamente. Logo, a equação em soma
de produtos para F será o OU entre estes produtos, conforme segue:
                         F = A ⋅B ⋅ C + A ⋅ B⋅ C + A ⋅ B ⋅C + A ⋅B ⋅ C                   (2.5)
Introdução aos Sistemas Digitais (v.2001/1)           José Luís Güntzel e Francisco Assis do Nascimento   2-11



       A fim de simplificar a notação, o símbolo da operação E pode ser omitido. Desta
forma, a equação anterior pode ser reescrita de maneira mais concisa:
                             F = A BC + A BC + A BC + A BC                        (2.6)

2.5.2 Derivação de Expressões usando Produto de Somas (PdS)

       O método de derivação usando produto de somas é o dual (isto é, o oposto) do método
de derivação em soma de produtos. A cada combinação das variáveis de entrada de uma
função podemos associar um termo soma, no qual todas as variáveis da função estão
presentes, e que é construído da seguinte forma: se a variável correspondente vale 1, ela deve
aparecer negada; se a variável vale 0, ela deve aparecer não negada. A tabela a seguir lista os
termos soma associados a cada combinação de entradas para uma função Booleana de três
variáveis (A, B e C, por exemplo).


                                              A B C       maxtermos
                                              0 0 0        A + B+ C
                                              0 0 1       A + B+ C
                                              0 1 0       A + B+ C
                                              0 1 1       A + B+ C
                                              1 0 0       A + B+ C
                                              1 0 1       A + B+ C
                                              1 1 0       A + B+ C
                                              1 1 1       A + B+ C

      Cada termo soma construído conforme a regra anteriormente descrita é denominado
maxtermo (ou maxitermo). Note que, para um dado maxtermo, se substituirmos os valores
das variáveis associadas, obteremos 0. Porém, se substituirmos nesse mesmo maxtermo
quaisquer outras combinações de valores, obteremos 1. Dessa forma, se quisermos encontrar a
equação para uma função a partir de sua tabela verdade, basta montarmos um E entre os
maxtermos associados aos 0s da função (também chamados maxtermos 0 ).

Exemplo 2.2: encontrar a equação em produto de somas (PdS) para a função F, descrita pela
seguinte tabela verdade:
                                    A B C       F
                                     0 0 0      0
                                     0 0 1      0
                                     0 1 0      1
                                     0 1 1      1
                                     1 0 0      0
                                     1 0 1      1
                                     1 1 0      1
                                     1 1 1      0
Introdução aos Sistemas Digitais (v.2001/1)        José Luís Güntzel e Francisco Assis do Nascimento   2-12



       Foi escolhida a mesma função do exemplo anterior, para que se possa estabelecer
comparações entre os dois métodos de derivação. Os valores das variáveis de entrada (A,B,C)
para os quais F=0 são (0,0,0), (0,0,1), (1,0,0) e (1,1,1). Os maxtermos associados a essas
condições (ou seja, os maxtermos 0), são A + B + C , A + B + C , A + B + C e A + B + C ,
respectivamente. Logo, a equação em produto de somas para F será o E entre estas somas:
                         F =(A + B + C)(A + B + C)(A + B + C)(A + B + C)            (2.7)

       Note que a ordem de precedência de uma expressão em produto de somas é “primeiro
cada soma deve ser avaliada, para só então avaliar-se o produto”. Isto significa que os
parêntesis em torno de cada termo soma são obrigatórios! Repare também que os símbolos
referentes à operação E (entre os termos soma) podem ser omitidos.



2.6 Formas Canônicas, Padrão e Não-Padrão

       As representações em soma de produtos e em produto de somas são denominadas
formas padrão. A soma de produtos e o produto de somas descritos nas duas seções
anteriores apresentam ainda uma característica bastante particular: em cada termo soma e em
cada termo produto todas as variáveis da função estão presentes. Devido a essa característica,
essas formas são chamadas canônicas.
       Além das representações descritas nas seções anteriores, há representações alternativas
(e mais concisas) para as expressões canônicas. Se associarmos cada combinação das
variáveis de entrada ao seu equivalente em decimal, cada mintermo pode ser representado por
mi, onde i é o decimal associado. De forma similar, cada maxtermo pode ser representado por
Mi, onde i é o decimal associado. A tabela a seguir lista todos os mintermos e maxtermos de
uma função de três variáveis (A, B e C).

                                        A B C    mintermo      maxtermo
                                        0 0 0       m0              M0
                                        0 0 1       m1              M1
                                        0 1 0       m2              M2
                                        0 1 1       m3              M3
                                        1 0 0       m4              M4
                                        1 0 1       m5              M5
                                        1 1 0       m6              M6
                                        1 1 1       m7              M7

       Voltando à função F das seções anteriores, podemos reescrever a expressão em soma
de produtos, na forma canônica, como segue:
                                       F = m2 + m3 + m5 + m6          (2.8)

         Ou ainda, de maneira mais concisa:
                                       F = ∑ (2,3,5,6)                (2.9)
Introdução aos Sistemas Digitais (v.2001/1)         José Luís Güntzel e Francisco Assis do Nascimento   2-13



         E sua expressão em produto de somas, na forma canônica, pode ser reescrita como:
                                      F = M0 ⋅ M1 ⋅ M4 ⋅M7            (2.10)

         Ou simplesmente, como:
                                      F = ∏ (0,1,4,7)                 (2.11)

      Apesar da praticidade das representações canônicas, elas são pouco úteis para a
implementação de circuitos digitais. O número de elementos (portas lógicas e conexões) de
um circuito lógico depende diretamente do número de operações Booleanas (inversão, E e
OU) contidas na expressão associada. Desta forma, é normal que se deseje reduzir o número
de operações contidas numa função, de modo a poder-se implementá-la com circuitos lógicos
mais simples, e portanto, de menor custo. A redução do número de operações é obtida
mediante a eliminação de literais da expressão, aplicando-se as propriedades da álgebra
Booleana descritas na seção 2.4. Um literal é uma variável negada ou uma variável não
negada. O processo de redução de literais (ou de redução de operações, equivalentemente) é
denominado simplificação.
       Para exemplificar os passos básicos para a simplificação algébrica (literal) de
expressões Booleanas, tomemos a expressão canônica, em soma de produtos, para a função F:
                                 F = A BC + A BC + A BC + A BC             (2.12)

        O primeiro passo é identificar pares de mintermos que se diferenciam por apenas um
literal, a fim de aplicar a propriedade (14). Os mintermos ABC e ABC , por exemplo,
possuem os mesmos literais, exceto pela variável C: no primeiro, o literal é C , enquanto no
segundo, o literal é C. Então, com o uso da propriedade (14), pode-se fatorar esses dois
mintermos, obtendo-se:
                                 F = A B(C + C)+ A BC + A BC               (2.13)

         Pela propriedade (4), tem-se que C + C=1. Então, substituindo em 2.13, segue:
                                 F = AB ⋅ 1 + ABC + ABC                    (2.14)

         E pela propriedade (6), AB ⋅1 = AB. Substituindo em 2.14, obtém-se:
                                 F = A B + A BC + A BC                     (2.15)

       Assim, pela manipulação algébrica, obtivemos uma expressão em soma de produtos
que é simplificada em relação a sua expressão em soma de produtos na forma canônica, pois o
número de operações e também de literais foram reduzidos (compare 2.15 com 2.12).
       Entretanto, na equação 2.12, o mintermo ABC também poderia ter sido agrupado com
o mintermo ABC , pois ambos possuem os mesmos literais, exceto pela variável A ( A no
primeiro e A no segundo). Naturalmente, os passos a serem seguidos seriam os mesmos
descritos anteriormente. E a equação resultante seria um pouco diferente, mas com o mesmo
número de operações, sendo portanto, de mesma complexidade. Na verdade, o melhor seria se
pudéssemos agrupar o mintermo ABC com o mintermo ABC e ao mesmo tempo com o
mintermo ABC . Felizmente, a propriedade (3) da álgebra Booleana diz que o OU entre duas
ou mais variáveis Booleanas iguais é igual a própria variável Booleana em questão.
Estendendo esta propriedade, pode-se dizer que o OU entre duas ou mais funções (inclusive
Introdução aos Sistemas Digitais (v.2001/1)      José Luís Güntzel e Francisco Assis do Nascimento   2-14



produtos) Booleanas iguais equivale à própria função Booleana em questão. Desta forma,
pode-se expandir o mintermo ABC para
                    ABC = ABC + ABC                            (2.16)
que é uma manipulação algébrica decorrente da propriedade (3).

         Retomando a equação 2.12 e utilizando 2.16, segue que:
                             F = A BC + A BC + A BC + A BC + A BC            (2.17)

      Então, a propriedade (3) garante que as expressões 2.12 e 2.17 são equivalentes,
embora o mintermo ABC apareça duplicado. E pelo fato de aparecer duas vezes, pode-se usar
uma cópia de ABC para simplificar com ABC e outra para simplificar com ABC . Os passos
da simplificação são os mesmos já descritos: pela propriedade (14), segue:
                             F = A B(C + C)+ A BC +(A + A)BC                 (2.18)
         E pela propriedade (6), vem:
                                 F = AB⋅1+ ABC + 1⋅ BC                  (2.19)
         Finalmente, pela propriedade (4), tem-se:
                                 F = A B + A BC + BC                    (2.20)

       Repare que o mintermo A BC não pôde ser agrupado com nenhum outro mintermo.
Note também que foram feitas todas as simplificações possíveis, uma vez que foram
agrupados e simplificados todos os pares de mintermos que se diferenciam de somente uma
variável. Logo, a expressão 2.20 representa a máxima simplificação possível sob a forma de
soma de produtos. E por esse motivo, ela é dita equação mínima em soma de produtos da
função F. Quanto a expressão 2.15, diz-se ser uma equação em soma de produtos
simplificada (porém, não-mínima). Logo, toda equação mínima é simplificada, porém, nem
toda equação que foi simplificada é necessariamente mínima.
       Embora a equação mínima em soma de produtos apresente menor número de
operações Booleanas que a representação na forma canônica, as vezes pode ser possível
reduzir-se ainda mais o número de operações, fatorando-se literais. Por exemplo, na expressão
2.20 pode-se fatorar o primeiro e o terceiro mintermos como segue:
                                 F = B(A + C)+ A BC                     (2.21)

       A expressão 2.21, obtida pela fatoração de 2.20, não é nem do tipo soma de produtos,
nem produto de somas, pois há um termo que não é nem produto, nem soma. Diz-se que a
expressão está na forma fatorada. No caso de 2.21, a fatoração não resultou em redução do
número de operações.
       No que se refere a terminologia, as formas soma de produtos e produto de somas são
ditas formas padrão (formas standard). A forma fatorada é dita não-padrão. As formas
canônicas são, pois, casos especiais de formas padrão, nas quais os termos são mintermos ou
maxtermos. A fim de diferenciar somas de produtos canônicas de somas de produtos
simplificadas, usaremos a expressão “soma de mintermos”. De maneira similar, usaremos a
expressão “produto de maxtermos” para diferenciar produtos de somas canônicos de
produtos de somas simplificados.
Introdução aos Sistemas Digitais (v.2001/1)       José Luís Güntzel e Francisco Assis do Nascimento       2-15




2.7 Circuitos Lógicos para Formas Padrão e Não-Padrão

      As regras gerais para se realizar o desenho de circuitos lógicos já foram apresentadas
na seção 2.3 (item 2.3.4). As regras seguintes devem ser observadas, a fim de facilitar a
compreensão do desenho:
      • as variáveis de entrada devem ser identificadas preferencialmente à esquerda, junto
aos respectivos fios;
       • inversores devem ser providos para as variáveis que aparecem negadas na equação;
     • as portas que implementam as operações Booleanas que aparecem na equação
normalmente são posicionadas da esquerda para a direita, seguindo a ordem de avaliação dos
operadores (descrita em 2.3.4).

       No caso de equações na forma soma de produtos (canônica ou simplificada), há um
primeiro nível (desconsiderando-se possíveis inversores), constituído somente por portas E,
onde cada porta E implementa um dos produtos da equação. Há ainda um segundo nível,
constituído por uma porta OU, responsável pela “soma” lógica dos produtos. A figura 2.5
mostra um possível circuito lógico para a equação 2.12.
       Repare que em todas as interseções de fios em que há conexão física, deve haver um
ponto (suficientemente grande), como se fora uma “solda”. Logo, quando não há o referido
ponto na interseção de fios, significa que tais fios estão “eletricamente isolados”.



                                              1o nível                   2o nível
            A

            B

            C




                                                                                                      F




                         Figura 2.5 - Um circuito lógico para soma de produtos.

      O circuito da figura 2.5 pode ainda ser desenhado utilizando-se uma notação
simplificada para os inversores das entradas. Ao invés de se desenhar um inversor para cada
variável que aparece negada na equação, coloca-se um círculo junto a cada entrada de cada
Introdução aos Sistemas Digitais (v.2001/1)     José Luís Güntzel e Francisco Assis do Nascimento       2-16



porta na qual há uma variável negada. A aplicação desse procedimento para o circuito da
figura 2.5 resulta no seguinte desenho:

                                               1o nível                 2o nível

            A
            B
            C




                                                                                                    F




     Figura 2.6 - Um circuito lógico para soma de produtos - outra possível representação.

       No caso de equações na forma produto de somas (canônica ou simplificada), o
primeiro nível é constituído por portas OU, sendo cada uma responsável por uma das “somas”
lógicas da equação. O segundo nível, por sua vez, é constituído por uma porta E, que realiza o
produto lógico das parcelas. A figura 2.7 mostra um possível circuito lógico para a equação
2.7.

                                               1o nível                 2o nível

            A
            B
            C




                                                                                                    F




                         Figura 2.7 - Um circuito lógico para produto de somas.
Introdução aos Sistemas Digitais (v.2001/1)       José Luís Güntzel e Francisco Assis do Nascimento       2-17



       Pelo fato de apresentarem apenas dois níveis de portas (dois níveis lógicos), circuitos
para equações representadas nas formas padrão, canônicas ou simplificadas, são ditos
circuitos em dois níveis (ou lógica a dois níveis).
       Dada a equação canônica de uma função qualquer, o circuito para uma equação
simplificada a partir da canônica possui menos portas e/ou portas de menor complexidade. (A
complexidade relativa de uma porta pode ser medida pelo número de entradas que ela
apresenta). A figura 2.8 mostra o circuito lógico para a equação 2.20, que é a forma mínima
para a função da equação 2.12. Note que este circuito é de menor complexidade que o circuito
da figura 2.6. A complexidade relativa de um circuito lógico pode ser calculada somando-se o
número de entradas das portas. Nos circuitos das figuras 2.6 e 2.7 há 4 portas de 3 entradas e
1 porta de 4 entradas. Então, a complexidade relativa será 4x3+1x4=16. No circuito da figura
2.8 há 2 portas de 2 entradas e 2 portas de 3 entradas. Sua complexidade relativa será
2x2+2x3=10. Claramente, o circuito da figura 2.8 é de menor complexidade que os circuitos
das figuras 2.6 e 2.7. Estes dois são de mesma complexidade relativa. No cálculo da
complexidade relativa, as inversões normalmente não são levadas em conta.
        Circuitos para formas fatoradas podem ser vistos como o caso mais genérico. Em
geral, as formas fatoradas conduzem a circuitos cujo número de níveis lógicos é maior do que
dois. Por isso, circuitos lógicos para formas fatoradas são denominados circuitos multinível
(lógica multinível). Como dito na seção 2.6, as vezes uma forma fatorada pode apresentar
menor número de operações do que a respectiva forma padrão. Quando isso ocorre, o circuito
associado à forma fatorada também será de menor complexidade relativa. Entretanto, se não
ocorrer redução no número de operações, mesmo assim é possível que o circuito para a forma
fatorada seja de menor complexidade relativa, pois o conceito de complexidade relativa
também inclui o número de entradas de cada porta. Então, a maneira mais segura de saber se o
circuito associado à forma fatorada é de menor complexidade ou não é desenhá-lo e somar o
número de entradas. A figura 2.9 mostra o circuito para a equação 2.21, obtida a partir da
equação 2.20 fatorando-se o literal B. Note que o número de operações Booleanas destas
equações é o mesmo: 4. No entanto, a complexidade do circuito da forma fatorada é
3x2+1x3=9, portanto menor do que a complexidade do circuito da figura 2.8.



                                                  1o nível                 2o nível

            A
            B



                                                                                                      F

            C




                             Figura 2.8 - Circuito lógico para a equação 2.20.
Introdução aos Sistemas Digitais (v.2001/1)           José Luís Güntzel e Francisco Assis do Nascimento       2-18



                                      1o nível               2o nível                  3o nível

       A
       C
                                                                                                          F
       B




     Figura 2.9 - Circuito lógico multinível, associado à equação 2.21, a qual está na forma
                                             fatorada.


2.8 Simplificação de Funções Booleanas usando Mapas de
Karnaugh
       O método de simplificação apresentado na seção 2.6 é de aplicabilidade limitada, uma
vez que é bastante difícil certificar-se que todos os pares de mintermos que podiam ser
simplificados foram determinados. Alternativamente àquele método, há outro método de
simplificação baseado na identificação visual de grupos de mintermos passíveis de serem
simplificados. No entanto, para que se possa identificar tais grupos, é necessário que os
mintermos sejam dispostos de maneira mais conveniente, o que será explicado a seguir.
       Na descrição do método de simplificação literal, foi mencionado que os pares de
mintermos que se diferenciam de somente uma variável são passíveis de simplificação.
Observando a ordem com que os mintermos de uma função Booleana qualquer (com, por
exemplo, 3 variáveis) aparecem na tabela verdade, vemos que, se trocarmos o 3° mintermo
com o 4° e trocarmos também o 7° mintermo com o 8°, obteremos uma nova ordem, na qual
quaisquer dois mintermos adjacentes são passíveis de simplificação. É interessante notar
também que o 1° mintermo pode ser simplificado com o 5°, o 2° mintermo pode ser
simplificado com o 6° e assim por diante.
                                              A B C        mintermo
                                              0 0 0         A⋅ B ⋅ C
                                              0 0 1         A ⋅ B ⋅C
                                              0 1 0         A⋅ B ⋅ C
                                              0 1 1         A⋅ B ⋅C
                                              1 0 0         A⋅ B ⋅ C
                                              1 0 1         A⋅ B ⋅ C
                                              1 1 0         A ⋅ B⋅ C
                                              1 1 1         A ⋅ B⋅ C
                        Figura 2.10 - Mintermos para uma função de 3 variáveis.

      Então, usando o novo ordenamento e re-arranjando os mintermos em duas linhas,
temos a seguinte tabela:
Introdução aos Sistemas Digitais (v.2001/1)            José Luís Güntzel e Francisco Assis do Nascimento   2-19



                                        A⋅ B ⋅ C       A⋅ B ⋅C         A⋅ B ⋅C       A⋅ B ⋅ C
                                        A⋅ B ⋅ C       A⋅ B ⋅ C        A ⋅ B⋅ C      A ⋅ B⋅ C

                 Figura 2.11 - Tabela de adjacências para uma função de 3 variáveis.

       Repare que nessa nova tabela, quaisquer dois mintermos adjacentes (na horizontal ou
na vertical) são passíveis de serem simplificados, pois só se diferenciam de uma variável. É
importante ressaltar que esse conceito de adjacência não está restrito aos limites da tabela,
uma vez que os elementos extremos de uma mesma linha (ou de uma mesma coluna) também
são simplificáveis. Isto implica que a tabela de adjacências de mintermos da figura 2.11 pode
e deve ser encarada como uma figura geométrica tridimensional do tipo “toróide” (ou uma
“rosquinha”). A figura a seguir explicita as relações de adjacência dos mintermos para uma
função de três variáveis.


                                              m0        m1              m3            m2

                                              m4        m5              m7            m6


   Figura 2.12 - Simplificações possíveis entre os mintermos de uma função de 3 variáveis.

       É importante ressaltar que o conceito de adjacência é aplicável na horizontal e na
vertical, mas nunca na diagonal. Por exemplo, observe que m0 e m5 não são adjacentes, pois
não estão nem na mesma linha, nem na mesma coluna.
        O processo de simplificação usando a nova disposição inicia pela construção da tabela
em si: os valores da função que se quer simplificar devem ser preenchidos conforme a nova
ordem. Após, identificam-se todos os grupos de mintermos-1 adjacentes entre si. Cada grupo
origina um termo produto, no qual somente as variáveis comuns a todos os mintermos-1
permanecem. Desde que os grupos de mintermos-1 adjacentes tenham sido corretamente
identificados, a simplificação se torna trivial.

Exemplo 2.3: simplificar a função F, cuja tabela verdade encontra-se no item 2.5.2.
     O primeiro passo é construir uma tabela para F, usando a nova disposição dos
mintermos.
                                                  C
                             F                                 AB
                                   BC
                                 A     00     01    11    10

                                                   0      0        0         1        1

                                              A    1      0        1         0        1

                                                        A BC                     B          BC

    Figura 2.13 - Grupos de mintermos-1 adjacentes e termos produto para uma função de 3
                                         variáveis.
Introdução aos Sistemas Digitais (v.2001/1)        José Luís Güntzel e Francisco Assis do Nascimento   2-20



      Após, deve-se identificar todos os grupos de mintermos-1 adjacentes entre si. Cada
grupo de mintermos-1 originará um produto, conforme indicado na figura 213. A equação em
soma de produtos simplificada será o OU entre os produtos encontrados:
                                      F = A B + A BC + BC             (2.22)

2.8.1 Mapas de Karnaugh e Subcubos
       A tabela modificada usada para a identificação dos mintermos-1 adjacentes no
exemplo anterior é denominada mapa de Karnaugh (no caso, para 3 variáveis). Na figura
2.14 são mostrados os mapas de Karnaugh para funções de 2, 3 e 4 variáveis.
                       nome da
                        função                     B
                                          B
                                    A         0    1

                                          0   m0   m1

                                A         1   m2   m3


                       nome da                           C
                        função
                                        BC
                                    A         00   01       11      10

                                          0   m0   m1      m3       m2

                                A         1   m4   m5      m7       m6


                                                                  B

                       nome da                           D
                        função
                                     CD
                                    AB        00   01       11      10

                                        00    m0   m1      m3       m2

                                        01    m4   m5      m7       m6          B

                                A       11 m12     m13     m15      m14

                                        10    m8   m9      m11      m10


                                                                  C
                 Figura 2.14 - Mapas de Karnaugh para funções de 2, 3 e 4 variáveis.
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais
Sistemas digitais

More Related Content

What's hot

Endereçamento IP
Endereçamento IPEndereçamento IP
Endereçamento IPPjpilin
 
Manutenção de Computadores - Aula 1
Manutenção de Computadores - Aula 1Manutenção de Computadores - Aula 1
Manutenção de Computadores - Aula 1Guilherme Nonino Rosa
 
Arquitetura de computadores Módulo 4
Arquitetura de computadores Módulo 4Arquitetura de computadores Módulo 4
Arquitetura de computadores Módulo 4Luis Ferreira
 
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)Leinylson Fontinele
 
Sistema operacional introdução
Sistema operacional introduçãoSistema operacional introdução
Sistema operacional introduçãoCleber Ramos
 
Aula 01 - História da Computação
Aula 01 - História da ComputaçãoAula 01 - História da Computação
Aula 01 - História da ComputaçãoSuzana Viana Mota
 
Aula 04 arquitetura de computadores
Aula 04   arquitetura de computadoresAula 04   arquitetura de computadores
Aula 04 arquitetura de computadoresDaniel Moura
 
Aula 03.2 - Algoritmos, Diagramas de Blocos e Fluxograma
Aula 03.2 - Algoritmos, Diagramas de Blocos e FluxogramaAula 03.2 - Algoritmos, Diagramas de Blocos e Fluxograma
Aula 03.2 - Algoritmos, Diagramas de Blocos e FluxogramaMessias Batista
 
Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à ProgramaçãoMario Sergio
 
Resumo básico de introdução à informática
Resumo básico de introdução à informáticaResumo básico de introdução à informática
Resumo básico de introdução à informáticaDaiana de Ávila
 
Sistemas Operacionais - Aula 07 (Thread e Processos)
Sistemas Operacionais - Aula 07 (Thread e Processos)Sistemas Operacionais - Aula 07 (Thread e Processos)
Sistemas Operacionais - Aula 07 (Thread e Processos)Leinylson Fontinele
 
Programação básica de microcontroladores
Programação básica de microcontroladoresProgramação básica de microcontroladores
Programação básica de microcontroladoresDanilo Morais Pagano
 
Redes de Computadores
Redes de Computadores Redes de Computadores
Redes de Computadores claudioatx
 

What's hot (20)

Endereçamento IP
Endereçamento IPEndereçamento IP
Endereçamento IP
 
Manutenção de Computadores - Aula 1
Manutenção de Computadores - Aula 1Manutenção de Computadores - Aula 1
Manutenção de Computadores - Aula 1
 
Arquitetura de computadores Módulo 4
Arquitetura de computadores Módulo 4Arquitetura de computadores Módulo 4
Arquitetura de computadores Módulo 4
 
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
 
Sistema operacional introdução
Sistema operacional introduçãoSistema operacional introdução
Sistema operacional introdução
 
Aula 01 - História da Computação
Aula 01 - História da ComputaçãoAula 01 - História da Computação
Aula 01 - História da Computação
 
Aula 04 arquitetura de computadores
Aula 04   arquitetura de computadoresAula 04   arquitetura de computadores
Aula 04 arquitetura de computadores
 
Aula01 - Logica de Programação
Aula01 - Logica de ProgramaçãoAula01 - Logica de Programação
Aula01 - Logica de Programação
 
Linguagem assembly
Linguagem assemblyLinguagem assembly
Linguagem assembly
 
Aula 01 instalação de hardware
Aula 01 instalação de hardwareAula 01 instalação de hardware
Aula 01 instalação de hardware
 
Informática Básica - Aula 04 - Software
Informática Básica - Aula 04 - SoftwareInformática Básica - Aula 04 - Software
Informática Básica - Aula 04 - Software
 
Visualg
VisualgVisualg
Visualg
 
Aula 03.2 - Algoritmos, Diagramas de Blocos e Fluxograma
Aula 03.2 - Algoritmos, Diagramas de Blocos e FluxogramaAula 03.2 - Algoritmos, Diagramas de Blocos e Fluxograma
Aula 03.2 - Algoritmos, Diagramas de Blocos e Fluxograma
 
Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à Programação
 
Resumo básico de introdução à informática
Resumo básico de introdução à informáticaResumo básico de introdução à informática
Resumo básico de introdução à informática
 
Sistemas Operacionais - Aula 07 (Thread e Processos)
Sistemas Operacionais - Aula 07 (Thread e Processos)Sistemas Operacionais - Aula 07 (Thread e Processos)
Sistemas Operacionais - Aula 07 (Thread e Processos)
 
Programação básica de microcontroladores
Programação básica de microcontroladoresProgramação básica de microcontroladores
Programação básica de microcontroladores
 
Tecnologias Atuais de Redes - Aula 4 - Comutação
Tecnologias Atuais de Redes - Aula 4 - ComutaçãoTecnologias Atuais de Redes - Aula 4 - Comutação
Tecnologias Atuais de Redes - Aula 4 - Comutação
 
Redes de Computadores
Redes de Computadores Redes de Computadores
Redes de Computadores
 
Aula 08 - Placa Mãe
Aula 08 - Placa MãeAula 08 - Placa Mãe
Aula 08 - Placa Mãe
 

Viewers also liked

Sistemas digitais tocci - 10ª ed.
Sistemas digitais   tocci - 10ª ed.Sistemas digitais   tocci - 10ª ed.
Sistemas digitais tocci - 10ª ed.Isvaldo Souza
 
Usinasnucleares
Usinasnucleares Usinasnucleares
Usinasnucleares DeaaSouza
 
Requerimento atestado de residência
Requerimento atestado de residênciaRequerimento atestado de residência
Requerimento atestado de residênciaJuntaFreguesiaFanhoes
 
Ar condicionado feito
Ar condicionado feitoAr condicionado feito
Ar condicionado feitomiguelefa
 
Automação industrial1 parte1 23_2_2011
Automação industrial1 parte1 23_2_2011Automação industrial1 parte1 23_2_2011
Automação industrial1 parte1 23_2_2011José Carlos Carlos
 
Aula de redacao _ demonstrativa
Aula de redacao _ demonstrativaAula de redacao _ demonstrativa
Aula de redacao _ demonstrativaIsabelly Sarmento
 
Classificacao dos-solos-hrb
Classificacao dos-solos-hrbClassificacao dos-solos-hrb
Classificacao dos-solos-hrbSamuel Nolasco
 
Trabalho sistema solar
Trabalho sistema solarTrabalho sistema solar
Trabalho sistema solargrupocapelo
 
4 sistemas digitais logica de computação
4 sistemas digitais   logica de computação4 sistemas digitais   logica de computação
4 sistemas digitais logica de computaçãoWilsonkentura
 
Ensaios granulometria, inchamento, densidade
Ensaios granulometria, inchamento, densidadeEnsaios granulometria, inchamento, densidade
Ensaios granulometria, inchamento, densidadeAnderson Carvalho
 
Declaração de residência
Declaração de residênciaDeclaração de residência
Declaração de residênciawilson almeida
 

Viewers also liked (20)

Sistemas digitais tocci - 10ª ed.
Sistemas digitais   tocci - 10ª ed.Sistemas digitais   tocci - 10ª ed.
Sistemas digitais tocci - 10ª ed.
 
Usinasnucleares
Usinasnucleares Usinasnucleares
Usinasnucleares
 
Requerimento atestado de residência
Requerimento atestado de residênciaRequerimento atestado de residência
Requerimento atestado de residência
 
Sistemas digitais 1
Sistemas digitais 1Sistemas digitais 1
Sistemas digitais 1
 
Cursos de computação
Cursos de computaçãoCursos de computação
Cursos de computação
 
Vademecum saraiva 17ed2014
Vademecum saraiva 17ed2014Vademecum saraiva 17ed2014
Vademecum saraiva 17ed2014
 
Ar condicionado feito
Ar condicionado feitoAr condicionado feito
Ar condicionado feito
 
Geoprocessamento 5
Geoprocessamento 5Geoprocessamento 5
Geoprocessamento 5
 
Automação industrial1 parte1 23_2_2011
Automação industrial1 parte1 23_2_2011Automação industrial1 parte1 23_2_2011
Automação industrial1 parte1 23_2_2011
 
Aula de redacao _ demonstrativa
Aula de redacao _ demonstrativaAula de redacao _ demonstrativa
Aula de redacao _ demonstrativa
 
Classificacao dos-solos-hrb
Classificacao dos-solos-hrbClassificacao dos-solos-hrb
Classificacao dos-solos-hrb
 
Trabalho sistema solar
Trabalho sistema solarTrabalho sistema solar
Trabalho sistema solar
 
18 controle e automação industrial
18   controle e automação industrial18   controle e automação industrial
18 controle e automação industrial
 
4 sistemas digitais logica de computação
4 sistemas digitais   logica de computação4 sistemas digitais   logica de computação
4 sistemas digitais logica de computação
 
Aula 05-oac-conceitos-de-logica-digital
Aula 05-oac-conceitos-de-logica-digitalAula 05-oac-conceitos-de-logica-digital
Aula 05-oac-conceitos-de-logica-digital
 
Texto injuntivo
Texto injuntivoTexto injuntivo
Texto injuntivo
 
Ensaios granulometria, inchamento, densidade
Ensaios granulometria, inchamento, densidadeEnsaios granulometria, inchamento, densidade
Ensaios granulometria, inchamento, densidade
 
Declaração de residência
Declaração de residênciaDeclaração de residência
Declaração de residência
 
Eletrônica digital aula 01
Eletrônica digital   aula 01Eletrônica digital   aula 01
Eletrônica digital aula 01
 
A questão discursiva
A questão discursivaA questão discursiva
A questão discursiva
 

Similar to Sistemas digitais

Tema 8 diagramadeestrtutura
Tema 8 diagramadeestrtuturaTema 8 diagramadeestrtutura
Tema 8 diagramadeestrtuturaPedro A. Uamusse
 
Microprocessador - Historial, Conceitos,Tipos
Microprocessador - Historial, Conceitos,TiposMicroprocessador - Historial, Conceitos,Tipos
Microprocessador - Historial, Conceitos,TiposHenriqueMateusChigum
 
Diagrama de implantação
Diagrama de implantaçãoDiagrama de implantação
Diagrama de implantaçãoelliando dias
 
Simbologia e Diagramas de Circuitos Eletrônicos
Simbologia e Diagramas de Circuitos EletrônicosSimbologia e Diagramas de Circuitos Eletrônicos
Simbologia e Diagramas de Circuitos EletrônicosFlviaGonalvesFernand1
 
Geração TEC - Help Desk - Ambientes e Sistemas
Geração TEC - Help Desk - Ambientes e SistemasGeração TEC - Help Desk - Ambientes e Sistemas
Geração TEC - Help Desk - Ambientes e SistemasAlan Carlos
 
Automação de sistemas elétricos de potência
Automação de sistemas elétricos de potênciaAutomação de sistemas elétricos de potência
Automação de sistemas elétricos de potênciaAna Ribeiro
 
Sistema Computacao Revisao 1
Sistema Computacao Revisao 1Sistema Computacao Revisao 1
Sistema Computacao Revisao 1Duílio Andrade
 
Aplicação das Redes Neuronais Artificiais do software STATISTICA 7.0: O caso ...
Aplicação das Redes Neuronais Artificiais do software STATISTICA 7.0: O caso ...Aplicação das Redes Neuronais Artificiais do software STATISTICA 7.0: O caso ...
Aplicação das Redes Neuronais Artificiais do software STATISTICA 7.0: O caso ...Ricardo Brasil
 
As motherboard memorias principais
As motherboard memorias principaisAs motherboard memorias principais
As motherboard memorias principaisdgtavares
 
As motherboard memorias principais
As motherboard memorias principaisAs motherboard memorias principais
As motherboard memorias principaiscabaldreams
 
Estrutura básica dos computadores
Estrutura básica dos computadoresEstrutura básica dos computadores
Estrutura básica dos computadoresaamdcarvalho
 
Icc modelos de osi claudio e mika 8ºh
Icc modelos de osi claudio e mika 8ºhIcc modelos de osi claudio e mika 8ºh
Icc modelos de osi claudio e mika 8ºhFrogFAT
 
Introducao arq computador
Introducao arq computadorIntroducao arq computador
Introducao arq computadorPAULO Moreira
 

Similar to Sistemas digitais (20)

Roteiro IOC 01
Roteiro IOC 01Roteiro IOC 01
Roteiro IOC 01
 
Aula 15
Aula   15Aula   15
Aula 15
 
Diagramas uml
Diagramas umlDiagramas uml
Diagramas uml
 
Tema 8 diagramadeestrtutura
Tema 8 diagramadeestrtuturaTema 8 diagramadeestrtutura
Tema 8 diagramadeestrtutura
 
Microprocessador - Historial, Conceitos,Tipos
Microprocessador - Historial, Conceitos,TiposMicroprocessador - Historial, Conceitos,Tipos
Microprocessador - Historial, Conceitos,Tipos
 
Diagrama de implantação
Diagrama de implantaçãoDiagrama de implantação
Diagrama de implantação
 
Simbologia e Diagramas de Circuitos Eletrônicos
Simbologia e Diagramas de Circuitos EletrônicosSimbologia e Diagramas de Circuitos Eletrônicos
Simbologia e Diagramas de Circuitos Eletrônicos
 
Modelagem 21102006_2
Modelagem 21102006_2Modelagem 21102006_2
Modelagem 21102006_2
 
Geração TEC - Help Desk - Ambientes e Sistemas
Geração TEC - Help Desk - Ambientes e SistemasGeração TEC - Help Desk - Ambientes e Sistemas
Geração TEC - Help Desk - Ambientes e Sistemas
 
Automação de sistemas elétricos de potência
Automação de sistemas elétricos de potênciaAutomação de sistemas elétricos de potência
Automação de sistemas elétricos de potência
 
Sistema Computacao Revisao 1
Sistema Computacao Revisao 1Sistema Computacao Revisao 1
Sistema Computacao Revisao 1
 
Aplicação das Redes Neuronais Artificiais do software STATISTICA 7.0: O caso ...
Aplicação das Redes Neuronais Artificiais do software STATISTICA 7.0: O caso ...Aplicação das Redes Neuronais Artificiais do software STATISTICA 7.0: O caso ...
Aplicação das Redes Neuronais Artificiais do software STATISTICA 7.0: O caso ...
 
Trabalho de análise e projeto 2
Trabalho de análise e projeto 2Trabalho de análise e projeto 2
Trabalho de análise e projeto 2
 
As motherboard memorias principais
As motherboard memorias principaisAs motherboard memorias principais
As motherboard memorias principais
 
As motherboard memorias principais
As motherboard memorias principaisAs motherboard memorias principais
As motherboard memorias principais
 
Introdução a Redes de Computadores
Introdução a Redes de ComputadoresIntrodução a Redes de Computadores
Introdução a Redes de Computadores
 
Lista01
Lista01Lista01
Lista01
 
Estrutura básica dos computadores
Estrutura básica dos computadoresEstrutura básica dos computadores
Estrutura básica dos computadores
 
Icc modelos de osi claudio e mika 8ºh
Icc modelos de osi claudio e mika 8ºhIcc modelos de osi claudio e mika 8ºh
Icc modelos de osi claudio e mika 8ºh
 
Introducao arq computador
Introducao arq computadorIntroducao arq computador
Introducao arq computador
 

More from Luiz Henrique

Planejamentopassoapasso
PlanejamentopassoapassoPlanejamentopassoapasso
PlanejamentopassoapassoLuiz Henrique
 
Curso tecnico eletromecanica
Curso tecnico eletromecanicaCurso tecnico eletromecanica
Curso tecnico eletromecanicaLuiz Henrique
 
Processamento digital de sinais
Processamento digital de sinaisProcessamento digital de sinais
Processamento digital de sinaisLuiz Henrique
 
Processamento digital de sinais
Processamento digital de sinaisProcessamento digital de sinais
Processamento digital de sinaisLuiz Henrique
 
Slides teoriadainformacao
Slides teoriadainformacaoSlides teoriadainformacao
Slides teoriadainformacaoLuiz Henrique
 

More from Luiz Henrique (7)

Circuitos
CircuitosCircuitos
Circuitos
 
Planejamentopassoapasso
PlanejamentopassoapassoPlanejamentopassoapasso
Planejamentopassoapasso
 
Curso tecnico eletromecanica
Curso tecnico eletromecanicaCurso tecnico eletromecanica
Curso tecnico eletromecanica
 
Processamento digital de sinais
Processamento digital de sinaisProcessamento digital de sinais
Processamento digital de sinais
 
Processamento digital de sinais
Processamento digital de sinaisProcessamento digital de sinais
Processamento digital de sinais
 
Slides teoriadainformacao
Slides teoriadainformacaoSlides teoriadainformacao
Slides teoriadainformacao
 
Apostila pds
Apostila pdsApostila pds
Apostila pds
 

Sistemas digitais

  • 1. 1 Introdução Um sistema pode ser definido como sendo um conjunto de elementos que são interligados de alguma maneira para compor um todo e assim realizar funcionalidade específica. Por exemplo, um aparelho de som hi-fi é composto de vários componentes, tais como compartimento para discos e fitas, amplificador e auto-falantes. Todos são interconectados por cabos elétricos. Um sistema também possui uma função bem definida, a qual pode ser identificada a partir das funcionalidades de seus componentes. Por exemplo, a função do aparelho de som hi-fi é transformar a informação armazenada em discos e/ou fitas em som audível, o que é algo que nenhum dos componentes do sistema pode realizar por si só. Neste sentido, pode-se identificar dois aspectos fundamentais em qualquer sistema: sua estrutura e seu comportamento. A estrutura reflete os componentes e como eles estão interconectados e o comportamento reflete a funcionalidade do sistema. Sistemas em que o número de componentes é alto e/ou as inter-relações entre eles não são muito claras ou difíceis de serem estabelecidas e entendidas são ditos complexos. No projeto de tais sistemas complexos, a identificação de alguma ordem ou regularidade é de extrema importância, o que normalmente requer uma abordagem estruturada e sistemática. Dependendo de quais aspectos se está tentando identificar, deve-se usar um tipo de representação e um nível de abstração adequados. Os três tipos mais comuns de representação são o comportamental, o estrutural e o físico. Uma representação comportamental captura o sistema como uma caixa preta e se concentra na especificação do comportamento como uma função dos valores de entrada e o tempo (ver figura 1.1). Em outras palavras, uma representação comportamental descreve a funcionalidade mas não a implementação de um dado sistema, definindo as respostas da caixa preta para qualquer combinação dos valores de entrada mas sem descrever como projetar ou construir o sistema usando dados componentes. x z z=f(x,y) y Figura 1.1 - Sistema como uma caixa preta. Uma representação estrutural define a caixa preta como um conjunto de componentes e suas interconexões. Diferente da representação comportamental, a representação estrutural especifica a implementação do sistema sem qualquer referência à sua funcionalidade. Isto é ilustrado na figura 1.2. Obviamente, muitas vezes a funcionalidade pode ser derivada a partir dos componentes interconectados. No entanto, derivar a funcionalidade de um sistema desta maneira é muito difícil, principalmente se o sistema possui um grande número de componentes.
  • 2. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-2 x a z c y b Figura 1.2 - Sistema como um conjunto de componentes interconectados. Uma representação física especifica as características físicas da caixa preta, indicando as dimensões e as posições de cada componente e conexão existentes na descrição estrutural do sistema. Enquanto a representação estrutural fornece a conectividade do sistema, somente a representação física é que descreve precisamente as relações espaciais dos vários componentes. Ou seja, a representação física é usada para descrever o sistema depois que ele foi fabricado, especificando seu peso, tamanho, consumo de potência e posição de cada pino de entrada ou saída. Uma maneira natural e conveniente para representar a estrutura de um sistema é o uso de diagramas de bloco, onde componentes são representados por retângulos, chamados blocos, e conexões que são denotadas por linhas interligando os blocos. A figura 1.3 mostra um diagrama do aparelho de som hi-fi. Compartimento Compartimento para discos Amplificador para fitas Auto-falante Auto-falante esquerdo direito Figura 1.3 - Diagrama de blocos para o aparelho de som hi-fi. O processo de projeto de sistemas, principalmente produtos eletrônicos em geral e sistemas digitais em particular, consiste sempre de pelo menos três fases, cada uma centrada em uma das representações de projeto: 1. derivar uma representação comportamental da funcionalidade do produto 2. converter esta representação para uma representação estrutural contendo componentes de uma dada biblioteca de componentes 3. produzir uma representação física que especifica como montar e fabricar o produto Qualquer projeto pode ser realizado seguindo estes passos usando diferentes níveis de abstração. Em um nível de abstração apenas determinados detalhes são representados. Normalmente, os detalhes capturados em uma dada fase do projeto dependem da complexidade do sistema. Por exemplo, é praticamente impossível projetar um microprocessador inteiro usando apenas portas lógicas básicas. Normalmente, inicia-se o projeto pelos blocos básicos no nível lógico. A seguir, estes blocos são interconectados para compor um sistema mais complexo, como por exemplo um microprocessador.
  • 3. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-3 Na próxima seção, serão abordados outros formalismos para a representação da estrutura e do comportamento de sistemas, além dos níveis de abstração mais comumente utilizados no projeto de sistemas digitais. 1.1 Sistemas Digitais Este texto tem por objetivo introduzir o estudo de sistemas digitais, dando especial atenção aos componentes básicos destes sistemas. Um sistema digital pode ser definido como um conjunto de componentes interconectados que processam informações em forma digital ou discreta. Na maioria dos sistemas digitais, os componentes básicos utilizados são dispositivos eletrônicos chamados circuitos integrados (CIs). As ligações entre estes componentes eletrônicos são conexões físicas através das quais a informação digital pode ser transmitida. Sistemas digitais modernos abrangem uma vasta gama de graus de complexidade. Os componentes disponíveis para a construção de sistemas digitais vão desde chaves do tipo liga- desliga até computadores completos. O número de componentes em um sistema digital pode variar de um, dois ou de milhares de componentes. Obviamente, quanto mais componentes são necessários à implementação de um sistema digital, mais complexo ele é e, conseqüentemente, mais difícil de entender seu funcionamento e de projetá-lo. Daí a importância do uso de níveis de abstração no processo de projeto de sistemas digitais. Um nível de abstração, ou de granularidade, é caracterizado pelo tipo de objetos utilizados na representação. Em geral, pode-se identificar quatro diferentes tipos de objetos em um produto eletrônico: transistores, portas, registradores e processadores. Os correspondentes níveis de abstração são sumarizados na tabela 1.1. Tabela 1.1 – Níveis de abstração. Nível Comportamento Estrutura Físico Transistor Equações diferenciais, Transistores, Células analógicas e diagramas corrente- resistores, digitais voltagem capacitores Portas Equações Booleanas, Portas lógicas, Módulos, unidades máquinas de estado Flip-flops finitas (FSM) Registrador Algoritmos, flowcharts, Somadores, Microcircuitos conjunto de instruções, comparadores, generalizações de FSMs contadores, registradores Processador Especificação Processadores, Placas de circuito executável, programas controladores, impresso, módulos ASICs multicircuitos Como mostrado na tabela 1.1, os principais componentes no nível de transistores são transistores, resistores e capacitores, que são combinados para formar circuitos analógicos e digitais que realizam uma dada funcionalidade. Esta funcionalidade é usualmente descrita por um conjunto de equações diferenciais ou por algum tipo de relacionamento entre corrente e tensão. A representação física destes circuitos, denominados células, podem consistir de componentes do nível de transistores e as conexões que os interconectam.
  • 4. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-4 Os principais componentes do nível de portas são portas lógicas e flip-flops. Portas lógicas são circuitos especiais que implementam operações Booleanas, tais como E e OU. Um flip-flop é um elemento básico de memória que é capaz de armazenar um bit de informação, podendo assumir o valor 0 (falso) ou 1 (verdadeiro). Portas e flip-flops são células digitais que podem ser grupadas para formar módulos ou unidades aritméticas e de memória. Os módulos são utilizados como componentes básicos no nível de registradores. O comportamento de cada módulo pode ser descrito com o uso de equações Booleanas e diagramas de máquinas de estados finitas (Finite State Machines - FSMs). No nível de registradores, os principais componentes são unidades aritméticas e de memória, tais como, somadores, comparadores, multiplicadores, contadores, registradores, bancos de registradores, filas, etc. Cada um destes componentes é um módulo com dimensões fixas, um atraso de propagação e um conjunto de posições (fixas) para as entradas e saídas do módulo. Estes componentes do nível de registradores podem ser montados e interconectados em microcircuitos, que podem ser usados como componentes básicos no nível de abstração acima. Usualmente, estes microcircuitos são descritos por fluxogramas, conjuntos de instruções, diagramas de FSMs ou tabelas de estados. O mais alto nível de abstração apresentado na tabela é o nível de processador, onde os componentes básicos são processadores, memórias, controladores e interfaces, além de circuitos de aplicação específica (Application Specific Integrated Circuits - ASICs). Geralmente, um ou mais destes componentes são montados em uma placa de circuito impresso e conectados com fios que são impressos na placa. O comportamento de sistemas compostos destes componentes do nível de processadores é usualmente descrito utilizando-se uma linguagem natural, uma especificação executável em alguma linguagem de descrição de hardware (Hardware Description Language - HDL), ou um algoritmo ou programa escrito em uma linguagem de programação convencional. A representação estrutural mais comum para sistemas digitais é o diagrama de blocos. Dependendo do nível de abstração, cada bloco pode representar objetos correspondentes ao nível, por exemplo, portas lógicas no nível de abstração de portas; registradores, somadores, etc. no nível de registradores; e controladores e ASICs no nível de processador. As interconexões representam as conexões entre os objetos. A figura 1.4 mostra o diagrama de blocos para a unidade lógica e aritmética (ULA) e os registradores de entrada e saída, os quais constituem partes essenciais de qualquer sistema computacional. No diagrama de blocos, não há detalhamento dos componentes, mas apenas uma idéia genérica da estrutura como um todo. Cada bloco pode ser mostrado com mais detalhes, em algum outro diagrama de blocos mais detalhado, ou num diagrama esquemático. Isto revela a natureza hierárquica existente por detrás de qualquer projeto de sistema. R1 R2 4 4 1 Cout ULA controle 1 4 R3 Figura 1.4 - Diagrama de blocos genéricos de uma ULA e seus registradores.
  • 5. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-5 A figura 1.5 mostra o diagrama de blocos mais detalhado para a unidade lógico- aritmética (ULA) da figura 1.4. Já a figura 1.6 detalha o somador completo, que é o tipo de bloco usado para compor a ULA. R13 R2 3 R12 R2 2 R11 R2 1 R10 R2 0 Controle xor 3 xor 2 xor 1 xor 0 I3 I2 I1 I0 Ci Ci Ci Ci FAD 3 FAD 2 FAD 1 FAD 0 Cout Co Co Co Co R3 3 R3 2 R3 1 R3 0 Figura 1.5 - Diagrama de blocos mais detalhado de uma ULA. R1 i Ii FAD i Ci X0 A0 A1 A2 X1 O0 Co R3 i Figura 1.6 - Esquemático de um somador completo (full-adder - FAD). Para representar o comportamento de sistemas digitais no nível de portas lógicas usam- se tabelas verdades e equações Booleanas. No nível de registradores, usa-se algum tipo de linguagem para descrever as transferências de dados entre os registradores. Para possibilitar a simulação do sistema no nível de processador são geralmente utilizadas linguagens procedurais para descrever os algoritmos na forma de programas executáveis. Por exemplo, para a estrutura da ULA dada na figura 1.4, a descrição algorítmica poderia ser: se (controle=0) R3_ R1+R2; senão R3_ R1-R2; Esta descrição indica que o valor de controle determina se a ULA realizará uma soma ou uma subtração.
  • 6. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-6 1.2 Tipos de Dados e Representação de Dados Nesta seção, iremos estudar os tipos de dados mais comumente encontrados nos sistemas digitais, mostrando como eles podem ser codificados em formato binário. Os dados encontrados nos sistemas digitais (note-se que os computadores atuais são sistemas digitais) podem ser classificados em uma das seguintes categorias: • Números usados em cálculos aritméticos; • Letras do alfabeto, usadas no processamento de dados; • Símbolos discretos, usados para diversos propósitos Todos os dados são representados em formato binário porque o uso deste formato facilita o projeto de circuitos eletrônicos que exibem duas condições possíveis, as quais são convenientemente interpretadas como os valores 0 e 1 de um dígito binário (bit). Tais circuitos eletrônicos são projetados para realizar um repertório de operações necessárias que são disponibilizadas nos computadores. 1.2.1 Notação Posicional Todos os sistemas numéricos utilizados pelo ser humano são posicionais. Em um sistema posicional, cada dígito possui um peso associado. Assim, o valor de um dado número corresponde a uma soma ponderada de seus dígitos, como por exemplo: 1999 = 1 × 1000 + 9 × 100 + 9 × 10+ 9 × 1 Note que, no número anterior, o peso de cada posição é 10i, onde i corresponde à posição do dígito, contada a partir da direita, e sendo i=0. para o dígito mais à direita. Em geral, qualquer número decimal D , no formato d1 d0 d-1 d-2 tem como valor: D = d1 × 101 + d0 × 100 + d-1 × 10-1 + d-2 × 10-2 onde 10 é chamado base. Num sistema posicional genérico, a base pode ser qualquer valor inteiro r, e um dígito numa posição i assume peso ri . Logo, podemos escrever o formato genérico de um número em tal sistema como sendo dm-1 dm-2 … d1 d0 . d-1 d-2 … d-n onde há m dígitos à esquerda do ponto e n dígitos à direita do ponto. Note que, se não houver ponto, assume-se que este está à direita do dígito mais à direita. O valor deste número é o somatório dos produtos de cada dígito pela correspondente potência da base: m−1 D= ∑d i × ri i =− n
  • 7. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-7 Para um número qualquer, o dígito mais à direita é comumente referenciado como dígito menos significativo (least-significative bit - LSB, em inglês), ao passo que o dígito mais à esquerda é denominado dígito mais significativo (most-significative bit – MSB, em inglês). Desde que sistemas digitais usam dígitos binários, estaremos particularmente interessados no sistema binário. Neste sistema, a base utilizada é 2, de modo que um número em binário assume a forma: bm-1 bm-2 … b1 b0 . b-1 b-2 … b-n e seu valor pode ser encontrado por m −1 B= ∑b ×2 i i i= −n Similarmente ao sistema decimal, o ponto no sistema binário é denominado ponto binário. Normalmente, quando se trabalha com sistemas de base não-decimal, indica-se a base subscrevendo-se o valor da base à direita do número. Exemplos: 101012 = 1 × 16 + 0 × 8 + 1 × 4 + 0 × 2 + 1 × 1 = 2110 .11112 = 1 × 0.5 + 1 × 0.25 + 1 × 0.125 + 1 × 0.0625 = 0.937510 1.2.2 Números Octais e Hexadecimais Além do sistema decimal e do sistema binário, dois outros sistemas são de grande importância por proverem representações convenientemente compactas de números grandes. Trata-se dos sistemas octal (base 8) e hexadecimal (base 16). No sistema octal, cada dígito representa um valor entre 0 e 7. Já no sistema hexadecimal, cada dígito representa um valor entre 0 e 15. Para representar os valores maiores do que 9 usando apenas um dígito, utilizam-se letras. Assim, o valor 10 é representado por A, o 11, por B e assim por diante, até 15 (que é representado por F). A tabela 1.2 mostra os inteiros binários de 0 a 10001, juntamente com os equivalentes octal, decimal e hexadecimal. Note que cada dígito octal pode ser representado por 3 dígitos binários, enquanto que um dígito hexadecimal pode ser representado por 4 dígitos binários. Tabela 1.2 - Representação de inteiros em binário, octal, decimal e hexadecimal. Binário Octal Decimal Hexa 0 0 0 0 1 1 1 1 10 2 2 2 11 3 3 3 100 4 4 4 101 5 5 5 110 6 6 6
  • 8. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-8 111 7 7 7 1000 10 8 8 1001 11 9 9 1010 12 10 A 1011 13 11 B 1100 14 12 C 1101 15 13 D 1110 16 14 E 1111 17 15 F 10000 20 16 10 10001 21 17 11 A tabela 1.3 mostra os inteiros binários de 0 a 10001 e seus equivalentes octal, decimal e hexadecimal codificados em binário. Tabela 1.3 - Representação de inteiros em binário, octal, decimal e hexadecimal. Binário Octal Decimal Hexadecimal codificado em codificado em codificado em binário binário binário 0 000 0000 0000 1 001 0001 0001 10 010 0010 0010 11 011 0011 0011 100 100 0100 0100 101 101 0101 0101 110 110 0110 0110 111 111 0111 0111 1000 001 000 1000 1000 1001 001 001 1001 1001 1010 001 010 0001 0000 1010 1011 001 011 0001 0001 1011 1100 001 100 0001 0010 1100 1101 001 101 0001 0011 1101 1110 001 110 0001 0100 1110 1111 001 111 0001 0101 1111 10000 010 000 0001 0110 0001 0000 10001 010 001 0001 0111 0001 0001 Para se converter um número binário em octal separam-se os dígitos em grupos de 3, a partir do ponto binário para a esquerda. Após, substitui-se cada grupo pelo dígito octal correspondente. Exemplo:
  • 9. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-9 10100111002 = 001 010 011 100 = 12348 E para converter-se um número em binário para hexadecimal, o procedimento é análogo, exceto que os grupos deverão ser de 4 dígitos. Exemplo 1.1: converter-o número binário que segue para hexadecimal 10100111002 = 0010 1001 1100 = 29C16 Note que nestes exemplos foram adicionados zeros à esquerda, de modo que todos os grupos tivessem 3 dígitos, no caso da conversão direta binário-octal, e 4 dígitos no caso da conversão direta binário-hexadecimal. A conversão no sentido oposto também é bastante simples. Substitui-se cada dígito octal ou hexadecimal pelo conjunto de 3 ou 4 dígitos binários que o representa. Exemplo 1.2: converter-os números que seguem para binário. 7658 = 1111101012 FED16 = 1111111011012 1.2.3 Conversão entre Sistemas Numéricos Como regra geral, não se pode converter um número representado numa determinada base para outra base simplesmente substituindo-se dígitos de uma base pelos seus equivalentes na outra. Isto funciona somente nos casos em que ambas bases são potências de um mesmo número (como os casos mostrados anteriormente). Quando não é este o caso, será necessário utilizar-se um procedimento mais complexo o qual requer operações aritméticas.. A seguir, será mostrado como converter um número em qualquer base para a base 10, e vice- versa, usando aritmética de base 10. Como indicado na sub-seção 1.2.1, o valor de um número em qualquer base é representado pela fórmula: m−1 D= ∑d i × ri i =− n Onde r é a base do número, m indica o número de dígitos à esquerda do ponto e n indica o número de dígitos à direita do ponto. Uma outra alternativa à equação anterior é re-escrever a parte inteira da equação por: D = ((…(( dm-1 ) r + dm-2 ) r + … ) r + d1 ) r + d0 Desta equação, é possível derivar um procedimento iterativo que obtém cada um dos dígitos do número a partir do mais significativo, acumulando a soma decimal ponderada.
  • 10. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-10 Essa equação é também um bom ponto de partida para converter um número decimal D para outra base r qualquer. Se dividirmos D por r na equação, a parte parametrizável da equação representa o quociente Q = (…(( dm-1 ) r + dm-2 ) r + … ) r + d1 com resto R = d0 . Em outras palavras, d0 é obtido como o resto da divisão inteira de D por r. Além disso, como o quociente Q na equação anterior tem o mesmo formato do número original, sabe-se que sucessivas divisões por r permitem obter-se sucessivos dígitos de D, da direita para a esquerda, até que todos os dígitos de D tenham sido encontrados. 1.2.4 Soma e Subtração de Números Binários O procedimento para a adição e subtração de números binários é semelhante ao que se usa para números decimais. A principal diferença está nas tabelas de adição e subtração, que contêm apenas os dígitos 0 e 1. Para somar dois números decimais, faz-se a soma de um par de dígitos de cada vez, começando com o dígito menos significativo de cada número. Se a soma de um dado par é igual ou maior que 10, o excesso (também chamado de transporte ou carry) é usado na soma do próximo par de dígitos mais significativos. Para somar dois números binários, o procedimento é basicamente o mesmo, mas usa-se um carry inicial c0 igual a 0. A tabela 1.4 mostra a soma si e o bit de carry ci+1 para cada possível combinação de xi, yi e ci. Tabela 1.4 - Adição de números binários. xi + yi + ci si ci+1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 Exemplo 1.3: Somar os números binários 987 e 123. 512 256 128 64 32 16 8 4 2 1 x 1 1 1 1 0 1 1 0 1 1 y 1 1 1 1 0 1 1 carries 1 1 1 1 1 1 1 0 1 1 x+y 1 0 0 0 1 0 1 0 1 1 0 S10 S9 S8 S7 S6 S5 S4 S3 S2 S1 S0 Primeiro se soma x0 = 1 e y0 = 1, produzindo carry c1 = 1 e soma s0 = 0. Em seguida, se soma x1 = 1, y1 = 1 e c1 = 1, obtendo-se carry c2 = 1 e soma s1 = 1. Este processo continua até se gerar c11 = 1 e carry s10 = 0.
  • 11. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-11 A subtração de números binários é realizada de maneira semelhante, subtraindo-se um par de bits, um a cada vez, no entanto, é sempre gerado um bit de empréstimo (borrow) e não um bit de carry, e um bit de diferença ao invés de um bit de soma. A tabela 1.5 mostra a diferença di e o bit de borrow bi+1 para cada possível combinação de xi, yi e bi. Tabela 1.5 - Subtração de números binários. xi - yi - bi di bi+1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 O procedimento para subtração é muito semelhante ao de adição: a partir dos dígitos menos significativos, gera-se os bits de borrow b1 e de diferença d0, de acordo com a Tabela 4, e assim por diante, da direita para a esquerda, até o bit de borrow mais significativo bm e o bit de diferença mais significativo dm-1. Exemplo 1.4: Subtrair o número binário 123 de 987. 512 256 128 64 32 16 8 4 2 1 x 1 1 1 1 0 1 1 0 1 1 y 1 1 1 1 0 1 1 borrows 0 0 1 1 0 0 0 0 0 x-y 1 1 0 1 1 0 0 0 0 0 D9 D8 D7 D6 D5 D4 D3 D2 D1 d0 Primeiro faz-se a subtração entre x0 = 1 e y0 = 1, produzindo borrow b1 = 0 e diferença d0 = 0. Em seguida, faz-se a subtração de y1 = 1, b1 = 1 de x1 = 1, obtendo-se borrow b2 = 0 e soma s1 = 0. Este processo continua até se gerar d9 = 1. 1.2.5 Representação de Números Negativos Até o presente momento, tratamos somente de números positivos. Números negativos podem ser representados de diversas formas. A representação que usamos normalmente é denominada sinal-magnitude. No entanto, a maioria dos computadores usa o sistema de representação em complemento, para facilitar a implementação dos circuitos aritméticos. 1.2.5.1 Representação de números binários positivos e negativos Números binários positivos podem ser representados como números sem sinal. No entanto, para se representarem números negativos, é necessária a utilização de alguma
  • 12. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-12 notação. A forma de representação mais simples é sinal-magnitude. Nesta representação, o número consiste de duas partes: a magnitude e o sinal. A magnitude expressa a quantidade e o sinal indica se a quantidade é positiva ou negativa. Quando sinal-magnitude é usado para números binários, o sinal é representado pelo dígito mais significativo: “0’” indica sinal positivo ao passo que “1” indica sinal negativo. Assim, os números +9 e –9 escritos em binário se diferenciam somente pelo bit mais significativo: +9 = 01001 -9 = 11001 Note que foram necessários 5 bits para representar esses números: 4 para a magnitude e 1 (o mais da esquerda) para representar o sinal. Dado um número binário com n bits, o intervalo de representação possível será de - (2 -1) até +(2n-1-1). Note também que há duas representações possíveis para o zero: -0 e +0. n-1 1.2.5.2 Sistema de representação em complementos A representação em complemento foi criada com o intuito de simplificar a operação de subtração e manipulações lógicas, evitando a necessidade de comparações de magnitude e sinal. Dado um sistema de base r qualquer, existem dois tipos de complementos possíveis: • Complemento de r • Complemento de (r-1). Iniciemos o estudo pelo complemento de (r-1). Seja um número N na base r representado com n dígitos. O complemento de (r-1) de N é definido por (rn-1) – N. Para números decimais, r = 10, (r-1) = 9 e o complemento de 9 de N é dado por (10n-1) – N. Exemplo 1.5: encontrar o complemento de 9 dos números decimais que seguem. 98710: (1000 - 1) - 987 = 999 - 987 = 12 54670010: 1238910: No caso de N ser um número binário, r = 2, (r-1) = 1 e o complemento de 1 de N é dado por (2n-1) – N. Exemplo 1.6: encontrar o complemento de 1 dos números binários que seguem. 101112: (32 - 1) - 23 = 31 - 23 = 8 = 10002 10110012: 00011112:
  • 13. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-13 Já o complemento de r de um número N na base r representado com n dígitos é definido por rn – N, se N ≠ 0 e 0 se N = 0. Comparando-se com o complemento de (r-1), notamos que o complemento de r é obtido somando-se 1 ao complemento de (r-1). Para números decimais, r = 10, e o complemento de 10 de N é dado por 10n – N. O complemento de r de um número binário é chamado complemento de dois e a representação derivada dele é chamada representação em complemento de dois. Para números binários, o sinal do número é representado pelo bit mais significativo, que é 0 para números positivos e 1 para negativos. Assim, pode-se obter um número negativo a partir de um número positivo, complementando-se cada bit (i.e., substituindo-se cada 0 por 1 e cada 1 por 0), incluindo o bit de sinal e somando-se 1. O bit de carry que ocorra deve ser ignorado. Portanto, quando se complementa o 0 e o bit de carry mais significativo é descartado, obtém-se 0 como complemento de dois. Isto mostra que o 0 tem uma representação única em complemento de dois. Como o 0 é um número positivo, se terá um número positivo não-zero a menos do que números negativos, ou seja, o intervalo de números que podem ser representados em complemento de dois é -(2n-1) até +(2 n-1 - 1). Exemplo 1.7: determine o intervalo de representação para números binários com 4 dígitos (bits), assumindo-se o uso de complemento de 2 Pelas fórmulas acima, conclui-se que o intervalo de representação para números de quatro bits em complemento de 2 vai de -2 3 = -8 até 2 3 - 1 = +7. Uma maneira simples de se obter o complemento de dois de um número binário é fazer o complemento do número e somar 1 a ele. Exemplo 1.8: encontre o complemento de 2 do número binário que segue. 101112: 010002 + 12 = 010012 1.2.5.3 Adição e subtração em complemento de dois Como dito anteriormente, a representação em complemento de dois foi desenvolvida para facilitar a implementação de adição e subtração de números binários. Com o complemento de dois é possível realizar somas e subtrações de números com e sem sinal usando o mesmo circuito lógico. Para somar números em complemento de dois, usa-se a aritmética binária mostrada na tabela 1.4 e ignora-se qualquer bit de carry além do bit de sinal. Por exemplo, somar dois números positivos gera um resultado positivo correto: 0010 (+2) + 0100 (+4) 0110 (+6) Da mesma maneira, somar dois números negativos sempre produzirá uma soma negativa correta, desde que seja ignorado o bit de carry além do bit de sinal:
  • 14. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-14 1110 (-2) + 1100 (-4) 1010 (-6) No entanto, existem casos em que uma operação produz um resultado que excede o intervalo de representação do sistema numérico, criando uma condição chamada estouro ou overflow. Via de regra, a adição de dois números com sinais diferentes nunca produz um overflow. Entretanto, quando se somam dois números com o mesmo sinal que produz uma soma que é maior que o maior número representável, pode-se obter um resultado incorreto. Por exemplo, 0100 (+4) + 0101 (+5) 1001 (-7) Do mesmo modo, 1100 (-4) + 1011 ( -5) 0111 (+7) Como os exemplos sugerem, é possível identificar uma regra simples para detectar overflow em adições: ocorre um overflow sempre que o sinal da soma é diferente do sinal dos operandos. Mas, como será visto, para implementar um circuito implementando a soma, é mais fácil identificar oveflow usando a seguinte regra: ocorre um overflow sempre que os bits de carry para o bit de sinal e a partir do bit de sinal são diferentes. Para realizar a subtração em complemento de dois, pode-se usar o mesmo procedimento usado para números binários sem sinal e as regras para a detecção de overflow são as mesmas da adição. Mas, para implementar a subtração não se usa este procedimento. Ao invés disto, faz-se o complemento de dois do número que se quer subtrair (subtraendo) e faz-se a soma dele com o número do qual vai se subtrair. Por exemplo, 0010 (+2) + 1100 Complemento de dois de (+4) 000 Carries 1110 ( -2) Em complemento de dois Para se implementar esta subtração basta um circuito complementador e um somador. Como se está realizando uma adição, a regra para detecção de overflow é a da adição. Exercícios Exercício 1.1 - Realizar as conversões indicadas a seguir. a) 179 para binário
  • 15. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-15 179 ÷ 2 = 89 resto = 1 (dígito menos significativo) 89 ÷ 2 = 44 resto = 1 b) 467 para octal 467 ÷ 8 = 58 resto = 3 (dígito menos significativo) 58 ÷ 8 = c) 3417 para hexadecimal 3417 ÷ 16 = Exercício 1.2 - Encontrar a representação em complemento de r para os exemplos anteriores. 98710 : 1000 - 987 = 13 54670010: 1238910: 101112: 32 - 23 = 9 = 10012 10110012: 00011112:
  • 16. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 1-16 Exercício 1.3 - Encontrar, para os exemplos anteriores, a representação em complemento de 2 usando operações de complemento. 10110012: 00011112: Bibliografia Suplementar [1] GAJSKI, Daniel D. Principles of Digital Design, New Jersey: Prentice Hall, 1997 (ISBN 0-13-301144-5) [2] MANO, M. Morris; Computer Engineering: Hardware Design. New Jersey: Prentice Hall, 1988 (ISBN 0-13-162926-3)
  • 17. 2 Álgebra Booleana e Circuitos Lógicos Uma álgebra Booleana pode ser definida com um conjunto de operadores e um conjunto de axiomas, que são assumidos verdadeiros sem necessidade de prova. Em 1854, George Boole introduziu o formalismo que até hoje se usa para o tratamento sistemático da lógica, que é a chamada Álgebra Booleana. Em 1938, C. E. Shannon aplicou esta álgebra para mostrar que as propriedades de circuitos elétricos de chaveamento podem ser representadas por uma álgebra Booleana com dois valores. Diferentemente da álgebra ordinária dos reais, onde as variáveis podem assumir valores no intervalo (-∞;+∞), as variáveis Booleanas só podem assumir um número finito de valores. Em particular, na álgebra Booleana de dois valores, cada variável pode assumir um dentre dois valores possíveis, os quais podem ser denotados por [F,V] (falso ou verdadeiro), [H,L] (high and low) ou ainda [0,1]. Nesta disciplina, adotaremos a notação [0,1], a qual também é utilizada em eletrônica digital. Como o número de valores que cada variável pode assumir é finito (e pequeno), o número de estados que uma função Booleana pode assumir também será finito, o que significa que podemos descrever completamente as funções Booleanas utilizando tabelas. Devido a este fato, uma tabela que descreva uma função Booleana recebe o nome de tabela verdade, e nela são listadas todas as combinações de valores que as variáveis de entrada podem assumir e os correspondentes valores da função (saídas). 2.1 Operações Básicas da Álgebra Booleana (ou Álgebra de Chaveamento) Na álgebra Booleana, existem três operações ou funções básicas. São elas, operação OU, operação E e complementação. Todas as funções Booleanas podem ser representadas em termos destas operações básicas. 2.1.1 Operação OU (Adição Lógica) Uma definição para a operação OU, que também é denominada adição lógica, é: “A operação OU resulta 1 se pelo menos uma das variáveis de entrada vale 1”. Como uma variável Booleana ou vale 1 ou vale 0, e como o resultado de uma operação qualquer pode ser encarado como (ou atribuído a) uma variável Booleana, basta que definamos quando a operação vale 1. Automaticamente, a operação resultará 0 nos demais casos. Assim, pode-se dizer que a operação OU resulta 0 somente quando todas as variáveis de entrada valem 0. Um símbolo possível para representar a operação OU é “+”, tal como o símbolo da adição algébrica (dos reais). Porém, como estamos trabalhando com variáveis Booleanas,
  • 18. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-2 sabemos que não se trata da adição algébrica, mas sim da adição lógica. Outro símbolo também encontrado na bibliografia é “∨”. Listando as possibilidades de combinações entre dois valores Booleanos e os respectivos resultados para a operação OU, tem-se: 0+0 = 0 0+1 = 1 1+0 = 1 1+1 = 1 Note que a operação OU só pode ser definida se houver, pelo menos, duas variáveis envolvidas. Ou seja, não é possível realizar a operação sobre somente uma variável. Devido a isso, o operador “+” (OU) é dito binário. Nas equações, não costuma-se escrever todas as possibilidades de valores. Apenas adotamos uma letra (ou uma letra com um índice) para designar uma variável Booleana. Com isso, já se sabe que aquela variável pode assumir ou o valor 0 ou o valor 1. Então, supondo que queiramos demonstar o comportamento da equação A+B (lê-se A ou B), poderíamos fazê-lo utilizando uma tabela verdade, como segue: A B A+B 0 0 0 0 1 1 1 0 1 1 1 1 Da mesma forma, podemos mostrar o comportamento da equação A+B+C (lê-se A ou B ou C) por meio de uma tabela verdade. Como na equação há somente o símbolo “+”, trata- se da operação OU sobre três variáveis. Logo, pode-se aplicar diretamente a definição da operação OU: o resultado será 1 se pelo menos uma das variáveis de entrada valer 1. A B C A+B+C 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 É importante notar que, devido ao fato de haver somente um operador na equação, pode-se também avaliar a equação decompondo-a em pares. Por exemplo, pode-se primeiramente achar o resultado de A+B, para depois operar os valores resultantes com os respectivos valores de C. Esta propriedade é conhecida como associativa. Também a ordem em que são avaliadas as variáveis A, B e C é irrelevante (propriedade comutativa). Estas propriedades são ilustradas pela tabela verdade a seguir. Nela, os parêntesis indicam subexpressões já avaliadas em coluna imediatamente à esquerda. Note que os valores das
  • 19. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-3 colunas referentes às expressões A+B+C, (A+B)+C e (B+C)+A são os mesmos (na mesma ordem). A B C A+B+C A+B (A+B)+C B+C (B+C)+A 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 2.1.2 Operação E (Multiplicação Lógica) A operação E, ou multiplicação lógica, pode ser definida da seguinte forma: “A operação E resulta 0 se pelo menos uma das variáveis de entrada vale 0”. Pela definição dada, pode-se deduzir que o resultado da operação E será 1 se, e somente se, todas as entradas valerem 1. O símbolo usualmente utilizado na operação E é “⋅”, porém outra notação possível é “∧”. Podemos, também, listar as possibilidades de combinações entre dois valores Booleanos e os respectivos resultados, para a operação E: 0⋅0 = 0 0⋅1 = 0 1⋅0 = 0 1⋅1 = 1 Assim como a operação OU, a operação E só pode ser definida entre, pelo menos duas variáveis. Ou seja, o operador “⋅” (E) também é binário. Para mostrar o comportamento da equação A ⋅ B (lê-se A e B), escreve-se uma tabela verdade, como segue: A B A⋅B 0 0 0 0 1 0 1 0 0 1 1 1 De forma semelhante, pode-se determinar o resultado da equação A⋅B⋅C (lê-se A e B e C) utilizando diretamente a definição da operação E: o resultado será 0 se pelo menos uma das variáveis de entrada valer 0.
  • 20. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-4 A B C A⋅B⋅C 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 Também para a operação E valem as propriedades associativa e comutativa. Então, a equação A⋅BC pode ainda ser avaliada tomando-se as variáveis aos pares, em qualquer ordem. Veja a tabela verdade a seguir e compare os resultados. A B C A⋅B⋅C A⋅B (A⋅B)⋅C B⋅C A⋅(B⋅C) 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 1 0 0 0 1 1 1 1 1 1 1 1 2.1.3 Complementação (ou Negação, ou Inversão) A operação complementação dispensa uma definição. É a operação cujo resultado é simplesmente o valor complementar ao que a variável apresenta. Também devido ao fato de uma variável Booleana poder assumir um entre somente dois valores, o valor complementar será 1 se a variável vale 0 e será 0 se a variável vale 1. Os símbolos utilizados para representar a operação complementação sobre uma variável Booleana A são A , ~A e A' (lê-se A negado). Nesta disciplina, adotaremos o primeiro símbolo. O resultado da operação complementação pode ser listado: 0 = 1 1 = 0 Diferentemente das operações OU e E, a complementação só é definida sobre uma variável, ou sobre o resultado de uma expressão. Ou seja, o operador complementação é dito unário. E a tabela verdade para A é: A A 0 1 1 0
  • 21. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-5 2.2 Avaliação de Expressões Booleanas Dada a equação que descreve uma função Booleana qualquer, deseja-se saber detalhadamente como esta função se comporta para qualquer combinação das variáveis de entrada. O comportamento de uma função é descrito pela sua tabela verdade e este problema é conhecido como avaliação da função ou da expressão que descreve a função considerada. Em suma, deseja-se achar a tabela verdade para a função Booleana. Uma tabela verdade consiste basicamente de um conjunto de colunas, nas quais são listadas todas as combinações possíveis entre as variáveis de entrada (à esquerda) e o resultado da função (à direita). Também, pode-se criar colunas intermediárias, onde são listados os resultados de subexpressões contidas na expressão principal. Isto normalmente facilita a avaliação, principalmente no caso de equações muito complexas e/ou contendo muitas variáveis. Quando numa mesma equação Booleana aparecem operações E e OU, é necessário seguir a ordem de precedência. Tal como na álgebra dos reais, a multiplicação (lógica) tem precedência sobre a adição (lógica). Além disso, expressões entre parêntesis têm precedência sobre operadores E e OU que estejam no mesmo nível. Quanto à complementação, esta deve ser avaliada tão logo seja possível. Caso a complementação seja aplicada sobre uma subexpressão inteira, é necessário que se avalie primeiramente a subexpressão para, só após, inverter o seu resultado. O número de combinações que as variáveis de entrada podem assumir pode ser calculado por 2n, onde n é o número de variáveis de entrada. O procedimento para a criação da tabela verdade a partir de uma equação Booleana é: 1. Criar colunas para as variáveis de entrada e listar todas as combinações possíveis, utilizando a fórmula no de combinações = 2n (onde n é o número de variáveis de entrada); 2. Criar uma coluna para cada variável de entrada que apareça complementada na equação e anotar os valores resultantes; 3. Avaliar a equação seguindo a ordem de precedência, a partir do nível de parêntesis mais internos: 1o multiplicação lógica 2o adição lógica Tomemos como exemplo a expressão W = X + Y ⋅ Z . A variável W representa a função Booleana propriamente dita. Esta variável depende das variáveis que estão à direita do sinal =, ou seja, depende de X, Y e Z. Logo, são 3 as variáveis de entrada. O total de combinações entre 3 variáveis será 23=8. Então, a tabela verdade para W deverá ter 3 colunas à esquerda e 8 linhas. Seguindo o procedimento dado acima, cria-se uma coluna, na qual listam-se os valores para Z. Após, inicia-se a avaliação propriamente dita, a partir do nível mais interno de parêntesis. Como não há parêntesis na expressão, resolvem-se as subexpressões que envolvem a operação E. No caso em questão, há somente uma tal subexpressão, que é X ⋅Y . Então, cria-se uma coluna para X ⋅Y , na qual anotam-se os resultados para este produto. Finalmente, utilizam-se os resultados de X ⋅Y , listados na coluna anterior, para operar o OU com a variável X. Repare os passos descritos na tabela verdade que segue. Nela, os parêntesis em torno do produto X ⋅Y indicam somente que este
  • 22. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-6 termo já foi avaliado e que no passo referente a esta coluna, tomaram-se apenas os valores previamente encontrados. X Y Z Z X ⋅Y W = X + Y⋅ Z 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 1 1 0 1 1 0 0 0 1 0 0 1 0 1 1 0 1 0 0 1 1 1 0 1 1 1 1 1 1 0 0 1 2.3 Portas Lógicas Já vimos que uma função Booleana pode ser representada por uma equação ou detalhada pela sua tabela verdade. Mas uma função Booleana também pode ser representada de forma gráfica, onde cada operador está associado a um símbolo específico, permitindo o imediato reconhecimento visual. Tais símbolos são conhecidos por portas lógicas. Na realidade, mais do que símbolos de operadores lógicos, as portas lógicas representam recursos físicos, isto é, circuitos eletrônicos, capazes de realizar as operações lógicas. Na eletrônica que trabalha com somente dois estados, a qual é denominada eletrônica digital, o nível lógico 0 normalmente está associado à ausência de tensão (0 volt) enquanto o nível lógico 1, à presença de tensão (a qual geralmente é 5 volts). Nesta disciplina, nos limitaremos ao mundo da álgebra Booleana, admitindo que as portas lógicas representam também circuitos eletrônicos que, de alguma maneira, realizam as funções Booleanas simbolizadas. Então, ao conjunto de portas lógicas e respectivas conexões que simbolizam uma equação Booleana, denominaremos circuito lógico. 2.3.1 Porta OU O símbolo da porta OU pode ser visto na figura 2.1. Tal como na porta E, as entradas são colocadas à esquerda e a saída, à direita. Deve haver no mínimo duas entradas, mas há somente uma saída. O funcionamento da porta E segue a definição da operação E, dada na seção 2.1.1. A A A+B A+B+C B B C (a) (b) Figura 2.1 - Símbolo da porta lógica OU com 2 entradas (a) e com 3 entradas (b).
  • 23. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-7 2.3.2 Porta E O símbolo da porta E é mostrado na figura 2.2. À esquerda estão dispostas as entradas (no mínimo duas, obviamente) e à direita, a saída (única). As linhas que conduzem as variáveis de entrada e saída podem ser interpretadas como fios que transportam os sinais elétricos associados às variáveis. O comportamento da porta E segue extritamente a definição (e tabela verdade) dada na seção 2.1.2. A A.B.C A A.B B B C (a) (b) Figura 2.2 - Símbolo da porta lógica E com 2 entradas (a) e com 3 entradas (b). 2.3.3 Inversor (ou Porta Inversora, ou Negador) A porta que simboliza a operação complementação é conhecida como inversor (ou porta inversora, ou negador). Como a operação complementação só pode ser realizada sobre uma variável por vez (ou sobre o resultado de uma subexpressão), o inversor só possui uma entrada e, obviamente, uma saída. Caso se queira complementar uma expressão, é necessário obter-se primeiramente o seu resultado, para só então aplicar a complementação. O símbolo do inversor é mostrado na figura 2.3. A A Figura 2.3 - Símbolo do inversor (também conhecido como negador ou porta inversora). 2.3.4 Exemplo de Circuito Lógico Dada uma equação Booleana qualquer, é possível desenhar-se o circuito lógico que a implementa. O circuito lógico é composto das portas lógicas relacionadas às operações que são realizadas sobre as variáveis de entrada. Os resultados das operações são conduzidos por fios, os quais, no desenho, são representados por linhas simples. Os passos a serem seguidos para se realizar o desenho do circuito lógico a partir de uma equação são praticamente os mesmos usados na avaliação da expressão. Tomemos como exemplo a equação, avaliada na seção 2.2. Inicialmente, identificamos as variáveis independentes, que no caso são X, Y e Z. Para cada uma destas, traçamos uma linha (da esquerda para a direita), representando os fios que conduzem os valores. Feito isto, deve-se seguir desenhando as portas necessárias para representar cada uma das subexpressões, na mesma ordem tomada para a avaliação, ou seja: 1o parêntesis (dos mais internos para os mais externos); 2o operações E;
  • 24. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-8 3o operações OU. A figura 2.4 mostra o circuito lógico para a equação W = X + Y ⋅ Z . X W Y Z Figura 2.4 - Um circuito lógico. 2.4 Leis Fundamentais e Propriedades da Álgebra Booleana As leis da álgebra Booleana dizem respeito ao espaço Booleano (isto é., valores que uma variável pode assumir) e operações elementares deste espaço. Já as propriedades podem ser deduzidas a partir das definições das operações. Sejam A e B duas variáveis Booleanas. Então, o espaço Booleano é definido: se A≠0, então A=1; se A≠1, então A=0. As operações elementares deste espaço são operação OU, operação E e complementação, cujas definições foram dadas nas seções 2.1.1, 2.1.2 e 2.1.3, respectivamente. As propriedades da álgebra Booleana são as seguintes. Da adição lógica: (1) A+0 = A (2) A +1 = 1 (3) A+A = A (4) A+A = 1 Da multiplicação lógica: (5) A⋅ 0 = 0 (6) A ⋅1 = A (7) A⋅ A = A (8) A⋅ A = 0 Da complementação: (9) A=A Comutatividade: (10) A + B = B+ A (11) A⋅ B = B ⋅ A
  • 25. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-9 Associatividade: (12) A +(B + C ) =(A + B )+ C = ( A + C )+ B (13) A ⋅ (B ⋅ C) = (A ⋅ B) ⋅ C = (A ⋅ C) ⋅ B Distributiva (da multiplicação em relação à adição): (14) A ⋅ (B + C) = A ⋅ B + A ⋅ C 2.4.1 Teoremas de De Morgan O primeiro teorema de De Morgan diz que a complementação de um produto (lógico) equivale à soma (lógica) das negações de cada variável do referido produto. Sob a forma de equação, teríamos: A ⋅ B⋅ C ⋅... = A + B + C + ... (2.1) O segundo teorema é o dual ( i.e., o espelho) do primeiro, ou seja, a complementação de uma soma (lógica) equivale ao produto das negações individuais das variáveis: A + B + C + ... = A ⋅ B⋅ C⋅... (2.2) Particularizando os teoremas de De Morgan para duas variáveis, temos: A⋅ B = A + B (2.3) A + B = A⋅ B (2.4) 2.5 Derivação de Expressões Booleanas Dada uma função Booleana, descrita por sua tabela verdade, derivar uma expressão Booleana para esta função é encontrar uma equação que a descreva. Logo, a derivação de expressões Booleanas é o problema inverso da avaliação de uma expressão Booleana, descrito na seção 2.2 Há basicamente duas maneiras de se definir (ou descrever) uma função Booleana: descrevendo-se todas as situações das variáveis de entrada para as quais a função vale 1 ou, alternativamente, todas as situações em que a função vale 0. O primeiro método é conhecido por soma de produtos (SdP), enquanto que o segundo é chamado produto de somas (PdS). Qualquer função Booleana pode ser descrita por meio de soma de produtos ou por meio de produto de somas. Como as funções Booleanas só podem assumir um dentre dois valores (0 ou 1), basta usar-se um dos dois métodos para se encontrar uma equação para uma função. A seguir, são detalhados os métodos de derivação de expressões Booleanas.
  • 26. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-10 2.5.1 Derivação de Expressões usando Soma de Produtos (SdP) Dada uma função Booleana de n variáveis (ou seja, n entradas), haverá 2n combinações possíveis de valores. Dizemos que esse conjunto de valores que as variáveis podem assumir, juntamente com os respectivos valores da função, constituem o espaço da função. A cada combinação de entradas podemos associar um termo produto, no qual todas as variáveis da função estão presentes, e que é construído da seguinte forma: se a variável correspondente vale 0, ela deve aparecer negada; se a variável vale 1, ela deve aparecer não negada. A tabela a seguir lista os termos produto associados a cada combinação de entradas para uma função Booleana de três variáveis (A, B e C, por exemplo). A B C mintermo 0 0 0 A⋅ B ⋅ C 0 0 1 A ⋅ B ⋅C 0 1 0 A⋅ B ⋅ C 0 1 1 A ⋅ B ⋅C 1 0 0 A⋅ B ⋅ C 1 0 1 A⋅ B ⋅ C 1 1 0 A ⋅ B⋅ C 1 1 1 A ⋅ B⋅ C Cada termo produto construído conforme a regra anteriormente descrita é denominado mintermo (ou minitermo). Note que, para um dado mintermo, se substituirmos os valores das variáveis associadas, obteremos 1. Porém, se substituirmos nesse mesmo mintermo quaisquer outras combinações de valores, obteremos 0. Dessa forma, se quisermos encontrar a equação para uma função a partir de sua tabela verdade, basta montarmos um OU entre os mintermos associados aos 1s da função (também chamados mintermos 1 ). Exemplo 2.1: encontrar a equação em soma de produtos (SdP) para a função F, descrita pela seguinte tabela verdade: A B C F 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 0 F é função das variáveis A, B e C. Os valores de (A,B,C) para os quais F=1 são (0,1,0), (0,1,1), (1,0,1) e (1,1,0). Os mintermos associados a essas condições (ou seja, os mintermos 1), são A ⋅ B ⋅ C , A ⋅ B ⋅C , A ⋅ B ⋅ C e A ⋅ B⋅ C , respectivamente. Logo, a equação em soma de produtos para F será o OU entre estes produtos, conforme segue: F = A ⋅B ⋅ C + A ⋅ B⋅ C + A ⋅ B ⋅C + A ⋅B ⋅ C (2.5)
  • 27. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-11 A fim de simplificar a notação, o símbolo da operação E pode ser omitido. Desta forma, a equação anterior pode ser reescrita de maneira mais concisa: F = A BC + A BC + A BC + A BC (2.6) 2.5.2 Derivação de Expressões usando Produto de Somas (PdS) O método de derivação usando produto de somas é o dual (isto é, o oposto) do método de derivação em soma de produtos. A cada combinação das variáveis de entrada de uma função podemos associar um termo soma, no qual todas as variáveis da função estão presentes, e que é construído da seguinte forma: se a variável correspondente vale 1, ela deve aparecer negada; se a variável vale 0, ela deve aparecer não negada. A tabela a seguir lista os termos soma associados a cada combinação de entradas para uma função Booleana de três variáveis (A, B e C, por exemplo). A B C maxtermos 0 0 0 A + B+ C 0 0 1 A + B+ C 0 1 0 A + B+ C 0 1 1 A + B+ C 1 0 0 A + B+ C 1 0 1 A + B+ C 1 1 0 A + B+ C 1 1 1 A + B+ C Cada termo soma construído conforme a regra anteriormente descrita é denominado maxtermo (ou maxitermo). Note que, para um dado maxtermo, se substituirmos os valores das variáveis associadas, obteremos 0. Porém, se substituirmos nesse mesmo maxtermo quaisquer outras combinações de valores, obteremos 1. Dessa forma, se quisermos encontrar a equação para uma função a partir de sua tabela verdade, basta montarmos um E entre os maxtermos associados aos 0s da função (também chamados maxtermos 0 ). Exemplo 2.2: encontrar a equação em produto de somas (PdS) para a função F, descrita pela seguinte tabela verdade: A B C F 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 0
  • 28. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-12 Foi escolhida a mesma função do exemplo anterior, para que se possa estabelecer comparações entre os dois métodos de derivação. Os valores das variáveis de entrada (A,B,C) para os quais F=0 são (0,0,0), (0,0,1), (1,0,0) e (1,1,1). Os maxtermos associados a essas condições (ou seja, os maxtermos 0), são A + B + C , A + B + C , A + B + C e A + B + C , respectivamente. Logo, a equação em produto de somas para F será o E entre estas somas: F =(A + B + C)(A + B + C)(A + B + C)(A + B + C) (2.7) Note que a ordem de precedência de uma expressão em produto de somas é “primeiro cada soma deve ser avaliada, para só então avaliar-se o produto”. Isto significa que os parêntesis em torno de cada termo soma são obrigatórios! Repare também que os símbolos referentes à operação E (entre os termos soma) podem ser omitidos. 2.6 Formas Canônicas, Padrão e Não-Padrão As representações em soma de produtos e em produto de somas são denominadas formas padrão. A soma de produtos e o produto de somas descritos nas duas seções anteriores apresentam ainda uma característica bastante particular: em cada termo soma e em cada termo produto todas as variáveis da função estão presentes. Devido a essa característica, essas formas são chamadas canônicas. Além das representações descritas nas seções anteriores, há representações alternativas (e mais concisas) para as expressões canônicas. Se associarmos cada combinação das variáveis de entrada ao seu equivalente em decimal, cada mintermo pode ser representado por mi, onde i é o decimal associado. De forma similar, cada maxtermo pode ser representado por Mi, onde i é o decimal associado. A tabela a seguir lista todos os mintermos e maxtermos de uma função de três variáveis (A, B e C). A B C mintermo maxtermo 0 0 0 m0 M0 0 0 1 m1 M1 0 1 0 m2 M2 0 1 1 m3 M3 1 0 0 m4 M4 1 0 1 m5 M5 1 1 0 m6 M6 1 1 1 m7 M7 Voltando à função F das seções anteriores, podemos reescrever a expressão em soma de produtos, na forma canônica, como segue: F = m2 + m3 + m5 + m6 (2.8) Ou ainda, de maneira mais concisa: F = ∑ (2,3,5,6) (2.9)
  • 29. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-13 E sua expressão em produto de somas, na forma canônica, pode ser reescrita como: F = M0 ⋅ M1 ⋅ M4 ⋅M7 (2.10) Ou simplesmente, como: F = ∏ (0,1,4,7) (2.11) Apesar da praticidade das representações canônicas, elas são pouco úteis para a implementação de circuitos digitais. O número de elementos (portas lógicas e conexões) de um circuito lógico depende diretamente do número de operações Booleanas (inversão, E e OU) contidas na expressão associada. Desta forma, é normal que se deseje reduzir o número de operações contidas numa função, de modo a poder-se implementá-la com circuitos lógicos mais simples, e portanto, de menor custo. A redução do número de operações é obtida mediante a eliminação de literais da expressão, aplicando-se as propriedades da álgebra Booleana descritas na seção 2.4. Um literal é uma variável negada ou uma variável não negada. O processo de redução de literais (ou de redução de operações, equivalentemente) é denominado simplificação. Para exemplificar os passos básicos para a simplificação algébrica (literal) de expressões Booleanas, tomemos a expressão canônica, em soma de produtos, para a função F: F = A BC + A BC + A BC + A BC (2.12) O primeiro passo é identificar pares de mintermos que se diferenciam por apenas um literal, a fim de aplicar a propriedade (14). Os mintermos ABC e ABC , por exemplo, possuem os mesmos literais, exceto pela variável C: no primeiro, o literal é C , enquanto no segundo, o literal é C. Então, com o uso da propriedade (14), pode-se fatorar esses dois mintermos, obtendo-se: F = A B(C + C)+ A BC + A BC (2.13) Pela propriedade (4), tem-se que C + C=1. Então, substituindo em 2.13, segue: F = AB ⋅ 1 + ABC + ABC (2.14) E pela propriedade (6), AB ⋅1 = AB. Substituindo em 2.14, obtém-se: F = A B + A BC + A BC (2.15) Assim, pela manipulação algébrica, obtivemos uma expressão em soma de produtos que é simplificada em relação a sua expressão em soma de produtos na forma canônica, pois o número de operações e também de literais foram reduzidos (compare 2.15 com 2.12). Entretanto, na equação 2.12, o mintermo ABC também poderia ter sido agrupado com o mintermo ABC , pois ambos possuem os mesmos literais, exceto pela variável A ( A no primeiro e A no segundo). Naturalmente, os passos a serem seguidos seriam os mesmos descritos anteriormente. E a equação resultante seria um pouco diferente, mas com o mesmo número de operações, sendo portanto, de mesma complexidade. Na verdade, o melhor seria se pudéssemos agrupar o mintermo ABC com o mintermo ABC e ao mesmo tempo com o mintermo ABC . Felizmente, a propriedade (3) da álgebra Booleana diz que o OU entre duas ou mais variáveis Booleanas iguais é igual a própria variável Booleana em questão. Estendendo esta propriedade, pode-se dizer que o OU entre duas ou mais funções (inclusive
  • 30. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-14 produtos) Booleanas iguais equivale à própria função Booleana em questão. Desta forma, pode-se expandir o mintermo ABC para ABC = ABC + ABC (2.16) que é uma manipulação algébrica decorrente da propriedade (3). Retomando a equação 2.12 e utilizando 2.16, segue que: F = A BC + A BC + A BC + A BC + A BC (2.17) Então, a propriedade (3) garante que as expressões 2.12 e 2.17 são equivalentes, embora o mintermo ABC apareça duplicado. E pelo fato de aparecer duas vezes, pode-se usar uma cópia de ABC para simplificar com ABC e outra para simplificar com ABC . Os passos da simplificação são os mesmos já descritos: pela propriedade (14), segue: F = A B(C + C)+ A BC +(A + A)BC (2.18) E pela propriedade (6), vem: F = AB⋅1+ ABC + 1⋅ BC (2.19) Finalmente, pela propriedade (4), tem-se: F = A B + A BC + BC (2.20) Repare que o mintermo A BC não pôde ser agrupado com nenhum outro mintermo. Note também que foram feitas todas as simplificações possíveis, uma vez que foram agrupados e simplificados todos os pares de mintermos que se diferenciam de somente uma variável. Logo, a expressão 2.20 representa a máxima simplificação possível sob a forma de soma de produtos. E por esse motivo, ela é dita equação mínima em soma de produtos da função F. Quanto a expressão 2.15, diz-se ser uma equação em soma de produtos simplificada (porém, não-mínima). Logo, toda equação mínima é simplificada, porém, nem toda equação que foi simplificada é necessariamente mínima. Embora a equação mínima em soma de produtos apresente menor número de operações Booleanas que a representação na forma canônica, as vezes pode ser possível reduzir-se ainda mais o número de operações, fatorando-se literais. Por exemplo, na expressão 2.20 pode-se fatorar o primeiro e o terceiro mintermos como segue: F = B(A + C)+ A BC (2.21) A expressão 2.21, obtida pela fatoração de 2.20, não é nem do tipo soma de produtos, nem produto de somas, pois há um termo que não é nem produto, nem soma. Diz-se que a expressão está na forma fatorada. No caso de 2.21, a fatoração não resultou em redução do número de operações. No que se refere a terminologia, as formas soma de produtos e produto de somas são ditas formas padrão (formas standard). A forma fatorada é dita não-padrão. As formas canônicas são, pois, casos especiais de formas padrão, nas quais os termos são mintermos ou maxtermos. A fim de diferenciar somas de produtos canônicas de somas de produtos simplificadas, usaremos a expressão “soma de mintermos”. De maneira similar, usaremos a expressão “produto de maxtermos” para diferenciar produtos de somas canônicos de produtos de somas simplificados.
  • 31. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-15 2.7 Circuitos Lógicos para Formas Padrão e Não-Padrão As regras gerais para se realizar o desenho de circuitos lógicos já foram apresentadas na seção 2.3 (item 2.3.4). As regras seguintes devem ser observadas, a fim de facilitar a compreensão do desenho: • as variáveis de entrada devem ser identificadas preferencialmente à esquerda, junto aos respectivos fios; • inversores devem ser providos para as variáveis que aparecem negadas na equação; • as portas que implementam as operações Booleanas que aparecem na equação normalmente são posicionadas da esquerda para a direita, seguindo a ordem de avaliação dos operadores (descrita em 2.3.4). No caso de equações na forma soma de produtos (canônica ou simplificada), há um primeiro nível (desconsiderando-se possíveis inversores), constituído somente por portas E, onde cada porta E implementa um dos produtos da equação. Há ainda um segundo nível, constituído por uma porta OU, responsável pela “soma” lógica dos produtos. A figura 2.5 mostra um possível circuito lógico para a equação 2.12. Repare que em todas as interseções de fios em que há conexão física, deve haver um ponto (suficientemente grande), como se fora uma “solda”. Logo, quando não há o referido ponto na interseção de fios, significa que tais fios estão “eletricamente isolados”. 1o nível 2o nível A B C F Figura 2.5 - Um circuito lógico para soma de produtos. O circuito da figura 2.5 pode ainda ser desenhado utilizando-se uma notação simplificada para os inversores das entradas. Ao invés de se desenhar um inversor para cada variável que aparece negada na equação, coloca-se um círculo junto a cada entrada de cada
  • 32. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-16 porta na qual há uma variável negada. A aplicação desse procedimento para o circuito da figura 2.5 resulta no seguinte desenho: 1o nível 2o nível A B C F Figura 2.6 - Um circuito lógico para soma de produtos - outra possível representação. No caso de equações na forma produto de somas (canônica ou simplificada), o primeiro nível é constituído por portas OU, sendo cada uma responsável por uma das “somas” lógicas da equação. O segundo nível, por sua vez, é constituído por uma porta E, que realiza o produto lógico das parcelas. A figura 2.7 mostra um possível circuito lógico para a equação 2.7. 1o nível 2o nível A B C F Figura 2.7 - Um circuito lógico para produto de somas.
  • 33. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-17 Pelo fato de apresentarem apenas dois níveis de portas (dois níveis lógicos), circuitos para equações representadas nas formas padrão, canônicas ou simplificadas, são ditos circuitos em dois níveis (ou lógica a dois níveis). Dada a equação canônica de uma função qualquer, o circuito para uma equação simplificada a partir da canônica possui menos portas e/ou portas de menor complexidade. (A complexidade relativa de uma porta pode ser medida pelo número de entradas que ela apresenta). A figura 2.8 mostra o circuito lógico para a equação 2.20, que é a forma mínima para a função da equação 2.12. Note que este circuito é de menor complexidade que o circuito da figura 2.6. A complexidade relativa de um circuito lógico pode ser calculada somando-se o número de entradas das portas. Nos circuitos das figuras 2.6 e 2.7 há 4 portas de 3 entradas e 1 porta de 4 entradas. Então, a complexidade relativa será 4x3+1x4=16. No circuito da figura 2.8 há 2 portas de 2 entradas e 2 portas de 3 entradas. Sua complexidade relativa será 2x2+2x3=10. Claramente, o circuito da figura 2.8 é de menor complexidade que os circuitos das figuras 2.6 e 2.7. Estes dois são de mesma complexidade relativa. No cálculo da complexidade relativa, as inversões normalmente não são levadas em conta. Circuitos para formas fatoradas podem ser vistos como o caso mais genérico. Em geral, as formas fatoradas conduzem a circuitos cujo número de níveis lógicos é maior do que dois. Por isso, circuitos lógicos para formas fatoradas são denominados circuitos multinível (lógica multinível). Como dito na seção 2.6, as vezes uma forma fatorada pode apresentar menor número de operações do que a respectiva forma padrão. Quando isso ocorre, o circuito associado à forma fatorada também será de menor complexidade relativa. Entretanto, se não ocorrer redução no número de operações, mesmo assim é possível que o circuito para a forma fatorada seja de menor complexidade relativa, pois o conceito de complexidade relativa também inclui o número de entradas de cada porta. Então, a maneira mais segura de saber se o circuito associado à forma fatorada é de menor complexidade ou não é desenhá-lo e somar o número de entradas. A figura 2.9 mostra o circuito para a equação 2.21, obtida a partir da equação 2.20 fatorando-se o literal B. Note que o número de operações Booleanas destas equações é o mesmo: 4. No entanto, a complexidade do circuito da forma fatorada é 3x2+1x3=9, portanto menor do que a complexidade do circuito da figura 2.8. 1o nível 2o nível A B F C Figura 2.8 - Circuito lógico para a equação 2.20.
  • 34. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-18 1o nível 2o nível 3o nível A C F B Figura 2.9 - Circuito lógico multinível, associado à equação 2.21, a qual está na forma fatorada. 2.8 Simplificação de Funções Booleanas usando Mapas de Karnaugh O método de simplificação apresentado na seção 2.6 é de aplicabilidade limitada, uma vez que é bastante difícil certificar-se que todos os pares de mintermos que podiam ser simplificados foram determinados. Alternativamente àquele método, há outro método de simplificação baseado na identificação visual de grupos de mintermos passíveis de serem simplificados. No entanto, para que se possa identificar tais grupos, é necessário que os mintermos sejam dispostos de maneira mais conveniente, o que será explicado a seguir. Na descrição do método de simplificação literal, foi mencionado que os pares de mintermos que se diferenciam de somente uma variável são passíveis de simplificação. Observando a ordem com que os mintermos de uma função Booleana qualquer (com, por exemplo, 3 variáveis) aparecem na tabela verdade, vemos que, se trocarmos o 3° mintermo com o 4° e trocarmos também o 7° mintermo com o 8°, obteremos uma nova ordem, na qual quaisquer dois mintermos adjacentes são passíveis de simplificação. É interessante notar também que o 1° mintermo pode ser simplificado com o 5°, o 2° mintermo pode ser simplificado com o 6° e assim por diante. A B C mintermo 0 0 0 A⋅ B ⋅ C 0 0 1 A ⋅ B ⋅C 0 1 0 A⋅ B ⋅ C 0 1 1 A⋅ B ⋅C 1 0 0 A⋅ B ⋅ C 1 0 1 A⋅ B ⋅ C 1 1 0 A ⋅ B⋅ C 1 1 1 A ⋅ B⋅ C Figura 2.10 - Mintermos para uma função de 3 variáveis. Então, usando o novo ordenamento e re-arranjando os mintermos em duas linhas, temos a seguinte tabela:
  • 35. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-19 A⋅ B ⋅ C A⋅ B ⋅C A⋅ B ⋅C A⋅ B ⋅ C A⋅ B ⋅ C A⋅ B ⋅ C A ⋅ B⋅ C A ⋅ B⋅ C Figura 2.11 - Tabela de adjacências para uma função de 3 variáveis. Repare que nessa nova tabela, quaisquer dois mintermos adjacentes (na horizontal ou na vertical) são passíveis de serem simplificados, pois só se diferenciam de uma variável. É importante ressaltar que esse conceito de adjacência não está restrito aos limites da tabela, uma vez que os elementos extremos de uma mesma linha (ou de uma mesma coluna) também são simplificáveis. Isto implica que a tabela de adjacências de mintermos da figura 2.11 pode e deve ser encarada como uma figura geométrica tridimensional do tipo “toróide” (ou uma “rosquinha”). A figura a seguir explicita as relações de adjacência dos mintermos para uma função de três variáveis. m0 m1 m3 m2 m4 m5 m7 m6 Figura 2.12 - Simplificações possíveis entre os mintermos de uma função de 3 variáveis. É importante ressaltar que o conceito de adjacência é aplicável na horizontal e na vertical, mas nunca na diagonal. Por exemplo, observe que m0 e m5 não são adjacentes, pois não estão nem na mesma linha, nem na mesma coluna. O processo de simplificação usando a nova disposição inicia pela construção da tabela em si: os valores da função que se quer simplificar devem ser preenchidos conforme a nova ordem. Após, identificam-se todos os grupos de mintermos-1 adjacentes entre si. Cada grupo origina um termo produto, no qual somente as variáveis comuns a todos os mintermos-1 permanecem. Desde que os grupos de mintermos-1 adjacentes tenham sido corretamente identificados, a simplificação se torna trivial. Exemplo 2.3: simplificar a função F, cuja tabela verdade encontra-se no item 2.5.2. O primeiro passo é construir uma tabela para F, usando a nova disposição dos mintermos. C F AB BC A 00 01 11 10 0 0 0 1 1 A 1 0 1 0 1 A BC B BC Figura 2.13 - Grupos de mintermos-1 adjacentes e termos produto para uma função de 3 variáveis.
  • 36. Introdução aos Sistemas Digitais (v.2001/1) José Luís Güntzel e Francisco Assis do Nascimento 2-20 Após, deve-se identificar todos os grupos de mintermos-1 adjacentes entre si. Cada grupo de mintermos-1 originará um produto, conforme indicado na figura 213. A equação em soma de produtos simplificada será o OU entre os produtos encontrados: F = A B + A BC + BC (2.22) 2.8.1 Mapas de Karnaugh e Subcubos A tabela modificada usada para a identificação dos mintermos-1 adjacentes no exemplo anterior é denominada mapa de Karnaugh (no caso, para 3 variáveis). Na figura 2.14 são mostrados os mapas de Karnaugh para funções de 2, 3 e 4 variáveis. nome da função B B A 0 1 0 m0 m1 A 1 m2 m3 nome da C função BC A 00 01 11 10 0 m0 m1 m3 m2 A 1 m4 m5 m7 m6 B nome da D função CD AB 00 01 11 10 00 m0 m1 m3 m2 01 m4 m5 m7 m6 B A 11 m12 m13 m15 m14 10 m8 m9 m11 m10 C Figura 2.14 - Mapas de Karnaugh para funções de 2, 3 e 4 variáveis.