Study/FPGA

02 - Clock 확인과 Vivado Verilog 실습

도엔 2025. 2. 14. 22:27
728x90

1. 클럭(Clock)이란?

1.1 정의

  • 디지털 회로에서 동작을 동기화하는 펄스 신호
  • 모든 디지털 회로는 클럭 신호를 기준으로 동작

_

1.2 기본 개념

: 클럭 신호는 일정한 주기로 HIGH(1)와 LOW(0)을 반복하는 사각파 형태를 가진다.

  • 주파수 (Frequency, Hz)
    • 1초에 클럭이 몇 번 반복되는지
    • 예) 100MHz 클럭 = 1초에 1억 번의 주기
  • 주기 (Period, sec)
    • 클럭 신호가 하나의 주기를 완료하는 데 걸리는 시간.
    • 주기와 주파수의 관계: $ T = \frac{1}{f} $
    • 예) 100MHz 클럭의 주기는 $$ T = \frac{1}{100,000,000} = 10ns $$

_

1.3 클럭의 역할

  • 디지털 회로의 동작을 순차적으로 제어
  • 데이터를 동기화하고 연산 순서를 유지
  • 클럭이 빠르면 연산 속도가 증가하지만, 전력 소모와 발열이 증가
  • 오버클러킹(Overclocking)은 클럭 주파수를 높여 성능을 향상시키지만 안정성이 떨어질 수 있음


==========𝔼𝔼𝟚𝟚==========

 

2. Verilog 클럭 생성 실습

  • Verilog 작성 : 50MHz 클럭(주기 20ns) 신호를 생성하는 코드
`timescale 1ns / 1ps

module clock_generator(
    output reg clk
);

// 초기값 설정
initial begin
    clk = 0;
end

// 50MHz 클럭 생성 (주기: 20ns, 10ns마다 반전)
always begin
    #10 clk = ~clk;
end

endmodule
  • 코드 설명
    1. timescale 1ns / 1ps: 시뮬레이션 단위를 나노초(ns)로 설정
    2. output reg clk;: 클럭 신호를 reg 타입으로 선언
    3. initial begin clk = 0; end: 초기 클럭 값을 0으로 설정
    4. always begin #10 clk = ~clk; end: 10ns마다 clk 신호를 반전시켜 50MHz 클럭을 생성


==========𝔼𝔼𝟚𝟚==========

 

3. Vivado 시뮬레이션 진행

  • Verilog 테스트벤치(Testbench) 코드 작성
`timescale 1ns / 1ps

module clock_tb;

// 테스트를 위한 클럭 신호 생성
reg clk;

// 클럭 생성기 인스턴스화
clock_generator uut (
    .clk(clk)
);

initial begin
    // 200ns 동안 시뮬레이션 실행
    #200 $finish;
end

endmodule
  • 코드 설명
    • clock_generator 모듈을 불러와(uut) 테스트 환경에서 실행
    • #200 $finish;: 200ns 동안 시뮬레이션 실행 후 종료
  • 실습 확장 (숫자바꾸기)
    ex) always begin #5 clk = ~clk; // 5ns마다 반전 → 100MHz 클럭 end


==========𝔼𝔼𝟚𝟚==========

 

4. Vivado에서 실행하는 방법

  1. Vivado 프로젝트 설정
    1. Vivado 실행"Create Project" 클릭
    2. 프로젝트 이름을 입력하고 저장 위치 설정
    3. 프로젝트 타입을 RTL Project로 선택
    4. FPGA 보드를 선택 (사용하는 FPGA 모델에 맞게 설정)
    5. Source Files에서 위의 Verilog 파일을 추가
    6. Simulation Files에서 테스트벤치 파일 추가
  2. 시뮬레이션 실행
    1. Simulation
    2. Run Simulation → Run Behavioral Simulation
    3. 웨이브폼 창에서 clk 신호를 확인
  3. 결과 확인
    • clk 신호가 10ns마다 반전됨을 확인
    • 주기가 20ns이므로 50MHz 클럭이 정상적으로 생성됨


==========𝔼𝔼𝟚𝟚==========

 

5.정리

  • 클럭(Clock)은 디지털 회로에서 매우 중요한 동기화 신호
  • Verilog를 사용하여 다양한 클럭을 생성할 수 있고
  • Vivado를 이용한 시뮬레이션을 통해 정확한 클럭 동작을 확인할 수 있음
  • FPGA 설계에서는 클럭 속도를 조절하여 성능과 전력 소비를 최적화하는 것이 중요함
728x90
반응형