Mudanças entre as edições de "MIC29004-2019-2"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 320: Linha 320:
 
#Carregue na SRAM 10 valores sequenciais a partir do endereço 0x0102 usando endereçamento de dados indireto com pós-incremento.
 
#Carregue na SRAM 10 valores sequenciais a partir do endereço 0x0102 usando endereçamento de dados indireto com pós-incremento.
 
#Tenha o mesmo resultado do programa anterior, mas que utilize endereçamento de dados indireto com pré-decremento.
 
#Tenha o mesmo resultado do programa anterior, mas que utilize endereçamento de dados indireto com pré-decremento.
 +
 +
 +
 +
= Aula 01/10/2019: Instruções Aritmética e desvio =
 +
*'''Objetivos:'''
 +
**Corrigir exercícios da Aula prática
 +
**Mais exercícios
 +
 +
*'''Exercícios: '''
 +
**Faça programas que utilizem a rotação para esquerda e direita. Quais os tipos de rotação possível? Quais os bits de status podem ser modificados?
 +
** Faça a soma de dois valores de 16 bits usando os registradores.
 +
** Implemente estrutura de alto nível: IF-THEN-ELSE, WHILE e SWITCH-CASE

Edição das 09h18min de 7 de outubro de 2019

Microprocessadores: Diário de Aula 2019-2

Material

Listas de Exercício

Aula 29/07/2019: Apresentação

  • Apresentação do professor.
  • Apresentação da disciplina: conteúdo, bibliografia e avaliação.


Aula 30/07/2019: Introdução sobre Memória


Diagrama em blocos da memória e barramentos

No diagrama abaixo está representado um bloco de memória primária de 16x8 (dezesseis endereços por 8 bits).

  • Note que uma posição de memória pode ser vista como uma caixa que possue um endereço e um conteúdo.
  • O conteúdo associado a posição de memória é uma palavra binária e, neste caso, possui 8 bits.
DiagramaBlocosMemorias2.jpg

Para que us dispositivo externo possa "acessar" a memória para leitura ou escrita, ele deve se utilizar de um conjunto de fios que chamamos de barramentos.

Barramento de Endereços

Este barramento permite determinar o endereço de uma posição a ser acessada na memória. Um barramento de 4 linhas de endereço é designado por A3,A2,A1 e A0.

Supondo uma memória com endereços designados da forma hexadecimal de 0h a Fh. Supondo que A3 seja associado ao bit mais significativo e A0 ao bit menos significativo. Então, para acessar a posição Bh de memória, deve-se injetar A3=1, A2=0, A1=1 e A0=1. Note que

O termo "injetar" significa aqui que um dispositivo externo deve forçar tensão nas linhas do barramento. Esta tensão depende da tecnologia utilizada. Poderia ser, por exemplo, 5V para o nível lógico 1 e 0V par ao nível lógico 0.,


Aula 04/08/2019: Laboratório de Memória - Introdução


  • Experimento 1 - Memória 16x4:
  1. Entrar no Windows.
  2. Baixar o arquivo de projeto aqui. Coloque em um diretório conhecido.
  3. Descompacte. Clique sobre o arquivo *.pdsprj. O PROTEUS será executado e o projeto aberto.
  4. Observe que o projeto está parcialmente pronto. Você pode entrar em modo simulação.
  5. O sistema está preparado para que se possa inserir ou ler manualmente posições de memória.
  6. Leia todas as 16 posições de memória e anote os valores.
  7. Grave o número da sua matrícula na memória. Preencha o restante com zero.
  8. Note o Chip Select está habilitado sempre. Coloque uma chave adicional para colocar o Chip Select.


  • Atividade 1 - Associação de Memórias:
    • Usando como referência o experimento 1 e os exemplos de associação de memória vistos em sala de aula, implemente o seguinte:
  1. Uma memória 16x8
  2. Uma memória 64x4
  3. Uma memória 64x8
  • Entrega:
    • Fazer em Duplas
    • Última Aula de dúvidas: 06/08 (segunda)
    • Apresentação: 07/08 (terça)

Aula 12/08/2019: Laboratório de Memória - Associação

  • Finalizar o Exercício

Aula 13/08/2019: Introdução à Arquitetura e Organização de Computadores

  • Objetivos:
    • Introdução a Microprocessadores


Aula 19/08/2019: Arquitetura BIP

  • Objetivos:
    • Entender a Arquitetura BIP
    • Programar em Assembly o BIP


Aula 20/08/2019: Organização do BIP

  • Objetivos:
    • Entender a Organização do BIP
    • Criar tabela de decodificação do BIP


Aula 26/08/2019: Decodificador BIP

  • Objetivos:
    • Entender a execução do BIP passo-a-passo no Proteus
    • Implementar o circuito decodificador do BIP no Proteus
    • Entender as mudanças da arquitetura e da organização do BIP II


Aula 27/08/2019: Decodificador BIP (cont.) e BIP II

  • Objetivos:
    • Finalizar o Decode do BIP
    • Introdução da arquitetura do BIP II
  • Exercícios:
    • Implementar e simular exemplos com as instruções de desvio do BIP II


Aula 02/09/2019: Organização do BIP II

  • Objetivos:
    • Entender as mudanças da arquitetura e da organização do BIP II
    • Artigo BIP II
  • Exercício:
    • Implementar as mudanças da organização do BIP para criar o BIP II
    • Implementar o decodificador do BIP II (32x8)
    • Implementar programas de testes no assembly do BIP II
    • Trabalho em Dupla
    • Entrega 08/09 e Apresentação 10/09

Aula 03/09/2019: Dúvidas Lista de Exercício e Apoio Trabalho BIP II

  • Objetivos:
    • Aula de dúvidas


Aula 09/09/2019: Prova I

  • Objetivos:
    • Avaliação dos conceitos de Memória, Arquitetura e Organização, BIP I e II

Aula 10/09/2019: Apresentação Trabalho BIP II

  • Objetivos:
    • Apresentação do Trabalho BIP II


Aula 16/09/2019: Correção da Prova

  • Objetivos:
    • Correção da avaliação para completar o processo de ensino-aprendizagem.
  • Notas:
  • Foi decidido junto à turma que o péssimo resultado da avaliação será recuperado no fim do semestre.
  • O professor se colocou à disposição para recuperar o conteúdo durante o semestre, tirando dúvidas em sala de aula ou no horário de atendimento.
  • Os alunos se comprometeram em recuperar o conteúdo, pois é essencial para a continuidade da disciplina.

Aula 17/09/2019: Introdução aos Microcontroladores

  • Objetivos:
    • Entender os conceitos e diferenças entre um Processador e um Microcontrolador.
    • Introdução à aplicações microcontroladas

Homework

  • Ler:
    • 2. Visão Geral
    • 7. Núcleo AVR
    • Responder:
      • Qual arquitetura de memória usada?
      • Detalhes da ALU (Quais os tipos de operação?)
      • Registradores (Status, Uso geral e de Pilha)
      • Modos de endereçamento
      • Conjunto de instruções (classes e exemplos)
  • Ler:
    • 8. Memórias do AVR
      • Flash
      • SRAM
      • EEPROM
    • Responder
      • Qual o tamanho e o formato da palavra de de dados?
      • Qual o tamanho e o formato da palavra de instrução?

Aula 23/09/2019: Arquitetura do AVR

  • Objetivos:
    • Finalizar CISC vs. RISC
    • Visão Geral dos Microcontroladores ATmega48A/PA/88A/PA/168A/PA/328/P
    • Núcleo do AVR (ALU e Banco de Registradores)
    • Hierarquia de Memórias do AVR

Aula 23/09/2019: Arquitetura do AVR (cont.)

  • Objetivos:
    • Finalizar os objetivos da última aula
  • Experimento:
    • Simulação do primeiro código em Assembly usando o MPLAB X IDE
    • Criar projeto

start:

   inc r16
   inc r17
   sts $0100,r16
   sts $0101,r16
   rjmp start

</syntaxhighlight>

Homework


Aula 30/09/2019: Modos de Endereçamento

  • Objetivos:
    • Introduzir arquitetura Load-Store
    • Entender:
      • Modos de endereçamento do AVR e
      • Instruções relacionadas a cada modo do ATmega328p
    • Implementar programas para compreensão dos novos conceitos

Homework

  • OBS.: Instalar e configurar as ferramentas em casa para quem não fez (ver homework da aula passada).

Exercício 1

  • Testar TODOS os trechos de códigos apresentados. Modifique os valores das localizações de memória afetadas para verificar se o funcionamento está coerente.
  • Exemplo:

start:

   ldi R16,0x14
   rjmp start

</syntaxhighlight>

  • Pergunte-se:
    • A instrução em linguagem de máquina está coerente?
    • Se mudar o valor do imediato 0x14 para 0x25, como afeta a instrução montada? E se mudar o registrador de R16 para R17?
    • Eu posso carregar um imediato para o registrador R0? Por quê?
  • Faça isso para todos os trechos de código apresentados.

Exercício 2

  • Faça um programa que some dois números de 8 bits: C = A + B
  • Considere as varáveis armazenadas sequencialmente a partir do primeiro endereço da memória SRAM.


Aula 01/10/2019: Modos de Endereçamento (cont.)

  • Objetivos:
    • Corrigir exercícios da Aula prática
    • Mais exercícios
  • Exercícios:
    • Some as constantes 25, 14 e 0x32 e armazene o resultado em R0.
    • Some as constantes 32 e 0x23 e armazene o resultado em uma variável na SRAM (endereço 0x010A).
    • Re-implemente o código abaixo usando endereçamento indireto para acessar o R0 como posição de memória na SRAM:

ldi r16, $BB mov r0, r16 </syntaxhighlight>


Homework

  • Estudar instruções de desvio e aritméticas
  • Escrever códigos que:
  1. Execute 1.000 vezes uma ação em loop.
  2. Execute 100.000 vezes uma ação em loop.
  3. Carregue na SRAM 10 valores sequenciais a partir do endereço 0x0102 usando endereçamento de dados indireto com pós-incremento.
  4. Tenha o mesmo resultado do programa anterior, mas que utilize endereçamento de dados indireto com pré-decremento.


Aula 01/10/2019: Instruções Aritmética e desvio

  • Objetivos:
    • Corrigir exercícios da Aula prática
    • Mais exercícios
  • Exercícios:
    • Faça programas que utilizem a rotação para esquerda e direita. Quais os tipos de rotação possível? Quais os bits de status podem ser modificados?
    • Faça a soma de dois valores de 16 bits usando os registradores.
    • Implemente estrutura de alto nível: IF-THEN-ELSE, WHILE e SWITCH-CASE