HDL과 검증

위 generate문의 동작으로 올바른 것은?

genvar i;
generate
    for (i = 0; i < 4; i = i + 1) begin : g
        fifo u_fifo (.clk(clk), .din(din[i]), .dout(dout[i]));
    end
endgenerate
  1. A하나의 fifo를 4클록에 걸쳐 4번 돌려 쓴다
  2. B시뮬레이션할 때만 fifo를 4번 표시한다
  3. Cfifo module을 4개 만들고, 각각 din과 dout의 서로 다른 요소에 연결한다
정답과 해설 보기

정답: C. fifo module을 4개 만들고, 각각 din과 dout의 서로 다른 요소에 연결한다

generate문 안의 for는 genvar의 값마다 내용을 전개하여 회로 기술을 반복해서 만듭니다. 이 예에서는 fifo 인스턴스가 g[0].u_fifo부터 g[3].u_fifo까지 4개 만들어지고, 각각 din[i]와 dout[i]에 연결됩니다. 채널 수나 비트 수를 parameter로 바꾸면 그에 맞춰 만드는 개수도 바꿀 수 있으므로, 규칙적인 구조의 회로를 짧게 쓸 수 있습니다.

  • A. 돌려 쓰는 것이 아니라 4개의 회로가 나란히 놓입니다.
  • B. 표시가 아니라 회로를 만드는 기술입니다.
  • C. 올바릅니다. 합성 시에 4개의 회로로 전개됩니다.
이 분야 연습하기 분야로 돌아가기

HDL과 검증의 다른 문제

  1. HDL 검증에서 사용되는 Lint 도구의 역할로 올바른 것은?
  2. 논리 합성이나 배치 배선 후의 회로(게이트 레벨 넷리스트)에서 지연 정보를 넣어 시뮬레이션하는 주된 목적은?
  3. 위 기술처럼 플립플롭을 거치지 않고 조합 회로의 출력이 자신의 입력으로 되돌아오는 형태를 무엇이라 하며, 왜 피해야 하는가?
  4. 위 기술을 FPGA용으로 논리 합성하면 일반적으로 어떻게 처리되는가?
  5. 조합 회로에서 if・else if를 길게 이은 기술과 조건이 서로 겹치지 않는 case문 기술을 비교했을 때의 설명으로 올바른 것은?

이 분야의 비교