Verilog 실습
짧은 Verilog 문제로 핵심 개념을 익혀 보세요. 모듈을 수정하고 테스트벤치를 실행한 다음 풀이를 제출해 보세요.
작성 중인 코드와 완료한 문제는 이 브라우저에 저장됩니다.
장 바로가기
벡터·비트 선택·연산자
문제 2개비트를 벡터로 묶고, 범위를 꺼내고, 중괄호로 이어 붙인 뒤, 비트·논리·축약 연산부터 산술·시프트·비교·우선순위까지 연산자마다 만들어지는 회로와 결과 폭을 익히고 실습에서 바이트를 재배치합니다.
리터럴·signed·식의 폭
문제 1개폭을 적은 리터럴을 쓰고, 폭을 생략한 리터럴은 최소 32비트라는 규칙을 알고, 같은 패턴을 signed와 unsigned로 읽고, 덧셈이 자리올림을 잃지 않을 폭을 대상에 줍니다.
net·변수·조합 always
문제 1개net과 변수를 구분하고, 멀티플렉서를 assign의 ?:와 always @*의 case로 두 번 쓰고, 모든 경로가 출력에 대입해야 하는 이유를 확인하고, 조합 블록에서는 blocking 대입 =을 씁니다.
리셋·enable·우선순위
문제 1개레지스터에 동기 리셋과 enable을 주고, 리셋이 이기도록 if/else 연쇄의 순서를 정하고, 폭이 다하는 지점이 아니라 요구사항이 정한 값에서 카운터가 되돌아가게 합니다.
레지스터 단계·관찰 시점·파형
문제 1개레지스터를 단계로 이어 붙이고, 테스트벤치가 에지에서·#1 뒤에·$strobe로·파형에서 각각 무엇을 보는지 익히고, $dumpfile과 $dumpvars로 VCD 기록을 시작하고 `timescale로 시간에 단위를 주고, 펄스가 정확히 한 사이클인 상승 에지 검출기를 만듭니다.
인스턴스·계층·parameter
문제 1개모듈을 다른 모듈 안에 인스턴스로 놓고, 포트를 이름으로 연결하고, parameter를 인스턴스마다 재정의하고, 인스턴스 사이를 내부 net으로 잇고, 4비트 리플 캐리 덧셈기를 계층으로 읽고, 연결 목록이 숨기는 elaboration 오류와 조용한 오배선을 알아봅니다.
상태표에서 상태 기계 만들기
문제 2개상태표를 상태 레지스터, 다음 상태 case, 출력 논리로 옮기고, 두 상태 상승 검출기를 실행해 출력과 파형을 상태표와 비교한 뒤, 잘못된 전이를 고치고 세 상태 기계를 직접 설계합니다.
메모리와 FIFO
문제 1개메모리를 레지스터 배열로 선언하고, 에지에서 쓰고 비동기로 또는 한 사이클 지연이 있는 레지스터를 거쳐 읽은 뒤, count·full·empty가 어떤 push와 pop을 적용할지 정하는 파라미터화된 동기 FIFO를 만듭니다.
테스트벤치 기법
문제 1개reg 입력, wire 출력, dut 인스턴스로 테스트벤치를 쓰고, # 지연·클록·이벤트 제어로 시간을 흐르게 하고, 자극을 태스크로 묶어 모델과 !==로 비교하고, 실패하거나 멈춘 실행을 $fatal로 끝냅니다.
파형 기록
문제 1개$dumpvars의 scope와 깊이로 VCD에 기록할 인스턴스를 고르고, 중간 계층을 건너뛴 파형을 읽고, 기록을 비우거나 늦추거나 얕게 만들거나 반올림된 지연으로 어긋나게 하거나 이름 없는 값을 빠뜨리는 실수를 알아봅니다.
요구사항에서 설계하기
문제 1개요구사항을 포트·폭·선택 대응·우선순위·샘플링 시점·경계 사례로 읽고, 카운터 계약을 사이클 단위로 예측한 뒤, 두 점검 과제를 스스로 설계합니다.