728x90
Clock Implementation and Operation
- WR/RD 동작에 대해 공통 클럭이나 독립 클럭 domain으로 설정이 가능하다.
Built-in FIFO Support
- width와 depth 방향으로 내장 FIFO들을 cascade 하여 대형 FIFO를 구현 가능하다.
- ECC(Error Correction Checking) 기능도 사용 가능하다.
- UltraScale 디바이스에서는 Low Latency 옵션을 통해 더 깊은 FIFO를 구현할 수 있다.
First-Word Fall-Through
- FWFT(First-Word Fall-Through) 기능은 읽기 동작을 수행하지 않아도 FIFO 내 다음 데이터를 미리 볼 수 있게 해주는 기능이다. FIFO에 데이터가 존재하면 첫 번째 Word는 자동으로 출력 버스(dout)에 나타난다. 이 기능은 Low Latency가 필요한 애플리케이션이나 출력 데이터 기반으로 throttling을 해야 하는 경우 유용하다.
- 기능 사용 시, Read, PROG_empty, Data_count 신호의 타이밍과 의미가 달라질 수 있으므로, 검증이 필요해진다.
Non-Symmetric Aspect Ratio Support
- Write Port와 Read Port의 폭이 서로 다른 FIFO를 생성할 수 있고, 내부적으로 자동으로 폭 변환을 수행한다.
- 예를 들어, 32-bit 데이터를 입력받고 8-bit로 쪼개서 나가야 하는 상황이면 외부에서 따로 처리할 필요 없이 설정을 해주면 된다. 예시와 같은 상황에서는 1번을 읽고 4번을 쓸 수 있지만, 반대로 4번 읽고 1번을 쓰는 상황에서는 Latency가 길어지는 상황이 발생할 수 있다.
Embedded Register in Block RAM and FIFO Macros
- Block RAM이나 FIFO Macro에는 성능 향상과 파이프라인 단계 추가를 위한 내장 출력 레지스터(Embedded output register)가 존재한다. 이 기능을 사용시 `dout`과 `VALID` 신호에 대해 1 CLK latency를 추가할 수 있다.
Error Injection and Correction Support
- Block RAM이나 FIFO Macro에는 오류 주입(Error Injection) 및 오류 검출/정정(Error Correction Checking, ECC) 기능이 내장되어 있다.
Programmable Flag
- 일정 수준까지 Threshhold를 걸고 그 이상으로 올라올 때 flag를 올리게 만들 수 있다.
설정 가능한 Implementation Options이 있다.
- Non-symmetric aspect ratios (different read and write data widths)
- First-Word Fall-Through
- Uses Built-in FIFO primitive
- ECC support
- Dynamic Error Injection
Independent Clocks
Synchronization Stages
독립적인 클럭을 사용할 때는 CDC를 고려해야 한다. 그러기 위해서는 내부에서 데이터를 샘플링을 해준 다음 전달해야 한다. 이를 몇 번을 거쳐 전달할 것인지를 정하는 단계이다.
[삽질로그]
신호가 비동기 클럭에 의해 샘필링 될 때, FF는 준안정(metastable)에 빠진다. 0도 1도 아닌 값을 갖는다. 이러한 상황을 해결하기 위해선 확률적으로 시간이 필요하다.
논리적으로 준안정 신호를 사용하는 것은 실패를 야기하기에, 시스템을 보호하기위해 시간을 FF의 형태로 준비하면 된다. 첫 번째 FF을 지났는데도 준안정일지라도, 다음 FF을 지나면 안정적으로 해결될 확률이 올라간다.
클럭의 주파수에 따라, FF의 구조와 다른 신호가 안정적으로 변하는 데에 2개의 FF은 충분하지 않을 수 있다. 만약 충분하지 않다면, FF의 수를 3개나 4개로 늘리면 된다. 그러면 안정적으로 변하는 MTBF(Mean Time Between Failures)를 얻을 수 있다.
준안정 FF을 추가하면 Latency가 증가한다는 결과가 있다. FIFO에서는 이 결과는 `wr_en` 로 발생하는 `emtpy`의 시간이 증가했다는 의미가 된다(`rd_en`과 `full`도 마찬가지).
그래서 FPGA EDA에서는 MTBF를 분석이 최적화 되어있어, IP로 이런 블럭을 생성 시에 선택할 수 있게 한다.
728x90
'Circuit Design > 🔥HDL' 카테고리의 다른 글
| [설계 용어] CDC(Clock Domain Crossing) (0) | 2025.09.18 |
|---|---|
| [Vivado] VSCode를 기본 편집기 및 Linting 설정 (1) | 2025.08.25 |
| [Verilog] Verilog를 이용한 AI 설계 응용 및 SoC 설계(3) (0) | 2024.10.09 |
| [Verilog] Verilog를 이용한 AI 설계 응용 및 SoC 설계 (2) (0) | 2024.09.29 |
| [Verilog] Verilog를 이용한 AI 설계 응용 및 SoC 설계 (1) (0) | 2024.09.25 |