기본값으로 래치 방지
Coddy Verilog 여정의 RTL 설계 및 검증 섹션에 포함된 레슨. 38개 중 1번째.
조합 논리 출력은 모든 입력 경로에 대해 할당되어야 합니다. always 블록이 출력 할당을 건너뛰면 해당 출력은 이전 값을 유지하며, 이로 인해 래치가 추론될 수 있습니다. default 할당 후 재할당하는 방식은 모든 경로가 처리되었음을 명확하게 보여 줍니다.
관련 발췌문입니다. 주변 선언과 연결은 과제에서 제공됩니다.
always @* begin
y = 0;
if (en) y = data;
enddefault는 비활성화된 경로를 처리하므로 출력은 현재 입력에만 의존합니다.
모든 조합 논리 출력을 모든 경로에서 할당하고, 조건부 재정의 전에 기본값을 사용하세요.
챌린지
중급게이트가 있는 8비트 출력을 구현하세요. en이 1이면 y는 a와 같고, 그렇지 않으면 y는 0입니다. 모든 조합 논리 경로에서 y를 할당하세요. 출력 열: y. 모든 자극 값은 알려진 이진 값입니다.
design.v를 완성하고 모듈 이름과 포트를 유지하세요. 잠긴 testbench.v는 입력 변경을 제공하고 안정화된 후 출력을 출력합니다. +CASE=1과 같은 시뮬레이터 인수를 사용하여 시나리오를 선택하며, 표준 입력은 필요하지 않습니다. 설계에 출력, 지연 또는 시뮬레이션 종료를 추가하지 마세요. 예상 출력은 관찰값마다 10진수 값이 한 행에 표시되며, 값은 하나의 공백으로 구분되고 줄바꿈으로 끝납니다.
직접 해보기
module dut (input en, input [7:0] a, output reg [7:0] y);
// 이 플레이스홀더를 여러분의 설계로 교체하세요.
initial y = 0;
endmodule이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
RTL 설계 및 검증의 모든 레슨
직접 연습해 보세요: 온라인 Verilog 컴파일러