이 글을 PDF로 보기
FIFO 버퍼가 데이터 전송 및 클록 도메인 간의 전송에 어떻게 사용될까
FIFO의 용도
FIFO의 약자는 First In First Out입니다. FIFO는 FPGA 및 ASIC 설계에서 널리 사용되는 기본블록 중 하나로, 매우 유용합니다! FIFO는 다음과 같은 용도로 사용될 수 있습니다:
- 서로 다른 클록 도메인 간의 전송
- 칩 외부로 데이터를 전송하기 전에 버퍼링 (Ex. DRAM 또는 SRAM으로)
- 소프트웨어가 나중에 확인할 데이터를 버퍼링
- 나중에 처리를 위한 데이터 저장
FIFO 쉽게 이해하기
FIFO는 자동차가 통과할 수 있는 일방향 터널로 생각할 수 있습니다. 터널 끝에는 요금소와 게이트가 있습니다. 게이트가 열리면 자동차는 터널을 나갈 수 있습니다. 만약 그 게이트가 절대 열리지 않고 더 많은 자동차가 터널로 들어온다면, 결국 터널은 자동차로 가득 차게 됩니다. 이를 FIFO 오버플로우라고 하며, 일반적으로 좋은 일이 아닙니다. FIFO의 깊이는 터널의 길이로 생각할 수 있습니다. FIFO가 깊을수록 오버플로우 되기 전에 더 많은 데이터를 담을 수 있습니다. FIFO에는 데이터가 들어오는 너비(비트 수)를 나타내는 너비도 있습니다. 아래 그림은 대부분의 FIFO를 표현하는 기본 인터페이스 그림입니다. 종종 FIFO 내 word 수를 세는 기능과 같은 추가 기능을 제공하는 더 많은 신호가 있기도 합니다.
FIFO는 쓰는 쪽 반과 읽는 쪽 반으로 나눌 수 있습니다. 쓰기 쪽에는 Write Enable, Write Data 및 FIFO Full 신호가 있습니다. 설계자는 절대 가득 찬 FIFO에 쓰지 않아야 합니다(중요). 항상 FIFO Full 플래그를 확인하여 추가 데이터를 쓸 공간이 있는지 확인해야 하며, 그렇지 않으면 데이터가 손실됩니다.
읽는 쪽에는 Read Enable, Read Data 및 FIFO Empty 신호가 있습니다. 코드를 설계할 때 쓰기 코드를 한 파일에, 읽기 코드를 다른 파일에 분리하는 것이 더 쉽다고 생각합니다. 설계자는 절대 비어 있는 FIFO에서 읽지 않아야 합니다! 이 두 가지 기본 규칙을 준수하는 한, 여러분은 FIFO를 잘 다룰 수 있을 것입니다. 이 두 가지 규칙은 매우 중요하므로 다시 한 번 말씀드리겠습니다.
FIFO의 두 가지 규칙
- 절대 가득 찬 FIFO에 쓰지 마세요 (오버플로우)
- 절대 비어 있는 FIFO에서 읽지 마세요 (언더플로우)
FIFO는 FPGA 또는 ASIC 내의 전용 논리로 구성될 수 있으며, Flip-Flop(분산 레지스터)으로 생성될 수도 있습니다. 어떤 것을 사용할지는 대개 사용하는 FPGA 공급업체와 코드 구조에 따라 다릅니다. 전용 논리를 사용할 경우 플립플롭(레지스터) 기반 FIFO보다 더 나은 성능을 제공한다는 점을 알아두세요.
FIFO는 FPGA 설계자에게 기본 빌딩 블록 중 하나이며, 올바르게 이해하고 사용하는 것이 매우 중요합니다.
자 다음으로는 VHDL로 레지스터 기반 FIFO의 예제를 살펴봅시다. 시뮬레이션 코드도 포함되어있으니 FIFO를 완전히 이해하는데 도움이 될 겁니다.
https://johnnyjay.tistory.com/128
그럼 화이팅!!
'전자 | 제어 | 항공우주 > FPGA & HDL' 카테고리의 다른 글
[FPGA 강의4] VHDL - 레지스터 기반 FIFO 설계 (0) | 2024.08.11 |
---|---|
[FPGA 강의2] Flip-Flop (Register) (6) | 2024.08.10 |
[FPGA 강의1] LUT (Look Up Table) (0) | 2024.08.10 |
VS Code 에서 TerosHDL Linter를 GHDL로 사용하는 방법 (0) | 2024.04.07 |
Verilig & VHDL 무료 프로그램 TOP 4 (2) | 2023.05.28 |
댓글