[FPGA] DCM 모듈 설정 및 사용 가이드

반도체 설계에는 반드시 외부에서 들어오는 clock이 있습니다. 이는 FPGA test 시, 보드에 있는 external clock으로 사용할 수 있습니다. 하지만 이 clock의 주파수가 유저가 원하는 값이 아닐 경우에는 원하는 주파수의 clock을 만들 필요가 있습니다. Clock 분주를 통해 낮은 주파수를 만들 수 있지만, 더 빠른 clock이 필요한 경우에는 문제가 생깁니다.

ASIC 환경에서는 PLL(phase locked loop)을 사용하면 clock 주파수를 바꾸는 것이 가능하지만, FPGA 환경에서는 다른 방법이 필요합니다.

DCM(digital clock manager)은 Vivado에서 생성할 수 있는 clock generator로 유저가 원하는 주파수의 clock을 생성할 수 있습니다. 그러면 FPGA test를 위한 clock generator는 어떻게 만드는 것인지 알아보겠습니다.

DCM 생성 방법

먼저 Vivado 창의 가장 왼쪽의 Project manager에서 IP Catalog를 선택합니다.

vivado 메뉴에서 IP Catalog 선택
vivado 메뉴에서 IP Catalog 선택

IP Catalog를 선택하면 다음과 같은 창이 나오는데 wiz를 검색하고 해당 모듈을 선택합니다.

IP Catalog 선택 시 나오는 창
IP Catalog 선택 시 나오는 창
Clocking Wizard 선택
모듈 선택

그러면 모듈의 옵션을 설정할 수 있는 창이 나오는데요, 변경해야 하는 값을 하나씩 설명드리겠습니다.

옵션 설정

DCM 옵션 창
옵션 창

먼저 빨간색 박스에 있는 Componant Name을 확인해야 합니다. 그래서 이 Name을 인스턴스화할 때 정확히 입력해 주시면 됩니다.

다음으로 Phase Alignment를 체크해 주시고요, 파란색 박스에 있는 Input Clock information 정보를 입력해 주시면 됩니다. 대부분 보드의 external clock을 사용하니까 그에 맞는 정보를 입력하시면 되겠습니다. 다음 페이지를 살펴볼까요?

2nd page

DCM 옵션 창 2nd page
2nd page

다음 페이지는 clock output에 대한 정보를 입력하는 곳입니다. 여기서는 output clock의 개수와 주파수, 그리고 Reset type만 설정해 주시면 됩니다. 만약 clk_out을 2개 설정하고 Reset Type을 Active low로 설정하면 diagram이 자동으로 바뀌게 됩니다.

DCM 옵션 설정 후 모습
옵션 설정 후 모습

인스턴스화

Vivado에서 모듈 생성을 마친 뒤, RTL 상에서 다음과 같은 코드를 작성해 모듈을 추가하시면 됩니다.

clk_wiz_0 u_PLL0 (
    .clk_in1    (ext_clk),
    .clk_out1   (clk_40M),
    .clk_out2   (clk_20M),
    .locked     ()
);

여기서 ext_clk는 외부 소스 clock이고, clk_40M과 clk_20M은 유저가 설정한 clock의 이름입니다. 저는 40MHz와 20MHz를 output으로 설정했으니 알아보기 쉽게 clk_40M, clk_20M으로 네이밍했습니다.

참조: Xilinx DCM datasheet

Similar Posts