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 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. 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 digital
Introduçã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
Particularidades de Implementação em FPGA vs. ASICDescubra as principais diferenças no design com SystemVerilog, otimizando projetos em FPGA para prototipagem e ASIC para alta performance. 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 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. (design file e configurações).
2. Compilação e Síntese
Dicas de Desempenho: Simulação e SínteseAprenda estratégias e recomendações para otimizar simulação e síntese em projetos SystemVerilog, melhorando verificação e resultados finais. do código escrito em linguagem de descrição 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..
3. 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. (funcional e temporal) para verificar se o circuito atende ao esperado.
4. 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. 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 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 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 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 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, registradores
Contadores 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 software
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., 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 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.
- 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 (HDL
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.)
- 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 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. 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 HDL
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. 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🔗
FPGAs
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. 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 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. reconhecida).
2. Escreva ou importe o código HDL (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).
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 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. funcionando no hardware.
Essa experiência prática servirá como fundamento 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. 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 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 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
há 10 meses atrás
há 10 meses atrás
há 11 meses atrás
há 10 meses atrás
há 11 meses atrás
há 10 meses atrás
há 10 meses atrás
há 10 meses atrás
há 11 meses atrás
há 10 meses atrás
há 10 meses atrás
há 11 meses atrás
há 11 meses atrás
há 11 meses atrás
há 11 meses atrás
há 11 meses atrás
há 11 meses atrás
há 11 meses atrás
há 11 meses atrás
há 10 meses atrás
há 10 meses atrás