HDL과 검증

위 기술처럼 플립플롭을 거치지 않고 조합 회로의 출력이 자신의 입력으로 되돌아오는 형태를 무엇이라 하며, 왜 피해야 하는가?

assign a = b & c;
assign b = a | d;
  1. A조합 루프(combinational loop)라 하며, 발진하거나 값이 정해지지 않을 수 있고 타이밍 분석도 할 수 없게 되기 때문
  2. B파이프라인이라 하며, 회로가 너무 빨라지기 때문
  3. C시프트 레지스터라 하며, 데이터가 손실되기 때문
정답과 해설 보기

정답: A. 조합 루프(combinational loop)라 하며, 발진하거나 값이 정해지지 않을 수 있고 타이밍 분석도 할 수 없게 되기 때문

a가 b를, b가 a를 정하는 형태에서는 플립플롭이 없으므로 값이 게이트 지연마다 계속 돌며 발진하거나, 어떤 값으로 수렴할지가 지연 차이로 결정되기도 합니다. 래치와 같은 기억 기능이 의도치 않게 생기기도 합니다. 정적 타이밍 분석은 경로가 고리를 이루면 다룰 수 없습니다. 귀환이 필요할 때는 도중에 반드시 플립플롭을 넣어 클록마다 값을 갱신하는 형태로 합니다.

  • A. 올바릅니다. 많은 도구가 오류나 경고를 냅니다.
  • B. 파이프라인은 플립플롭으로 구분한 구조입니다.
  • C. 시프트 레지스터는 플립플롭으로 이루어져 있습니다.
이 분야 연습하기 분야로 돌아가기

HDL과 검증의 다른 문제

  1. 위 기술을 FPGA용으로 논리 합성하면 일반적으로 어떻게 처리되는가?
  2. 조합 회로에서 if・else if를 길게 이은 기술과 조건이 서로 겹치지 않는 case문 기술을 비교했을 때의 설명으로 올바른 것은?
  3. Verilog의 등호 연산자 "=="와 "==="의 차이로 올바른 것은?
  4. Verilog 같은 HDL로 작성한 기술과 C 언어 같은 소프트웨어 프로그램의 큰 차이로 올바른 것은?
  5. Verilog에서 module을 사용하는 목적으로 올바른 것은?

이 분야의 비교