Menu
Coddy logo textTech

임계값 경보 발생시키기

Coddy Verilog 여정의 RTL 설계 및 검증 섹션에 포함된 레슨. 38개 중 35번째.

challenge icon

챌린지

어려움

5단계에 걸쳐 하나의 Sample Monitor를 구축하세요. total이 부호 없는 limit보다 크거나 같을 때마다, 같을 때를 포함하여 조합 alarm을 high로 설정하세요. alarm은 각 에지 이후 업데이트된 total을 반영하며 limit 변경을 따릅니다. limit=0이면 total=0일 때도 alarm이 high가 됩니다. 모든 누적, enable, clear 및 카운팅 동작을 유지하세요. 테스트벤치와 이전 출력 동작을 포함하여 이전 단계의 모든 내용을 유지하세요. 모든 입력 값은 알려져 있습니다. 시나리오는 최대 40개의 에지를 포함하므로 total은 16비트에 들어갑니다. 고정된 테스트벤치는 시나리오 1-9에서는 total을 출력하고, 시나리오 10-12에서는 total과 count를 출력하며, 시나리오 13-15에서는 total, count 및 alarm을 출력합니다. 이 단계에서 활성화된 시나리오만 채점됩니다.

design.v를 완성하고 모듈 이름과 포트를 유지하세요. 잠긴 testbench.v는 입력 변경을 제공하고 안정화된 후 출력을 출력합니다. +CASE=1과 같은 시뮬레이터 인수를 사용하여 시나리오를 선택하며, 표준 입력은 필요하지 않습니다. 설계에 출력, 지연 또는 시뮬레이션 종료를 추가하지 마세요. 예상 출력은 관찰값마다 10진수 값이 한 행에 하나씩 표시되며, 값은 공백 하나로 구분되고 줄바꿈으로 끝납니다.

직접 해보기

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

RTL 설계 및 검증의 모든 레슨

직접 연습해 보세요: 온라인 Verilog 컴파일러