강의

멘토링

커뮤니티

Inflearn Community Q&A

dlwnstmd20213230's profile image
dlwnstmd20213230

asked

Design Self-Study Tastebi's Practical Verilog HDL Season 1 (From Clock to Internal Memory)

사칙연산 예제에서 질문드립니다.

Written on

·

307

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; 만 해줘도 되지 않나요?
fpga임베디드verilog-hdl

Answer 2

1

royroy님의 프로필 이미지
royroy
Questioner

$signed(a) + b; 로 실행한 결과 원하는 결과가 나오지 않습니다.

생각해보니 애초에 15를 signed로 만들어줄려면 비트가 하나 더 필요하군요...  

정말 기본적인 생각을 안하고있었네요.. ㅠ

 

0

semisgdh님의 프로필 이미지
semisgdh
Instructor

안녕하세요 :)

문 1 : $signed({1'b0,a})는 5비트 b는 4비트인데 피연산자의 비트길이가 다른데 연산이 가능한가요 ?

네 가능합니다. b 변수를 auto signed extention 해서 처리합니다. 하지만 이 부분의 rule 은 꼭 스스로 확인해보셔야 해요. Tool 마다 다를 수 있습니다. (최소한 Xilinx 의 tool 에서는 문제가 없다 보장해 드릴께요.)

correct가 5비트로 선언되었으므로 a에 0을 결합하여 5비트를 만들 필요없이 그냥 $signed(a) + b; 만 해줘도 되지 않나요?

직접 코드를 기입하셔서, 돌려보시면 답을 얻으실 수 있을 것 같아요. (환경은 전부 드렸습니다. ^^)

정말 그렇게 해도 될까요? 질문자님께서 답변으로 정리해서 남겨주시면 공부에 도움이 되실 것 같아요.

 

즐공하세요 :)

dlwnstmd20213230's profile image
dlwnstmd20213230

asked

Ask a question