인프런 커뮤니티 질문&답변

김수호님의 프로필 이미지
김수호

작성한 질문수

설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)

[HDL 14장] HW 가속기의 비밀인 Pipeline 을 이해해보자 (실습편)

14강 Tb 질문있습니다.

작성

·

333

·

수정됨

1

안녕하세요. 14강 강의 중에 코드가 잘 이해되지 않는 부분이 있어서 질문 남깁니다ㅠ

매 cycle마다 i = 0~99인 코드이며, 밑에 1cycle내에서 negedge일 때, i의 값이 바뀐다고 이해를 하고 있습니다.

근데 밑에 loop를 돌리기 위해 @(posedge)를 선언하셨다고 하셨는데, posedge를 사용함으로서 negedge에서는 i_value로 i 값이 전달 되고 posedge에서 i 값이 변동이 되는게 맞을까요?

제가 이해하는게 맞다면 posege가 없는 경우에 negedge가 실행 된 후 i_value에 i의 값이 전달되자마자 i 값이 변해서 loop가 정상적으로 동작하지 않는건지 궁금합니다.

@(postive clk); // 1cycle 진행 clk

$display("Start![%d]",$time);

for(i =0; i<100; i = i +1);

@(negedge clk);

i_valid = 1;

i_value = i; // i_value에 전달

@(posedge clk); // posedge이후 i값 변경

end

=================

현업자인지라 업무때문에 답변이 늦을 수 있습니다. (길어도 만 3일 안에는 꼭 답변드리려고 노력중입니다 ㅠㅠ)

  1. 강의에서 다룬 내용들의 질문들을 부탁드립니다!! (설치과정, 강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등)

  2. 이런 질문은 부담스러워요.. (답변거부해도 양해 부탁드려요)

    1. 개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등..

  3. 글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.)

    1. 서로 예의를 지키며 존중하는 문화를 만들어가요.

    2. 질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! )

  4. 먼저 유사한 질문이 있었는지 검색해보세요.

  5. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

==================

답변 1

0

설계독학맛비님의 프로필 이미지
설계독학맛비
지식공유자

안녕하세요 :)

for(i =0; i<100; i = i +1);

// @(negedge clk); // waveform 에서 data 가 변하는 것을 잘? 확인하기 위해서 half cycle delay 시켰는데, 이것때문에 다음과 같은 이슈가 있었습니다. 즉 빼셔도 됩니다.

https://www.inflearn.com/questions/1011133/14%EC%9E%A5-pipeline-%EC%8B%A4%EC%8A%B5%EB%82%B4%EC%9A%A9-power-of-8-operation-%EA%B7%B8%EB%A6%BC-%EC%A7%88%EB%AC%B8

i_valid = 1;

i_value = i; // i_value에 전달

@(posedge clk); // posedge 에 맞춰서 loop 가 돌도록 되어 있습니다.

 

for loop 내에, @(posedge clk) 이 없으면, for loop 은 zero sec (waveform 상의 delay 없이) 로 처리하고 끝납니다.

즉, waveform 상의 시간을 표현하기 위해서 @(posedge clk) 에 동기화 되도록 추가했어요.

즐공하세요 :)

김수호님의 프로필 이미지
김수호

작성한 질문수

질문하기