우선순위 인코더
Coddy Verilog 여정의 RTL 설계 및 검증 섹션에 포함된 레슨. 38개 중 2번째.
인코더는 요청 비트를 인덱스에 매핑합니다. 여러 활성 요청에는 명시적인 우선순위 규칙이 필요합니다. if/else-if 체인은 앞에 있는 분기에 우선순위를 부여하며, 별도의 valid 신호는 요청이 없는 경우와 인덱스 0을 구분합니다.
관련 발췌문입니다. 주변 선언과 연결은 과제에서 제공됩니다.
if (req[3]) code = 3;
else if (req[2]) code = 2;
else if (req[1]) code = 1;
else code = 0;처음으로 true인 분기가 선택되므로 가장 높은 요청 비트가 우선순위를 갖습니다.
우선순위 순서를 명시하고 요청이 없을 때의 출력을 명확하게 정의하세요.
챌린지
중급4비트 req에서 가장 높은 위치에 있는 1비트를 code로 인코딩하세요. 요청이 하나라도 있으면 valid를 설정하고, req가 0일 때는 code와 valid를 0으로 설정하세요. 출력 열: code, valid. 모든 자극 값은 알려진 이진 값입니다.
design.v를 완성하고 모듈 이름과 포트를 유지하세요. 잠긴 testbench.v는 입력 변경을 제공하고 안정화된 후 출력을 인쇄합니다. +CASE=1과 같은 시뮬레이터 인수를 사용하여 시나리오를 선택하며, 표준 입력은 필요하지 않습니다. 설계에 출력, 지연 또는 시뮬레이션 종료를 추가하지 마세요. 예상 출력은 관찰마다 한 줄의 10진수 값이며, 값은 하나의 공백으로 구분되고 줄바꿈으로 끝납니다.
직접 해보기
module dut (input [3:0] req, output reg [1:0] code, output reg valid);
// 이 플레이스홀더를 여러분의 설계로 교체하세요.
initial code = 0;
initial valid = 0;
endmodule이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
RTL 설계 및 검증의 모든 레슨
직접 연습해 보세요: 온라인 Verilog 컴파일러