CIL29003-2015-1

De MediaWiki do Campus São José
Ir para: navegação, pesquisa

Índice

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: A, B, C e D. Conceito mínimo para não necessitar reavaliação: C.
    • Um ou mais conceitos D 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_(CIL-EngTel)

Procedimento para acessar IFSC-Cloud

Acesso_ao_IFSC-CLOUD

Siga exatamente TODOS os passos. Caso tenha algum problema com a senha, entre em contato com o professor

Listas de exercícios

Lista para a primeira avaliação
  1. Converta para decimal
  2. Converta para a base indicada:
  3. Livro Pedroni: 2.16 ==> 2.38
  4. Qual é o maior e menor valor decimal que se consegue representar em complemento de dois com 8 dígitos binários?
  5. Livro Pedroni: 3.1 ==> 3.22
Lista para a segunda avaliação
  1. Livro Pedroni: 4.7 ==> 4.16, 4.18 e 4.19
  2. O consumo de potência em um circuito lógico é dividido em estática e dinâmica. Defina cada uma dessa potências e quais são as providências a serem tomadas para sua minimização.
  3. Liste os três tipos de buffer. Qual é sua função lógica? Quais são suas principais aplicações?
  4. Livro Pedroni: 5.1, 5.5, 5.8 ==> 5.19, 5.22 ==> 5.28, 5.30 ==> 5.38.
  5. Utilizando álgebra Booleana simplifique as seguintes funções lógicas, mostre todo o processo:
    1. y=a.b+c'+(c.d)'
    2. y=((a.b)'+{c.d)')'
    3. y=(a+b'+c).(a+c+d')'
    4. y=(a+b)'.c.(a+c).b'
    5. y=((a+b)'.c)+((b.d)'.(a'+(b.d)))
  6. Para cada uma das funções lógicas da questão anterior, monte a tabela-verdade equivalente.
  7. Derive uma equação SOP mínima (irredutível) para cada uma das funções Booleanas representadas pelas tabelas-verdade da questão anterior, fazendo uso de mapas de Karnaugh.
Lista para a terceira avaliação
  1. Seções do livro a serem estudadas:
    1. 11.1, 11.5, 11.6, 11.7, 11.13.
    2. 12.1, 12.2, 12.3, 12.5, 12.6, 12.10, 12.1112.12, 12.13, 12.15.
    3. 13.1, 4.10, 13.2, 13.3.1, 13.4, 13.10.
    4. 14.1, 4.11, 4.12, 14.2, 14.3, 14.5, 14.7.
  2. Exercícios Livro Pedroni:
    1. 11.8 ==> 11.12, 11.14 ==> 11.21, 11.23, 11.27 e 11.28
    2. 12.1 ==> 12.3, 12.6a) 12.6b), 12.9 ==>12.12, 12.16, 12.17, 12.22
    3. 13.2, 13.7, 13.8, 13.9
    4. 14.1 ==> 14.5, 14.8, 14.23, 14.33, 14.37, 14.38, 14.39.
  3. Para o gerador de sequências pseudorandômicas da Figura 14.30, calcule a sequência dos 25 primeiros bits produzidos pelo circuito, após a execução de um Reset no sistema.

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

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?

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?

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

Nunca ocorre overflow, MAS:

  1. se as entradas tiverem sinais diferentes, o MSB do carry deve ser invertido e incrementado ao resultado final.

Ex:

0111              1000          0000          1111
 0111              1000          0111          1001
+0111             +1000         +1000         +0111
_____             _____         _____         _____  
01110             10000         11111         00000

Regra prática: extensão do sinal em cada operando, desprezando novo overflow Ex:

 00111              11000          00111          11001
+00111             +11000         +11000         +00111
 _____              _____          _____          _____  
 01110              10000          11111          00000
Aula 6 - 25/2/15: Uso de deslocamentos nas operações aritméticas e multiplicação binária.

Princípios da divisão e multiplicação

O que ocorre a uma palavra binária de N bits se a deslocarmos um bit a direita?

1100110 (102) --> 0110011 (51)
1100111 (103) --> 0110011 (51)

Percebe-se que o número é dividido por 2 (base), com certo erro em alguns casos.

O que ocorre a uma palavra binária de N bits se a deslocarmos um bit a esquerda?

01100110 (102) --> 11001100 (204)
1100111 (103) --> 1001110 (78)

Percebe-se que o número é multiplicado por 2 (base), com erro grave em caso de overflow.

Operações de deslocamento (SHIFT)

SHIFT lógico

A palavra binária de N bits é deslocada um certo número de posições para a direita ou para a esquerda, as posições vazias são preenchidas por zeros.

SRL = shift right logical

SLL = shift left logical

Ex:

10111 SRL2 = 00101
10100 SRL2 = 00101
11101 SLL1 = 11010
11101 SRL-1 = 11010

SHIFT aritmético

O vetor binário é deslocado um certo número de posições para a direita ou para a esquerda. Quando deslocado para a direita, as posições vazias são preenchidas com o valor do bit original da estrema esquerda (bit de sinal). Quando deslocado para a esquerda, em VHDL, as posições vazias são preenchidas com o valor do bit original da estrema direita.

SRA = shift right arithmetic

SLA = shift left arithmetic

Ex:

10101 SRA2 = 11101
10101 SLA1 = 01011

SHIFT circular (rotação)

Semelhando ao SHIFT lógico, com a diferença que as posições vazias são preenchidas com os bits removidos.

ROR = rotational right

ROL = rotational left

Ex:

11001 ROR2 = 01110
11001 ROL1 - 10011

Divisão usando SHIFT lógico para números sem sinal

Regra: um deslocamento lógico de uma posição para a direita resulta na divisão do número por 2 (base), duas posições por 4 (base²)...

Ex:

101110 SRL1 = 010111
110101 SRL1 = 011010
101100 SRL2 = 001011
101111 SRL2 = 001011

Divisão usando SHIFT aritmético para números com sinal

Ex:

01110 --> 00111
00111 --> 00011
10000 --> 11000
11001 --> 11100

Multiplicação usando SHIFT lógico

Regra: um deslocamento lógico de uma posição para a esquerda resulta na multiplicação do número por 2

Números sem sinal, ex:

01110 --> 11100
11010 --> 10100

Número com sinal, ex:

00111 --> 01110
01110 --> 11100
11000 --> 10000
10000 --> 00000

Observe que quando o par de bits iniciais for igual o resultado é correto e incorreto em caso contrário.

Multiplicação usando SHIFT lógico e uma saída mais larga

Na prática, dobra-se o número de bits (2N) do resultado, garantindo assim a não mais ocorrência do overflow com até N deslocamentos.

Números sem sinal com 4 deslocamentos, ex:

0011 (3) --> 0000 0011 (3) --> 0011 0000 (48)
1000 (8) --> 0000 1000 (8) --> 1000 0000 (128)

Números com sinal com 4 deslocamentos, ex:

0011 (3) --> 0000 0011 (3) --> 0011 0000 (48)
1000 (-8) --> 1111 1000 (-8) --> 1000 0000 (-128)
1111 (-1) --> 1111 1111 (-1) --> 1111 0000 (-16)
Aula 7 - 27/2/15: Multiplicação e divisão binária e operações aritmética de ponto flutuante

Multiplicação sem sinal

Com N bits de entrada e 2N bits de saída não ocorre overflow.

Algoritmo básico.

Ex:

     1101
    x1100
    _____
     0000
    0000
   1101
  1101
 ________
 10011100

Qualquer algoritmo de multiplicação é derivado do algoritmo utilizado para a resolução do exemplo anterior. Quando faz-se uma implementação no hardware, do zero, utiliza-se esse algoritmo.

Por outro lado a multiplicação pode ser efetuada usando somente operações de adição e deslocamento, abordagem empregada por exemplo em computadores, já que os mesmos possuem uma ALU que faz adições enquanto a unidade de controle pode facilmente deslocar os registradores de dados conforme a necessidade.

Um exemplo de multiplicação sem sinal baseada em ALU é mostrado na figura a seguir. Multiplicação de 1001 (multiplicando) por 1100 (multiplicador):

Algoritmo de multiplicacao.jpg

Em resumo: se o bit de produto da extrema direita for 1, o multiplicando é adicionado a metade esquerda do produto, em seguida o registrador de produto é deslocado uma posição para a direita, entretanto, se o bit for 0, deve ocorrer somente a operação de deslocamento (a multiplicação de qualquer valor por zero é igual a zero, por isso não ocorre a soma).

Multiplicação com sinal

Algoritmos para a multiplicação com sinal também são derivados do algoritmo básico. Na figura a seguir é ilustrado o multiplicador Baugh-Wooley modificado.

Muliplicacao-com-sinal.jpg

Por exemplo, vamos empregar o algoritmo acima para multiplicar 1101 e 1100:

     padrão                    Baugh-Wooley
       1101                       1101 (-3)
      x1100                      x1100 (-4)
      _____                      _____
       0000                      11000
      0000           -->         1000
     1101                       0101
    1101                      11010
   _________                 __________
                              00001100 (+12)

Algoritmo baseado em ALU, algoritmo de Booth. Multiplicação de 01110 (multiplicando) por 10010 (multiplicador). 5 bits nos operandos leva a necessidade de 5 iterações e 10 bits de saída:

Algoritmo de Booth.jpg

Em resumo: se os bits da extrema direita forem 10, o multiplicando deve ser subtraído da metade esquerda do registrador de produto e o resultado deve ser deslocado aritmeticamente para a direita. Se os bits forem 01 então o multiplicando deve ser somado à metade esquerda do registrador de produto e o resultado deslocado aritmeticamente para a direita. Por fim, se os bits forem 00 ou 11, então deve ocorrer somente o deslocamento aritmético para a direita.

Divisão sem sinal

Algoritmo básico, 1101 (13) dividido por 0101 (5):

    decimal (para relembrar :) )             binário

dividendo --> 173 |_7  <--divisor          0001101 |_0101
              00   024 <-- quociente       0000      0010 <-- quociente
              __                           ____
              17                            0011
              14                            0000
              __                            ____
              033                            0110
               28                            0101
               __                            ____
               05  <-- resto                  0011 <-- resto

Obs:

  1. Se forem usados N bits para representar as entradas, então, novamente, serão necessários 2N bits para representar as saídas: 4 para o quociente e 4 para o resto.
  2. O dividendo deve ser incrementado com 0's a esquerda até possuir um total de 2N-1 bits

Do ponto de vista de hardware, é mais difícil implementar divisões dedicadas do que multiplicadores dedicados. Por essa razão, a abordagem mais comum é empregar algoritmos baseados em ALU para a divisão, os quais utilização operações de adição, subtração e deslocamento. Um algoritmo desse tipo é mostrado na figura a seguir, onde 1101 (13) é dividido por 0101 (5). Deve-se ter N iterações para a solução e o registrador de resto deve ter 2N bits.

Algoritmo de divisao sem sinal.jpg

Em resumo: o divisor é subtraído da metade esquerda do resto, se o resultado for negativo, o divisor é somado de volta ao resto, restaurando seu valor, e então é realizado um shift para a esquerda e a posição vazia é preenchida com um zero. Ao contrário, se o resultado for positivo, o registrador de resto é deslocado para a esquerda e a posição vazia é preenchida com um 1. Após a última iteração, a metade esquerda do registrador de resto deve ser deslocada para a direita e a posição vazia preenchida com um zero. O quociente aparecerá na metade direita do registrador de resto, enquanto o resto verdadeiro aparecerá em sua metade esquerda.

Divisão com sinal

A divisão com sinal é normalmente efetuada como se os números não tivessem sinal. Isso implica que, em primeiro lugar, os números negativos devem passar por complemento de dois. Além disso, se o dividendo e o divisor tiverem sinais diferentes, então o quociente deve ser negativado (complemento de dois) e o resto também.

Ex: 1001 (-7) / 0011 (+3)

Complemento de dois de 1001 é 0111

        0000111 |_ 0011
        0000       0010 <-- quociente
        ____
         0001
         0000
         ____
          0011
          0011
          ____
           0001 <-- resto
complemento de dois de 0010 é 1110 (-2)
complemento de dois de 0001 é 1111 (-1)

Operações com ponto flutuante

Ver seções 3.8, 3.9 e 3.10 do livro do Pedroni.

Aula 8 - 4/3/15: Laboratório 1
  1. Leia o tutorial Quartus II Introduction - Using Schematic Designs.
  2. Há duas formas de executar o Quartus, acesso local e acesso remoto. Nas máquinas do laboratório de programação utilizaremos o acesso local, basta rodar o Quartus versão 13.
  3. Quem desejar praticar em casa pode acessar remotamente, mas antes peça ao professor para criar uma conta na máquina de acesso remoto. Para acesso remoto o procedimento é o seguinte:
    1. Preferencialmente acesse a IFSC-CLOUD usando o seguinte roteiro
    2. Outra opção é acesso remoto a máquina servidora com o seguinte comando: ssh -X nome_de_usuario@200.135.233.26
    3. Execute o Quartus com o comando: /opt/altera/13.0sp1/quartus/bin/quartus &
    4. Somente no primeiro uso, ajuste o atalho para o navegador, para poder ler os manuais quando necessário, por meio de Tools > Options > Internet Connectivity, no campo Web browser preencha: /usr/bin/firefox.
  4. Ao salvar arquivos e projetos tome sempre as seguintes precauções, sob pena de erros de compilação:
    1. Cada projeto deve ter um diretório próprio.
    2. Não inicie o nome de projetos e/ou circuitos com caracteres numéricos.
    3. Não nomeie diretórios e/ou arquivos com espaço em branco, se necessário utilize "_" (underline) como caracter separador.
  5. Execute as exatas orientações do referido tutorial até a seção 8 (inclusive) com as seguintes definições:
    1. Seção 4.4: Family=Cyclone IV E / device=EP4CE30F23C7 (DE2 na tabela abaixo).
    2. Seção 7. Utilize a quinta coluna - DE2: Pin Assignment (x1=sw[0], x2=sw[1] e f=LEDG[0]) DEpinSW Led.png
Aula 9 - 6/3/15: Portas NOT, AND, NAND, OR, NOR

Seções 4.1 a 4.4 do livro texto.

Aula 10 - 11/3/15: Laboratório 2

Continuação e complementação do laboratório 1.

No primeiro laboratório foi focado o uso do Quartus (interface), inserção do projeto (schematic), análise do RTL, e o início da simulação funcional (QSIM).

Hoje vamos gravar e utilizar o Kit Mercurio IV (Family=Cyclone IV E / device=EP4CE30F23C7) seguindo o roteiro:Preparando para gravar o circuito lógico no FPGA

Procedimento para salvar e recuperar projetos

  1. Para salvar um projeto: [Project > Archive Project... > Archive file name: nome_do_projeto.qar]
    1. O arquivo será salvo em: /home/aluno/nome_do_projeto/output_files/nome_do_projeto.qar
  2. Para restaurar um projeto:
    1. Crie um novo projeto vazio: [File > New Project Wizard... > Next > What is workink directory for this project?: /home/aluno/nome_do_diretorio > What is the name of this project?: nome_do_projeto > Next > Next > Family: Ciclone IV E > Device: EP4CE30F23C7 > Next > Finish]
    2. Restaure o arquivo de backup: [Restore Archived Project > Archive name: nome_do_projeto.qar]
13/3/15: Aula cancelada por licença médica
Aula 11 - 18/3/15: Avaliação 1 - 7h30 sala 12
Aula 12 - 20/3/15: Portas OR, NOR, XOR, Buffer, Tri-state

Seções 4.4, 4.5, 4.7 e 4.8 do livro texto.

Aula 13 - 25/3/15: Álgebra Booleana e Tabelas-Verdade

Seções 5.1 e 5.2 do livro texto. Resumo postulados teoremas.png

Aula 14 - 27/3/15: Algebra de Boole. Mintermos, Maxtermos, Equações SOP e POS

Seções 5.3, 5.4 e 5.5 do livro texto.

Aula 15 - 1/4/15: Algebra de Boole. Mintermos, Maxtermos, Equações SOP e POS

Seções 5.3, 5.4 e 5.5 do livro texto.

Aula 16 - 8/4/15: Mapas de Karnaugh

Seções 5.6 e 5.7 do livro texto.

Aula 17 - 10/4/15: Mapas de Karnaugh e projeto de conversor BCD para SSD

Seções 5.6, 5.7 e 11.5.5 do livro texto.

Aula 18 - 15/4/15: Laboratório conversor BCD para SSD

Projete e implemente na FPGA um conversor BCD (Binary to Coded Decimal) para SSD (Seven Segment Display) que apresente a seguinte sequência de caracteres: 0, 1, ..., 9, X, X, C, X, E, X. Experimento_5_para_Circuitos_Lógicos.

Aula 19 - 17/4/15: Circuitos Combinacionais Lógicos -- Codificadores e Decodificadores

Seções 11.1 , 11.2, 11.3, 11.4 e 11.5 do livro texto.

Aula 20 - 20/4/15: Circuitos Combinacionais Lógicos -- Codificadores, Decodificadores e Multiplexadores

Seções 11.5 e 11.6 do livro texto.

Aula 21 - 24/4/15: Circuitos Combinacionais Lógicos -- Detector de paridade, portas com histerese e dúvidas para a segunda avaliação

Seções 11.7 e 11.13 do livro texto.

Aula 22 - 27/4/15: Avaliação 2 - Circuitos Digitais e Álgebra Booleana
Aula 23 - 6/5/15: Cap 12 - Circuitos Combinacionais Aritméticos
Aula 24 - 8/5/15: Cap 12 - Circuitos Combinacionais Aritméticos
Aula 25 - 13/5/15: Laboratório 4 – Circuitos Aritméticos (Somador, Complemento de 2 e Subtrator)

Roteiro para o laboratório

Aula 26 - 15/5/15: Correção da avaliação 2
Aula 27 - 19/5/15: Cap 12 - Latches, FlipFlops e Registradores
Aula 28 - 22/5/15: Cap 14 - Registradores e Contadores
Aula 29 - 27/5/15: Laboratório 5 - Circuito de Multiplicação Binária

Circuito_de_Multiplicação_Binária

Aula 30 - 29/5/15: Cap 14 - Contadores

Arquivo:Contadores.qar QAR utilizado em sala de aula

Aula 31 - 3/6/15: Cap 14 - Divisor de frequência
Aula 32 - 10/6/15: Projeto final em equipes: Definição das equipes e especificação do projeto

Projetos_Finais_CIL29003 Resultado esperado na primeira aula:

  1. Diagrama de blocos dos indicando o funcionamento total do sistema. Cada um dos blocos deve remeter a um dos sistemas lógicos discutidos na disciplina.
  2. Indicação da quantidade de de vagas totais no estacionamento.
  3. Indicação de quantidade de cancelas de acesso ao estacionamento.

Equipes

  1. Josiane, Filipe, Matheus
  2. Anderson Gaspar, José Augusto
  3. Paula, Mateus, Nelson
  4. Adonis, Daniel, Pedro
  5. Layssa, Natalia, Luísa
  6. Lucas T., Lucas S. Henrique
  7. Alana, Francin, Reinaldo
  8. João Leonardo, Vinícius, Thiago
  9. Aldebarã, Alline, Ricardo
Aula 33 - 12/6/15: Terceira avaliação
Aula 34 - 17/6/15: Projeto final em equipes: ...

Projetos_Finais_CIL29003

Aula 35 - 19/6/15: Projeto final em equipes: ...

Projetos_Finais_CIL29003

Aula 36 - 24/6/15: Projeto final em equipes: ...

Projetos_Finais_CIL29003

Aula 37 - 26/6/15: Projeto final em equipes: Avaliação

Projetos_Finais_CIL29003

Aula 38 - 1/7/15: Projeto final em equipes: Avaliação

Projetos_Finais_CIL29003

Aula 39 - 3/7/15: Reavaliação final