RTL log #3 : Vivado IP 사용하기 - Clocking Wizard, Block Memory Generator, ILA

YOUNGWOONG HAN·2026년 4월 4일

RTL log

목록 보기
3/3
post-thumbnail

이번 글에서는 Zybo Z7-20 보드에서 자주 사용하게 되는 Clocking Wizard, Block Memory Generator, ILA IP를 정리해보겠습니다. 각 IP가 어떤 역할을 하는지, 설정 창에서 어떤 옵션을 주로 보면 되는지, 그리고 실습에서는 어떤 값을 바꾸면 되는지를 중심으로 설명하겠습니다.

Clocking Wizard IP

먼저 clk_wiz는 Vivado의 Clocking Wizard IP로, Zybo Z7-20 보드에서 들어오는 125 MHz 기준 클럭을 원하는 주파수의 클럭으로 변환할 때 사용하는 블록입니다.

1. Clocking Wizard 선택

  1. IP Catalog 열기

  2. Clocking Wizard 검색

  3. 더블클릭해서 추가

2. Clocking Options 탭

  • Clock Monitor

    • 입력 클럭 이상을 감시하는 기능입니다.
  • Primitive

    • MMCM (Mixed-Mode Clock Manager)
      • PLL 기능에 더해 위상 이동, Duty 조절, 다중 출력 제어 등 더 다양한 클럭 제어 기능을 제공합니다.
    • PLL (Phase-Locked Loop)
      • 입력 클럭에 위상과 주파수를 맞춰 다른 주파수의 안정적인 클럭을 만들어내는 회로입니다.
      • 단순한 클럭 배수/분주 용도에 적합하며 설정도 비교적 단순합니다.
  • Clocking Features

    • Frequency Synthesis
      • 주파수 변환 기능입니다.
      • 원하는 출력 클럭을 만들 때 사용합니다.
    • Minimize Power
      • 전력 절약 위주 설정입니다.
      • 보통은 체크하지 않아도 됩니다.
    • Phase Alignment
      • 위상 정렬 관련 기능입니다.
      • 일반적인 실습에서는 기본값으로 두어도 무방합니다.
    • Dynamic Reconfig
      • 동작 중 클럭 설정을 바꾸는 기능입니다.
    • Safe Clock Startup
      • 클럭이 안정적으로 시작되도록 돕는 옵션입니다.
  • Jitter Optimization

    • Balanced
      • 기본 권장 옵션입니다.
    • Minimize Output Jitter
      • 출력 지터를 최소화하는 쪽으로 최적화합니다.
    • Maximize Input Jitter Filtering
      • 입력 지터를 더 강하게 필터링합니다.
  • Dynamic Reconfig Interface Options

    • AXI나 DRP를 통한 런타임 재설정 기능입니다.
  • Input Clock Information

    • PrimaryInput Frequency (MHz)clk_in1에 들어오는 입력 클럭 주파수입니다.
    • Zybo Z7-20 기준으로 125MHz에 맞춰 설정하면 됩니다.
    • Secondary는 보조 입력 클럭을 쓰지 않으면 체크하지 않아도 됩니다.
    • Port Name은 기본값인 clk_in1을 그대로 사용해도 됩니다.
    • Input Jitter는 특별한 이유가 없다면 기본값을 사용합니다.

3. Output Clocks 탭


  • Output Freq (MHz)Requested 값을 원하는 출력 주파수로 변경합니다.
  • Phase (degrees), Duty Cycle (%), power_down 등은 위상 조정, 펄스 폭 조정, 고급 피드백, 저전력 제어와 관련된 고급 기능입니다.
  • 일반적인 실습에서는 기본값으로 두고 주파수만 바꿔도 충분합니다.

4. PLLE2 Settings 탭

이 탭은 Vivado가 계산한 PLL 내부 파라미터를 요약해서 보여주는 화면입니다.

  • CLKIN1_PERIOD = 8.000

    • 입력 클럭 주기가 8ns라는 뜻이며, 주파수로는 125MHz입니다.
  • CLKFBOUT_MULT = 7

    • 입력 클럭을 내부 VCO 기준으로 7배 올리는 설정입니다.
    • 내부 VCO 주파수 계산에 사용됩니다.
  • DIVCLK_DIVIDE = 1

    • 입력 쪽 추가 분주가 없다는 뜻입니다.
  • clk_out1

    • Divide = 125
    • Duty Cycle = 0.500
    • Phase = 0.000

즉, 입력 125MHz를 내부에서 7배한 뒤 125로 나누므로 최종 출력은 7MHz가 됩니다.

5. Generate


설정을 마쳤다면 Generate를 눌러 IP를 생성하면 됩니다.


Block Memory Generator IP

Block Memory Generator는 FPGA 내부의 BRAM(Block RAM)을 손쉽게 RAM이나 ROM 형태로 구성할 수 있게 해주는 IP입니다. 간단한 데이터 저장, 계수 테이블 저장, LUT 대체 용도 등에서 자주 사용합니다.

1. Block Memory Generator 선택

  1. IP Catalog 열기

  2. Block Memory Generator 검색

  3. 더블클릭해서 추가

2. Basic 탭

특별히 바꿔야 하는 옵션이 없다면 기본값을 사용해도 됩니다.

3. Port A Options 탭

현재 화면의 의미

  1. 한 주소에 저장되는 데이터 폭이 8비트입니다.
  2. 8비트 데이터를 8개 주소까지 저장할 수 있습니다.
  3. BRAM은 Always Enabled 상태로 두고 주소와 write enable로 제어합니다.
  4. 출력 레지스터는 사용하지 않습니다.
  • Memory Size

    • Write Width
      • 한 번 쓸 때 사용하는 데이터 폭입니다.
      • 값이 8이면 한 주소에 8비트를 씁니다.
    • Read Width
      • 한 번 읽을 때 사용하는 데이터 폭입니다.
      • 값이 8이면 한 주소에서 8비트를 읽습니다.
    • Write Depth
      • 몇 개 주소에 데이터를 쓸 수 있는지입니다.
      • 값이 8이면 8개의 주소를 사용할 수 있습니다.
    • Read Depth
      • 몇 개 주소에서 데이터를 읽을 수 있는지입니다.
      • 보통 Write Depth와 동일하게 설정합니다.
  • Enable Port Type

    • Use ENA Pin
      • BRAM에 ena 포트가 추가됩니다.
      • ena = 1일 때만 해당 클럭에서 읽기/쓰기 동작을 수행합니다.
    • Always Enabled
      • BRAM이 항상 활성화된 상태입니다.
      • 주소를 넣으면 읽고, we = 1이면 해당 주소에 데이터를 씁니다.
  • Port A Optional Output Registers

    • Primitives Output Register
      • BRAM 내부 출력에 레지스터를 하나 추가합니다.
      • 타이밍은 더 좋아질 수 있지만 읽기 지연이 1클럭 늘어날 수 있습니다.
    • Core Output Register
      • BRAM 바깥에 출력 레지스터를 하나 더 추가합니다.
      • 이 경우에도 출력 지연이 늘어날 수 있습니다.
    • SoftECC Input Register
      • ECC를 사용할 때 관련되는 옵션입니다.
      • 이번 설정처럼 No ECC라면 크게 신경 쓰지 않아도 됩니다.
    • REGCEA Pin
      • 출력 레지스터의 clock enable 핀입니다.
      • 출력 레지스터를 사용할 때 의미가 있습니다.
  • Port A Output Reset Options

    • RSTA Pin
      • BRAM 출력 레지스터에 reset 핀을 추가합니다.
    • Output Reset Value (Hex)
      • reset 시 출력값을 지정합니다.
    • Reset Memory Latch
      • 출력 래치나 레지스터 reset과 관련된 옵션입니다.
    • Reset Priority
      • reset과 CE가 동시에 들어왔을 때 어떤 신호를 우선할지 정하는 옵션입니다.
  • READ Address Change A

    • 읽기 주소가 바뀔 때 출력 동작과 관련된 고급 옵션입니다.
    • 일반적인 단순 BRAM 사용에서는 기본값을 유지해도 됩니다.

4. Generate

설정을 마쳤다면 Generate를 눌러 IP를 생성하면 됩니다.


ILA IP

ILA (Integrated Logic Analyzer)는 FPGA 내부 신호를 실시간으로 관찰할 수 있게 해주는 디버깅용 IP입니다. 시뮬레이션에서는 보이지 않는 실제 보드 동작을 확인할 때 매우 유용합니다.

1. ILA 선택

  1. IP Catalog 열기

  2. ILA 검색

  3. 더블클릭해서 추가

2. General Options

  • Monitor Type

    • Native
      • 일반 RTL 신호를 직접 관찰하는 모드입니다.
    • AXI
      • AXI 버스를 분석할 때 사용하는 전용 모드입니다.
  • Number of Probes

    • ILA에 몇 개의 probe 포트를 둘지 정하는 옵션입니다.
  • Sample Data Depth

    • 파형을 몇 샘플까지 저장할지 정하는 값입니다.
    • 숫자가 클수록 더 긴 구간을 볼 수 있지만 FPGA 자원을 더 사용합니다.
    • 1024 정도의 기본값이면 보통 충분합니다.
  • Same Number of Comparators for All Probe Ports

    • 모든 probe 포트에 같은 수의 trigger comparator를 적용할지 정하는 옵션입니다.
    • 보통 체크한 상태로 둡니다.
    • comparator는 probe 값이 설정한 조건을 만족하는지 비교하는 장치입니다.
  • Number of Comparators

    • 각 probe 포트에 comparator를 몇 개 둘지 정하는 값입니다.
  • Trigger Out Port

    • ILA가 트리거를 발생시켰을 때 외부로 신호를 내보내는 기능입니다.
    • 여러 디버그 IP를 연동할 때 사용합니다.
  • Trigger In Port

    • 외부 신호를 받아 ILA 캡처를 시작하게 하는 기능입니다.
    • 고급 디버깅에서 사용합니다.
  • Input Pipe Stages

    • ILA 입력 앞에 파이프라인 레지스터를 몇 단계 둘지 설정하는 기능입니다.
  • Trigger and Storage Settings

    • Capture Control
      • 언제부터, 어떤 방식으로 저장할지 세밀하게 제어하는 옵션입니다.
    • Advanced Trigger
      • 복잡한 조건식으로 트리거를 걸 수 있는 기능입니다.
      • 예를 들어 특정 값이 나온 뒤 다른 값이 이어질 때만 캡처하도록 설정할 수 있습니다.

3. Probe Ports(0..1)

  • Probe Width
    • 각 probe에 연결할 신호의 비트폭을 결정하는 화면입니다.

현재 화면에서는 다음과 같이 설정되어 있습니다.
probe0 : 40비트 신호 연결 가능
probe1 : 1비트 신호 연결 가능

  • Probe Trigger or Data
    • DATA AND TRIGGER
      • 파형 데이터로도 보고 트리거 조건에도 쓸 수 있음
    • DATA
      • 파형으로는 볼 수 있고 트리거 조건으로는 못 씀
    • TRIGGER
      • 트리거 조건으로만 쓰고 파형 데이터로는 못 봄

4. Generate

설정을 마쳤다면 Generate를 눌러 ILA IP를 생성하면 됩니다.

마무리하며

이번 글에서는 Zybo Z7-20 보드에서 자주 사용하게 되는 Clocking Wizard, Block Memory Generator, ILA IP를 정리하였습니다.

profile
electronic engineering student

0개의 댓글