Menu
Coddy logo textTech

Disparar um Alarme de Limite

Parte da seção Design e Verificação RTL do Journey de Verilog da Coddy. Lição 35 de 38.

challenge icon

Desafio

Difícil

Construa um Sample Monitor ao longo de cinco etapas. Ative o alarme combinacional sempre que total for maior ou igual ao limite sem sinal, incluindo a igualdade. O alarm refletirá o total atualizado após cada borda e acompanhará as alterações em limit. limit=0 fará com que alarm fique ativo mesmo quando total=0. Preserve todo o comportamento de acumulação, enable, clear e contagem. Mantenha tudo das etapas anteriores, incluindo seu testbench e o comportamento de saída anterior. Todos os valores de entrada são conhecidos. Os cenários contêm no máximo 40 bordas, portanto total cabe em 16 bits. O testbench fixo imprime total para os cenários 1-9, total e count para os cenários 10-12, e total, count e alarm para os cenários 13-15. Somente os cenários habilitados para esta etapa serão avaliados.

Complete design.v e preserve os nomes de módulo e as portas. O testbench.v bloqueado fornece alterações nas entradas e imprime as saídas após elas se estabilizarem. Ele escolhe um cenário usando um argumento do simulador, como +CASE=1; não é necessária entrada padrão. Não adicione impressão, atrasos ou encerramento da simulação ao design. A saída esperada é uma linha de valores decimais por observação, separados por um espaço e terminando com uma nova linha.

Experimente você mesmo

module dut(input clk,rst,en,clear, input [7:0] data, input [15:0] limit, output reg [15:0] total, output reg [3:0] count, output alarm);
    always @(posedge clk)begin
        if(rst || clear)begin total<=0;count<=0;end
        else if(en)begin
            total<=total+data;
            if(count!=15)count<=count+4'd1;
        end
    end
    assign alarm=0;
endmodule

Todas as lições de Design e Verificação RTL

Pratique por conta própria: Compilador de Verilog online