Ementa

  • Revisão dos conceitos de Lógica Digital utilizados no FPGA;
  • Introdução à arquitetura de Lógica Programável Intel FPGA (Altera);
  • Construções em Verilog necessárias para descrever a lógica no FPGA;
  • Funcionalidades da ferramenta Quartus utilizada para configurar o FPGA com sua descrição em Verilog;
  • Laboratórios práticos aplicando os conceitos aprendidos no Kit DE10-Lite; (incluso no Treinamento)
  • Boas práticas para projetos em FPGA: Como descrever lógica da forma mais correta e robusta;
  • Conceitos básicos de Timing para garantir a estabilidade do seu projeto;
  • Construções mais utilizadas em projetos síncronos para lógica programável;
  • Ferramentas de depuração para dispositivos Intel FPGA;
  • Bônus: Conheça o Qsys! Ferramenta que permite montar um sistema com microcontrolador e periféricos em minutos.
  • Apresentação do FPGA

Revisão sobre lógica digital, contextualizando o FPGA
Introdução sobre arquitetura de processadores, comparando com o funcionamento do FPGA
Como são implementadas as portas lógicas no FPGA
Como implementar as portas lógicas em Verilog através de operadores
Arquitetura do FPGA: registradores, multiplicadores, memória, hard IPs (controlador PCIe, DDR, transceivers, etc)

  • Pinos de entrada e saida, no FPGA, Verilog e Quartus 

Recursos disponíveis nos pinos de entrada e saída do FPGA
Implementação em Verilog dos pinos
Mapeando os pinos do Verilog no FPGA através do Quartus: Pin Planner
Apresentação da ferramenta Quartus: principais janelas, abas, etc
Atribuições em Verilog, mapeamento de sinais internos para as entradas e saídas
Apresentação do Kit DE10-Lite: principais funcionalidades e onde obter mais recursos
Projeto 1, parte 1: Criar uma descrição de hardware em Verilog, mapear suas entradas e saídas nos pinos do FPGA, conectando botões em LEDs.
 

  • Compilação do Quartus

Processo de compilação no Quartus
Mensagens de compilação
Formas de visualização gráfica dos resultados da compilação
Projeto 1, parte 2: Compilar o projeto criado e analisar os resultados da compilação

  • Configuração do FPGA: Como funciona e como fazer

Formas de configuração suportadas pelo FPGA
Como configurar o FPGA utilizando o Quartus Programmer
Projeto 1, parte 2: Configurar o FPGA com o projeto criado e observar o comportamento

  • Criação e configurações de projetos no Quartus

Passo a passo para criação de um novo projeto
Importação de configurações de projetos existentes
Configurações de projeto: arquivos e bibliotecas, opções de compilação, etc.

  •  Interconexões e constantes em Verilog

Interconexões: conceitos e sintaxe
Constantes numéricas: formas de representação
Projeto 2: Criar um novo projeto, importar configurações padrão para o Kit, fazer incrementos no Verilog (multiplexadores, interconexões, constantes). Compilar, visualizar o resultado, configurar o FPGA e testar

  • Processos explícitos em Verilog: Always/Entendendo a simulação vs. compilação para garantir a implementação correta do hardware no FPGA

Processos combinacionais: conceito de processos, lista de sensibilidade, sintaxe em Verilog
Funcionamento da simulação (deltas/ciclos de simulação, agendamento, etc)
Como a compilação gera hardware a partir do Verilog e comparação com a simulação
Como garantir que o resultado da compilação seja equivalente ao resultado da simulação
Construções em Verilog utilizadas dentro dos processos combinacionais: if, case, loop
Projeto 3: Adicionar um processo explícito no Verilog descrevendo a mesma lógica já implementada. Compilar, visualizar o resultado, configurar o FPGA e testar.

  • Registradores e clocks: implementação em Verilog e particularidades para uso no FPGA 

Funcionamento de um registrador genérico e dos registradores específicos do FPGA
Boas práticas para uso de registradores em FPGA para garantir o correto funcionamento
Implementação de registradores em Verilog
Boas práticas para descrição dos registradores do FPGA em Verilog
Projeto 4: Implementar um contador síncrono com reset e enable, com a saída conectada nos LEDs. Compilar, visualizar o resultado, configurar o FPGA e testar.

  • Conceitos de análise de Timing e sua aplicação no FPGA/ Boas práticas para o correto funcionamento no FPGA 

Informações sobre frequência máxima nos relatórios de compilação
Importância da análise de timing 
Conceitos necessários para compreender os requisitos e análise de timing
Definição de meta-estabilidade, quando ocorre e como evitar
Sentenças básicas para definição de restrições de timing em SDC
Projeto 5: Adicionar no design as estruturas recomendadas para evitar problemas de timing. Criar um arquivo SDC para o projeto. Compilar, visualizar o resultado, configurar o FPGA e testar.

  • Depuração do sistema em tempo de execução usando o analisador lógico embarcado SignalTap 

Instanciação do SignalTap no projeto e configuração da aquisição de dados
Uso da ferramenta para depuração
Projeto 6: Adicionar um detector de borda no sinal de enable. Instanciar o SignalTap, compilar, e iniciar a depuração. Observar possíveis problemas utilizando o SignalTap.

  • Trabalhando com níveis de hierarquia no projeto

Conceito de projeto hierárquico
Sintaxe para instanciação de módulos em Verilog
Conceito de parametrização de módulos e sintaxe em Verilog
Biblioteca de IPs gratuitos e comerciais do Quartus, IP Catalog
Projeto 7: Instanciar uma memória  no projeto do contador, a partir do IP Catalog. Instanciar um conversor binário para o display de 7 segmentos. Compilar, visualizar o resultado, configurar o FPGA e testar.

  • Depuração do sistema em tempo de execução usando editor de memória ISMCE e a ferramenta para monitoramento e atuação do ISSP

Como funciona o monitoramento e edição de memória em tempo de execução e como habilitar
Utilização da ferramenta In-Sytem Memory Content Editor (ISMCE) para acessar a memória interna do FPGA em tempo de execução
Instanciação do componente In-System Sources and Probes (ISSP) no projeto
Utilização do ISSP para monitorar e atuar em sinais internos do FPGA em tempo de execução
Projeto 8: Habilitar ISMCE, instanciar ISSP. Compilar, configurar o FPGA e depurar o sistema em tempo de execução utilizando estas ferramentas.
 

  • Trabalhando com máquinas de estados finitos (FSM)

Conceito de máquinas de estados
Modelagem e implementação de uma máquina de estados em Verilog
Diferentes arquiteturas de máquinas de estados, vantagens e desvantagens de cada uma
Projeto 9: Descrever em Verilog uma máquina de estados para implementar um debouncer.

  • Conceito de simulação e testbench / Construções em Verilog para simulação

Conceito e utilidade da simulação e testbench
Construções em Verilog úteis para simulação
Implementação de um testbench em Verilog
Projeto 10: Implementação de um testbench em Verilog

  • Simulação de módulos em Verilog utilizando a ferramenta ModelSim 

Apresentação da ferramenta ModelSim
Procedimento para simulação utilizando o ModelSim
Funcionalidades básicas do ModelSim
Projeto 11: Criar um projeto do ModelSim para simulação da máquina de estados implementada. Realizar a simulação e analisar os resultados.

  • Extra: Conheça o Qsys! Ferramenta que permite montar um sistema com microcontrolador e periféricos em minutos

Apresentação da ferramenta Qsys e suas principais funcionalidades.
Este treinamento terá uma continuação com carga horária de 20h abordando exclusivamente o Qsys e as ferramentas de software para desenvolvimento com o processador Nios, que pode ser embarcado dentro do FPGA utilizando a ferramenta do Qsys.