Tutorial Verilog
Nos primeiros dias dos circuitos integrados, os engenheiros tinham que sentar e desenhar fisicamente os transistores e suas conexões no papel para projetá-los de modo que pudessem ser fabricados em silício. Circuitos maiores e complexos exigiam mais engenheiros, tempo e outros recursos e logo surgiu a necessidade de ter uma maneira melhor de projetar circuitos integrados.
VHDL foi logo desenvolvido para aprimorar o processo de design, permitindo que os engenheiros descrevessem a funcionalidade do hardware desejado e permitindo que as ferramentas de automação convertessem esse comportamento em elementos de hardware reais, como portas combinacionais e lógica sequencial. Verilog foi desenvolvido para simplificar o processo e tornar a linguagem de descrição de hardware (HDL) mais robusto e flexível. Hoje, o Verilog é o HDL mais popular usado e praticado em toda a indústria de semicondutores.
Como o Verilog é útil?
A Verilog cria um nível de abstração que ajuda a esconder os detalhes de sua implementação e tecnologia.
Por exemplo, o projeto de um flip-flop D exigiria o conhecimento de como os transistores precisam ser organizados para obter um FF acionado pela borda positiva e quais os tempos de subida, descida e clk-Q necessários para travar o valor em um flop entre muitos outros detalhes orientados para a tecnologia. A dissipação de energia, o tempo e a capacidade de conduzir redes e outros flops também exigiriam uma compreensão mais completa das características físicas de um transistor.
Verilog nos ajuda a focar no comportamento e deixar o resto para resolver depois.
Exemplo
O código a seguir ilustra a aparência de um código Verilog. Vamos nos aprofundar em mais detalhes do código no próximo artigo. Por enquanto, vamos simplesmente entender que o comportamento de um contador é descrito. O código essencialmente faz o contador contar para cima se o sinal up_down for 1 e para baixo se seu valor for 0. Ele também reinicializa o contador se o sinal rstn se tornar 0, tornando-o um reset ativo-baixo.
module ctr (input up_down,
clk,
rstn,
output reg [2:0] out);
always @ (posedge clk)
if (!rstn)
out <= 0;
else begin
if (up_down)
out <= out + 1;
else
out <= out - 1;
end
endmodule
O exemplo simples mostrado acima ilustra como todos os detalhes da implementação física foram ocultados enquanto ainda fornece uma ideia clara de como o contador funciona.
ctr é um
module
que representa um contador ascendente/descendente, e é possível escolher a implementação física real do projeto a partir de uma ampla variedade de estilos diferentes de flops otimizados para área, potência e desempenho. Eles geralmente são compilados em bibliotecas e estarão disponíveis para seleção nas ferramentas EDA em um estágio posterior do processo de design. Agora que você sabe o que é Verilog, vamos começar a aprender Verilog!
Verilog