Você está na página 1de 116

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

x

z z

z=f(x,y)

z=f(x,y)

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 x

y y

a aa bb b
a
aa
bb b

cc c

z z

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

Compartimento

para discos

para discos

para discos

Amplificador Amplificador Amplificador Auto-falante Auto-falante Auto-falante Auto-falante Auto-falante
Amplificador
Amplificador
Amplificador
Auto-falante
Auto-falante
Auto-falante
Auto-falante
Auto-falante
Auto-falante
esquerdo
esquerdo
esquerdo
direito
direito
direito

Compartimento

Compartimento

Compartimento

para fitas

para fitas

para fitas

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, diagramas corrente- voltagem

Transistores,

Células analógicas e digitais

resistores,

capacitores

 

Portas

Equações Booleanas, máquinas de estado finitas (FSM)

Portas lógicas,

Módulos, unidades

Flip-flops

Registrador

Algoritmos, flowcharts, conjunto de instruções, generalizações de FSMs

Somadores,

Microcircuitos

comparadores,

contadores,

 

registradores

Processador

Especificação executável, programas

Processadores,

Placas de circuito impresso, módulos multicircuitos

controladores,

 

ASICs

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
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.

R1 3 R2 3 R1 2 R2 2 R1 1 R2 1 R1 0 R2
R1 3
R2 3
R1 2
R2 2
R1 1
R2 1
R1 0
R2 0
Controle
xor 3
xor 2
xor 1
xor 0
I 3
I 2
I 1
I 0
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 I i FAD i Ci A0 A1 A2 X1 O0 Co R3 i
R1 i
I
i
FAD i
Ci
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 é 10 i , 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 d 1 d 0 d -1 d -2 tem como valor:

D = d 1 ¥ 10 1 + d 0 ¥ 10 0 + 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 r i . Logo, podemos escrever o formato genérico de um número em tal sistema como sendo

d m-1 d m-2 … d 1 d 0 . 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:

D

=

m- 1

Â

i =- n

d i ¥ r i

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:

b m-1 b m-2 … b 1 b 0 . b -1 b -2 … b -n

e seu valor pode ser encontrado por

B =

m -1

Â

i= -n

b i ¥ 2 i

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:

10101 2 = 1 ¥ 16 + 0 ¥ 8 + 1 ¥ 4 + 0 ¥ 2 + 1 ¥ 1 = 21 10

.1111 2 = 1 ¥ 0.5 + 1 ¥ 0.25 + 1 ¥ 0.125 + 1 ¥ 0.0625

= 0.9375 10

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

1010011100 2 = 001 010 011 100 = 1234 8

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

1010011100 2 = 0010 1001 1100 = 29C 16

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.

765 8 = 111110101 2

FED 16 = 111111101101 2

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:

D

=

m- 1

Â

i =- n

d i ¥ r i

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 = ((…(( d m-1 ) r + d m-2 ) r + … ) r + d 1 ) r + d 0

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

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 = (…(( d m-1 ) r + d m-2 ) r + … ) r + d 1

com resto R = d 0 . Em outras palavras, d 0 é 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 c 0 igual a 0. A tabela 1.4 mostra a soma s i e o bit de carry c i+1 para cada possível combinação de x i , y i e c i .

Tabela 1.4 - Adição de números binários.

x

i

+ y i

+ c i

s i

c i+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

 

S

10

S 9

S 8

S 7

S 6

S 5

S 4

S 3

S 2

S 1

S 0

Primeiro se soma x 0 = 1 e y 0 = 1, produzindo carry c 1 = 1 e soma s 0 = 0. Em seguida, se

soma x 1 = 1, y 1 = 1 e c 1 = 1, obtendo-se carry c 2 = 1 e soma s 1 = 1. Este processo continua até

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

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 d i e o bit de borrow b i+1 para cada possível combinação de x i , y i e b i .

Tabela 1.5 - Subtração de números binários.

x

i

-

y i

-

b i

d i

b i+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 b 1 e de diferença d 0 , de acordo com a Tabela 4, e assim por diante, da direita para a esquerda, até o bit de borrow mais significativo b m e o bit de diferença mais significativo d m-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

 

D 9

D 8

D 7

D 6

D 5

D 4

D 3

D 2

D 1

d 0

Primeiro faz-se a subtração entre x 0 = 1 e y 0 = 1, produzindo borrow b 1 = 0 e diferença

d 0 = 0. Em seguida, faz-se a subtração de y 1 = 1, b 1 = 1 de x 1 = 1, obtendo-se borrow b 2 = 0 e soma s 1 = 0. Este processo continua até se gerar d 9 = 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 n-1 -1) até +(2 n-1 -1). Note também que há duas representações possíveis para o zero: -0 e +0.

-

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 (r n -1) – N. Para números decimais, r = 10, (r-1) = 9 e o complemento de 9 de N é dado por (10 n -1) – N.

Exemplo 1.5: encontrar o complemento de 9 dos números decimais que seguem.

987 10 :

546700 10 :

(1000 - 1) - 987 = 999 - 987 = 12

12389 10 :

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

(r-1) = 1 e o complemento de 1 de N é

Exemplo 1.6: encontrar o complemento de 1 dos números binários que seguem.

10111 2 : (32 - 1) - 23 = 31 - 23 = 8 = 1000 2

1011001

2 :

0001111

2 :

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 r n – 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 10 n – 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 é -(2 n-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.

10111 2 : 01000 2 + 1 2 = 01001 2

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,

Do mesmo modo,

0100 (+4)

+ 0101 (+5)

1001 (-7)

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

89 2 = 44

b) 467 para octal

467 8 = 58

58

8 =

resto = 1 (dígito menos significativo)

resto = 1

resto = 3 (dígito menos significativo)

c) 3417 para hexadecimal 3417 16 =

Exercício 1.2 - Encontrar a representação em complemento de r para os exemplos anteriores.

987 10 : 1000 - 987 = 13

546700 10 :

12389

10111

10 :

2 : 32

1011001

2 :

0001111

2 :

- 23 = 9 = 1001 2

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.

1011001

2 :

0001111

2 :

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).

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

Operações

Básicas

da

Álgebra

Booleana

(ou

Álgebra

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 é “”.

os

respectivos resultados para a operação OU, tem-se:

Listando

as

possibilidades

de

combinações

entre

dois

valores

Booleanos

e

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
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
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

complementação é

variável, ou sobre o resultado de uma expressão. Ou seja, dito unário.

o operador

E a tabela verdade para A é:

A A 0 1 1 0
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 2 n , 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 n o de combinações = 2 n (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:

1 o multiplicação lógica

2 o 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á 2 3 =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

B

A+B (a)
A+B
(a)

A

B

C

A+B+C (b)
A+B+C
(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

B

A.B (a)
A.B
(a)

A

B

C

A.B.C (b)
A.B.C
(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
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:

1 o parêntesis (dos mais internos para os mais externos);

2 o operações E;

Introdução aos Sistemas Digitais (v.2001/1)

José Luís Güntzel e Francisco Assis do Nascimento

2-8

3 o operações OU.

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

X

Y

Z

W
W

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)

(2)

(3)

(4)

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

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 A B = B A

(11)

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á 2 n 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 , respectivamente. Logo, a equação em soma

de produtos para F será o OU entre estes produtos, conforme segue:

A B C ,

A B C ,

A B C

e

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 m i , onde i é o decimal associado. De forma similar, cada maxtermo pode ser representado por M i , 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

m

0

M

0

0

0

1

m

1

M

1

0

1

0

m

2

M

2

0

1

1

m

3

M

3

1

0

0

m

4

M

4

1

0

1

m

5

M

5

1

1

0

m

6

M

6

1

1

1

m

7

M

7

Voltando à função F das seções anteriores, podemos reescrever a expressão em soma de produtos, na forma canônica, como segue:

F

=