致谢1

致谢2

题目描述:

本题讨论的是有符号数相加的溢出问题中,需要实现一个 2 进制 8bit 有符号数加法器,加法器将输入的两个 8bit数补码相加,产生相加之和以及进位。

一个解决思路:符号位拓展(signed extension)

例1(正负相加,无溢出)

(+6)+(-3)= (+3)

直接使用有符号数相加,结果等于-5。错误

符号位拓展后

4bit的数相加后可能进位到5bit,因此将4bit和3bit都做符号位拓展到5bit,然后相加。若进位到6bit,则不考虑6bit的结果。
结果等于+3


例2 (正正相加,有溢出)

(+7)+(+3)=(+10)

直接相加等于-6,错误。

符号位拓展

符号位拓展,结果等于+10,正确。

例3(负负相加,有溢出)

(-5)+(-4)=(-9)

直接相加,结果等于-1,错误。

符号位拓展

符号位拓展,结果等于-9,正确。

结论

计算正确结果

  • m bit + m bit => (m+1)bit
  • m bit + n bit => (m+1)bit , n < m
    如有 (m+2)bit,忽略,结果任为 (m+1)bit

判断进位溢出

  • 若 sum[m+1] ^ sum[m] = 1, 则说明有溢出。
    其中 sum[m+1] = 0, sum[m] = 1, 表示正溢出。
    sum[m+1] = 1, sum[m] = 0, 表示负溢出。

Pro.69答案

module Exams_ece241_2014_q1(input   [7:0]   a,input   [7:0]   b,output  [7:0]   s,output          overflow
);wire [8:0] sum;assign sum = {a[7], a} + {b[7], b};assign s = sum[7:0];assign overflow = sum[8] ^ sum[7];
endmodule //Exams_ece241_2014_q1c

verilog如何处理signed integer的加法和处理overflow?(源于HDLBits,Pro.69)相关推荐

  1. Line 14: Char 22: runtime error: signed integer overflow: 1000000000 * 9 cannot be represented

    Line 14: Char 22: runtime error: signed integer overflow: 1000000000 * 9 cannot be represented in ty ...

  2. Line 14: Char 23: runtime error: signed integer overflow: 746384741 * 10 cannot be represented

    问题描述: 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 问题解决: class Solution { public:bool isPalindrome(i ...

  3. (135)Verilog HDL:设计一个加法器之Adder100i

    (135)Verilog HDL:设计一个加法器之Adder100i 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)VVerilog HDL:设计一个加法器之Adder ...

  4. signed integer overflow报错解决

    1 + 2147483647 超过了int边界 原来代码: long mid=(low+high)/2; Line 6: Char 30: runtime error: signed integer ...

  5. Verilog 中signed和$signed()的用法

    1.在verilog中有时会用signed修饰符来修饰定义的数据,运算的时候也会用$signed()任务来强制转换数据,那么signed的修饰是为什么呢,是为了区分有符号数和无符号数的加法和乘法吗?其 ...

  6. verilog中$signed()的使用

    1.在verilog中有时会用signed修饰符来修饰定义的数据,运算的时候也会用$signed()任务来强制转换数据,那么signed的修饰是为什么呢,是为了区分有符号数和无符号数的加法和乘法吗?其 ...

  7. Verilog关于signed、有符号数、算数移位、$signed()的使用

    关于signed.有符号数.算数左移.算数右移.$signed().$unsigned()的理解. 1.signed可以和reg和wire联合使用,用于定义有符号数.在代码中使用负的十进制数赋值给有符 ...

  8. verilog中signed用法

    首先我们知道,有符号数的运算全都是补码的方式. 在Verilog里面,可以使用有符号数据进行运算,定义时使用signed,例如 reg signed[7:0] data: //定义了一个reg型有符号 ...

  9. Verilog中的integer类型

    Given a 100-bit input vector [99:0], reverse its bit ordering. 说明:整数(integer) integer类型也是一种寄存器数据类型,i ...

最新文章

  1. c++ qt 编译问题求解答
  2. 构建Flex数据服务程序
  3. Spring Cloud Feign的文件上传实现
  4. php -- PDO事务处理
  5. 使用 Apache Commons CLI 开发命令行工具
  6. 猫眼java开发工资_Java硕士京东工作1年,跳槽后他期望薪资26K,大家感觉他可以吗...
  7. windows linux—unix 跨平台通信集成控制系统
  8. 360怎么看电脑配置_怎么样查看电脑配置?5种方法查看电脑硬件配置好坏图文详解...
  9. C语言之pthread_cond_wait()和pthread_cond_timedwait()区别(十五)
  10. 【语音采集】基于matlab语音采集及处理【含Matlab源码 1737期】
  11. TR069协议与商业应用6——TR069动态库开发
  12. 2.遥感传感器和遥感数据
  13. 谈心--生活不止步于乐观
  14. Django创建app以及普通视图的建立
  15. storm风暴英雄 tempo_风暴英雄玩好乔汉娜需要知道的7个技巧 TempoStorm
  16. MIC的常见问题分析
  17. vscode进行远程服务器 An SSH installation couldnt be found
  18. 一位ACMer过来人的心得 (2011-08-04 20:44:18)
  19. 《高等统计物理学》2:经典系综
  20. visio中自动显示对齐线

热门文章

  1. GPT-JT 是训练 AI 的新开源方法,GPT-JT 是开源的,因此与 GPT-3 直接竞争
  2. E6终极备忘:修复IE6下_25+_Bugs
  3. Log.v,Log.d,Log.i,Log.w,Log.e的用法
  4. 基于微信小程序的客运自助售票小程序的设计与实现
  5. 随处都是流量,哪里都可以加到好友
  6. 经济专业转计算机,经济/金融/社科等背景转偏计算机方向的经验分享
  7. 双目立体视觉(1)- ZED2双目相机介绍
  8. 豆瓣读书练习-介绍filter高阶函数
  9. Pycharm配置(三)
  10. yolov5 windows 下训练+ c++ TensorRT 部署在qt (vs+qtcreator) 只要一篇文章即可