조건부 생성
Coddy Verilog 여정의 RTL 설계 및 검증 섹션에 포함된 레슨. 38개 중 14번째.
generate-if는 상수 parameter를 사용하여 하드웨어 구조를 선택합니다. 주어진 인스턴스에 대해 하나의 분기만 정교화됩니다. 프로시저 if 또는 신호를 사용하는 조건식은 런타임에 동작을 선택하며, generate 구성을 대체하지 않습니다.
관련 발췌문이며, 주변 선언과 연결은 과제에서 제공됩니다.
generate
if(INVERT) begin: inverted
assign y = ~a;
end else begin: direct
assign y = a;
end
endgenerateparameter는 이 인스턴스에 구성할 드라이버를 선택합니다.
상수 구성에는 generate-if를 사용하고, 런타임 제어에는 일반 RTL 선택을 사용하세요.
챌린지
중급조건부 generate를 사용하세요. MODE=0이면 a를 변경 없이 전달하고, MODE=1이면 a의 8비트를 모두 반전합니다. 입력 b는 사용되지 않습니다. MODE는 0 또는 1입니다. 테스트벤치는 두 구성을 인스턴스화하고 y0, 그다음 y1을 출력합니다.
design.v를 완성하고 모듈 이름과 포트를 유지하세요. 잠긴 testbench.v는 입력을 변경하고 안정화된 후 출력을 출력합니다. +CASE=1과 같은 시뮬레이터 인수를 사용하여 시나리오를 선택하며, 표준 입력은 필요하지 않습니다. 설계에 출력, 지연 또는 시뮬레이션 종료를 추가하지 마세요. 예상 출력은 각 관찰마다 10진수 값이 한 행에 하나씩 표시되며, 값 사이는 공백 하나로 구분되고 줄바꿈으로 끝납니다.
직접 해보기
module dut #(parameter MODE=0) (input [7:0] a,b, output [7:0] y);
assign y=0;
endmodule이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
RTL 설계 및 검증의 모든 레슨
직접 연습해 보세요: 온라인 Verilog 컴파일러