CIL29003-2015-1

De MediaWiki do Campus São José
Revisão de 17h05min de 18 de fevereiro de 2015 por Odilson (discussão | contribs) (→‎Diário de aulas)
Ir para navegação Ir para pesquisar

Dados Importantes

Professor: Odilson Tadeu Valle
Email: odilson@ifsc.edu.br
Atendimento paralelo: 2ª das 17h35 às 18h30 e 6ª das 9h40 às 10h35. Local: Lab. de Desenvolvimento.

  • Avaliações
    • 3 avaliações (P1, P2 e P3) mais um projeto final (PF).
    • Cada uma das avaliações terá terá um conceito numérico: 1, 2, ..., 9, 10. Conceito mínimo para não necessitar reavaliação: 6.
    • Um ou mais conceitos abaixo de 6 implica na realização da reavaliação: uma única a ser realizada no último dia de aula.

IMPORTANTE: o direito de recuperar uma avaliação em que se faltou somente existe mediante justificativa reconhecida pela coordenação. Assim, deve-se protocolar a justificativa no prazo de 48 horas, contando da data e horário da avaliação e aguardar o parecer da coordenação.

Plano de Ensino

Cronograma de atividades
Aula Data Horas Conteúdo Recursos
1 4/2 2 Aula inaugural, apresentação da disciplina Sala de Aula, Projetor multimídia
2 6/2 2 Sistemas de numeração Binário, Octal, Hexadecimal e conversão entre sistemas. Sala de Aula, Projetor multimídia
3 11/2 2 Códigos Gray, Binário, BCD e one-hot, representaçao de números negativos: sinal-magnitude e complemento de 2 Sala de Aula, Projetor multimídia
4 13/2 2 Ponto fixo e ponto flutuante Sala de Aula, Projetor multimídia
5 20/2 2 Soma e subtraçao binária (com complemento de 2) Sala de Aula, Projetor multimídia
6 25/2 2 Deslocamentos (SXL, SXA, ROX), uso para multiplicaçao e divisao. Multiplicacao binária (com e sem sinal) Sala de Aula, Projetor multimídia
7 27/2 2 Laboratório 1 – Uso do software Quartus para ensino de Circuitos Lógicos Laboratório de Programação
8 4/3 2 Divisao binaria, aritmetica de ponto flutuante. Exercicios Sala de Aula, Projetor multimídia
9 6/3 2 Laboratório 2 – Uso do software QSIM e Programação do FPGA Laboratório de Programação
10 11/3 2 Cap 4 – Portas AND, NAND, OR, NOR Sala de Aula, Projetor multimídia
11 13/3 2 Cap 4 – Porta XOR, Buffer, Tri-state Sala de Aula, Projetor multimídia
12 18/3 2 AVALIAÇÃO 1 – Sistemas de Numeração e Aritmética Binaria Sala de Aula, Projetor multimídia
13 20/3 2 Cap 5 – Algebra de Boole. Teoremas, Tabelas-Verdade Sala de Aula, Projetor multimídia
14 25/3 2 Cap 5 – Algebra de Boole. Mintermos, Maxtermos, Equações SOP e POS Sala de Aula, Projetor multimídia
15 27/3 2 Cap 5 – Algebra de Boole. Mintermos, Maxtermos, Equações SOP e POS Sala de Aula, Projetor multimídia
16 1/4 2 Cap 5 – Mapa de Karnaugh Sala de Aula, Projetor multimídia
17 8/4 2 Cap 5 – Mapa de Karnaugh Sala de Aula, Projetor multimídia
18 10/4 2 Cap 5 – Mapa de Karnaugh Sala de Aula, Projetor multimídia
19 15/4 2 Laboratório 3 – Codificador de 7 segmentos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, X, E, X, X, -, b) Laboratório de Programação
20 17/4 2 Cap 11 -Circuitos Combinacionais Logicos Sala de Aula, Projetor multimídia
21 22/4 2 Cap 11 -Circuitos Combinacionais Logicos Sala de Aula, Projetor multimídia
22 24/4 2 Cap 11 -Circuitos Combinacionais Logicos Sala de Aula, Projetor multimídia
23 29/4 2 AVALIAÇÃO 2 – Cap 4, Cap 5 Sala de Aula, Projetor multimídia
24 6/5 2 Cap 12 -Circuitos Combinacionais Aritméticos Sala de Aula, Projetor multimídia
25 8/5 2 Cap 12 -Circuitos Combinacionais Aritméticos Sala de Aula, Projetor multimídia
26 13/5 2 Laboratório 4 – Circuitos Aritméticos (Somador, Complemento de 2 e Subtrator) Laboratório de Programação
27 15/5 2 Cap 4 – Flip-Flop D, Registrador de deslocamento Sala de Aula, Projetor multimídia
28 20/5 2 Laboratório 5 - Comparadores, Multiplicadores Laboratório de Programação
29 22/5 2 Cap 4 – Contadores Assincronos, Sincronos, Gerador de Sequencia Pseudo Aleatória Sala de Aula, Projetor multimídia
30 27/5 2 Cap 13 – Registradores, Latches e FlipFlops Sala de Aula, Projetor multimídia
31 29/5 2 Cap 14 -Circuitos Sequenciais Sala de Aula, Projetor multimídia
32 3/6 2 Cap 14 -Circuitos Sequenciais Sala de Aula, Projetor multimídia
33 10/6 2 Laboratório 6 – Contadores Laboratório de Programação
34 12/6 2 Projeto Final em Equipes – Definição das equipes e especificação dos projetos Laboratório de Programação
35 17/6 2 Projeto Final em Equipes – Trabalho das equipes (Apresentação dos circuitos comerciais necessários para os projetos) Laboratório de Programação
36 17/6 2 Projeto Final em Equipes – Trabalho das equipes Laboratório de Programação
37 24/6 2 Projeto Final em Equipes – Trabalho das equipes Laboratório de Programação
38 26/6 2 Projeto Final em Equipes – Apresentação do Relatório Laboratório de Programação
39 1/7 2 Projeto Final em Equipes – Apresentação do Relatório Laboratório de Programação
40 3/7 2 Reavaliação final Sala de Aula, Projetor multimídia
TOTAL 80

Diário de aulas

Aula 1 - 3/2/15: Apresentação da disciplina
  • Apresentação da disciplina, plano de aula, trabalhos e métodos de avaliação.
  1. Auto apresentação
  2. Apresentação da Wiki
  3. Ementa
  4. Apresentação do modelo de aulas a ser adotado
    1. Laboratórios
    2. Bibliografia
  5. Avaliações
    1. 3 avaliações (P1, P2 e P3) mais um projeto final (PF)
    2. Cada uma das avaliações terá terá um conceito numérico: 1, 2, ..., 9, 10. Conceito mínimo para não necessitar reavaliação: 6.
    3. Reavaliação única no último dia de aula.
  6. Relação com outras disciplinas do curso
  7. Conceitos iniciais:
    1. Analógico x Digital
      1. ADC <==> DAC
    2. Lógica binária: 2 níveis, 0 e 1
      1. 4 bits = nibble
      2. 8 bits = byte
      3. n bits = word (16, 32, 64)
    3. Circuitos digitais: cada circuito digital pode ser descrito por uma função binária que é como ele processa os bits que recebe.
Aula 2 - 5/2/15: Sistemas de numeração Binário, Octal, Hexadecimal e conversão entre sistemas

Sistemas de numeração

Observe a Figura do odômetro.

Odometro.jpg

Supoha que o mesmo possua somente duas roldanas de algarismos e que cada algarismo represente exatamente 1 km. Qual a quantidade máxima de quilômetros que o suposto odômetro pode representar?

0 0
0 1
0 ...
0 8
0 9
1 0
1 1
1 ...
1 8
1 9
... ...
9 0
9 1
9 ...
9 8
9 9
0 0
... ...

Agora suponha que cada roldana tenha impresso somente os valores 0 e 1. Qual a quantidade máxima de quilômetros que o mesmo pode representar?

MSB LSB
0 0
0 1
1 0
1 1
0 0
... ...

Obs.: LSB (least significant bit) é o bit menos significativo que é o equivalente as unidades na representação decimal. MSB (most significant bit) é o bit mais significativo e sempre ocupa a posição mais a esquerda da representação.

Este sistema de numeração é conhecido como binário ("que tem aspecto dual, ou é formado por dois elementos ou partes").

No caso anterior como poderíamos representar maiores quantidades de quilômetros?

Em outra linha de raciocínio, como pode-se aumentar a capacidade de contagem quilométrica, mais do que o permitido no sistema decimal? Aumenta-se o número de símbolos disponíveis em cada roldana. Por exemplo, se adotarmos a seguinte simbologia: 0, 1, ..., 8, 9, A, B, C, D, E, F, pode-se ter a seguinte representação quilométrica:

0 0
0 1
0 ...
0 E
0 F
1 0
1 1
1 ...
1 E
1 F
... ...
9 0
9 1
9 ...
9 E
9 F
A 0
A 1
... ...
F E
F F
0 0
... ...

Este é o sistema de numeração hexadecimal.

Um outro importante sistema de numeração é o octal.

Perceba que é possível a construção de qualquer sistema de numeração.

Conversão entre sistemas de numeração

Como é de conhecimento geral, o sistema de numeração mais utilizado port seres humanos é o sistema decimal. Não tão conhecido assim, mas muito utilizado, é o sistema de numeração binário, amplamente adotado nos sistema informatizados.

Uma pergunta que cabe é, por exemplo, quando digitamos algum número em uma calculadora, o que acontece? Em primeiro lugar, a calculadora apresenta o valor digitado no visor, para termos certeza do que digitamos e, em seguida, internamente à calculadora este valor é convertido para binário, o sistema de numeração que ela entende. Como esta conversão ocorre?

Conversão de outras bases para a base decimal

A regra geral para conversão de binário para um número decimal é assim expressa:

onde é um número decimal e é sua representação binária usual.

Observe que esta regra pode ser estendida para qualquer sistema de numeração.

Por exemplo, vamos converter para a base decimal.

Outro exemplo, vamos converter para a base decimal.

Conversão da base decimal para outras bases

A conversão de um número da base decimal para qualquer outra base pode ser efetivada usando-se divisões sucessivas do valor decimal pela base a ser convertido, tomando-se com resultado os sucessivos restos dessa divisão.

Por exemplo, para converter 23 para a base binária devemos fazer o seguinte procedimento:

ConversaoDecimalBinario.jpg

O procedimento para outras bases é o mesmo, por exemplo, para converter-se 258 para a base 8, utiliza-se o mesmo procedimento acima, substituindo os valores 2 por 8, no divisor.

Conversão entre bases de origem binária

Para conversão entre as bases binária, octal e hexadecimal, basta fazer-se o uso das seguintes tabelas de conversão.

octal binário
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
hexadecimal binário
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111

Por exemplo, para converter para binário, deve-se tomar dígito a dígito da tabela acima e ir montando o valor binário equivalente: , e . Portanto o resultado da conversão é

Se desejarmos converter da base octal para a hexadecimal e vice-versa, a maneira mais fácil é primeiro a conversão da base de origem para a base binária e, em seguida, desta para a base destino. Por exemplo, para converter para a base octal procedemos primeiro a conversão para a base binária () e em seguida, tomando três a três dígitos a partir do LSB, convertemos para o octal usando a tabela, resultando em

Exercícios

Converta para decimal

Converta para a base indicada:

Aula 3 - 5/2/15: Representações binárias

A tabela a seguir representa os númerios decimais de 0 a 15 pelos códigos binário convencinal, octal, hexadecimal, Gray, one-hot, Johnson e BCD. Tabela de equivalência entre códigos

Código Gray: código de distância unitária porque a distância entre duas palavras adjacentes é sempre 1 bit [1].

Código one-hot: frequentemente utilizado na codificação de máquinas de estados [2] [3].

Código Johnson: Também utilizado para representar máquinas de estados. É um código intermediário entre o one-hot e o Gray, em termos de uso do hardware.

Código BCD (binary-coded decimal): cada dígito de um número decimal é representado por um conjunto de 4 bits do código binário.

Códigos para números negativos

Como representar sinal no código binário?

Código sinal-magnitude

Nesse caso o MSB representa o sinal: 0 = + e 1 = -. Assim sendo, o MSB não faz parte da representação sequencial binária do número. Ex:

  1. 0000 = +0
  2. 1001 = -1
  3. 110011 = -19
  4. 010011 = +19
  5. 111100111 = -231

Código complemento de um

Se o MSB for 0 (número positivo), para obter o equivalente negativo, basta inverter todos os bits. Ex:

  1. 0000 = +0 ==> 1111 = -0
  2. 0101 = +5 ==> 1010 = -5

Código complemento de dois

Esta é a opção adota para representar números negativos em praticamento todos os computadores e outros sistema digitais.

A representação binária de um número negativo é obtida tomando sua representação positiva, invertendo todos os bits e então adicionando um a ele. Exemplo, -7 (5 bits) é igual a 00111 ==> 11000 + 1 ==> 11001

Regra prática

Para cálculo do equivalente decimal de um número representado em complemento de dois, pode-se fazer uso do modelo apresentado no exemplo:

1 0 1 1 0 1
-32 + 0 +8 +4 +0 +1

Ao somar-se todos os valores da segunda linha da tabela acima, obtém-se o valor 19.

Usando números de 8 bits, Calcule o complemento de dois para:

  1. -0
  2. -1
  3. -17
  4. -123
  5. -128

Algum problema?

Exercícios

  1. Livro Pedroni: 2.16 -> 2.32
  2. Qual é o maior e menor valor decimal que se consegue representar em complemento de dois com 8 dígitos binários?
Aula 4 - 13/2/15: Ponto fixo e ponto flutuante

Como é a representação (e conversão para decima) de um número binário fracionário?

Representação por ponto fixo

A representação segue a regra

S I F

onde:

  • S = sinal. 0 para positivo e 1 para negativo
  • I = parte inteira do valor. Representação binária tradicional
  • F = parte fracionária do valor. O expoente do base inicia em -1 e vai sendo decrementado.

Por exemplo:

0 1 1 1 0 1 1 0 1
+
+ 16 8 4 0 1 0,5 0 0,125

Portanto o decimal equivalente é: 29,625

Representação por ponto flutuante

Como representar número inteiros?

Padrão IEEE 754

S E F

onde:

  • S = sinal. 0 para positivo e 1 para negativo
  • E = expoente. 8 bits para precisão simples e 11 bits para precisão dupla
  • F = parte fracionária. 23 bits para precisão simples e bits para precisão dupla

Observe que tem-se 32 bits totais para a precisão simples e 64 bits para a precisão dupla.

Precisão simples

O número decimal equivalente é obtido por:

Ex1: Encontre o valor decimal equivalente para o valor abaixo que está em ponto flutuante com precisão simples.

10111111110...0

Analisando o número acima obtemos: S = 1, E = 01111111 = 127, F = 10...0 = = 0,5. Portanto

Ex2: Encontre o valor decimal equivalente para o valor abaixo que está em ponto flutuante com precisão simples.

010000001010...0

Precisão dupla

O número decimal equivalente é obtido por:

Observações:

  1. Na representação por ponto flutuante, a representação de números negativos é equivalente a representação sinal magnitude, ou seja, obtida pela simples inversão de todos os bitas da representação positiva do número.
  2. As equações não produzem valor 0 (zero), portanto, uma representação especial se faz necessário para representar esse valor: S=0/1, E=0 e F=0 é equivalente a +0 e -0.
  3. Representação de infinito: S=0/1, E=max e F=0 é equivalente a .
  4. Representação NaN (not a number) que são o btidas por números inválidos ou indeterminados (0/0, etc): S=0/1, E=0 e é equivalente a NaN (erro).

Ex: determinar as representações binárias por ponto flutuante de precisão simples para:

-2,625 = -2 + 1/2 + 1/8 = -21/8 =

portanto S=1, F=0101..., E=128 (10000000), já que 128-127=1, que é o expoente da base binária do número obtido

Ponto flutuante versus inteiro

Ponto flutuante pode representar números muito grandes e números muito pequenos.

Por exemplo, com os 32 bits da precisão simples pode-se representar a faixa de até aproximadamente . Enquanto que na representação inteira consegue-se somente a faixa até

Qual o preço a pagar? A precisão dos números em ponto flutuante pode ser menor.

Ex: Dado um valor inteiro de 32 bits

y1 = 11111111 11111111 11111111 00000001
   = 1,1111111 11111111 11111111 00000001

Ponto flutuante equivalente

y2 = 1,1111111 11111111 11111111
S=0, F=1111...1, E=158

O erro relativo é dado por:

(y1-y2)/y1 = (00000000 00000000 00000000 00000001)/y1 = 1/y1 que é aproximadamente 

Perceba que esse é o menor erro possível. Qual seria o erro aproximado para 11111111 11111111 11111111 10000000?

Exercícios

Livro texto: 2.33 ==> 2.38

Aula 5 - 20/2/15: Aritmética binária

Adição sem sinal

Ex:

 1101       4 bits
+1011       4 bits
_____
11000       5 bits

Normalmente computadores armazenam somente N bits, ou seja, pode ocorrer overflow (estouro) como é o caso do exemplo acima com N = 4.

Adição sem sinal com entrada de N bits e saída de N bits

Como pode ocorrer overflow deve-se ter critérios para detecção automática caso esse caso ocorra:

  1. se o último bit do carry for 1 ==> ocorreu overflow
  2. baseado nos operandos: quando ambos MSB são 1 ou quando são diferentes é o resultado de sua soma é zero.

Ex:

0000                 1111                                   1000
 1001                 1001                                   1000
+0110  Certo!        +0111  Errado!                         +1000    Errado!
_____                _____  Pelos dois critérios            _____    Pelo primeiro critério.
 1111                 0000                                   0000

Adição sem sinal com entrada de N bits e saída de N+1 bits

Nunca ocorre overflow!

Adição e subtração com sinal

Subtração binária

0-1-1 0  --> borrow (empresta-um)
  1 0 0 1
- 0 1 1 1
_________
0 0 0 1 0

Na prática a subtração não é utilizada. Utiliza-se complemento de dois, já que, por exemplo, a-b=a+(-b), onde "-b" é o complemento de dois de "b".

Adição e subtração com sinal com entradas de N bits e saída de N bits

Como pode ocorrer overflow deve-se ter critérios para detecção automática caso esse caso ocorra:

  1. se os dois últimos bits de carry forem diferentes, então ocorreu overflow
  2. se o MSB dos operandos forem iguais e o MSB da soma for diferente deles, então ocorreu overflow.

Ex:

0000              0111                              1111               1000                              1100
 0101              0101                              1011               1011                              0101
+0010  Certo!     +0011  Errado!                    +1101    Certo!    +1100  Errado!                    +1110    Certo!
_____             _____  Pelos dois critérios       _____              _____  Pelos dois critérios       _____
 0111              1000                              1000               0111                              0011

Adição e subtração com sinal com entradas de N bits e saída de N+1 bits