작성
·
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;
라고 코드를 작성하셨는데 이런 문법이 따로 있나요?? 이 코드 자체가 잘 이해되지 않습니다.. (지피티한테 물어봐도요 ㅜ)
//a에서 posedge를 받으면 for 문으로 들어간다
i=0 을 받고 negedge clk 가 되면 할당한다.
//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
다음 내용은 건드리지 않았어요.
//a에서 posedge를 받으면 for 문으로 들어간다
i=0 을 받고 negedge clk 가 되면 할당한다.
//b에서 다음 클럭의 posedge clk를 받으면 다시 //b 로 돌아간다.
즐공하세요 🙂