CIL29003-2015-1

De MediaWiki do Campus São José
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_(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. Livro Pedroni: 11.8 ==> 11.12, 11.14 ==> 11.21, 11.23, 11.27 e 11.28
  2. Livro Pedroni: 12.1 ==> 12.3, 12.6a) 12.6b), 12.9 ==>12.12, 12.16, 12.17, 12.22
  3. Livro Pedroni: 13.2, 13.7, 13.8, 13.9
  4. Livro Pedroni: 14.1 ==> 14.5, 14.8, 14.23, 14.33, 14.37, 14.38, 14.39.
  5. 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
Aula 33 - 12/6/15: Terceira avaliação
Aula 34 - 17/6/15: Projeto final em equipes: ...
Aula 35 - 19/6/15: Projeto final em equipes: ...
Aula 36 - 24/6/15: Projeto final em equipes: ...
Aula 37 - 26/6/15: Projeto final em equipes: Avaliação
Aula 38 - 1/7/15: Projeto final em equipes: Avaliação
Aula 39 - 3/7/15: Reavaliação final