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
- 코드 설명
- timescale 1ns / 1ps: 시뮬레이션 단위를 나노초(ns)로 설정
- output reg clk;: 클럭 신호를 reg 타입으로 선언
- initial begin clk = 0; end: 초기 클럭 값을 0으로 설정
- 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에서 실행하는 방법
- Vivado 프로젝트 설정
- Vivado 실행 후 "Create Project" 클릭
- 프로젝트 이름을 입력하고 저장 위치 설정
- 프로젝트 타입을 RTL Project로 선택
- FPGA 보드를 선택 (사용하는 FPGA 모델에 맞게 설정)
- Source Files에서 위의 Verilog 파일을 추가
- Simulation Files에서 테스트벤치 파일 추가
- 시뮬레이션 실행
- Simulation 탭
- Run Simulation → Run Behavioral Simulation
- 웨이브폼 창에서
clk
신호를 확인
- 결과 확인
clk
신호가 10ns마다 반전됨을 확인- 주기가 20ns이므로 50MHz 클럭이 정상적으로 생성됨
==========𝔼𝔼𝟚𝟚==========
5.정리
- 클럭(Clock)은 디지털 회로에서 매우 중요한 동기화 신호
- Verilog를 사용하여 다양한 클럭을 생성할 수 있고
- Vivado를 이용한 시뮬레이션을 통해 정확한 클럭 동작을 확인할 수 있음
- FPGA 설계에서는 클럭 속도를 조절하여 성능과 전력 소비를 최적화하는 것이 중요함
728x90
반응형
'Study > FPGA' 카테고리의 다른 글
06 - Verilog Module 모듈과 Instance 인스턴스화 개념 (0) | 2025.03.08 |
---|---|
05 - 동기 Synchronous vs. 비동기 리셋 Reset (0) | 2025.03.03 |
04 - FPGA 설계 흐름 (Design Flow) (0) | 2025.03.01 |
03 - HLS(High-Level Synthesis) 개념 및 툴 정리 (0) | 2025.03.01 |
01. FPGA의 내부 구조와 논리 요소 (0) | 2025.02.11 |