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.