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