UFMG DCC001 2011-2 1 Aula Expositiva 2 2.1 Bits e Códigos 2.2 Circuitos Combinatórios 2.2.1 Álgebra de Boole 2.2.2 Portas Lógicas 2.2.4 Aritmética com portas lógicas 2.2.5 Síntese de Circuitos Combinatórios 2.2.6 Comparação de Binários sem sinal DCC 001 Programação de Computadores 2º Semestre de 2011 Prof. Osvaldo Carvalho
Bits e Códigos UFMG DCC001 2011-1 2
UFMG DCC001 2011-2 3 Bits e Códigos Bits só têm significado com interpretação Interpretações são estabelecidas por códigos Cada um pode criar o código que quiser, mas A aceitação do código adotado determina: Comunicação Interoperabilidade Possibilidade de uso de circuitos transformadores
UFMG DCC001 2011-2 4 Código ASCII 7 bits Caractere Código Decimal End of Transmission 0000100 4 Line Feed 0001010 10 Space 0100000 32 ( 0101000 40 + 0101011 43 0 0110000 48 1 0110001 49 2 0110010 50 3 0110011 51 A 1000001 65 B 1000010 66 C 1000011 67 a 1100001 97 b 1100010 98 c 1100011 99
UFMG DCC001 2011-2 5 Código ASCII Estendido e Unicode O código ASCII oficial usa apenas 7 bits, o que permite 2 7 = 128 combinações Proposto por norte-americanos, não há provisões para acentos, cedilhas, etc. Estes são contemplados no código ASCII estendido, com 8 bits, o que permite 256 combinações O código Unicode é a versão moderna do ASCII, e permite codificar caracteres em todas as línguas conhecidas, vivas e mortas
UFMG DCC001 2011-2 6 Representação de Números O código ASCII pode representar números O decimal 128 é representado pela sequência 00110001 00110010 00111000, com 24 bits Este é um formato adequado para dispositivos de E/S orientados para textos, lidos ou escritos por humanos Para uso em circuitos que realizam operações aritméticas, outras codificações são mais adequadas
Representação de Números como Binários sem Sinal UFMG DCC001 2011-2 7 O decimal 123 pode ser representado pelos 7 bits 1111011, interpretados como um binário sem sinal 1111011 123 = 1. 2 6 + 1. 2 5 + 1. 2 4 + 1. 2 3 + 0. 2 2 + 1. 2 1 + 1. 2 0.
Conversão Decimal-binário usando Tabela de Potências de 2 UFMG DCC001 2011-2 8 n 0 1 2 3 4 5 6 7 8 9 10 2 n 1 2 4 8 16 32 64 128 256 512 1024 A converter 123 59 27 11 3 1 0 Potência de 2 64 32 16 8 2 1
UFMG DCC001 2011-2 9 RGB Red, Green, Blue Níveis de vermelho, verde e azul são representados como binários sem sinal
UFMG DCC001 2011-2 10 Binários Negativos usando Sinal e Amplitude 1 bit pode ser usado para o sinal Com 8 bits, se reservarmos o bit mais à esquerda para o sinal, e interpretarmos os bits restantes como o valor absoluto do número, poderemos representar todos os inteiros entre -127 e +127 Zero tem duas representações: 10000000 e 00000000
UFMG DCC001 2011-2 11 Binários Negativos com Deslocamento Sem Sinal Bits c/ Deslocamento 0 000-3 1 001-2 2 010-1 3 011 0 4 100 1 5 101 2 6 110 3 7 111 4
UFMG DCC001 2011-2 12 Complemento de 2 A absoluta maioria dos computadores utiliza a representação de complemento de 2 para números inteiros negativos Como veremos, isto simplifica circuitos para soma e subtração. Representações em sinal e amplitude e por deslocamento são aplicadas para a notação de ponto flutuante, como veremos a seguir
UFMG DCC001 2011-2 13 Complemento de 2 com 3 bits Valor = -4b 2 + 2b 1 +b 0 Complemento de 2 Bits Valor b 2 b 1 b 0 0 0 0 0 0 0 1 1 0 1 0 2 0 1 1 3 1 0 0-4 1 0 1-3 1 1 0-2 1 1 1-1
UFMG DCC001 2011-2 14 Complemento de 2: obtendo o complemento Se n está representado em complemento de 2, -n é obtido em dois passos: Todos os bits de n são invertidos; Soma-se 1 ao resultado da inversão.
UFMG DCC001 2011-2 15 Complemento de 2 com 3 bits Complemento de 2 Bits b 2 b 1 b 0 0 0 0 0 0 0 1 1 0 1 0 2 0 1 1 3 1 0 0-4 1 0 1-3 1 1 0-2 1 1 1-1 Valor 010 (2 10 ) invertendo os bits: 101 (5 10 ) somando 1: 110 (6 10 )
UFMG DCC001 2011-2 16 Ponto Flutuante Utiliza notação científica com potências de 2 Existe um padrão mundial, o IEEE 754 32 bits, ou precisão simples 1 bit de sinal, 8 de expoente, 23 de mantissa (ou significando) 64 bits, ou precisão dupla 1 bit de sinal, 11 de expoente, 52 de mantissa Expoentes negativos são representados por deslocamento Nós voltaremos a estudar esta representação, que tem consequências sobre erros de arredondamento
UFMG DCC001 2011-2 17 Expoente IEEE 754 para 32 bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 1 1 1 1 1 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Sinal Mantissa normalizada
UFMG DCC001 2011-2 18 Notação Científica Normalizada 6,02 x 10 23, 602 x 10 21 ou 0,00602 x 10 26? A primeira forma é normalizada, com um único algarismo diferente de zero antes da vírgula Em binário, o algarismo diferente de zero a ser colocado antes da vírgula é sempre 1, e pode ser implícito
128 0 0 16 8 4 2 1 0,5 0 0,125 0 0,03125 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 UFMG DCC001 2011-2 19 Exemplo de número IEEE 754 de 32 bits Sinal positivo Significando 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 1 0 0 1 1 1 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 159 32 1,65625 7113539584 Expoente Valor
Padrão IEEE 754 Valores Especiais UFMG DCC001 2011-2 20 Expoentes com todos os bits iguais a 1 ou todos os bits iguais a zero têm interpretações especiais Zero é representado por expoente e mantissa iguais a zero (duas representações)
Padrão IEEE 754 Valores Especiais Expoentes com todos os bits iguais a 1 são usados para representar NaN (Not a Number), + e - Úteis para representar resultados de divisões por zero, funções não definidas para alguns argumentos, etc. Números com todos os bits do expoente iguais a 0 e mantissa diferente de zero são de-normalizados, e representam números com valor absoluto muito pequeno UFMG DCC001 2011-2 21
Álgebra de Boole UFMG DCC001 2011-1 22
UFMG DCC001 2011-2 23 Bits e Álgebra de Boole George Boole Inglaterra, 1820-1898
UFMG DCC001 2011-2 24 NÃO (NOT) a NOT a 0 1 1 0
UFMG DCC001 2011-2 25 E (AND) a b a AND b 0 0 0 0 1 0 1 0 0 1 1 1
UFMG DCC001 2011-2 26 OU (OR) a b a OR b 0 0 0 0 1 1 1 0 1 1 1 1
UFMG DCC001 2011-2 27 Portas NOT, AND, OR Porta NOT Porta AND Porta OR Arquivo Entrada NOT_AND_OR.circ Saída
UFMG DCC001 2011-2 28 Expressões Booleanas Compactas a denota NOT a a + b denota a OR b ab ou a.b denota a AND b ab + a b, (a + b) são exemplos de expressões booleanas, ou expressões lógicas
UFMG DCC001 2011-2 29 Equivalência de Expressões (a ) = a a+1 = 1; a+0 =a a.1 = a; a.0 = 0 a + (b+c) = (a+b)+c = a + b + c a = a+a; a = a.a ab + ab = a
Transistores e Portas Lógicas UFMG DCC001 2011-1 30
UFMG DCC001 2011-2 31 Transistores e Portas Lógicas Transistores são a base para construção de circuitos compactos e rápidos: A tecnologia atual (2010) permite colocar 1,2 bilhões de transistores em um chip de 1,6 cm de lado O tempo de reação a mudanças nas entradas é muito pequeno Transistores podem ser usados para amplificar sinais mas, em circuitos digitais, funcionam essencialmente como interruptores
UFMG DCC001 2011-2 32 Importantes porque sua implementação com transistores é mais simples Portas NAND e NOR a NAND b = (a.b) a NOR b = (a+b)
UFMG DCC001 2011-2 33 AND, NAND, OR, NOR AND(a,b) Só é igual a 1 quando a e b são iguais a 1 NAND(a,b) Só é igual a 0 quando a e b são iguais a 1 OR(a,b) Só é igual a 0 quando a e b são iguais a 0 NOR(a,b) Só é igual a 1 quando a e b são iguais a 0
UFMG DCC001 2011-2 34 Transistor como Interruptor Vamos convencionar: 1 Voltagem alta 0 Voltagem baixa (terra) Voltagem de Controle Voltagem na Entrada Voltagem na Saída Controle alto, condutor perfeito: Voltagem na entrada necessariamente igual à saída Controle baixo, isolante perfeito: entrada pode ser diferente da saída
UFMG DCC001 2011-2 35 Porta NOT 1 transistor 1 Fonte V= 5 (voltagem alta) a 0 a 1 Terra V= 0 (voltagem baixa)
UFMG DCC001 2011-2 36 Porta NOT 1 transistor 1 Fonte V= 5 (voltagem alta) a 1 a 0 Terra V= 0 (voltagem baixa)
Porta NOR 2 transistores 1 Fonte a 0 1 (a + b) b 0 Terra UFMG DCC001 2010-2 37
Porta NOR 2 transistores 1 Fonte a 1 0 (a + b) b 0 Terra UFMG DCC001 2010-2 38
Porta NOR 2 transistores 1 Fonte a 0 0 (a + b) b 1 Terra UFMG DCC001 2010-2 39
Porta NOR 2 transistores 1 Fonte a 1 0 (a + b) b 1 Terra UFMG DCC001 2010-2 40
Porta NAND 2 transistores 1 Fonte a 0 1 (a.b) b 0 Terra UFMG DCC001 2011-2 41
Porta NAND 2 transistores 1 Fonte a 0 1 (a.b) b 1 Terra UFMG DCC001 2011-2 42
Porta NAND 2 transistores 1 Fonte a 1 1 (a.b) b 0 Terra UFMG DCC001 2011-2 43
Porta NAND 2 transistores 1 Fonte a 1 0 (a.b) b 1 Terra UFMG DCC001 2011-2 44
Porta AND 3 transistores Fonte Fonte a 1 a.b 0 b 0 Terra Terra NAND NOT UFMG DCC001 2011-2 45
Circuitos Combinatórios Soma de Binários de 1 bit UFMG DCC001 2011-1 46
UFMG DCC001 2011-2 47 Circuitos Combinatórios Circuitos combinatórios são circuitos digitais cuja saída só depende dos valores de suas entradas Na próxima aula veremos circuitos sequenciais, cuja saída depende das entradas e também de dados armazenados em memórias
UFMG DCC001 2011-2 48 Circuitos Lógicos e Expressões Lógicas Não é difícil acreditar que podemos fazer circuitos para uma expressão lógica qualquer como a (b +c)(ca) a (ca) b +c
UFMG DCC001 2011-2 49 Circuitos Lógicos e Expressões Lógicas Mas podemos fazer circuitos que fazem contas? Todos sabemos que computadores fazem contas, e que a resposta é afirmativa. Resta saber como! Vamos começar por um problema simples: soma de dois inteiros de 1 bit
UFMG DCC001 2011-2 50 Soma de 2 variáveis de 1 bit - 1 Queremos construir um circuito lógico para somar duas variáveis de um bit, codificados como binários sem sinal: 0 vale Zero 1 vale Um Na base dez, o resultado pode ser 0, 1 ou 2
UFMG DCC001 2011-2 51 Soma de 2 variáveis de 1 bit 2 O resultado, codificado como binário sem sinal, é 0, 1 ou 10 Ou seja, são necessários 2 bits para representar o resultado da soma de duas variáveis de 1 bit Somar significa: obter a representação em binário sem sinal da soma das entradas, também codificadas como binários sem sinal
Circuito Somador de 2 variáveis de 1 bit: Entradas e Saídas Entradas 1 bit cada a b Saídas Circuito Somador 1 bit s 1 s 0 Notação comum para conjuntos de bits: 0 é o índice do bit menos significativo UFMG DCC001 2011-2 52
UFMG DCC001 2011-2 53 Entradas Tabela da Verdade para Somador de 2 variáveis de 1 bit Saídas: 2 funções lógicas das mesmas variáveis Todos os valores possíveis para as entradas Resultados da soma em binário sem sinal
UFMG DCC001 2011-2 54 Tabela da Verdade Tabela para especificação de funções lógicas Especifica saídas para todas as combinações possíveis para as variáveis de entrada (Já usamos tabelas da verdade para especificar as funções NOT, AND e OR)
Obtendo um Circuito a partir da Tabela da Verdade UFMG DCC001 2011-2 55 Passo 1: conseguir uma expressão lógica equivalente à tabela da verdade Passo 2: construir o circuito equivalente à expressão lógica
Expressões equivalentes a uma Tabela da Verdade UFMG DCC001 2011-2 56 Uma expressão lógica e uma tabela da verdade são equivalentes quando, para qualquer combinação de valores das variáveis de entrada, os valores da função e da expressão são iguais: x y f(x,y) 0 0 1 0 1 0 1 0 0 1 1 1 f(x,y) = x y + xy
UFMG DCC001 2011-2 57 Cobertura dos 1 s de uma Função Booleana x y f(x,y) 0 0 1 0 1 0 1 0 0 x y + xy 1 1 1 x y é igual a 1 se e somente se x=0 e y=0 xy é igual a 1 se e somente se x=1 e y=1 x y + xy cobre exatamente a função desejada
Expressões Lógicas para Somador de 2 variáveis de 1 bit s0 = a b + ab s1 = ab UFMG DCC001 2011-2 58
UFMG DCC001 2011-2 59 Circuito Soma Binária de 1 bit arquivo Soma_1_bit.circ ab a b ab
UFMG DCC001 2011-2 60 Funções Lógicas podem fazer Aritmética Produzimos um circuito lógico com duas entradas de 1 bit representando binários sem sinal, e que produz em sua saída dois bits representando a soma das entradas em binário sem sinal! Conseguimos fazer cálculos com as funções lógicas NOT, AND e OR!
Soma de Binários com n Bits UFMG DCC001 2011-1 61
UFMG DCC001 2011-2 62 Soma de Binários de Vários Bits - 1 Vamos agora considerar a soma de números binários com vários bits cada um Em princípio poderíamos construir a tabela da verdade para a soma e deduzir a expressão lógica, mas Para a soma de dois inteiros de 32 bits, a tabela da verdade teria 2 64 entradas.
UFMG DCC001 2011-2 63 Tempo para tratar 2 64 itens Um nano-segundo é o tempo de reação de uma porta lógica Um ano tem Temos E portanto, nano-segundos Temos então linhas a analisar; Com um nano-segundo por linha, 3 milênios!
UFMG DCC001 2011-2 64 Soma de Binários de Vários Bits - 2 Temos que adotar outro enfoque Primeiramente vamos examinar como nós, humanos, fazemos uma soma em binário Depois, vamos construir um somador de forma modular, explorando regularidades no processo de soma
UFMG DCC001 2011-2 65 Somas em decimal Feita coluna por coluna; quando a soma de dois algarismos excede 9, o resultado daquela coluna é somente o dígito mais significativo, e vai-um para a coluna seguinte Vai-um 1 1 0 a 2 7 7 6 b 4 7 9 1 a+b 7 5 6 7
UFMG DCC001 2011-2 66 Somas em binário Feita coluna por coluna; Quando a soma de dois algarismos excede 1, o resultado daquela coluna é somente o dígito mais significativo, e vai-um para a coluna seguinte
UFMG DCC001 2011-2 67 Soma de Binários de vários bits: Exemplo 1011101+1001110 =? Vai-Um 1 0 1 1 1 0 0 Parcelas 1 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 1 1 Soma
Soma de Binários de vários bits Vamos usar esta aritmética para construir um circuito A idéia é construir um módulo que faça a operação de uma das colunas da soma O somador terá tantos deste módulo quantas forem as colunas, ou seja, quantos forem os bits das parcelas UFMG DCC001 2011-2 68
Entradas Módulo: Circuito Soma Completa os dois bits de uma coluna das parcelas a entrada vem-um, alimentada pela saída vai-um da coluna à direita Saídas um bit de resultado um bit de vai-um (que será ligado à entrada vem-um da coluna à esquerda) vai-um soma SC vem-um UFMG DCC001 2011-2 69 a b
Somador em Cascata Circuito Soma-Completa Igual a 1 quando a soma tiver 5 bits vem-um do bit menos significativo é zero UFMG DCC001 2011-2 70
UFMG DCC001 2011-2 71 Soma Binária de 3 bits (Soma Completa) Tabela da Verdade soma = a b v + a bv + ab v + abv a b vem-um soma vai-um 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 vai-um = a bv + ab v + abv + abv
UFMG DCC001 2011-2 72 Síntese de Circuitos Combinatórios O processo de cobertura de 1 s de uma tabela da verdade para geração de um circuito pode ser automatizado O Logisim faz isso, e ainda consegue simplificar o circuito
UFMG DCC001 2011-2 73 Circuito Soma Completa arquivo Somador4bits.circ
UFMG DCC001 2011-2 74 Somador 4 bits arquivo Somador4bits.circ
Comparação de Binários com n Bits UFMG DCC001 2011-1 75
UFMG DCC001 2011-2 76 Comparação de binários sem sinal Circuito desejado: Entradas: a e b, dois binários sem sinal Saídas: 3 bits indicando o resultado da comparação entre a e b a b Comparador a < b a = b a > b
Comparação de binários sem sinal Aqui também temos problemas para o uso da Tabela da Verdade quando comparamos inteiros de 32 bits (por exemplo) Vamos usar o mesmo enfoque utilizado na soma: verificar como nós fazemos a comparação, e procurar dividir o problema É fácil ver que, para comparar dois binários sem sinal, comparamos bit a bit, a partir do mais significativo; na primeira diferença, a parcela com o bit igual a 1 é a maior UFMG DCC001 2011-2 77
Comparação Diferença no quarto bit mais significativo UFMG DCC001 2011-2 78 a 1 1 1 1 1 0 0 0 b 1 1 1 0 1 1 1 0 amaior 0 0 0 0 1 1 1 1 1 abiguais 1 1 1 1 0 0 0 0 0 bmaior 0 0 0 0 0 0 0 0 0 Antes de qualquer comparação, abiguais = 1
Comparação Diferença no primeiro bit mais significativo UFMG DCC001 2011-2 79 a 0 1 1 1 1 0 0 0 b 1 1 1 0 1 1 1 0 amaior 0 0 0 0 0 0 0 0 0 abiguais 1 0 0 0 0 0 0 0 0 bmaior 0 1 1 1 1 1 1 1 1
UFMG DCC001 2011-2 80 Comparação Todos os bits iguais a 1 1 1 0 1 0 1 0 b 1 1 1 0 1 0 1 0 amaior 0 0 0 0 0 0 0 0 0 abiguais 1 1 1 1 1 1 1 1 1 bmaior 0 0 0 0 0 0 0 0 0
Comparador 1 bit Bit corrente a b amaior bmaior abiguais Módulo Comparador de 1 bit Amaior Bmaior ABiguais Vêm do comparador à esquerda Vão para o comparador à direita UFMG DCC001 2011-2 81
UFMG DCC001 2011-2 82 Comparador 4 bits Entrada b Entrada a Para o bit mais significativo, amaior = bmaior = 0, e abiguais = 1
Comparador 1 bit Tabela da Verdade Estas saídas vão para a coluna à direita Estas entradas vêm da coluna à esquerda x é usado quando a combinação de entradas nunca ocorre o Logisim simplifica o circuito São 2^5 = 32 linhas na tabela UFMG DCC001 2011-2 83
Comparador 1 bit Circuito UFMG DCC001 2011-2 84 Arquivo Compare_4_bits.circ
Resumo Bits exigem códigos para ter significado Códigos importantes incluem ASCII, binário sem sinal, complemento de 2, e IEEE 754. Toda transformação de informação feita por um processador é uma composição das operações básicas NOT, AND e OR da Álgebra de Boole Expressões lógicas e circuitos combinatórios equivalentes podem ser extraídos de tabelas da verdade UFMG DCC001 2011-2 85
UFMG DCC001 2011-2 86 Resumo Circuitos para soma ou comparação de duas parcelas de 1 bit podem ser obtidos por tabelas da verdade Para somar ou comparar parcelas de 32 bits (p.ex.), é preciso montar circuitos em cascata, com transformações graduais da informação.