HDL과 검증

위와 같이 8비트 d 안의 1의 개수를 세는 기술을 논리 합성하면 어떤 회로가 되는가?

always @(*) begin
    count = 0;
    for (i = 0; i < 8; i = i + 1)
        count = count + d[i];
end
  1. A8클록에 걸쳐 1비트씩 세는 순차 회로가 된다
  2. B루프가 8회분으로 전개되어 덧셈 회로가 나열된 조합 회로가 된다
  3. Cfor 루프는 합성할 수 없으므로 오류가 된다
정답과 해설 보기

정답: B. 루프가 8회분으로 전개되어 덧셈 회로가 나열된 조합 회로가 된다

HDL의 for 루프는 소프트웨어처럼 같은 회로를 반복해서 사용하는 것이 아니라, 논리 합성에서 횟수만큼의 회로로 전개됩니다. 이 예에서는 8회분의 덧셈 회로가 나열된 조합 회로가 되어 1클록 안에 전부 계산합니다. 루프 횟수가 많으면 회로가 커지고 지연도 길어지므로 주의해야 합니다. 시간을 들여 적은 회로로 계산하고 싶다면 클록으로 동작하는 상태 머신으로 작성합니다.

  • A. 클록을 사용하지 않았으므로 시간을 들여 세는 회로는 되지 않습니다.
  • B. 올바릅니다. 반복 횟수가 정해져 있으므로 전개할 수 있습니다.
  • C. 횟수가 고정된 for 루프는 합성할 수 있습니다.
이 분야 연습하기 분야로 돌아가기

HDL과 검증의 다른 문제

  1. 위 기술의 리셋 종류와 동작으로 올바른 것은?
  2. 동기 리셋과 비동기 리셋의 차이로 올바른 것은?
  3. 비동기 리셋을 사용하는 회로에서 리셋 해제(0에서 1로의 변화)를 2단 플립플롭으로 클록에 동기시킨 뒤 각 회로에 분배하는 이유로 올바른 것은?
  4. HDL로 작성하는 상태 머신(스테이트 머신)의 기본 구성으로 올바른 것은?
  5. 위 상태 머신 기술에서 두 번째 always 블록 맨 앞에 "next = state;"를 쓴 이유로 올바른 것은?

이 분야의 비교