文章目录

  • 对verilog中有符号数和无符号数的理解

对verilog中有符号数和无符号数的理解


​ verilog中使用signed表示有符号数,比如:

wire signed [7:0] din;assign din = -8'd1;

虽然书写上din等于十进制的 -1 ,但是在编译器会自动将din编译成补码的形式保存

所以虽然书写上可以将一个信号写成负数的形式,但是在电路中并不存在真正的负数,负数只会被转换为补码的形式进行运算。

如果撇去signed类型不谈。我们依旧可以将reg或者wire类型的数据看作有符号或者无符号的。如果看作有符号的,那么就是补码的形式,如果看作无符号的,就是源码的形式。比如1111如果看作无符号的就是7,如果看作有符号的就是-1。

对于两个无符号数,什么时候相加会出现错误(溢出)的情况呢?

reg [7:0] din1;
reg [7:0] din2;
wire [7:0] dout;
wire ov;
{ov,dout} = din1 + din2;

很明显,如果ov的值为1的话,就说明发生了溢出,即出错了。

对于两个有符号数,什么时候相加会出现错误呢?

reg [7:0] din1;
reg [7:0] din2;
wire [7:0] dout;
wire ov;assign dout = din1 + din2;
assign ov = ((~dout[7]) & din1[7] & din2[7]) | (dout[7] & (~din1[7]) & (~din2[7]));

这里将din1和din2都看作有符号数(即使用了补码的形式,表示的取值范围在-128-127之间)。那么当两个整数相加结果却为负数,或者两个负数相加结果却为正数的时候就说明结果出错了,即ov等于1的时候结果就出错了。

比如1001是-7,1110是-2,1001+1110 = 10111,取后四位的话就是7,明显错了。

1110是-2,1101是-3,1110 + 1101 = 11011,取后四位就是-5,结果就对了。

当然如果加上溢出位的话,那么结果就都是对的了。

对verilog中有符号数和无符号数的理解相关推荐

  1. verilog中有符号数和无符号数的相关运算

    目录 1.有符号数和有符号数的加减运算(输入和输出为原码) 2.无符号数和有符号数的加减运算(输入和输出为原码) 3.有符号数和有符号数的乘法(输入和输出为原码) 1.有符号数和有符号数的加减运算(输 ...

  2. java中有符号数和无符号数,C语言中无符号数和有符号数之间的运算

    C语言中有符号数和无符号数进行运算(包括逻辑运算和算术运算)默认会将有符号数看成无符号数进行运算,其中算术运算默认返回无符号数,逻辑运算当然是返回0或1了. unsigned int和int进行运算 ...

  3. C语言中有符号数和无符号数的问题

    C语言中有符号数和无符号数的问题 项目说明     考虑下列代码, 这段代码试图计算数组a中所有元素的和, 其中元素的数量由参数length给出: /* WARNING: This is buggy ...

  4. Verilog有符号数与无符号数的相互转化

    Verilog有符号数与无符号数的相互转化 最近在使用DA转换时碰到一个问题,DA芯片输入的数值必须是正的,但输出的数据为有符号数,涉及到一个转化的问题,写一篇博客总结一下. 问题描述 一.正数 二. ...

  5. 关于汇编中有符号数和无符号数的判断

    首先给一段代码 1 #include <stdio.h> 2 int main() 3 {unsigned int x=9; 4  int y=-20; 5  int m=(x+y> ...

  6. Quartus中有符号数和无符号数比较大小

      有符号数和无符号数比较大小,有符号数会被当做无符号数.   代码如下.我把波形信号data和dac输出进行比较,比较结果如图.可以看到当data为正时,比较结果是对的:当data为负时,被当做正的 ...

  7. Verilog 有符号数与无符号数运算

    无符号数运算,左值位宽不够,发生截断的现象 reg [3:0] a = 4'b1111;//15 reg [3:0] b = 4'b0010;//2 wire [3:0] c; wire [3:0] ...

  8. c语言 有符号数与0作比较大小,C语言中有符号数与无符号数能否进行比较运算...

    无符号数和有符号数是不能进行比较运算的,否则可能会出现意想不到的错误,且极难检查出来! 首先肯几个例子(假设在32位的机器上): 1         1. 0 == 0U 2         2. - ...

  9. verilog有符号数和无符号数的计算

    有符号和无符号数 在电路设计中肯定会使用到有符号数无符号数的运算,今天简单说说具体怎么使用有符号数无符号数进行运算,这里以减法为例. 我们知道计算机运算都是以二进制的形式进行的,不过遇到负数,通常用二 ...

最新文章

  1. mysql返回记录的ROWNUM(转)
  2. asp.net日期显示 问题
  3. windows下扩展yaf,并生成yaf框架文件(亲测)
  4. 数据结构——图-迪杰斯特拉算法
  5. INF DestinationDirs Section
  6. react学习(46)----react渲染组件
  7. php类中双冒号和-的区别
  8. 互联网思维心得体会1500字_读懂《天道》丁元英的3个“高人”思维,你少走10年职场弯路...
  9. bzoj 1605: [Usaco2008 Open]Crisis on the Farm 牧场危机(DP)
  10. 资深大学老师告诉你:嵌入式、单片机开发必备软件有哪些
  11. 哈工大密码学实验CA
  12. Ubuntu16.04 pip下载安装tensorflow(GPU版)
  13. 如果“永远”只是一瞬间
  14. HDU - 6769
  15. CodeForces 858C Did you mean... 、 CodeForces 858D Polycarp's phone book!黑科技
  16. 实现求出100~200之间的全部素数,每行输出8个数,每个数宽度为5列。 输入格式:无 输出格式:“%5d“ “\n“
  17. 中国科技大学科学岛计算机系,中国科学技术大学2020年优秀大学生科学岛推免夏令营通知...
  18. OpenLayers官方示例详解七之图层的最小、最大分辨率(Layer Min/Max Resolution)
  19. 【转载】【《Real-Time Rendering 3rd》 提炼总结】(四) 第五章 · 图形渲染与视觉外观 The Visual Appearance
  20. 树莓派如何终端手动配网

热门文章

  1. 复试上机指南之小技巧篇(1)
  2. java 声明变量 初始化_Java变量的声明和初始化
  3. 个人IP打造全过程:如何打造出属于自己的个人IP?
  4. 下面哪个P2P网贷平台将会倒闭或者跑路?[预测挺准]
  5. 对n个整数进行升序排序
  6. 离散数学学习笔记— —范式
  7. 可用于测量多种气体种类的便携式万用气体检测仪
  8. linux 数据绘图软件,linux下的数据绘图工具-gnuplot
  9. 我的世界主流服务器模组,我的世界:4款百玩不厌的服务器模组大盘点 植物魔法借鉴崩坏2?...
  10. 2020年P气瓶充装证考试题库及P气瓶充装试题解析