
SoC에서 사용하는 통신 방식을 크게 3가지로 나눌 수 있습니다. 그 중, 모든 IP에 자주 사용되는 FIFO에 대해 알아보겠습니다. FIFO에는 Synchronous FIFO와 Asynchronous FIFO가 있는데, 전자부터 알아보고 Verilog로 작성해보죠.

CDC는 두 블록이 각각 다른 클럭 도메인(즉, 서로 다른 주파수 또는 위상의 클럭 신호)을 사용할 때, 두 블록 간 데이터 전송 상황에서 발생합니다. 이 경우 데이터 전송 중 타이밍 불일치나 메타스테이블 상태가 발생할 가능성이 있습니다.

Gray Code는 이진수(Binary Code)의 한 종류로, 연속된 두 숫자 사이에 단 하나의 비트만 변하는 코드입니다. 이를 단일 비트 변경 코드 (Single Bit Change Code)라고도 합니다.

저번 글에서는 서로 다른 clock 도메인간의 통신에서 Gray code가 가지는 신뢰성에 대해서 알아보았습니다. Gray Code는 Asynchronous FIFO의 Pointer로 사용하게 되는데, gray counter의 형태로 사용됩니다.

NAND 메모리의 bit에 에러가 발생하면 원하는 동작이 안되겠죠. 오류를 검출하고 수정하는 ECC 알고리즘 중 하나인 Hamming Code에 대해 알아보겠습니다.