Mudanças entre as edições de "DLP29007-2019-2"
(15 revisões intermediárias por 2 usuários não estão sendo mostradas) | |||
Linha 225: | Linha 225: | ||
− | =Aula 08/11/2019 – Modificando o sistema = | + | =Aula 08/11/2019 – Modificando o sistema - Exercício 1 = |
*Exercício 1: | *Exercício 1: | ||
Linha 231: | Linha 231: | ||
** Utilizando os conceitos de ponteiros relembrados na última aula, implemente um programa simples que escreva nas chaves os estados das chaves. | ** Utilizando os conceitos de ponteiros relembrados na última aula, implemente um programa simples que escreva nas chaves os estados das chaves. | ||
+ | |||
+ | |||
+ | =Aula 18/11/2019 – Modificando o sistema - Exercício 1 (cont.) = | ||
+ | ** [http://docente.ifsc.edu.br/roberto.matos/dlp2_public/nios2_quartus2_project.qar QAR Base] | ||
+ | |||
+ | *'''system.h''': fornece endereços base gerados automaticamente. Exemplo: | ||
+ | :<code> | ||
+ | #define SW_PIO_BASE 0x11020 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | *'''alt_types.h''': fornece tipos de dados de baixo nível explicitamente definidos. | ||
+ | :<code> | ||
+ | typedef signed char alt_8; | ||
+ | typedef unsigned char alt_u8; | ||
+ | typedef signed short alt_16; | ||
+ | typedef unsigned short alt_u16; | ||
+ | typedef signed long alt_32; | ||
+ | typedef unsigned long alt_u32; | ||
+ | typedef long long alt_64; | ||
+ | typedef unsigned long long alt_u64; | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | *'''io.h''': fornece macros de leitura e escrita aprimoradas para registro de E/S. | ||
+ | **IORD(base, offset): lê um registro de E/S com o endereço base e o deslocamento especificados. | ||
+ | **IOWR(base, offset, data): escreve em um registro de E/S com o endereço base especificado e o deslocamento. | ||
+ | |||
+ | =Aula 22/11/2019 – Análise das Correções = | ||
+ | * Foi feita a análise individual de cada grupo para as correções da A2. | ||
+ | |||
+ | =Aula 29/11/2019 – Modificando o Sistema e A3= | ||
*Exercício 2: | *Exercício 2: | ||
− | ** Adicione o LCD no sistema | + | ** Adicione o LCD no sistema. |
** Verifique a documentação da [ftp://ftp.intel.com.br/Pub/fpgaup/pub/Intel_Material/16.0/University_Program_IP_Cores/Audio_Video/Character_LCD.pdf biblioteca do LCD da Intel], inicialize o display e escreva algo nele. | ** Verifique a documentação da [ftp://ftp.intel.com.br/Pub/fpgaup/pub/Intel_Material/16.0/University_Program_IP_Cores/Audio_Video/Character_LCD.pdf biblioteca do LCD da Intel], inicialize o display e escreva algo nele. | ||
+ | |||
+ | == A3 - Nios II e DE2-115== | ||
+ | |||
+ | *'''Temas selecionados por Sorteio em sala de aula:''' | ||
+ | ** G1 - Alisson e Guilherme: USB Paintbrush | ||
+ | ** G2 - Rafael e Suyan: SD Card Demonstration | ||
+ | ** G3 - Allex, Ana e Douglas: PS/2 Mouse demonstration | ||
+ | ** G4 - Felipe: Audio Recording and Playing | ||
+ | ** G5 - Theodor: Karaoke Machine | ||
+ | |||
+ | *Material: | ||
+ | **[https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=163&No=502&PartNo=4 Site Terasic] | ||
+ | |||
+ | * 06/12 Apresentação da demo: | ||
+ | **Apresentação demonstração funcionando. | ||
+ | **Apresentar as características dos componentes com os quais a FPGA interage na demonstração. Por exemplo, interfaces, funcionalidades, etc. | ||
+ | **Propor modificação | ||
+ | |||
+ | * 13/12 Apresentação da modificação: | ||
+ | **Fazer uma pequena modificação no hardware e no software e apresentar para a turma | ||
+ | |||
+ | =Aula 02/12/2019 – Apoio A3= | ||
+ | |||
+ | =Aula 06/12/2019 – Apresentação Demonstração = | ||
+ | *Ordem de apresentação: | ||
+ | ** G3 – G4 – G1 – G2 – G5 | ||
+ | *Slides | ||
+ | **G4 - Felipe - [https://wiki.sj.ifsc.edu.br/images/8/81/Atividade-3_DLP2.pdf Audio Recording and Playing] | ||
+ | |||
+ | =Aula 13/12/2019 – Apresentação da modificação = | ||
+ | *Ordem de apresentação: | ||
+ | ** G1 – G3 – G5 – G4 – G2 |
Edição atual tal como às 17h02min de 6 de dezembro de 2019
Dispositivos Lógicos Programáveis 2: Diário de Aula 2019-2
- Professor: Roberto de Matos
- Encontros: 2ª (a cada 15 dias) e 6ª às 15:40h
- Local: Laboratório de Programação
- Atendimento Paralelo: 4ª às 10h e 14h (1h cada)
- Plano de Ensino
- Cronograma de Aulas: Conteúdo Programado no Portal SIGAA
- Notas
Links Úteis
- Usando os Kits de FPGA
Materiais de Aula
Aula 29/07/2019 – Apresentação
- Apresentação do professor.
- Apresentação da disciplina.
- Projetos com FPGA
Aula 02/08/2019 – Complexidade e Projeto de Sistemas Digitais
- Exemplo uC vs. FPGA
- Notas de Aula:
Aula 09/08/2019 – Complexidade e Projeto de Sistemas Digitais (cont.)
- Experimento:
- Medição de tempos de propagação em circuitos combinacionais Até Visualização dos tempos de propagação no Chip Planner
- Uso de Logic Lock para definir a área a ser ocupada pelo circuito
- Exercício:
Aula 12/08/2019 – Não Houve Aula
- FINALIZAR O EXERCÍCIO:
Aula 16/08/2019 – Síntese do VHDL
- Lecture 02: Synthesis of VHDL Code
- Concepção dos operadores em VHDL
- Experimento:
- Medição de tempos de propagação em circuitos combinacionais A partir de Configurando o compilador
- Exemplo usando DSE
- F1 Instances
Aula 23/08/2019 – Eficiência de Circuitos Combinacionais
- Leitura recomendada:
- Capítulo 7 do livro do Chu
- Notas de aula:
Aula 26/08/2019 – Eficiência de Circuitos Combinacionais
- Experimentos Circuitos Combinacionais:
Aula 30/08/2019 – Eficiência de Circuitos Sequenciais
- Leitura recomendada:
- Capítulo 8 e 9 do livro do Chu
- Notas de aula:
- Experimentos Circuitos Sequenciais:
- SDC:
create_clock -name CLK50MHz -period 50MHz [get_ports {clk}]
derive_pll_clocks
derive_clock_uncertainty
</syntaxhighlight>
- Exemplo simples e muito bom de Glitch:
Aula 02/09/2019 – Eficiência de Circuitos Sequenciais (cont.)
- Experimentos Circuitos Sequenciais:
- SDC:
create_clock -name CLK50MHz -period 50MHz [get_ports {clk}]
derive_pll_clocks
derive_clock_uncertainty
</syntaxhighlight>
Aula 09/09/2019 – Máquinas de Estado
- Leitura recomendada:
- Capítulo 10 do livro do Chu
- Notas de aula:
Aula 13/09/2019 – Máquinas de Estado (cont.)
- Leitura recomendada:
- Capítulo 10 do livro do Chu
- Notas de aula:
- Experimentos Máquinas de Estado:
Aula 20/09/2019 – Apresentação A2
- Arquivo Inicial
- Resolver os problemas utilizando as técnicas estudadas:
- Verificar a possibilidade de compartilhamento de operador e funcionalidade. Aplicar "time sharing" onde for possível.
- Resolver problemas de reset assíncrono e manipulação de clock.
- Contador Principal:
- Usar o PLL para diminuir o tamanho do contador.
- Verificar a possibilidade da substituição de contadores pelo contador LFSR (ler seção 9.2.3)
- FSM
- Implementar máquina de estado com a funcionalidade de despertar e soneca.
- Usar a técnica look-ahead buffer para sincronizar a saída.
- Relatório:
- Diagramas de hardware de antes e depois da mudança.
- Explicar as mudanças referenciando as bases teóricas utilizadas.
- Diagrama ASM da máquina de estado
- Tabelas de comparação discutindo resultados de área e frequência.
- Apresentar as estratégias de testes e apontar como replicar os resultados.
- Enviar o QAR com projeto completo (*.VHD, *.VHT e/ou *.DO).
- O trabalho deve funcionar da DE2-115
- Apresentação e defesa pela dupla
- Data: 13/10
Aula 23/09/2019 – Desenvolvimento A2
Aula 27/09/2019 – Desenvolvimento A2
Aula 04/10/2019 – Desenvolvimento A2
Aula 07/10/2019 – Desenvolvimento A2
Aula 11/10/2019 – Desenvolvimento A2
Aula 18/10/2019 – Desenvolvimento A2
Aula 21/10/2019 – Apresentação A2
Aula 25/10/2019 – Não houve Aula
Aula 29/10/2019 – AULA EXTRA: Introdução ao NIOS II
- Objetivo:
- Entender o método para desenvolvimento de software do NIOS II
- Experimento:
Aula 01/11/2019 – Introdução ao NIOS II (cont.)
Aula 04/11/2019 – Introdução ao NIOS II (cont.)
Roteiro para os impacientes:
OBS.: Você deve fazer pelo menos uma vez o roteiro Laboratório NIOS II, pois lá existe muito conteúdo teórico interessante.
- Abra "Tools -> Platform Designer"
- Configure o dispositivo do projeto. Família: Cyclone IV; Device: EP4CE115F29C7.
- Verifique se o "clk_0" está setado para 50 MHz
- Adicione os seguintes componentes com os seguintes nomes (o nome precisa estar exatamente igual).
- Obs.: Conecte os clocks e resets de todos os blocos no clk e clk_reset do "clk_0".
1- On-Chip Memory (RAM or ROM):
Tamanho: 20480
Nome: onchip_mem
2- Nios II (Classic) Processor:
Selecione: Nios II/s
Hardware multiplication type: None
Nome: cpu
Finalize
Conecte o clk e o reset_n
Conecte as portas data_master e instruction_master na porta s1 da "onchip_mem"
Abra as configurações da "cpu" e defina o seguinte:
- Para o Reset vector e Exception vector a memória "onchip_mem.s1"
- Cache de 2Kbytes
3- JTAG UART
Nome: jtag_uart
avalon_jtag_slave <= data_master ("cpu")
4- Interval Timer
Nome: sys_clk_timer
s1 <= data_master
5- System ID Peripheral
Nome: sysid
control_slave <= data_master
6- PIO (Parallel I/O)
Nome: led_pio
s1 <= data_master
Exporte a porta external_connection
- Defina os endereços base: "System menu -> Assign Base Addresses"
- Selecione as IRQs e defina IRQ Timer = 1 e IRQ JTAG =16
- Clique em "Generate HDL ...", selecione VHDL, clique "Generate"
- Feche o "Platform Designer"
Aula 08/11/2019 – Modificando o sistema - Exercício 1
- Exercício 1:
- Adicione 8 entradas e ligue nas chaves da DE2-115
- Utilizando os conceitos de ponteiros relembrados na última aula, implemente um programa simples que escreva nas chaves os estados das chaves.
Aula 18/11/2019 – Modificando o sistema - Exercício 1 (cont.)
- system.h: fornece endereços base gerados automaticamente. Exemplo:
- define SW_PIO_BASE 0x11020
</syntaxhighlight>
- alt_types.h: fornece tipos de dados de baixo nível explicitamente definidos.
typedef signed char alt_8;
typedef unsigned char alt_u8;
typedef signed short alt_16;
typedef unsigned short alt_u16;
typedef signed long alt_32;
typedef unsigned long alt_u32;
typedef long long alt_64;
typedef unsigned long long alt_u64;
</syntaxhighlight>
- io.h: fornece macros de leitura e escrita aprimoradas para registro de E/S.
- IORD(base, offset): lê um registro de E/S com o endereço base e o deslocamento especificados.
- IOWR(base, offset, data): escreve em um registro de E/S com o endereço base especificado e o deslocamento.
Aula 22/11/2019 – Análise das Correções
- Foi feita a análise individual de cada grupo para as correções da A2.
Aula 29/11/2019 – Modificando o Sistema e A3
- Exercício 2:
- Adicione o LCD no sistema.
- Verifique a documentação da biblioteca do LCD da Intel, inicialize o display e escreva algo nele.
A3 - Nios II e DE2-115
- Temas selecionados por Sorteio em sala de aula:
- G1 - Alisson e Guilherme: USB Paintbrush
- G2 - Rafael e Suyan: SD Card Demonstration
- G3 - Allex, Ana e Douglas: PS/2 Mouse demonstration
- G4 - Felipe: Audio Recording and Playing
- G5 - Theodor: Karaoke Machine
- Material:
- 06/12 Apresentação da demo:
- Apresentação demonstração funcionando.
- Apresentar as características dos componentes com os quais a FPGA interage na demonstração. Por exemplo, interfaces, funcionalidades, etc.
- Propor modificação
- 13/12 Apresentação da modificação:
- Fazer uma pequena modificação no hardware e no software e apresentar para a turma
Aula 02/12/2019 – Apoio A3
Aula 06/12/2019 – Apresentação Demonstração
- Ordem de apresentação:
- G3 – G4 – G1 – G2 – G5
- Slides
- G4 - Felipe - Audio Recording and Playing
Aula 13/12/2019 – Apresentação da modificação
- Ordem de apresentação:
- G1 – G3 – G5 – G4 – G2