• 카테고리

    질문 & 답변
  • 세부 분야

    반도체

  • 해결 여부

    미해결

[15] delay valid & data 관련질문

23.08.22 19:57 작성 조회수 392

1

안녕하세요, 질문을 자주드리게되네요..ㅎㅎ 고생해주셔서 감사합니다. data_mover_bram 코드를 작성 중 마지막 부분에서 delay관련 코드가 나오는데요, CORE_DELAY=5기준,

  1. 00000->00001->00011->00111->01111->11111
    : r_core_delay[4]를 ce_b1에 할당하므로, r_valid가 유지되는 채로 5cycle이 지나 b1에 clock이 인가되기 시작할 것입니다.

     

  2. data를 delay시키는 코드 부분에서,
    if (|r_core_delay) r_core_data[0] <=mem_data;
    이므로, 1번에 제가 제시한 시퀀스 기준,
    r_core_delay=00001이 되고난 그 다음 clock 즉 r_core_delay=00010이 되는 clock에
    r_core_data[0]에 mem data가 쓰일 것이라고 생각이되는데, 틀린 생각인가요?

     

  3. 만약 그것이 맞다면 이후 ->[1]->[2]->[3]->[4]
    와 같이 추가적으로 4cycle, 총 5cycle이 필요한데, r_core_delay 보다 한 사이클 늦게 5cycle이 시작되므로 최종적으로 delay를 미루는 시간보다 data가 한 사이클 늦게 밀릴 것이라고 코드해석이 되는데, 아마 당연히 제가 틀렸겠지요..?

    이 부분이 어떻게 동시에 싱크를 맞춰서 딜레이 되는 건지 궁금합니다. 감사합니다..

 

 

답변 1

답변을 작성해보세요.

0

안녕하세요 :)

5 cycle 이냐, 4 cycle 이냐. 이런 cycle 의 이슈는 기준을 어디에 보느냐에 따라 서로 다른 답을 할 수 있습니다.

당연히 시뮬레이션은 전달드린 코드 대로 동작합니다.

코드에 대한 타이밍 설명을 물어보시는 거라면, 답변 범위를 최대한 좁혀주셔야 도움이 될 것 같습니다. (사실 가장 답변드리기 난감한 부분이기도 해요. 이 타이밍에 뭐가 어떻게 된다, 이거를 전부 설명드리는건... 제가 답변해드리기 어려울 것 같습니다. 양해부탁드립니다.)

타이밍 sync 관련해서는 전달드린 코드와 waveform 을 참고 부탁드립니다.

 

 

1번 같은 경우

image

1이라는 입력이 계속 들어온다는 가정이면 맞습니다.

 

2,3번은 궁금하신 부분을 이해하지 못했습니다.

자세히 설명해 주시면 감사하겠습니다.

즐공하세요 :)

고다휘님의 프로필

고다휘

질문자

2023.08.23

그 다음 강의 들었더니 딜레이 부분 맛비님께서 실수하신 버그라고 하셔서

제 생각이 맞았구나 싶었는데 아닌가요? 제가 질문드린 부분 정확히 짚으시면서 이 부분으로 인해 한사이클 딜레이가 잘못됐다고 하셨더라구요.

고다휘님의 프로필

고다휘

질문자

2023.08.23

1,2,3번에서 종합적으로 궁금한 점은

if (|r_core_delay)

를 사용함으로써 delay sync가 맞지 않을 것 같다는 생각이었습니다.

아 그런가요? 그러면 말씀해주신 내용이 맞을 수 있겠네요. :)

채널톡 아이콘