verilog如何处理signed integer的加法和处理overflow?(源于HDLBits,Pro.69)
致谢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)相关推荐
- 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 ...
- Line 14: Char 23: runtime error: signed integer overflow: 746384741 * 10 cannot be represented
问题描述: 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 问题解决: class Solution { public:bool isPalindrome(i ...
- (135)Verilog HDL:设计一个加法器之Adder100i
(135)Verilog HDL:设计一个加法器之Adder100i 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)VVerilog HDL:设计一个加法器之Adder ...
- signed integer overflow报错解决
1 + 2147483647 超过了int边界 原来代码: long mid=(low+high)/2; Line 6: Char 30: runtime error: signed integer ...
- Verilog 中signed和$signed()的用法
1.在verilog中有时会用signed修饰符来修饰定义的数据,运算的时候也会用$signed()任务来强制转换数据,那么signed的修饰是为什么呢,是为了区分有符号数和无符号数的加法和乘法吗?其 ...
- verilog中$signed()的使用
1.在verilog中有时会用signed修饰符来修饰定义的数据,运算的时候也会用$signed()任务来强制转换数据,那么signed的修饰是为什么呢,是为了区分有符号数和无符号数的加法和乘法吗?其 ...
- Verilog关于signed、有符号数、算数移位、$signed()的使用
关于signed.有符号数.算数左移.算数右移.$signed().$unsigned()的理解. 1.signed可以和reg和wire联合使用,用于定义有符号数.在代码中使用负的十进制数赋值给有符 ...
- verilog中signed用法
首先我们知道,有符号数的运算全都是补码的方式. 在Verilog里面,可以使用有符号数据进行运算,定义时使用signed,例如 reg signed[7:0] data: //定义了一个reg型有符号 ...
- Verilog中的integer类型
Given a 100-bit input vector [99:0], reverse its bit ordering. 说明:整数(integer) integer类型也是一种寄存器数据类型,i ...
最新文章
- c++ qt 编译问题求解答
- 构建Flex数据服务程序
- Spring Cloud Feign的文件上传实现
- php -- PDO事务处理
- 使用 Apache Commons CLI 开发命令行工具
- 猫眼java开发工资_Java硕士京东工作1年,跳槽后他期望薪资26K,大家感觉他可以吗...
- windows linux—unix 跨平台通信集成控制系统
- 360怎么看电脑配置_怎么样查看电脑配置?5种方法查看电脑硬件配置好坏图文详解...
- C语言之pthread_cond_wait()和pthread_cond_timedwait()区别(十五)
- 【语音采集】基于matlab语音采集及处理【含Matlab源码 1737期】
- TR069协议与商业应用6——TR069动态库开发
- 2.遥感传感器和遥感数据
- 谈心--生活不止步于乐观
- Django创建app以及普通视图的建立
- storm风暴英雄 tempo_风暴英雄玩好乔汉娜需要知道的7个技巧 TempoStorm
- MIC的常见问题分析
- vscode进行远程服务器 An SSH installation couldnt be found
- 一位ACMer过来人的心得 (2011-08-04 20:44:18)
- 《高等统计物理学》2:经典系综
- visio中自动显示对齐线
热门文章
- GPT-JT 是训练 AI 的新开源方法,GPT-JT 是开源的,因此与 GPT-3 直接竞争
- E6终极备忘:修复IE6下_25+_Bugs
- Log.v,Log.d,Log.i,Log.w,Log.e的用法
- 基于微信小程序的客运自助售票小程序的设计与实现
- 随处都是流量,哪里都可以加到好友
- 经济专业转计算机,经济/金融/社科等背景转偏计算机方向的经验分享
- 双目立体视觉(1)- ZED2双目相机介绍
- 豆瓣读书练习-介绍filter高阶函数
- Pycharm配置(三)
- yolov5 windows 下训练+ c++ TensorRT 部署在qt (vs+qtcreator) 只要一篇文章即可