inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)

[FPGA 21장] 프로젝트 Fully Connected Layer 설계 - 코드리뷰편

fully connected layer waveform 질문

해결된 질문

421

hello

작성한 질문수 5

1

안녕하세요 21장 의 testbench를 돌려서 waveform을 살펴보는 중에 질문이 생겼습니다.

// Step 4. Registering (Capture) number of Count reg [CNT_BIT-1:0] num_cnt; always @(posedge clk or negedge reset_n) begin if(!reset_n) begin num_cnt <= 0; end else if (i_run) begin num_cnt <= i_num_cnt; end else if (o_done) begin num_cnt <= 0; end end

위는 제공해주신 data_mover_bram.v 코드 의 일부분입니다.

위 waveform을 보면 i_run이 1이 되는 순간 바로 num_cnt 값이 i_num_cnt로 바뀌지만

o_done 이 1이 되는 순간에는 num_cnt 값이 0이 되지 않고 1cycle 뒤에 반영이 되나요?

 

보통은 o_done과 같이 한 cycle 뒤에 값이 stable 할때 값이바뀌는것이 맞이 않나요?

그것이 맞다면 i_run에서 125ns 일때 이미 i_run 하고 i_num_cnt 가 stable 상태라는 것인데 i_num_cnt 는 이미 그전에 stable한것을 볼 수 있지만 i_run은 그 전에 stable 하다고 볼 수 있는 이유를 못찾겠습니다.

fpga 임베디드

답변 1

0

설계독학맛비

안녕하세요 🙂

코드를 보니 o_done 이면, 다음 cycle 에 num_cnt 가 0 으로 돌아가도록 설계가 되어 있네요.

image

o_done 이 1이 되는 순간에는 num_cnt 값이 0이 되지 않고 1cycle 뒤에 반영이 되나요?

F/F 이기 때문에 다음 cycle 에 반영됩니다. 지극히 정상이에요.

 

그것이 맞다면 i_run에서 125ns 일때 이미 i_run 하고 i_num_cnt 가 stable 상태라는 것인데 i_num_cnt 는 이미 그전에 stable한것을 볼 수 있지만 i_run은 그 전에 stable 하다고 볼 수 있는 이유를 못찾겠습니다.

질문이 잘 이해가 안되는데요.

생각하고 계시는 stable 의 정의에 대해서 적어주시겠어요? 해당 답변을 봐야 제가 답을 드릴 수 있을 것 같아요.

 

 

1

hello

제가 질문을 너무 헷갈리게 말한것 같네요 죄송합니다

저의질문은 간단히 말해서 o_done이 1로 바뀔때 다음 cycle에 num_cnt <= 0 이 반영되는것이 일반적으로 맞는것 같은데 i_run이 1로 바뀌는 순간 바로 그 cycle에 num_cnt <= i_num_cnt 이 반영되는 이유가 궁금합니다

0

설계독학맛비

안녕하세요 🙂 설명해주신 부분 이해했습니다.

현 실습코드의 Testbench 의 문제이고요. (Verilog HDL Season1 에서 만 반영이 되었네요. 금일중으로 전부 반영해 놓겠습니다.) 현상에 대해서는 다음 링크를 참고하시면 될 것 같습니다.

https://www.inflearn.com/news/996958

TB main 부분 내부의 assign 을 non-blocking 으로 수정하시면 됩니다.

image

수정하면 다음과 같이 나오네요. DUT 부분은 문제가 없으니, Testbench 만 수정하시면 되겠습니다.

image 

실습코드 업데이트 하고, 공지로 남겨드릴께요!

리포팅 감사합니다 :)

0

설계독학맛비

현재 나와있는 강의들 전부 반영을 해놓았어야하는데;;

게으름에 이제서야 했네요 ㅠ

공지 확인 부탁드립니다.

UART0, 1 중 선택

1

50

2

datamoverbram모듈질문

1

63

2

vitis 설치엣 alveo kria versal 등 옵션을 끄고 설치를 했습니다.

1

96

2

vitis 설치 관련 질문 있습니다!

1

84

2

FPGA 공식문서 읽는법

1

95

2

보드 추가의 클릭창이 없습니다.

1

70

2

Edit in IP Packager에서 코드 수정 후 IP 수정하면 simulation에서 수정된 코드로 작동이 안됩니다

1

81

2

BRAM의 Read / Write를 다 수행했는지 확인할 때 사용되는 num_cnt / i_num_cnt 관련 질문

1

106

1

Vitis 코드 작성

1

130

2

vivado 및 vitis 리눅스 환경 설치 관련 질문드립니다.

1

289

3

[9장 led 점등 시간 제어 불가]

1

81

2

Platform Invalid 오류

1

145

3

WSL 설치 관련 문의드립니다!!

1

96

2

Vivado 툴, 파일 질문드립니다!

1

150

2

9장 LED 점등 안됨

1

109

3

Edit in IP Packager 이후에

1

82

1

Fpga 로직

1

89

2

pmu-fw is not running

1

126

2

Create Project에 대해서 궁금해요

1

89

2

장치관리자 USB 포트

1

98

2

FPGA 7장 AXI_LITE I/F질문

1

89

1

bram mover에서 합성할때

1

77

2

타이밍 위반 질문

1

78

2

rvalid 초기화

1

66

2