Mudanças entre as edições de "DLP29007-2019-2"
(28 revisões intermediárias por 2 usuários não estão sendo mostradas) | |||
Linha 7: | Linha 7: | ||
*[[DLP2-EngTel_(Plano_de_Ensino)| Plano de Ensino]] | *[[DLP2-EngTel_(Plano_de_Ensino)| Plano de Ensino]] | ||
* [http://sigaa.ifsc.edu.br/ Cronograma de Aulas]: Conteúdo Programado no Portal SIGAA | * [http://sigaa.ifsc.edu.br/ Cronograma de Aulas]: Conteúdo Programado no Portal SIGAA | ||
+ | *[http://docente.ifsc.edu.br/roberto.matos/dlp2_public/adm/notas_dlp2_2019-2.pdf Notas] | ||
+ | |||
== Links Úteis == | == Links Úteis == | ||
Linha 105: | Linha 107: | ||
*[http://docente.ifsc.edu.br/roberto.matos/dlp2_public/material/qts_qii51006_marked.pdf Prática Recommended Design Practices - Marcado] | *[http://docente.ifsc.edu.br/roberto.matos/dlp2_public/material/qts_qii51006_marked.pdf Prática Recommended Design Practices - Marcado] | ||
− | =Aula 09/10/2019 – Máquinas de Estado= | + | =Aula 09/09/2019 – Máquinas de Estado= |
+ | *Leitura recomendada: | ||
+ | **Capítulo 10 do livro do Chu | ||
+ | |||
+ | *Notas de aula: | ||
+ | ** [http://docente.ifsc.edu.br/roberto.matos/dlp2_public/material/dlp29007-lecture05-fsm.pdf Lecture 05: Finite State Machines: Principle and Practice] | ||
+ | |||
+ | =Aula 13/09/2019 – Máquinas de Estado (cont.)= | ||
*Leitura recomendada: | *Leitura recomendada: | ||
**Capítulo 10 do livro do Chu | **Capítulo 10 do livro do Chu | ||
Linha 112: | Linha 121: | ||
** [http://docente.ifsc.edu.br/roberto.matos/dlp2_public/material/dlp29007-lecture05-fsm.pdf Lecture 05: Finite State Machines: Principle and Practice] | ** [http://docente.ifsc.edu.br/roberto.matos/dlp2_public/material/dlp29007-lecture05-fsm.pdf Lecture 05: Finite State Machines: Principle and Practice] | ||
− | |||
*Experimentos Máquinas de Estado: | *Experimentos Máquinas de Estado: | ||
− | ** [http://docente.ifsc.edu.br/roberto.matos/dlp2_public/ | + | ** [http://docente.ifsc.edu.br/roberto.matos/dlp2_public/pratica_cap10.zip FSM Memory Controller] |
+ | |||
+ | =Aula 20/09/2019 – Apresentação A2= | ||
+ | * [http://docente.ifsc.edu.br/roberto.matos/dlp2_public/A2_2019_2.qar 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: | ||
+ | ** [[Laboratórios_com_Altera_NIOS2 | Laboratório NIOS II]] | ||
+ | |||
+ | |||
+ | =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órios_com_Altera_NIOS2 | 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.) = | ||
+ | ** [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: | ||
+ | ** 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. | ||
+ | |||
+ | == 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