임계값 경보 발생시키기
Coddy Verilog 여정의 RTL 설계 및 검증 섹션에 포함된 레슨. 38개 중 35번째.
챌린지
어려움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;
endmoduleRTL 설계 및 검증의 모든 레슨
직접 연습해 보세요: 온라인 Verilog 컴파일러