인프런 커뮤니티 질문&답변
사칙연산 예제에서 질문드립니다.
작성
·
304
1
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
 a = 15; b = -8 wrong = a+b; correct = $signed({1'b0,a}) + b; 에서 질문 1 : $signed({1'b0,a})는 5비트 b는 4비트인데 피연산자의 비트길이가 다른데 연산이 가능한가요 ? correct가 5비트로 선언되었으므로 a에 0을 결합하여 5비트를 만들 필요없이 그냥 $signed(a) + b; 만 해줘도 되지 않나요?
답변 2
1
royroy
질문자
$signed(a) + b; 로 실행한 결과 원하는 결과가 나오지 않습니다.
생각해보니 애초에 15를 signed로 만들어줄려면 비트가 하나 더 필요하군요...
정말 기본적인 생각을 안하고있었네요.. ㅠ
0
설계독학맛비
지식공유자
안녕하세요 :)
문 1 : $signed({1'b0,a})는 5비트 b는 4비트인데 피연산자의 비트길이가 다른데 연산이 가능한가요 ?
네 가능합니다. b 변수를 auto signed extention 해서 처리합니다. 하지만 이 부분의 rule 은 꼭 스스로 확인해보셔야 해요. Tool 마다 다를 수 있습니다. (최소한 Xilinx 의 tool 에서는 문제가 없다 보장해 드릴께요.)
correct가 5비트로 선언되었으므로 a에 0을 결합하여 5비트를 만들 필요없이 그냥 $signed(a) + b; 만 해줘도 되지 않나요?
직접 코드를 기입하셔서, 돌려보시면 답을 얻으실 수 있을 것 같아요. (환경은 전부 드렸습니다. ^^)
정말 그렇게 해도 될까요? 질문자님께서 답변으로 정리해서 남겨주시면 공부에 도움이 되실 것 같아요.
즐공하세요 :)




