Verilog
CIn – Centro de Informática
Tutorial Verilog
1ª Edição – 2011.1
Felipe de Assis Souza (fas5)
INTRODUÇÃO
Resolvi elaborar este documento após pagar a cadeira de Sistemas Digitais em 2011.1, já que a maior dificuldade que os alunos (me incluindo) sentiram durante o projeto da 2º unidade, foi em entender a sintaxe e semântica da linguagem Verilog.
O objetivo deste tutorial é esclarecer algumas dúvidas a respeito da linguagem, utilizada no projeto da 2ª Unidade de Sistemas Digitais, além de servir como revisão para a cadeira de
Infraestrura de Hardware, onde ela será trabalhada mais a fundo.
Aqui você encontrará a explicação das principais keywords além de exemplos de como utilizálas, tentei explicá-las de uma maneira menos formal para facilitar o entendimento. E não, você não vai encontrar o código entregue de bandeja neste tutorial (apesar de dar para pescar alguma coisa). A lógica é com você, ou como diz um amigo meu: “Dá teus ‘pulo’, boy!”. fas5. 1. PRINCIPAIS KEYWORDS
1) module/endmodule – é a mesma coisa que método (ou função) em outras linguagens.
OBS.: Um module sempre é encerrado com um endmodule.
Sintaxe e Semântica: module nome_do_modulo (input 1, input N, ..., output1, ..., outputN);
Ex1.:
Ex2.:
module SomaSub (In1, In2, Seletor, Overflow, Out);
(…)
endmodule
In1, In2, Seletor = entradas.
Overflow, Out = saídas. module MaiorQue (A, B, Status);
(…)
endmodule
A, B = entradas.
Status = saída.
// Início do módulo SomaSub
// Fim do módulo SomaSub
// Início do módulo MaiorQue
// Fim do módulo MaiorQue
2) input – usado para declarar uma entrada.
Sintaxe e Semântica: input nome_da_entrada;
Ex1.:
input In1, In2;
// Declarando duas entradas, In1 e In2, de 1 bit
Ex2.:
input [3:0] A; input [3:0] B;
// Declarando uma entrada, A, de 4 bits
// Declarando uma entrada, B, de 4 bits
Ex3.:
input [7:0] A, B; input Clock;
// Declarando duas entradas,