inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기

[과제2] Port를 확장하여 High-speed를 위한 Dual-port + Two-port RAM 설계하기

async fifo 질문있습니다!

해결된 질문

327

이정규

작성한 질문수 2

1

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


예제 코드)

image.png




 

컴퓨터-구조 verilog-hdl fpga 임베디드 amba

답변 2

0

회로설계 멘토 삼코치

네 안녕하세요, 답변 남겨드립니다.

말씀하신것처럼 passing short 문제가 일어날 수 있고,
이를 방지하기 위해 기본적으로 싱크로나이저를 적용하게 되는데

 

이는 말씀하신 것처럼 register의 형태로 구현됩니다.

따라서 올바른 방식이며, 작성하신 코드도 기능적으로 정상동작 한다면
타이밍적인 이슈가 없을 것으로 보입니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

이정규님께서 올려주신 질문은 비동기 FIFO에서의 CDC(Clock Domain Crossing) 문제와 그 해결 방법에 대해 깊은 이해가 필요한 주제입니다. 특히, binary 값을 gray code로 변환하고 이를 CDC하는 과정에서 발생할 수 있는 이슈를 말씀하셨습니다.

CDC 문제와 해결 방법:
1. Passing short CDC signal 문제: Comb logic의 출력을 그대로 CDC하는 경우, 신호가 클록 도메인 간 짧게 변화하면서 발생할 수 있는 metastability 문제가 있습니다. 이는 신호가 안정되지 않고 빠르게 변경될 때 발생할 수 있습니다.

  1. 해결 방법: gray 형태의 출력을 register에 저장 후, 이 register 값을 CDC하는 것이 좋은 방법입니다. 이는 안정성을 높여서 신호가 예기치 않게 변화하는 것을 방지합니다.

  2. 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