본문 바로가기
전자 | 제어 | 항공우주/FPGA & HDL

[FPGA 강의3] FIFO 개념과 용도

by 상상메카J 2024. 8. 11.
반응형

이 글을 PDF로 보기

[FPGA 강의3] FIFO 개념과 용도.pdf
0.16MB

 

FIFO 버퍼가 데이터 전송 및 클록 도메인 간의 전송에 어떻게 사용될까

FIFO의 용도

FIFO의 약자는 First In First Out입니다. FIFO는 FPGA 및 ASIC 설계에서 널리 사용되는 기본블록 중 하나로, 매우 유용합니다! FIFO는 다음과 같은 용도로 사용될 수 있습니다:

 

  • 서로 다른 클록 도메인 간의 전송
  • 칩 외부로 데이터를 전송하기 전에 버퍼링 (Ex. DRAM 또는 SRAM으로)
  • 소프트웨어가 나중에 확인할 데이터를 버퍼링
  • 나중에 처리를 위한 데이터 저장
FIFO 쉽게 이해하기

FIFO는 자동차가 통과할 수 있는 일방향 터널로 생각할 수 있습니다. 터널 끝에는 요금소와 게이트가 있습니다. 게이트가 열리면 자동차는 터널을 나갈 수 있습니다. 만약 그 게이트가 절대 열리지 않고 더 많은 자동차가 터널로 들어온다면, 결국 터널은 자동차로 가득 차게 됩니다. 이를 FIFO 오버플로우라고 하며, 일반적으로 좋은 일이 아닙니다. FIFO의 깊이는 터널의 길이로 생각할 수 있습니다. FIFO가 깊을수록 오버플로우 되기 전에 더 많은 데이터를 담을 수 있습니다. FIFO에는 데이터가 들어오는 너비(비트 수)를 나타내는 너비도 있습니다. 아래 그림은 대부분의 FIFO를 표현하는 기본 인터페이스 그림입니다. 종종 FIFO 내 word 수를 세는 기능과 같은 추가 기능을 제공하는 더 많은 신호가 있기도 합니다.

 

FIFO 기본 인터페이스 블럭


FIFO는 쓰는 쪽 반과 읽는 쪽 반으로 나눌 수 있습니다. 쓰기 쪽에는 Write Enable, Write Data 및 FIFO Full 신호가 있습니다. 설계자는 절대 가득 찬 FIFO에 쓰지 않아야 합니다(중요). 항상 FIFO Full 플래그를 확인하여 추가 데이터를 쓸 공간이 있는지 확인해야 하며, 그렇지 않으면 데이터가 손실됩니다.


읽는 쪽에는 Read Enable, Read Data 및 FIFO Empty 신호가 있습니다. 코드를 설계할 때 쓰기 코드를 한 파일에, 읽기 코드를 다른 파일에 분리하는 것이 더 쉽다고 생각합니다. 설계자는 절대 비어 있는 FIFO에서 읽지 않아야 합니다! 이 두 가지 기본 규칙을 준수하는 한, 여러분은 FIFO를 잘 다룰 수 있을 것입니다. 이 두 가지 규칙은 매우 중요하므로 다시 한 번 말씀드리겠습니다.

FIFO의 두 가지 규칙
  1. 절대 가득 찬 FIFO에 쓰지 마세요 (오버플로우)
  2. 절대 비어 있는 FIFO에서 읽지 마세요 (언더플로우)

FIFO는 FPGA 또는 ASIC 내의 전용 논리로 구성될 수 있으며, Flip-Flop(분산 레지스터)으로 생성될 수도 있습니다. 어떤 것을 사용할지는 대개 사용하는 FPGA 공급업체와 코드 구조에 따라 다릅니다. 전용 논리를 사용할 경우 플립플롭(레지스터) 기반 FIFO보다 더 나은 성능을 제공한다는 점을 알아두세요. 

FIFO는 FPGA 설계자에게 기본 빌딩 블록 중 하나이며, 올바르게 이해하고 사용하는 것이 매우 중요합니다.

 

자 다음으로는 VHDL로 레지스터 기반 FIFO의 예제를 살펴봅시다. 시뮬레이션 코드도 포함되어있으니 FIFO를 완전히 이해하는데 도움이 될 겁니다.

 

https://johnnyjay.tistory.com/128

반응형
 

[FPGA 강의4] VHDL - 레지스터 기반 FIFO 설계

이 글을 PDF로 보기 사전 지식시작하기에 앞서 이전 글을 안보신 분들은 사전 지식 습득을 위해 참고 바랍니다.[FPGA 강의3] FIFO 개념과 용도https://johnnyjay.tistory.com/127 레지스터 기반의 FIFO오늘

johnnyjay.tistory.com

 

 

 

그럼 화이팅!!

반응형

댓글