Nesta fase pretende-se dar um exemplo de como começar um modelo em Verilog e simulá-lo no VeriLogger Pro. Para o completar não é necessário ler qualquer das outras partes, mas esse conhecimento ajudará a uma melhor compreensão do mesmo.
O objecto deste projecto é criar em um somador de 4-bits e um módulo de teste para o mesmo. Comecemos por definir o somador de 1-bit: fulladder, e depois o somador de 4-bits: FourBitAdder. O primeiro recebe dois bits e um carry_in e retorna a soma dos dois bits (incluindo carry_in) em sum e o carry_out. O segundo, recebe duas linhas de 4-bits, que representam os números a somar, e um carry_in e devolve para uma linha de 4-bits: sum, a soma; possui ainda um carry_out. Se leu a parte dedicada a Verilog estes módulos devem ser simples de entender. No entanto há que explicar que as primitivas, que representam portas lógicas, em Verilog apresentam a forma <primitiva> (<saída> ,<entrada1>,<entrada2>).
//*******************************************
// VeriLogger Pro: Basic Verilog Simulation
//*******************************************
//add4.v File
***********************
//** Full Adder ************************
module
fulladder(sum, c_out, x, y, c_in);
output sum, c_out;
input x, y, c_in;
wire a, b, c;
xor (a, x,
y);
xor
(sum, a, c_in);
and (b, x, y);
and (c, a, c_in);
or (c_out, c, b);
endmodule
//**
4-Bit Adder *****************************
module
FourBitAdder(sum, c_out, x, y, c_in);
output [3:0] sum;
output c_out;
input [3:0] x, y;
input
c_in;
wire c1, c2, c3;
fulladder fa0(sum[0], c1, x[0], y[0], c_in);
fulladder fa1(sum[1], c2, x[1],
y[1], c1);
fulladder
fa2(sum[2], c3, x[2], y[2], c2);
fulladder
fa3(sum[3], c_out, x[3], y[3], c3);
endmodule
Agora que definimos os módulos, precisamos de os testar. Assim precisamos de definir um módulo de topo para iniciar variáveis e instanciar módulos. Esse módulo deve ser algo do género:
//*******************************************
// VeriLogger Pro: Basic Verilog Simulation
//*******************************************
//add4test.v File ***************************
module testbed();
reg c_in;
reg [3:0] y;
reg
[3:0] x;
wire c_out;
wire
[3:0]sum;
FourBitAdder A1(sum, c_out, x, y, c_in);
initial
begin
x
= 4'b0001; y = 4'b0001; c_in = 1'b0;
#25 x = 4'b0001; y =
4'b0010;
#25 x
= 4'b0010; y = 4'b0011;
#25 x = 4'b0001; y = 4'b1111;
#25 x = 4'b0001; y = 4'b1111; c_in = 1'b1;
#25 x = 4'b1000; y = 4'b1111; c_in = 1'b0;
#25 x = 4'b0001; y = 4'b0001; c_in = 1'b1;
#25 x = 4'b0001; y =
4'b0010;
#25 x = 4'b0010; y =
4'b0011;
#25 x = 4'b0011; y =
4'b1111;
#25;
end
initial
#250
$finish;
endmodule
Criar o projecto e adicionar ficheiros
Primeiro temos que criar o projecto. Para tal usa-se o item de menu Project > New Project. Isso irá abrir uma janela de diálogo, escolha o nome do projecto e deixe a outra opção por defeito. Esta opção prende-se com a localização dos ficheiros do projecto no disco.
Agora temos que adicionar os ficheiros fonte ao projecto. Para tal temos que usar a opção de menu Project > Add User Source Files... . Isto abre uma janela de diálogo para escolher ficheiros, escolha os ficheiros atrás definidos: add4.v e add4test.v e confirme. Os ficheiros serão adicionados à árvore do projecto.
Construir a árvore de projecto e editar código
Pronto, adicionámos ficheiros fonte ao projecto, mas ainda não podemos ver os módulos em cada ficheiro. Para tal temos que compilar ou correr o projecto. Estas acções constróem a árvore de projecto e organizam-na hierarquicamente.
Neste momento pretendemos compilar o projecto, de forma a criar a árvore sem correr a simulação. Para tal devemos clicar no botão amarelo da barra de ferramentas.
Podemos agora ver que a árvore de projecto está efectivamente maior e com os módulos especificados em cada ficheiro. É agora possível, ao clicar no “+” perto de qualquer item ver os componentes do mesmo. Clique agora no “+” junto ao ficheiro add4test.v. Deverá ver um módulo chamado testbed rodeado por aspas <<<testbed>>>, este é o módulo de topo. Se continuar a expandir esse módulo, poderá ver todos os componentes nele instanciados.
Editar código directamente no VeriLogger Pro é bastante simples, bastando fazer duplo-clique no nome de ficheiro fonte, ou então fazer duplo-clique em qualquer componente. Ambas as opções abrem um editor de texto com o ficheiro correspondente. A diferença é que a primeira opção abre o ficheiro visível na primeira linha e segunda abre-o, mas visível na linha da definição do módulo ou da instanciação, conforme a situação. Estes editores de texto podem ser utilizados para visionar, alterar ou criar código à descrição e incluem ainda a colorização do código. Note ainda as opções disponíveis no menu Editor, que permitem criar, gravar e abrir ficheiros fonte de Verilog.
Simular o projecto
Finalmente, a parte divertida. Ao compilar o projecto, no passo anterior, os sinais no módulo de topo foram automaticamente adicionados à janela de Diagrama. Isto permite testar rapidamente qualquer modelo.
Agora, há que utilizar o botão com um triângulo verde da barra de ferramentas para correr a simulação. A janela de Diagrama, vai começar a ser preenchida com sinais púrpura. Verifique que os sinais de saída estão correctamente computados.
Monitorizar sinais internos
Com VeriLogger Pro é possível monitorizar qualquer combinação de sinais. É possível, por exemplo, adicionar qualquer sinal ou sinais de componentes, bastando para isso seleccionar a opção Watch Component do menu de contexto. É ainda possível remover sinais da janela de Diagrama, seleccionando-os e usando a tecla Delete. Na janela de Diagrama existem também, diverso botões, sendo os mais úteis os quatro botões com lupas (zoom) que permitem alterar o intervalo de tempo, da simulação, que vemos.
Salvar o trabalho
No VeriLogger existem três tipos de ficheiro associados com projectos de Verilog.
- Ficheiros de projecto têm extensão HPJ e salvam-se utilizando a opção Project > Save HDL Project. Isto salva a lista de ficheiros e as opções de simulação mas, não salva as opções de monitorização.
- Ficheiros de código fonte de HDL normalmente têm extensões V e salvam-se seleccionando o editor de texto correspondente e utilizando a opção Editor > Save HDL Code.
- Diagramas StimulusAndResults têm extensão BTIM e salvam-se usando File > Save Timing Diagram. Esta opção salva os ficheiros a serem monitorizados.
Existe ainda o item de menu Editor > Save All, que permite salvar todos os ficheiros em editores de texto nesse momento.
Existe, ainda uma maneira de salvar todos os ficheiros associados ao projecto. Basta fechar o projecto ou o VeriLogger Pro e uma janela de diálogo aparecerá a indicar os ficheiros alterados. Depois é seleccionar Save All, ou salvar apenas os necessários.
Como queremos concluir este tutorial, o leitor deverá fechar o projecto através do item de menu Project > Close Project e seleccionar Save All. Agora pode sair descansado do VeriLogger Pro e voltar ao Mundo Real.