Tutorial Completo: VHDL e Verilog para Circuitos Digitais
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çã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 contador
Registradores 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áveis
Introduçã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 hardware
Boas 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çõ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 Arrays
Ló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 contadores
Registradores 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.
- Flexibilidade: não há necessidade de gravar versões fixas de hardware
Boas 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.; podemos reprogramar a FPGA quantas vezes quisermos.
- Velocidade
Portas Lógicas e Famílias Lógicas: Comparação de famílias lógicas: TTL, CMOS, ECL (vantagens e limitações)Descubra as características, vantagens e limitações das famílias lógicas TTL, CMOS e ECL, essenciais para projetos digitais modernos.: possibilitam execução de tarefas em paralelo, ideal para aplicações de alto desempenho ou em tempo real.
- Prototipagem rápida: redução de custo e tempo, pois podemos testar e validar a lógica sem a fabricação de ASICs ou circuitos customizados.
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çã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ó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á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)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
- Baixe e instale o Quartus Prime (versão Lite ou Standard).
- Certifique-se de ter os drivers para comunicação com sua placa de FPGA
Introduçã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..
- Abra o Quartus e selecione a opção File → New Project Wizard para criar um novo projeto
Introduçã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..
Estrutura Básica de um Design para FPGA🔗
Para construir um sistema como contadorRegistradores 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 hardware
Boas 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)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 contador
Registradores 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 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.).
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ó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:
- No Quartus, vá em File → New Project Wizard.
- Selecione uma pasta local onde o projeto
Introduçã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. será salvo.
- Nomeie seu projeto
Introduçã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. (por exemplo,
contador_fpga
). - Se necessário, crie um nome para o top-level design entity (por exemplo,
contador_simples
).
2. Selecionar Dispositivo 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 VerilogAprenda as principais diferenças entre VHDL e Verilog, descubra vantagens, sintaxe, aplicações e dicas essenciais para projetos digitais com HDLs.)
- Você pode criar um novo arquivo em Verilog
Linguagens 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 pelo File → New → Verilog
Linguagens 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. HDL File (ou VHDL
Linguagens 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. File).
- Copie/edite seu código (como o exemplo do contador
Registradores 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. acima) e salve.
4. Atribuir Pinos
- No menu Assignments → Pin Planner, configure quais pinos físicos do FPGA
Introduçã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. correspondem às suas entradas (como
clk
,reset
) e às saídas (q
). - Se estiver usando LEDs
LedDescubra tudo sobre LEDs: entenda seu funcionamento, aprenda a calcular resistores e monte circuitos seguros com dicas práticas e eficientes. na placa, consulte o manual para encontrar qual pino corresponde a cada LED.
5. Compiler Settings
- Ao clicar em Processing → Start Compilation, o Quartus irá analisar seu código, sintetizar a lógica e gerar a configuração para o FPGA
Introduçã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..
- Caso ocorram erros, revise a sintaxe ou as atribuições de pinos.
- Para garantir o correto funcionamento, você pode criar um testbench
Criando Testbenches Estruturados: Estratégias de VerificaçãoAprenda a criar testbenches estruturados em SystemVerilog com estratégias de verificação, modularização e boas práticas para designs digitais confiáveis. e rodar a simulação
Simulaçã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..
- No Quartus, use o ModelSim (Intel FPGA
Introduçã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. Edition) ou o EDA Playground (opcional) para verificar as formas de onda.
- Verifique se em cada pulso de clock o valor do contador
Registradores 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. está sendo incrementado corretamente.
- Conecte seu cabo USB-Blaster ou equivalente na placa FPGA
Introduçã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..
- Vá em Tools → Programmer e selecione o arquivo
.sof
(ou.pof
, dependendo do dispositivo) gerado pelo Quartus. - Clique em Start para programar a FPGA
Introduçã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..
Após esses passos, seu contadorRegistradores 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:
- Adicionar Botão de Enable: fazer o contador
Registradores 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. incrementar apenas quando um botão estiver pressionado.
- Usar 7 Segmentos: decodificar o valor binário e exibir em displays de 7 segmentos
Registradores e Contadores: Aplicação prática: contador com display de 7 segmentosAprenda a montar um contador digital com display de 7 segmentos, usando registradores e decodificadores para um reset eficaz. Tutorial passo a passo.
- Adicionar Comparador: quando o contador
Registradores 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. atinge um valor pré-definido, acionar alguma saída para controlar outro módulo.
Esses incrementos seguem o mesmo princípio básico: descrevemos em código HDLLinguagens 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🔗
- 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. e Reset: assegure-se de que o 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. esteja adequadamente configurado. Tenha cuidado com sinais de reset assíncrono
Registradores e Contadores: Projetos com circuitos integrados específicos (ex.: 74HC193)Descubra o funcionamento e aplicação do 74HC193 com este tutorial prático, explicando contadores, registradores e dicas de projeto digital. para evitar glitches na inicialização.
- Verificação
Introduçã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. e Simulação: sempre simule antes de gravar na FPGA para evitar usos indesejados de pinos ou conflitos de hardware
Boas 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..
- Recursos Internos: analise os recursos que a FPGA
Introduçã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. oferece (quantidade de Logic
Tipos de Dados Básicos: Bit, Logic e Reg em DetalhesDescubra as diferenças entre os tipos de dados Bit, Logic e Reg em SystemVerilog neste tutorial prático, com dicas de uso e melhores práticas. Elements, Block RAM
Sistemas de Memória: RAM (SRAM vs. DRAM) e ROM (PROM, EPROM, EEPROM, Flash)Descubra como funcionam as memórias RAM (SRAM e DRAM) e ROM (PROM, EPROM, EEPROM, Flash), fundamentais para sistemas digitais e eletrônica., PLLs etc). Um contador
Registradores 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. simples consome poucos recursos, mas sistemas maiores exigem planejamento.
Conclusão🔗
FPGAsIntroduçã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 contador
Registradores 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 bases
Sistemas 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:
- Entender as etapas de desenvolvimento, desde a descrição em HDL até a programação
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. do dispositivo.
- Praticar a configuração de pinos e a simulação de circuitos
Ferramentas de Simulação: Simulação prática: construção e teste de circuitos combinacionaisAprenda a simular circuitos combinacionais com ferramentas como Logisim, Proteus e Multisim. Teste, valide e otimize seus projetos digitais. Confira! sequenciais.
- Avançar para projetos
Introduçã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. mais complexos, como máquinas de estado ou processadores soft-core.
Resumo
1. Configure seu ambiente (Quartus instalado e placa de 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 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 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çã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ável
Ló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..
Etapa | Ação |
---|---|
1. Criação do projeto | Configurar pasta, nome do projeto e top-level entity |
2. Seleção de dispositivo | Escolher a família FPGA correta (Cyclone, Max 10, etc.) |
3. Código HDL | Escrever/editar o módulo do contador (Verilog/VHDL) |
4. Atribuição de pinos | Definir pinos de entrada (clk, reset) e saída (q) |
5. Compilação | Realizar síntese e verificação de erros |
6. Simulação | Utilizar ModelSim ou outra ferramenta compatível |
7. Programação | Configurar 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 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 FPGA
Introduçã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 projetos
Introduçã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🔗
- Hub de Eletrônica: www.electronicshub.org
- Reddit - r/AskElectronics: www.reddit.com/r/AskElectronics
- Stack Exchange de Eletrônica: electronics.stackexchange.com
- Tudo Sobre Circuitos: www.allaboutcircuits.com
- Tutoriais de Eletrônica: www.electronics-tutorials.ws