MIC29004-2019-2
Microprocessadores: Diário de Aula 2019-2
- Professor: Roberto de Matos
- Encontros: 2ª e 3ª feira às 9:40h
- Atendimento Paralelo: 4ª às 10h e 14h (1h cada)
- Plano de Ensino
- Cronograma de Aulas
- Notas
Material
Listas de Exercício
- Lista de Exercícios: Memória, Arquitetura, Organização e BIP
- Lista Introdução a programação do BIP
- Lista de Exercícios Microcontroladores e AVR
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.
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
- Notas de Aula:
- Experimento 1 - Memória 16x4:
- Entrar no Windows.
- Baixar o arquivo de projeto aqui. Coloque em um diretório conhecido.
- Descompacte. Clique sobre o arquivo *.pdsprj. O PROTEUS será executado e o projeto aberto.
- Observe que o projeto está parcialmente pronto. Você pode entrar em modo simulação.
- O sistema está preparado para que se possa inserir ou ler manualmente posições de memória.
- Leia todas as 16 posições de memória e anote os valores.
- Grave o número da sua matrícula na memória. Preencha o restante com zero.
- 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:
- Uma memória 16x8
- Uma memória 64x4
- 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
- Notas de Aula:
- Experimento:
Aula 19/08/2019: Arquitetura BIP
- Objetivos:
- Entender a Arquitetura BIP
- Programar em Assembly o BIP
- Notas de Aula:
- Experimento:
Aula 20/08/2019: Organização do BIP
- Objetivos:
- Entender a Organização do BIP
- Criar tabela de decodificação do BIP
- Notas de Aula:
- Software Utilizado:
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
- Experimento:
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
- Experimento:
- 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
- Objetivos:
- Dúvidas da Lista de Exercícios: Memória, Arquitetura, Organização e BIP para prova I.
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
- Notas de Aulas:
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?
- 8. Memórias do AVR
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
- Notas de Aulas:
Aula 23/09/2019: Arquitetura do AVR (cont.)
- Objetivos:
- Finalizar os objetivos da última aula
- Notas de Aulas:
- 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
- Instalar o MPLAB X e o XC8: Setup Ferramentas AVR para Assembly
- Rodar o exemplo da aula para verificar
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
- Notas de Aulas:
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:
- Execute 1.000 vezes uma ação em loop.
- Execute 100.000 vezes uma ação em loop.
- 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.
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