인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

woockddus42님의 프로필 이미지
woockddus42

작성한 질문수

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

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

FPGA 연산 관련 질문

작성

·

447

1

안녕하세요 맛비님. 질문 드릴것이 있습니다!

a-b <0과 같은 연산을 if문의 조건에 쓸 경우 FPGA에서는 어떻게 되는지 궁금합니다!

구체적으로는 예를 들어 4bit연산에서 a = 0011(3), b = 0101(5)인 경우 a - b = 1110(-2)로 연산 결과가 나올것이라고 생각이 됩니다. 그런데 -2는 설계자가 해석하는 것이고 FPGA위에서는 bit 그대로 1110이 나올 것인데 1110 < 0 이 성립이 되지 않을 것 같다?라는 궁금증이 생겼습니다.

(만약 1110그대로 해석하여 1110 < 0이 성립이 되지 않는다면 c = a - b으로 미리 assign을 해두고 c의 bit수를 5bit로 하여 msb가 변하는 조건으로 조건문을 완성시키면 되는 것일까요?)

답변 2

2

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

예를 들면 제가 제공해드린 환경을 사용하셔서 다음처럼 Test 해보시면 됩니다.

(제공해드린 환경의 강력함? 을 느끼실 수 있을꺼에요)

Test 환경

bit extension (8b -> 9b) 을 통해서 overflow / underflow 이슈는 해결한 상태에서 Test

input vector 는

  • input_a : d'10

  • input_b : d'20

Case 1. signed result

wire signed [8:0] result;

assign result = {1'b0,i_value_a} - {1'b0, i_value_b};

wire is_minus = (result < 0) ? 1 : 0;

image

Case 2. unsigned result

wire [8:0] result;

assign result = {1'b0,i_value_a} - {1'b0, i_value_b};

wire is_minus = (result < 0) ? 1 : 0;

image

결론

  1. result 의 "minus 연산 결과값"은 signed / unsigned type 에 무관하게 동일함

  2. result 의 type 에 따라서 is_minus 의 결과가 달라짐.
    이는 비교기 (result < 0) 가 signed / unsigned type 에 영향이 있음을 알 수 있다.

0

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

안녕하세요 :)

해당 내용은 Verilog HDL 강의에서 이야기를 해서, 큰 맥락만 말씀드리면

  • Sigend / Unsigned

  • Overflow / Underflow

를 고려하시면 답이 되실 것 같습니다.

연산 결과는 직접 확인이 가능하실 것 같아요. (제공해드린 simulation 환경)

즐공하세요 :)

woockddus42님의 프로필 이미지
woockddus42

작성한 질문수

질문하기