Tutorial FPGA: Desenvolva um Contador com Intel Quartus

Este tutorial explica o processo de desenvolvimento de um projetoIntrodução ao SystemVerilog: História e EvoluçãoIntrodução ao SystemVerilog: História e EvoluçãoDescubra a trajetória do SystemVerilog, sua origem a partir do Verilog, e os marcos que transformaram a verificação de hardware na indústria digital. simples em FPGA utilizando a ferramenta Intel Quartus. O objetivo é criar um contadorRegistradores e Contadores: Contadores síncronos e assíncronos: sequências personalizadasRegistradores e Contadores: Contadores síncronos e assíncronos: sequências personalizadasAprenda as diferenças entre contadores assíncronos e síncronos, e descubra como utilizar sequências personalizadas para otimizar sistemas digitais. (ou, de modo análogo, um pequeno sistema de controle) para solidificar o aprendizado sobre dispositivos lógicos programáveisIntrodução a Dispositivos Lógicos Programáveis: CPLD e FPGAIntrodução a Dispositivos Lógicos Programáveis: CPLD e FPGAExplore os Dispositivos Lógicos Programáveis: compreenda CPLDs e FPGAs, suas vantagens e aplicações para projetos digitais modernos e eficientes.. Ao final, você terá uma visão prática de como descrever o hardwareBoas Práticas de Programação Embarcada e Otimização de CódigoBoas Práticas de Programação Embarcada e Otimização de CódigoDescubra técnicas e práticas essenciais para otimizar o código de sistemas embarcados, garantindo desempenho e eficiência em projetos eletrônicos. em uma linguagem de descrição (VHDL ou Verilog), sintetizar e simular no ambiente de desenvolvimento apropriado.

Introdução🔗

Em diversos projetos de eletrônica digitalIntrodução à Eletrônica Digital: Conceitos Básicos e AplicaçõesIntrodução à Eletrônica Digital: Conceitos Básicos e AplicaçõesDescubra os conceitos e aplicações essenciais da Eletrônica Digital, do funcionamento de sinais binários aos transistores, e comece sua jornada tecnológica., um dos principais desafios é adaptar a lógica aos requisitos de aplicação. FPGAs (Field Programmable Gate ArraysLógica Programável: PLDs, CPLDs e FPGAs: conceitos e diferençasLógica Programável: PLDs, CPLDs e FPGAs: conceitos e diferençasDescubra as características, diferenças e aplicações das lógicas programáveis: PLDs, CPLDs e FPGAs, fundamentais na eletrônica digital.) se apresentam como uma solução versátil: são circuitos integrados cuja estrutura lógica interna pode ser configurada conforme nossa necessidade, possibilitando implementações que vão desde simples contadoresRegistradores e Contadores: Contadores síncronos e assíncronos: sequências personalizadasRegistradores e Contadores: Contadores síncronos e assíncronos: sequências personalizadasAprenda as diferenças entre contadores assíncronos e síncronos, e descubra como utilizar sequências personalizadas para otimizar sistemas digitais. até sistemas digitais mais complexos.

Por que usar FPGAsIntrodução a Dispositivos Lógicos Programáveis: CPLD e FPGAIntrodução a Dispositivos Lógicos Programáveis: CPLD e FPGAExplore os Dispositivos Lógicos Programáveis: compreenda CPLDs e FPGAs, suas vantagens e aplicações para projetos digitais modernos e eficientes.?

Configurando o Ambiente de Desenvolvimento🔗

Para este exemplo, utilizaremos o Intel Quartus (também conhecido como Quartus Prime). Ele oferece um conjunto de ferramentas para:

1. Criação do projetoIntrodução ao SystemVerilog: História e EvoluçãoIntrodução ao SystemVerilog: História e EvoluçãoDescubra a trajetória do SystemVerilog, sua origem a partir do Verilog, e os marcos que transformaram a verificação de hardware na indústria digital. (design file e configurações).

2. Compilação e Síntese do código escrito em linguagem de descrição de hardwareBoas Práticas de Programação Embarcada e Otimização de CódigoBoas Práticas de Programação Embarcada e Otimização de CódigoDescubra técnicas e práticas essenciais para otimizar o código de sistemas embarcados, garantindo desempenho e eficiência em projetos eletrônicos..

3. SimulaçãoSimulação e Depuração: Ferramentas e Dicas PráticasSimulação e Depuração: Ferramentas e Dicas PráticasAprenda técnicas de simulação e depuração em SystemVerilog, utilizando ferramentas, waveforms, asserts e logs para garantir designs confiáveis. (funcional e temporal) para verificar se o circuito atende ao esperado.

4. ProgramaçãoMicroprocessadores e Microcontroladores: Programação: Assembly e C (ex.: Arduino, PIC)Microprocessadores e Microcontroladores: Programação: Assembly e C (ex.: Arduino, PIC)Aprenda a programar microcontroladores com Assembly e C usando exemplos práticos em Arduino e PIC para dominar sistemas embarcados. em placas de desenvolvimento (como a placa DE10-Lite ou outras da família).

Passos Iniciais

Estrutura Básica de um Design para FPGA🔗

Para construir um sistema como contadorRegistradores e Contadores: Contadores síncronos e assíncronos: sequências personalizadasRegistradores e Contadores: Contadores síncronos e assíncronos: sequências personalizadasAprenda as diferenças entre contadores assíncronos e síncronos, e descubra como utilizar sequências personalizadas para otimizar sistemas digitais. ou sistema de controle simples, precisamos entender que o código escrito (em VHDL ou Verilog) descreve o hardwareBoas Práticas de Programação Embarcada e Otimização de CódigoBoas Práticas de Programação Embarcada e Otimização de CódigoDescubra técnicas e práticas essenciais para otimizar o código de sistemas embarcados, garantindo desempenho e eficiência em projetos eletrônicos. desejado. Em linhas gerais, temos os seguintes elementos:

1. Entradas de clockFlip-Flops e Latches: Tipos: SR, JK, D, T (funcionamento e clock)Flip-Flops e Latches: Tipos: SR, JK, D, T (funcionamento e clock)Aprenda os conceitos de Flip-Flops e Latches, incluindo tipos SR, JK, D e T, além do impacto do clock na sincronização de circuitos digitais.: servem para sincronizar o funcionamento do contadorRegistradores e Contadores: Contadores síncronos e assíncronos: sequências personalizadasRegistradores e Contadores: Contadores síncronos e assíncronos: sequências personalizadasAprenda as diferenças entre contadores assíncronos e síncronos, e descubra como utilizar sequências personalizadas para otimizar sistemas digitais. ou de um sistema sequencial.

2. Entradas de controle (opcionais): permitem resetar, habilitar ou alterar o comportamento do circuito.

3. Saídas: exibem o valor do contador ou as ações de controle em pinos (LEDs, displays, registradoresContadores e Registradores: organização e aplicação em sistemas digitaisContadores e Registradores: organização e aplicação em sistemas digitaisDescubra como contadores e registradores são essenciais na organização e manipulação de dados em circuitos digitais, fundamentais para a computação moderna., etc.).

<details> <summary><strong>Exemplo de Estrutura Geral (em Verilog)</strong></summary>
module contador_simples(
    input wire clk,       // Clock
    input wire reset,     // Sinal de reset
    output reg [3:0] q    // Saída do contador (4 bits)
);
always @(posedge clk or posedge reset) begin
    if (reset) begin
        q <= 4'b0000;
    end
    else begin
        q <= q + 1;
    end
end
endmodule
</details>
Nota: A estrutura em VHDL segue o mesmo princípio, mas com sintaxe diferente.

Passo a Passo: Criando um Contador no Quartus🔗

A seguir, descrevemos passo a passo como você pode criar o projeto. Embora possam existir variações conforme a versão do softwareBoas Práticas de Programação Embarcada e Otimização de CódigoBoas Práticas de Programação Embarcada e Otimização de CódigoDescubra técnicas e práticas essenciais para otimizar o código de sistemas embarcados, garantindo desempenho e eficiência em projetos eletrônicos., as etapas são semelhantes:

1. Criar o ProjetoIntrodução ao SystemVerilog: História e EvoluçãoIntrodução ao SystemVerilog: História e EvoluçãoDescubra a trajetória do SystemVerilog, sua origem a partir do Verilog, e os marcos que transformaram a verificação de hardware na indústria digital.

2. Selecionar Dispositivo FPGAIntrodução a Dispositivos Lógicos Programáveis: CPLD e FPGAIntrodução a Dispositivos Lógicos Programáveis: CPLD e FPGAExplore os Dispositivos Lógicos Programáveis: compreenda CPLDs e FPGAs, suas vantagens e aplicações para projetos digitais modernos e eficientes.

  • Escolha o dispositivo específico onde você fará a implementação (por exemplo, Cyclone IV, MAX 10, etc.).
  • Verifique a documentação da placa de desenvolvimento que está usando para garantir a correspondência entre o dispositivo físico e o selecionado no Quartus.

3. Criar ou Importar Arquivo de Código (HDLLinguagens de Descrição de Hardware: VHDL e VerilogLinguagens de Descrição de Hardware: VHDL e VerilogAprenda as principais diferenças entre VHDL e Verilog, descubra vantagens, sintaxe, aplicações e dicas essenciais para projetos digitais com HDLs.)

4. Atribuir Pinos

5. Compiler Settings

6. SimulaçãoSimulação e Depuração: Ferramentas e Dicas PráticasSimulação e Depuração: Ferramentas e Dicas PráticasAprenda técnicas de simulação e depuração em SystemVerilog, utilizando ferramentas, waveforms, asserts e logs para garantir designs confiáveis.

7. ProgramaçãoMicroprocessadores e Microcontroladores: Programação: Assembly e C (ex.: Arduino, PIC)Microprocessadores e Microcontroladores: Programação: Assembly e C (ex.: Arduino, PIC)Aprenda a programar microcontroladores com Assembly e C usando exemplos práticos em Arduino e PIC para dominar sistemas embarcados. da FPGA

Após esses passos, seu contadorRegistradores e Contadores: Contadores síncronos e assíncronos: sequências personalizadasRegistradores e Contadores: Contadores síncronos e assíncronos: sequências personalizadasAprenda as diferenças entre contadores assíncronos e síncronos, e descubra como utilizar sequências personalizadas para otimizar sistemas digitais. deverá funcionar no hardware real, exibindo na saída o valor binário que se incrementa a cada ciclo de clock.

Extensões Possíveis para o Sistema🔗

Caso deseje avançar um pouco (sem sair do escopo deste tutorial), é possível:

Esses incrementos seguem o mesmo princípio básico: descrevemos em código HDLLinguagens de Descrição de Hardware: VHDL e VerilogLinguagens de Descrição de Hardware: VHDL e VerilogAprenda as principais diferenças entre VHDL e Verilog, descubra vantagens, sintaxe, aplicações e dicas essenciais para projetos digitais com HDLs. a lógica adicional e compilamos novamente no Quartus.

Boas Práticas e Considerações🔗

Conclusão🔗

FPGAsIntrodução a Dispositivos Lógicos Programáveis: CPLD e FPGAIntrodução a Dispositivos Lógicos Programáveis: CPLD e FPGAExplore os Dispositivos Lógicos Programáveis: compreenda CPLDs e FPGAs, suas vantagens e aplicações para projetos digitais modernos e eficientes. permitem um grau excepcional de liberdade para desenvolver sistemas digitais. A criação de um simples contadorRegistradores e Contadores: Contadores síncronos e assíncronos: sequências personalizadasRegistradores e Contadores: Contadores síncronos e assíncronos: sequências personalizadasAprenda as diferenças entre contadores assíncronos e síncronos, e descubra como utilizar sequências personalizadas para otimizar sistemas digitais. ou sistema de controle no Intel Quartus fornece as basesSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. para quem deseja:

Resumo

1. Configure seu ambiente (Quartus instalado e placa de FPGAIntrodução a Dispositivos Lógicos Programáveis: CPLD e FPGAIntrodução a Dispositivos Lógicos Programáveis: CPLD e FPGAExplore os Dispositivos Lógicos Programáveis: compreenda CPLDs e FPGAs, suas vantagens e aplicações para projetos digitais modernos e eficientes. reconhecida).

2. Escreva ou importe o código HDL (VerilogLinguagens de Descrição de Hardware: VHDL e VerilogLinguagens de Descrição de Hardware: VHDL e VerilogAprenda as principais diferenças entre VHDL e Verilog, descubra vantagens, sintaxe, aplicações e dicas essenciais para projetos digitais com HDLs. ou VHDL).

3. Realize atribuição de pinos e compile o design.

4. Simule para verificar a correta operação.

5. Programe o FPGA e observe o contadorRegistradores e Contadores: Contadores síncronos e assíncronos: sequências personalizadasRegistradores e Contadores: Contadores síncronos e assíncronos: sequências personalizadasAprenda as diferenças entre contadores assíncronos e síncronos, e descubra como utilizar sequências personalizadas para otimizar sistemas digitais. funcionando no hardware.

Essa experiência prática servirá como fundamento para projetosIntrodução ao SystemVerilog: História e EvoluçãoIntrodução ao SystemVerilog: História e EvoluçãoDescubra a trajetória do SystemVerilog, sua origem a partir do Verilog, e os marcos que transformaram a verificação de hardware na indústria digital. cada vez mais avançados em lógica programávelLógica Programável: PLDs, CPLDs e FPGAs: conceitos e diferençasLógica Programável: PLDs, CPLDs e FPGAs: conceitos e diferençasDescubra as características, diferenças e aplicações das lógicas programáveis: PLDs, CPLDs e FPGAs, fundamentais na eletrônica digital..

EtapaAção
1. Criação do projetoConfigurar pasta, nome do projeto e top-level entity
2. Seleção de dispositivoEscolher a família FPGA correta (Cyclone, Max 10, etc.)
3. Código HDLEscrever/editar o módulo do contador (Verilog/VHDL)
4. Atribuição de pinosDefinir pinos de entrada (clk, reset) e saída (q)
5. CompilaçãoRealizar síntese e verificação de erros
6. SimulaçãoUtilizar ModelSim ou outra ferramenta compatível
7. ProgramaçãoConfigurar o arquivo gerado (.sof/.pof) no Programmer e carregar na FPGA
Dica: Sempre verifique o manual da sua placa de FPGA para corresponder fisicamente os pinos de I/O. Cada placa tem seu mapeamento próprio para LEDs, botões e displays.

Com isso, finalizamos esta introdução prática à criação de um contadorRegistradores e Contadores: Contadores síncronos e assíncronos: sequências personalizadasRegistradores e Contadores: Contadores síncronos e assíncronos: sequências personalizadasAprenda as diferenças entre contadores assíncronos e síncronos, e descubra como utilizar sequências personalizadas para otimizar sistemas digitais. ou sistema de controle simples em FPGAIntrodução a Dispositivos Lógicos Programáveis: CPLD e FPGAIntrodução a Dispositivos Lógicos Programáveis: CPLD e FPGAExplore os Dispositivos Lógicos Programáveis: compreenda CPLDs e FPGAs, suas vantagens e aplicações para projetos digitais modernos e eficientes. utilizando o Intel Quartus. Bons estudos e bons projetosIntrodução ao SystemVerilog: História e EvoluçãoIntrodução ao SystemVerilog: História e EvoluçãoDescubra a trajetória do SystemVerilog, sua origem a partir do Verilog, e os marcos que transformaram a verificação de hardware na indústria digital.!

Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

Compartilhar artigo

Artigos Relacionados