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
- A하나의 fifo를 4클록에 걸쳐 4번 돌려 쓴다
- B시뮬레이션할 때만 fifo를 4번 표시한다
- 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개의 회로로 전개됩니다.