Sistemas Digitais Capítulo1: Introdução Material traduzido e adaptado para o Português pelo Prof. Ricardo O. Duarte e revisado pelos Profs. Luciano Pimenta e Hermes Magalhães DELT – EEUFMG (Rev. 3b) Slides to accompany the textbook Digital Design, Design, First Edition, by Frank Vahid, Vahid, John Wiley Wiley and Sons Publishers, Publishers, 2007. http://www.ddvahid.com
Copyright © 2007
Frank Vahid
1.1
Porque estudar Sistemas Digitais? Entender como computadores funcionam. • Projetar dispositivos eletrônicos •
– Maior capacidade de processamento. – Maior capacidade de armazenamento. – Possibilitam: • Dispositivos melhores: Melhores gravadores, cameras, carros, celulares, aparelhos médicos,... • Novos dispositivos: Video games, PDAs, ... – Conhecidos por sistemas embarcados. • Milhares de novos dispositivos a cada ano. Satellites Portable music players 1995
1997
DVD Video players recorders Cell phones Cameras 1999
2001
2003
2005
Musical instruments TVs ??? 2007
1.1
Porque estudar Sistemas Digitais? Entender como computadores funcionam. • Projetar dispositivos eletrônicos •
– Maior capacidade de processamento. – Maior capacidade de armazenamento. – Possibilitam: • Dispositivos melhores: Melhores gravadores, cameras, carros, celulares, aparelhos médicos,... • Novos dispositivos: Video games, PDAs, ... – Conhecidos por sistemas embarcados. • Milhares de novos dispositivos a cada ano. Satellites Portable music players 1995
1997
DVD Video players recorders Cell phones Cameras 1999
2001
2003
2005
Musical instruments TVs ??? 2007
1.2
O que o termo “Digital” significa? • Sinal Analógico (contínuo) • Sinal Digital (discreto) – Infinitos valores. – Número de valores finitos. • Ex: tensão em um fio
gerado por um microfone
• Ex: botão pressionado em um
teclado
1
2
3
4
2
Sinal Digital
Sinal analógico r o l a v
Valores possíveis: 1.00, 1.01, 2.0000009, ... infinitos valores
r4 o l a3 v2 1 0
Valores possíveis: 0, 1, 2, 3, or 4.
tempo
Sinais digitais somente com 2 valores: Binário • Um s in al d ig ital b in ário – apresenta
somente dois valores possíveis. – Representados como 0 e 1 – Um dígito binário ( binary digit ) ou b i t – Consideraremos somente sinais digitais binários no curso. – A representação binária se tornou popular: • Transistores, dispositivo eletrônico básico
dos sistemas digitais, produzem os dois níveis de sinais (0 e 1) (mais no Cap. 2) • Armazenamento/Transmissão de um dos dois valores é mais fácil do que três t rês ou mais valores (Ex.: um bip longo ou sem bip, reflexão ou não de um feixe de luz, etc.) etc. )
r o l a v
1 0
tempo
Exemplo dos benefícios da digitalização •
Sinais analógicos (ex.: áudio) estão sujeitos a perda da qualidade. – Níveis de tensão não
armazenados/copiados ou transmitidos perfeitamente.
s t l 3 o V 2
1 0
• A versão digital permite maior
perfeição armaz/copia/transm. – Amostra a tensão a uma taxa
fixa, guarda a amostra usando codificação binária. – Níveis de tensão ainda não podem ser considerados perfeitos. – Entretanto podemos distinguir melhor os 0s de 1s. Considere: 1 V: “01” 2 V: “10” 3 V: “11”
3 2
Sinal original tempo 01 10 11 10 11
s t l o V 1
a2d Sinal digitalizado
0
Sinal digital imperfeito, Entretanto se aumentarmos s t l 3 A taxa de amostragem o E usarmos mais bits para V2
1 0
tempo 01 10 11 10 11
d2a
s a ) d r a a r l u o l m e e c a d i s n e o õ f s l s e i e t m , s . n x a r E ( T
Sinal recebido tempo Como corrigi-lo?
a
1 0
tempo Correção possível. Fácil distinguir 0s de1s, recupera
Áudio digitalizado: Benefícios da compressão • Áudio digitalizado pode
ser comprimido – Ex.: MP3s, blu-ray, etc.
Exemplo de compressão de dados: 00 --> 0000000000 01 --> 1111111111 1X --> X
– Um CD pode armazenar
aprox. 20 músicas sem compressão, mas 200 comprimidas.
• Fotos e figuras (jpeg),
e vídeos (mpeg), e outros sinais. • Digitalização de sinais proporcionam muitos outros benefícios …
0000000000 0000000000 1000001111 1111111111 00 00 10000001111 01
Digitalização de fenômenos analógicos • A digitalização de fenômenos
analógicos requer: – Um sensor que mede o
fenômeno físico analógico e converte o valor medido em um sinal elétrico. – Um conversor analógico-digital que converte o sinal elétrico em códigos binários. O conversor deve amostrar (medir) o sinal elétrico a uma taxa regular e converter cada amostra em um valor de bits.
Conversor analógico-digital
Como codificamos dados na forma binária? fenomeno analógico sensores e outras entradas sinal dado elétrico digital A2D dado digital Sistema Digital dado dado digital digital D2A sinal elétrico Atuadores e outras saídas
• Algumas entradas são
intrinsecamente binárias – Botões: não pressionados
(0), pressionados (1)
0
r ed
• Algumas entradas são
intrinsecamente digitais
• Algumas entradas são
analógicas
– Necessitam conversão
analógica-digital. – Como mostrado no slide
1
blue gr een
black
0 0 0 r ed
– Só necessitam codificação
em binário. – Ex.: entradas provenientes de teclados: codificação red=001, blue=010, ...
a
botão
blue gr een
black
0 0 1 r ed
blue gr een
black
0 1 0
ar Sensor de temperatura
33 graus
Como codificar texto: ASCII, Unicode • ASCII: codificação de cada
caractere, letra, número, simbolo com 7- (ou 8-) bits • Unicode: codificação padrão atual. Usa 16-bits para codificar.
Símbolo
R S T L N E 0
r s t l n e 9
.
– Codifica caracteres de várias
línguas estrangeiras.
S ímbolo Codificação 1010010 1010011 1010100 1001100 1001110 1000101 0110000 0101110 0001001
!
Codificação 1110010 1110011 1110100 1101100 1101110 1100101 0111001 0100001 0100000
Pergunta: O que essa sequencia ASCII representa? 1010010 1000101 1010011 1010100
ASCII (acrônimo para American Standard Code for Information Interchange)
a
REST
Como codificar números: Números binários Essa forma de gerar números obedece as regras da Notação Posicional
• Cada posição (ordem)
representa uma quantidade. • Um símbolo em uma posição (ordem) significa “quantas vezes daquela quantidade”. – Base dez (d e c i m a l )
5
2
3
104 103 102 101 100
• Dez símbolos: 0, 1, 2, ..., 8, e 9 • Maior que 9 – próxima posição – Cada posição é uma potência de10.
– Base dois (b in ário ) • Dois símbolos: 0 e 1 • Maior que 1 -- próxima posição – Cada posição é uma potência de 2.
1
0
1
24 23 22 21 20
Q: Quanto? +
= a
4+ 1= 5
Como codificar números: Números binários • Sistemas digitais trabalham
com números binários.
– Na base 10 existem termos
29 28 27 26 25
24 23 22 21 20
• unidade, dezena, centena,
512 256 128 64 32
16 8
específicos para as ordens:
4
2
1
milhar, etc...
– Na base 2 não: • um, dois, quatro, oito, dezesseis, etc… • A contagem das ordens são
potências exatas da base 2.
512 256 128 64 32 16 8 4 2 1
a
Primeiro Método de Conversão de Números Decimais para Binários (Método da Subtração) •
Objetivo – Coloque 1 nas ordens necessárias
para se atingir a quantidade do número decimal desejado.
Número decimal a converter: 12 32 16 8
1
• Coloque 1 na ordem se o peso
32 16 8
0
2
1
=32
• Comece da esquerda para a direita.
correspondente do número for igual ou menor . • Caso contrário coloque 0. • Continue nesse processo até que a quantidade do número decimal desejado seja atingida.
4
4
2
1
=16
1
32 16 8
muito
4
2
1
muito a
0
32 16 8
0
4
2
1
4
0 1 1
ok, continue…
=8+4=12
0 1 1
32 16 8
0
=8
0 1
2
1
0 0
PRONTO!
resposta
Primeiro Método de Conversão de Números Decimais para Binários (Método da Subtração) • Método da subtração – Fácil para seres humanos, mais complicados para implementar em sistemas digitais. – Devemos subtrair uma ordem binária da quantidade restante a ser convertida. • Então, teremos um novo resto
(quantidade restante) e continuamos com o mesmo processo. • Paramos quando o resto é igual a 0 (zero).
Quantidade restante: 12 32 16 8
4
2
1 32 é muito
1 32 16 8
0
4
2
1 16 é muito
1
32 16 8
4
2
1 a
0
32 16 8
0
4
2
1
4-4=0
0 1 1
32 16 8
0
12 – 8 = 4
0 1
4
0 1 1
2
1
0 0
Pronto!
resposta
Conversão de Números Decimais em Binário: Exemplo do Método de Subtração •
Converter o número “23” de decimal para binário
Resto ou Quantidade restante
a
Número binário
23
0 0 32 16
0 8
0 4
0 2
0 1
23 -16 7
0 1 32 16
0 8
0 4
0 2
0 1
7 -4 3
0 1 32 16
0 8
1 4
0 2
0 1
3 -2 1
0 1 32 16
0 8
1 4
1 2
0 1
1 -1
0 1 32 16
0 8
1 4
1 2
1 1
8 é maior que 7
Segundo Método de Conversão de Números Decimais para Binários (Método da Divisão) •
Divida o número decimal por 2. O resto da divisão vai ser o símbolo da ordem do número binário (da menor ordem para a maior). – Continue dividindo o quociente por 2 até o quociente ser igual a 0.
•
Exemplo: Converta o número decimal 12 para binário Número decimal
Método mais apropriado para se implementar em sistemas digitais
Número binário
6 2 12 Divida por 2 -12 0
0 1
Resto → Símbolo
Continue dividindo, pois o quociente (6) é maior que 0 2
3 6 Divida por 2 -6 0
Resto → Símbolo
0 2
0 1
Conversão de Números Decimais em Binário: Exemplo do Método da Divisão •
Exemplo: Converta o número decimal 12 para binário Número decimal 2
Número binário
1 3 Divida por 2 -2 1
1 4
0 2
0 1
Resto → Símbolo
Continue dividindo, pois o quociente (1) é maior que 0 2
0 1 Divida por 2 -0 1
1 8
1 4
0 2
0 1
Resto → Símbolo
Como o quociente é 0, podemos concluir que 12 é 1100 em binário.
Base Dezesseis: Outra Base normalmente usada por projetistas de Sistemas Digitais 8 164 163 162 8
A
• Adequada porque cada ordem (posição)
F
161 160
representa 4 símbolos em binário.
A
– Usado como um modo compacto de se
F
escrever números binários.
1000 1010 1111 hexa
binário
hexa
binário
0 1 2 3 4 5 6 7
0000 0001 0010 0011 0100 0101 0110 0111
8 9 A B C D E F
1000 1001 1010 1011 1100 1101 1110 1111
•
Conhecida como base h e x a d e c i m a l, ou somente hexa Q: Escreva11110000 em hexa Olhando na tabela ao lado, apenas substituímos o número binário pelo símbolo hexadecimal correspondente: a
11110000
Base Decimal • Base10 = {0,1,2,3,4,5,6,7,8,9} • Tamanho da Base = 10 símbolos • Símbolos = de 0 a 9 • Exemplo: 110110 = 1*100 + 0*101 + 1*102 + 1*103
Base Binária • Base2 = {0,1} • Tamanho da Base = 2 • Símbolos = 0 e 1 • Exemplo: 11012 = 1*20 + 0*21 + 1*22 + 1*23 = 1 + 0 + 4 + 8 = 1310
Base Hexadecimal • Base16={0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F} • Tamanho da Base = 16 • Símbolos = de 0 a F • Exemplo: 110116 = 1*160 + 0*161 + 1*162 + 1*163 = 1 + 0 + 256 + 4096 = 4352 10
Resumo de Conversão de Bases • Métodos para Conversão de Bases • Qualquer Base → Base 10 (Somatório dos pesos relativos) – Ex.: [102] → 0*20 + 1*21
• Qualquer Base 10 → Qualquer Base Y (Método Divisões
Sucessivas) – Ex.: 1310 → BASE 2 13 2 1 6 2 0 3 2 1 1 2 1 0 1310 = 11012
• HEX → BIN (Desmembramento). Ex.: B116 → BASE 2 = 1011 0001 • BIN → HEX (Agrupamento). Ex.: 1100 0100 = C4
Representação de Números Positivos e Negativos
Existem três tipos de notações para representar números em Sistemas Digitais: Sinal e magnitude Complemento a um Complemento a dois
A representação de números positivos é a mesma em qualquer notação! A diferença de uma notação a outra está na representação dos números negativos!
Representação de Números Positivos e Negativos Vamos tomar como exemplo uma CPU ou um sistema digital que representa dados numéricos de tamanho máximo igual a 4 bits.
16 valores (números) diferentes podem ser representados com 4 bits (24) nesse sistema digital ou CPU.
A grosso modo, metade dos números será positiva e metade negativa.
Notação Sinal e Magnitude
O bit mais significativo (bit mas à esquerda) representará o sinal do número: Convenção: 0 = positivo; 1 = negativo
Os três outros bits de menor significância (bits à direita do bit mais significativo) formarão a magnitude (módulo do número a ser representado): 0 (000) até 7 (111)
Intervalo de números para n bits = +/- 2n – 1 - 1
Incoveniente: 2 representações distintas para o 0 (zero)
Notação Sinal e Magnitude -7 -6 -5
1111
+0 +1
0000
1110
0001
1101
0010
+2
-4
1100
0011
+3
-3
1011
0100
+4
-2
1010
0101
1001
-1
0110 1000
-0
+
0111
+7
0 100 = + 4
- 421 1 100 = - 4
+5 -
+6
Notação Complemento a 1 Seja N um número positivo e N o número negativo correspondente na representação complemento a um.
n N = (2 - 1) - N
Exemplo: complemento a um do número +7 0111 = (+7) Método direto: Se quero o (-7), simplesmente faço o complemento bit a bit do número a ser convertido. Isso significa substituir todos “0” por “1” e vice-versa 0111 → 1000
Notação Complemento a 1 -0 -1
1111 1110
-2
+0 +1
0000 0001
+2 1101
-3 -4 -5
0010
1100
0011
1011
0100
1010
0101
1001
-6
+3 +4
+5
Útil somente como um tipo de operação para o sistema digital. +
0 10 0 = + 4
-8 421
1 01 1 = - 4
+1
-
0110 1000
-7
0111
+7
+6
Desperdício: Ainda 2 representações para o
Notação Complemento a 2
Possui uma única representação para o 0 (zero). Possui um número negativo a mais que a representação complemento a um. Representação que é utilizada pelos cálculos da unidade de ponto fixo da CPU (aritmética inteira) e em operações aritméticas em sistemas digitais.
Notação Complemento a 2 -1 -2
1111 1110
-3
+0 +1
0000 0001
+2 1101
-4 -5 -6
0010
1100
0011
0 10 0 = + 4
-8 421
1011
0100
1010
0101
1001
-7
+3
+
0110 1000
0111
+7
+6
+4
+5
1 10 0 = - 4
-
Notação Complemento a 2 Método direto: Número em complemento a 2 = complemento bit a bit + 1 ou
Número em complemento a 2 = Número em complemento 1 + 1 no bit menos significativo (bit mais à direita)
0111 = 1000 + 1 → 1001 (representação de -7) 1001 = 0110 + 1 → 0111 (representação de 7)
Números Reais: Representação em Ponto Fixo • A representação em ponto fixo é assim chamada
porque a faixa de números que pode representar um determinado valor é fixa, ou seja, a posição da vírgula é predeterminada.
Representação de números fracionários positivos e negativos em ponto fixo • A notação usada em computadores para a representação
em ponto fixo, é o complemento a 2.
• Não possui dupla representação para o zero. • Proporciona uma maior velocidade de cálculo se
comparada às outras duas notações estudadas.
Exemplos de número positivo em ponto fixo
Representação do número +10,5:
(reservados 1 bit para sinal, 4 bits para parte inteira e 4 para a fracionária.)
Representação do número +34,0625:
(reservados 1 bit para sinal, 6 bits para parte inteira e 6 para a fracionária.)
Exemplo de número negativo em ponto fixo Representação do número -23,75: (reservados 1 bit para sinal, 5 bits para parte inteira e 5 para a fracionária.) • 23,75 = 01011111000 • -23,75 (Usando complemento a 2) = 10100001000 • Verificando: -32+8+0,25 = -23,75
Limitações da representação em ponto fixo •
Na aritmética com números representados em ponto fixo, há de se ter cuidado para que os resultados estejam ‘dentro’ da faixa fixa
(números muito grandes ou muito pequenos). Ou seja, é necessário que o resultado da operação aritmética feita não extrapole o limite de representação dos bits que reservamos tanto para a parte inteira como para a parte fracionária. •
Caso contrário as operações produzirão resultados não precisos.
• Altera-se a faixa de representação. •
Caso não se alcance a precisão desejada, busca-se uma solução com representação em Ponto Flutuante.
Exercícios Suponha que sua CPU faça cálculos com 8 bits. a)
b)
1. 2. 3. 4.
Determine quantos bits que você usaria para a parte inteira e para a parte fracionária para atender corretamente a representação de cada parcela e do resultado das operações nas situações 1, 2, 3 e 4 abaixo: Represente os números das situações 1, 2, 3 e 4 em ponto fixo usando o que você definiu no item a).
(+7,75) + (6,25) (+5,99) – (4,625) (+12,125) + (4,0125) (-8,1212) + (0,65)
Exercício 1: Resposta • +7,75 e +6,25 poderiam ser representados com 4
bits (incluindo o sinal) para a parte inteira e 4 bits para a parte fracionária. • Entretanto o resultado da soma dos dois operandos vai dar +14,0 que extrapolaria o limite de representação dos 4 bits que reservamos para a parte inteira. • De forma a produzir o resultado correto, nesse exercício deveremos representar a parte inteira com 5 bits e os 3 bits restantes reservaremos para a parte fracionária.
Exercício 1 - Resposta +7,75: +6,25: +14,0:
00111110 00110010 01110000
Exercício 2: Resposta • A parte inteira de +5,99 e –4,625 pode ser
representada no mínimo com 4 bits (incluindo o sinal), restando 4 bits para a parte fracionária. • O resultado da soma dos dois operandos ainda estaria dentro do limite de representação dos 4 bits para a parte inteira que reservamos para o exercício. • Entretanto os 4 bits que reservamos para a parte fracionária não serão suficientes para suprir a demanda de precisão desejada.
Exercício 2 - Resposta +5,99: –4,625: +1,365:
01011111 (+5,9375) 10110110 (-4,625) 00010101 (+1,3125)
• Note que realizamos uma soma normal em
complemento a 2.
Exercício 3: Resposta • +12,125 e +4,0125 poderiam ser representados
respectivamente com 5 e 4 bits para a parte inteira (incluindo o sinal). A escolha inicial que satisfaça ambos os casos é 5 bits para a parte inteira, deixando 3 bits para a parte fracionária, às custas de perda de precisão para o segundo operando. • Entretanto o resultado da soma dos dois operandos vai dar +16,1375 que extrapolaria o limite de representação de 5 bits para a parte inteira que reservamos na etapa anterior. • De forma a produzir o resultado correto, deveremos representar a parte inteira com 6 bits e os 2 bits restantes a parte fracionária. Prejudicando ainda mais a precisão do resultado.
Exercício 3 - Resposta +12,125: +4,0125: +16,1375:
00110000 (+12,0) 00010000 (+4,0) 01000000 (+16,0)
Exercício 4: Resposta • A parte inteira de -8,1212 e de +0,65 pode ser representada no mínimo respectivamente com 5
bits e 1 bit (incluindo o sinal). • O resultado da soma dos dois operandos ainda estaria dentro do limite de representação dos 5 bits para a parte inteira que reservamos para o exercício. • Entretanto os 3 bits que reservamos para a parte fracionária não serão suficientes para suprir a demanda de precisão desejada.
Exercício 4 - Resposta • –8,1212:
11000000 (-8,0)
• +0,65:
00000101 (+0,625)
• –7,4712 :
11000101 (-7,375)
• Note que realizamos uma soma normal em complemento a 2. • Observe que o resultado não é preciso, devido à extrapolação
do limite de representação dos bits que reservamos para a parte fracionária.
Projeto de Sistemas Digitais: Programação de
1.3
Microprocessadores Vs. Projeto de Circuitos Digitais Microprocessor Circuito Digital• Customizado programado
Sistema detector de movimentos em ambientes escuros
Microprocessadores é a primeira opção para implementar um sistema digital – – –
I0 I1 I2 I3 I4 I5 I6 I7
P0 P1 P2 P3 P4 P5 P6 P7
void main() { while (1) { P0 = I0 && !I1; // F = a and !b, } }
Fáceis de programar Baratos (menos que $1) Fáceis de comprar.
1 0 1 b 0 1 F 0 a
6:00
7:057:06
9:009:01
time