Você está na página 1de 3

MINISTRIO DA EDUCAO UNIVERSIDADE FEDERAL DE GOIS ENGENHARIA DE COMPUTAO

Disciplina: Tpicos: Introduo aos sistemas embarcados Semestre: 2011.1 Curso: Engenharia de Computao Professora: Dra. Karina R G da Silva Aluno:______________________________________________________ Matrcula:_________________

Laboratrio 1 1. Implemente um contador binrio de 4 bits, que incrementa em cada ciclo de clock e que retorna para zero caso reset seja 1.
clock reset enable sada Contador

Use o carus verilog para fazer a simulao funcional do contador:


//----------------------------------------------------// Design Name : counter // File Name : counter.v // Function : 4 bit up counter // Coder : Deepak //----------------------------------------------------//----------------------------------------------------// Design Name : counter // File Name : counter.v // Function : 4 bit up counter // Coder : Deepak //----------------------------------------------------module counter (clk, reset, enable, count); input clk, reset, enable; output [3:0] count; reg [3:0] count; always @ (posedge clk) if (reset == 1'b1) begin count <= 0; end else if ( enable == 1'b1) begin count <= count + 1; end always @ (posedge clk) $monitor(count); endmodule

texto.

Abra o wordpad e digite o programa. Salve com o nome counter_tb.v no formato somente

MINISTRIO DA EDUCAO UNIVERSIDADE FEDERAL DE GOIS ENGENHARIA DE COMPUTAO

Aps esse passo necessrio realizar os testes para se certificar de que a soma est sendo feita de forma correta.
clock reset enable clock reset enable sada Contador

Estmulos

module counter_tb; reg clk, reset, enable; //entradas so do tipo reg wire [3:0] count; //sada do tipo wire counter counter ( .clk (clk), .reset(reset), .enable (enable) ); initial //tudo dentro de initial executado somente uma vez begin clk = 0; reset = 1; //reseta #10 reset = 0; //depois de 10 unidades de tempo ( 2 clocks) o reset vira 0 enable = 1; end always #5 clk = !clk; //clock com perodo de 5 initial begin $dumpfile("counter.vcd"); //especifica em qual arquivo serao armazenadas as formas de onda $dumpvars; //especifica para colocar todos os sinais no counter.vcd end initial begin $display("\t \t \ttime, \clk, \treset, \tenable"); //usado para imprimir variveis $monitor("\t%d, \t%b, \t%b, \t%b,", $time, clk, reset, enable); end initial #100 $finish; //termina a simulao depois de 10 unidades de tempo endmodule

Para simular o circuito necessrio primeiro compilar o arquivo em Verilog para um formato intermdio vvp, utilizando o comando iverilog e, s depois, a partir deste ltimo formato, que realizada a simulao com o comando vvp.
Para compilar use o seguinte comando: iverilog o counter_tb.vvp counter_tb.v (cuja sintaxe sumria iverilog o <xxxx.vvp> xxxx.v) compila o arquivo counter_tb.v que

MINISTRIO DA EDUCAO UNIVERSIDADE FEDERAL DE GOIS ENGENHARIA DE COMPUTAO

contm o mdulo anteriormente descrito para um arquivo intermdio, counter_tb.vvp que, este sim, depois simulado com o comando vvp counter_tb.vvp A opo -o no comando iverilog permite especificar o nome do arquivo de sada. Para finalizar o laboratrio necessrio verificar se o resultado sendo impresso est correto. Envie o seu arquivo final (sem erros) para karinarg@eee.ufg.br com o ttulo: lab_01_nomedoaluno.v A regra para recebimento do laboratrio sempre ANTES da prxima aula.

Você também pode gostar