async fifo 질문있습니다!
async fifo 예제 코드는 bin counter의 값을 comb logic을 통해 gray형태로 바꾸어서 CDC를 수행하는 것으로 이해했습니다. 하지만 강의 내용에서 Comb logic의 출력을 그대로 CDC한다면, Passing short cdc signal 문제가 발생할 수 있다고 하셨습니다. 그래서 gray 형태를 register에 저장하고, 이 register의 출력을 cdc하는 형태로 바꾸려고 하는데, 이것이 올바른 방식인지 알고 싶습니다!
예제 코드)

답변 2
0
네 안녕하세요, 답변 남겨드립니다.
말씀하신것처럼 passing short 문제가 일어날 수 있고,
이를 방지하기 위해 기본적으로 싱크로나이저를 적용하게 되는데
이는 말씀하신 것처럼 register의 형태로 구현됩니다.
따라서 올바른 방식이며, 작성하신 코드도 기능적으로 정상동작 한다면
타이밍적인 이슈가 없을 것으로 보입니다.
0
안녕하세요, 인프런 AI 인턴입니다.
이정규님께서 올려주신 질문은 비동기 FIFO에서의 CDC(Clock Domain Crossing) 문제와 그 해결 방법에 대해 깊은 이해가 필요한 주제입니다. 특히, binary 값을 gray code로 변환하고 이를 CDC하는 과정에서 발생할 수 있는 이슈를 말씀하셨습니다.
CDC 문제와 해결 방법:
1. Passing short CDC signal 문제: Comb logic의 출력을 그대로 CDC하는 경우, 신호가 클록 도메인 간 짧게 변화하면서 발생할 수 있는 metastability 문제가 있습니다. 이는 신호가 안정되지 않고 빠르게 변경될 때 발생할 수 있습니다.
해결 방법: gray 형태의 출력을 register에 저장 후, 이 register 값을 CDC하는 것이 좋은 방법입니다. 이는 안정성을 높여서 신호가 예기치 않게 변화하는 것을 방지합니다.
Gray Code 사용: Gray Code를 사용하는 이유는, 이진수와 달리 한 비트만 변하기 때문에 비동기 클록 도메인 간의 경쟁 조건을 크게 줄여줍니다. 따라서, CDC 전에 한 비트씩 차근차근 변하도록 되어 신호 전파 지연에 대해 보다 안전하게 처리할 수 있습니다.
제안된 코드 구조:
- wptr_bin 값을 wptr_gray로 변환한 후 직접 CDC하는 대신, wptr_gray를 다른 레지스터에 저장하여 안정적으로 바꾸도록 설정합니다.
- wptr_gray를 위한 임시 레지스터를 사용하여 신호를 동기화하고 이를 기반으로 Clock Domain Crossing을 수행합니다.
이미지에 나온 코드 스니펫 및 설명을 기반으로 볼 때, register를 사용하여 CDC를 수행하려는 구상은 매우 적절한 접근입니다.
관련하여 더 상세한 설명을 원하시면, async fifo 구조와 설계와 같은 주제의 기존 질문을 참고하실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
강의 만료일 연장 신청
0
39
2
강의자료 pdf파일
0
90
2
수강기간변경
0
75
2
프로그램 종류
0
90
1
안녕하세요 강의 도중 궁금한 점 있어서 질문드립니다!
0
87
1
수강기간 변경관련
0
65
2
수강기간 만료
0
72
2
수강 연장 문의
0
72
2
I2C SCL_Synched, SDA_Synched 질문
0
84
1
no data path질문
0
104
3
SRAM 강의 modelsim 시뮬레이션에서 inner 메모리를 Objects 리스트에서 찾으려고 하는데 안보입니다.
0
89
2
DataMem 스펙 질문
0
54
1
Hamming Code 질문
0
67
1
W_CRC 값 질문하기
0
60
1
Precharge에 대한 질문
0
168
1
tpsram spec 질문
0
65
2
학습 관련 질문 있습니다!
0
88
2
[과제7] AXI 통신 프로토콜 설계하기 문의드립니다
0
94
2
SRAM 강의 TB 작성 후 waveform 확인시에 dout이 모두 don't care 처리 관련 질문드립니다.
0
106
5
SRAM Interface Behavior(Diagram) 질문
0
135
3
vivado와 quartus 프로그램의 systhesis 결과 차이에 대해 궁금한 점 있습니다
0
187
2
tool 질문
0
96
2
CDC 메타스태빌리티 질문
0
70
1
SRAM module RTL viewer 이상
0
100
2





