有符號位和無符號為的加法運算


  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