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

설계자님의 프로필 이미지
설계자

작성한 질문수

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

pipeline 질문

작성

·

143

·

수정됨

1

질문 1. pipeline 부분에서 설계 프로젝트가 pipeline 구조로 된 8제곱 계산기잖아요?

그때 설계 spec이 0~99까지의 입력을 넣어 0^8~99^8을 결과로 만들어내는 모듈인데

 

이때 궁금한 점이 앞 전에 설계했던 counter를 8제곱 계산기 앞에 붙여도 되나요?

0~99까지만 cnt 하는 counter를 앞에 놓고 그 출력을 입력으로 하는 8제곱 계산기로 설계해도 상관없는 건가요?

 

질문 2. 그리고 testbench에서

 @(posedge clk) //a

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

@(negedge clk)

i_valid = 1;

i_value = i;

@(posedge clk) //b

end

@(negedge clk)

i_valid = 0;

i_value = 0;

라고 코드를 작성하셨는데 이런 문법이 따로 있나요?? 이 코드 자체가 잘 이해되지 않습니다.. (지피티한테 물어봐도요 ㅜ)

  1. //a에서 posedge를 받으면 for 문으로 들어간다

  2. i=0 을 받고 negedge clk 가 되면 할당한다.

  3. //b에서 다음 클럭의 posedge clk를 받으면 다시 //a로 돌아간다.

1~3을 반복수행한다.

 

이런 순서가 맞나요??

저는 이런 순서로 생각하고

코드를

always @(posedge clk) begin

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

@(negedge clk)

i_valid = 1;

i_value = i;

end

 

로 바꿔서 해봤거든요 근데 에러나서 돌아가질 안길래.. 제가 보기에는 다른 점이 없어보이는데

어떤 점이 문제일까요?

답변 1

0

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

안녕하세요 🙂

A1. 설계자 마음대로겠죠..? (저의 확인까지 구하실 필요는 없을 것 같아요)
해보세요!! 되도 안되도 얻는것이 분명히 있을꺼에요.

A2. Verilog HDL LRM 에서 지원하는 문법을 응용해서 작성한거에요. 특별한? 문법이 있다고 생각이 드시면 문법 공부도 추천드립니다 🙂 (강의 소개에 남겼지만 해당 강의에서는 문법은 다 알고 있다 가정하고 제작했어요. 여담으로 현재 문법 강의도 제작중이긴 합니다. 문법 질문도 꽤 들어와서;;)

직접 작성하신 코드는 봐드리고 있지 않고있어요. 양해부탁드려요.

"for 문" 을 사용했어요.

 

제가 드린 코드를 설명드리면, 작성해주신 내용에서, a 의 위치를 바꿨습니다.

 @(posedge clk)

for(i=0;i<100;i=i+1) begin //a

@(negedge clk)

i_valid = 1;

i_value = i;

@(posedge clk) //b

end

다음 내용은 건드리지 않았어요.

  1. //a에서 posedge를 받으면 for 문으로 들어간다

  2. i=0 을 받고 negedge clk 가 되면 할당한다.

  3. //b에서 다음 클럭의 posedge clk를 받으면 다시 //b 로 돌아간다.

 

 

 

즐공하세요 🙂

설계자님의 프로필 이미지
설계자

작성한 질문수

질문하기