有符号位和无符号为的加法运算


  Verilog 里面如果有符号数和无符号数做运算,会强制当做无符号数运算;

 

  例如 c = a + b; 其中a和b都是四位数,c是五位。在计算时,verilog会将a和b都扩展到5位,然后再做加法,而如果a和b中有无符号数,则位宽扩展就按照无符号数来,也就是高位补0。所以如果a和b中既有无符号又有有符号,结果就不正确了。

 

  解决方法是用  signed来修饰。

 

  如:请描述如下代码,实现加法:

      C = A + B,A是21bit无符号数,B是18位有符号数,如何才能保证正确得到一个不溢出的有符号数C;

 

 testbench:

 

 Modelsim仿真结果:

 

 

参考:

  【1】https://blog.csdn.net/CAOXUN_FPGA/article/details/79614456?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare

  【2】https://blog.csdn.net/alangaixiaoxiao/article/details/106209193?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare

  【3】https://blog.csdn.net/darknessdarkness/article/details/105003186?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM