Tutorial Completo: Domine VHDL e Verilog para FPGAs

Neste tutorial, vamos explorar as duas linguagens de descrição de hardwareLinguagens 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. (HDLs) mais utilizadas no desenvolvimento de sistemas digitais em dispositivos lógicos programáveis: VHDLLinguagens 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. e 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.. Vamos apresentar suas características fundamentais, a forma de organizaçãoSistemas de Memória: Arquitetura interna: endereçamento e organizaçãoSistemas de Memória: Arquitetura interna: endereçamento e organizaçãoAprenda como o endereçamento e a organização interna das memórias digitais, por meio de matrizes e decodificadores, garantem acesso rápido e eficiente. dos códigos e alguns exemplos simples de sintaxe para que você adquira uma base sólida ao iniciar seus projetos em 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., CPLDsIntroduçã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. ou outros dispositivos programáveis.

Breve Contexto sobre Linguagens de Descrição de Hardware🔗

Diferentemente das linguagens de programação convencionais (como C ou Python), as linguagens de descrição de hardwareLinguagens 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. focam na descrição do comportamento e/ou da estruturaEstruturas e Uniões: Organizando Dados ComplexosEstruturas e Uniões: Organizando Dados ComplexosAprenda como aplicar estruturas e uniões em SystemVerilog. Descubra a diferença entre packed e unpacked com exemplos práticos e dicas para um design otimizado. de circuitos digitais. Ou seja, em VHDL ou Verilog, descrevemos componentes lógicos, conexões e como desejamos que eles se comportem quando submetidos a determinados sinais de entrada e clock.

Essas linguagens são compiladas/sintetizadas para gerar uma configuração (ou “bitstream”) que será carregada em um dispositivo lógico programável. Assim, 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. “ganha vida” conforme o circuito que você descreveu em seu código.

Visão Geral: VHDL vs. Verilog🔗

Podemos comparar, de forma resumida, as duas linguagens sob alguns aspectos:

CaracterísticaVHDLVerilog
OrigemDesenvolvida pela VHSIC (Very High-Speed Integrated Circuit) nos anos 1980Originada pela Gateway Design Automation, posteriormente adotada pela Cadence e IEEE
SintaxeMais verbal e estrita (inspirada em Ada)Mais concisa (lembrando C)
TipagemFortemente tipada (precisa declarar tipos e tamanhos)Tipagem mais flexível, com menos declaração de tipos
Estrutura principalentity/architecture para definir interface e comportamentomodule para definir interface e comportamento
Principal usoProjetos de alta confiabilidade e portabilidadeAplicações diversas, muito utilizado em sistemas comerciais

Ambas são padrões IEEE e amplamente suportadas pelas principais ferramentas de síntese e 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..

Estrutura Básica do VHDL🔗

A linguagem VHDLLinguagens 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. (VHSIC Hardware Description Language) é conhecida por sua verbosidade e rigidez de sintaxe, o que favorece clareza e robustez. A organizaçãoSistemas de Memória: Arquitetura interna: endereçamento e organizaçãoSistemas de Memória: Arquitetura interna: endereçamento e organizaçãoAprenda como o endereçamento e a organização interna das memórias digitais, por meio de matrizes e decodificadores, garantem acesso rápido e eficiente. típica de um arquivo VHDL é:

1. Bibliotecas e Declarações: onde indicamos quais recursos vamos usar (ex.: IEEE).

2. Entity: descreve a interfaceInterfaces SystemVerilog: Simplificando Conexões de SinalInterfaces SystemVerilog: Simplificando Conexões de SinalDescubra como utilizar interfaces em SystemVerilog para agrupar sinais e simplificar a conexão entre módulos, reduzindo erros e aumentando a eficiência. do bloco digital (entradas, saídas e parâmetros).

3. Architecture: descreve o comportamento ou a estruturaEstruturas e Uniões: Organizando Dados ComplexosEstruturas e Uniões: Organizando Dados ComplexosAprenda como aplicar estruturas e uniões em SystemVerilog. Descubra a diferença entre packed e unpacked com exemplos práticos e dicas para um design otimizado. do bloco.

A seguir, um exemplo mínimo de código VHDLLinguagens 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. que implementa uma porta ANDPortas Lógicas Fundamentais: AND, OR, NOT, NAND, NOR, XOR e XNORPortas Lógicas Fundamentais: AND, OR, NOT, NAND, NOR, XOR e XNORDescubra as funções das portas lógicas (AND, OR, NOT, NAND, NOR, XOR, XNOR) por meio de exemplos e tabelas-verdade para eletrônica digital. simples:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity PortaAND is
    Port (
        A : in  STD_LOGIC;
        B : in  STD_LOGIC;
        Y : out STD_LOGIC
    );
end PortaAND;
architecture Comportamental of PortaAND is
begin
    Y <= A AND B;
end Comportamental;

Destaques Importantes em VHDL

Estrutura Básica do Verilog🔗

O 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. é uma linguagem mais sintética, lembrando um pouco a estruturaEstruturas e Uniões: Organizando Dados ComplexosEstruturas e Uniões: Organizando Dados ComplexosAprenda como aplicar estruturas e uniões em SystemVerilog. Descubra a diferença entre packed e unpacked com exemplos práticos e dicas para um design otimizado. de linguagens como C. A principal unidade de design é o module. Similar ao VHDL, você pode descrever tanto comportamento (código “estilo 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.”) quanto a conectividade estrutural.

Um exemplo mínimo para uma porta ANDPortas Lógicas Fundamentais: AND, OR, NOT, NAND, NOR, XOR e XNORPortas Lógicas Fundamentais: AND, OR, NOT, NAND, NOR, XOR e XNORDescubra as funções das portas lógicas (AND, OR, NOT, NAND, NOR, XOR, XNOR) por meio de exemplos e tabelas-verdade para eletrônica digital. em Verilog:

module PortaAND (
    input wire A,
    input wire B,
    output wire Y
);
    assign Y = A & B;
endmodule

Destaques Importantes em Verilog

always @(posedge clk) begin
    // Lógica sequencial
end
  • Atribuição:
    • Conexão contínua: assign
    • Atribuição sequencial dentro de always: <= (atribuição não bloqueante) ou = (atribuição bloqueante).

Modelos de Descrição em HDL🔗

Tanto no VHDLLinguagens 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. quanto no 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., é possível 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 diferentes níveis de abstração:

Para iniciantes, dominar o nível RTL é fundamental, pois é o mais usado em grandes 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..

Exemplos Simples de Código🔗

Exemplo VHDL: Flip-Flop Tipo D

Suponha que desejamos descrever um Flip-Flop DFlip-Flops: RS, JK, D e T – Armazenando Informação em BitsFlip-Flops: RS, JK, D e T – Armazenando Informação em BitsAprenda o funcionamento de flip-flops RS, JK, D e T num tutorial prático sobre eletrônica digital, com conceitos, tabelas e dicas para projetos. sensível à borda de subidaFlip-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. de um sinal de clock. Um esboço em VHDL seria:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity FlipFlopD is
    Port (
        D   : in  STD_LOGIC;
        CLK : in  STD_LOGIC;
        Q   : out STD_LOGIC
    );
end FlipFlopD;
architecture RTL of FlipFlopD is
begin
    process(CLK)
    begin
        if rising_edge(CLK) then
            Q <= D;
        end if;
    end process;
end RTL;

Exemplo Verilog: Flip-Flop Tipo D

O mesmo comportamento em 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.:

module FlipFlopD (
    input wire D,
    input wire CLK,
    output reg Q
);
    always @(posedge CLK) begin
        Q <= D;
    end
endmodule

Nesses exemplos, fica clara a noção de lógica sequencial: a saída muda somente na borda de subidaFlip-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. do clock.

Considerações Finais🔗

O aprendizado de VHDLLinguagens 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. e 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. abre portasPortas e Parâmetros: Passando Informações Entre MódulosPortas e Parâmetros: Passando Informações Entre MódulosAprenda a conectar módulos usando portas e parâmetros em SystemVerilog, garantindo designs flexíveis, modulares e de fácil manutenção. para o desenvolvimento de circuitos digitais mais complexos em dispositivos reconfiguráveis, permitindo:

Em resumo, ao dominar a sintaxe básica e as estruturasEstruturas e Uniões: Organizando Dados ComplexosEstruturas e Uniões: Organizando Dados ComplexosAprenda como aplicar estruturas e uniões em SystemVerilog. Descubra a diferença entre packed e unpacked com exemplos práticos e dicas para um design otimizado. fundamentais de cada linguagem:

1. Você poderá desenvolver blocos combinacionais ou sequenciais de forma mais rápida e segura.

2. Estará apto a entrar em 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. que envolvam IP Cores, componentes reutilizáveis e integração de sistemas maiores.

3. Terá uma base sólida para depuração e 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. de 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. digitais, atividade essencial para evitar bugs e obter resultados confiáveis.

Lembre-se sempre de que, embora VHDL e 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. sejam distintas em sintaxe e estilo, ambas são plenamente capazes de descrever 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. avançado. A escolha entre elas costuma refletir preferência pessoal, exigência de 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. e ferramentas disponíveis.

Próximos Passos

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