verilog中的有符号数运算

有符号数的计算:若有需要关于有号数的计算,应当利用Verilog 2001所提供的signed及$signed()机制。

Ex:

input  signed [7:0] a, b;

output  signed [15:0] o;

assign o = a * b;

or

input   [7:0] a, b;

output   [15:0] o;

wire signed [15:0] o_sgn;

assisn o_sgn = $signed(a) * $signed(b);

assign o = $unsigned(o_sgn);

正负号的扩展:应多加利用Verilog的implicity signed extension,避免手动进行转换。

Ex:

input signed [7:0] a, b;

input signed [8:0] o;

assign o = a + b; // Verilog会自动进行符号的扩展。有号数与无号数的混合计算:不要在同一个verilog叙述中进行有号数与无号数的计算。应该要分成个别独立的叙述。在一个verilog叙述中只要有一个无号数的操作数,整个算式将被当成无号数进行计算。(常数默认为无符号数)

input   [7:0] a;

input  signed [7:0] b;

output signed [15:0] o; // Don't do this: assign o = a * b;

// The $signed({1'b0, a}) can convert the unsigned number to signednumber.a

ssign o = $signed({1'b0, a}) * b;

input signed [7:0] a;output signed [15:0] o;

// Don't do this: assign o = a * 8'b10111111;

// Use $signed() system taskassign o = a * $signed(8'b10111111);

// or sb keyword.assign o = a * 8'sb10111111;part-select运算过后的操作数是无号数。就算是选择的范围包含整个register或wire。input signed [7:0] a;

input signed [7:0] b;

output signed [15:0] o1, o2; // Don't do this:

assign o1 = a[7:0];assign o1 = a;// Don't do this: assign o2 = a[6:0] * b;

assign o2 = $signed(a[6:0]) + b

verilog中的有符号数理解(转)的更多相关文章

  1. verilog中的有符号数运算

    verilog中的有符号数运算 http://hi.baidu.com/lixu1113/item/d00dc095f86aed48f142159a verilog中的有符号数运算 有符号数的计算:若 ...

  2. 深入理解计算机系统(2.5)------C语言中的有符号数和无符号数以及扩展和截断数字

    上一篇博客我们讲解了计算机中整数的表示,包括无符号编码和补码编码,以及它们之间的互相转换,个人觉得那是非常重要的知识要点.这篇博客我们将介绍C语言中的有符号数和无符号数以及扩展和截断数字. 1.C语言 ...

  3. C# 从补码中获取有符号数的实际数值

    C# 从补码中获取有符号数的实际数值 原理 计算机存储数据时,默认是存储数据的补码.有符号的数粗存在符号位(最高位). 这里就会提到原码.反码.补码的概念. 原码:用符号位和数值表示带符号数,正数的符 ...

  4. verilog中符号位的扩展问题

    以下内容转自 艾米电子 - 使用有符号数,Verilog(http://www.cnblogs.com/yuphone/archive/2010/12/12/1903647.html) Verilog ...

  5. Verilog有符号数处理

    内容主要摘自以下两个链接:  https://www.cnblogs.com/LJWJL/p/3481995.html  https://www.cnblogs.com/LJWJL/p/3481807 ...

  6. Verilog中的有符号计算之认知补码

    Verilog中的有符号计数,一般是自己定义的而不是像C语言之类的定义一个有符号变量就好了.所以,要想在FPGA的世界里随心所欲的进行有符号运算,必须先对补码有一个很好的认知,然后再注意Verilog ...

  7. 关于verilog中的signed类型

    在数字电路中,出于应用的需要,我们可以使用无符号数,即包括0及整数的集合:也可以使用有符号数,即包括0和正负数的集合.在更加复杂的系统中,也许这两种类型的数,我们都会用到. 有符号数通常以2的补码形式 ...

  8. 关于有符号数和无符号数的转换 - C/C++

    转载自:http://www.94cto.com/index/Article/content/id/59973.html 1.引例: 今天在做了一道关于有符号数和无符号数相互转换及其左移/右移的问题, ...

  9. system verilog中的类型转换(type casting)、位宽转换(size casting)和符号转换(sign casting)

    类型转换 verilog中,任何类型的任何数值都用来给任何类型赋值.verilog使用赋值语句自动将一种类型的数值转换为另一种类型. 例如,当一个wire类型赋值给一个reg类型的变量时,wire类型 ...

随机推荐

  1. 实用SQL语句

    sp_depends t_im_flow 获取到与这个表有关系的存储过程.触发器.函数.视图等.

  2. c中%

    %u 十进制无符号整数 %f 浮点数 %s 字符串 %c 单个字符 %p 指针的值 %e 指数形式的浮点数 %x, %X 无符号以十六进制表示的整数 %0 无符号以八进制表示的整数 %g 自动选择合适 ...

  3. Android程序的安装和打包

    Android程序的安装和打包

  4. 执行Maven install或Maven test命令时控制台输出乱码的解决办法

    [解决方案一] 在Maven的pom.xml文件中增加如下代码: <properties> <argLine>-Dfile.encoding=UTF-8</argLine ...

  5. Python3 学习第十三弹: 模块学习五之pickle与json

    对于python来说,这两个模块是十分实用的两个模块,以一种简单的方法用于储存数据实例. pickle模块 提供用来储存Python各种数据序列化存储 # 原来的cPickle已经在python3中与 ...

  6. tkinter模块常用参数

    tkinter模块常用参数   1.使用tkinter.Tk() 生成主窗口(root=tkinter.Tk()):root.title('标题名')    修改框体的名字,也可在创建时使用class ...

  7. Ansible 小手册系列 八(Yaml 语法格式)

    YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写.它实质上是一种通用的数据串行化格式. 它的基本语法规则如下. • 大小写敏感 • 使用缩进表示层级关系 • 缩进时不允许使用Ta ...

  8. Python中字符串、列表、元组、集合、字典中的一些知识,有些不太常见

    ————————笔记——————————# 字符串1. 字符串是不可变的.2. 字符串切片输出:`[start:end:step]`.使用`a[::-1]`倒序输出字符串.3. `str.split( ...

  9. C# 处理 JSON 常用的帮助类

    C#请求接口的方法,具体代码: 首先需要添加引用和第三方的组件,具体如下: 引用命名空间: using System.IO; using Newtonsoft.Json.Linq; using Sys ...

  10. 决定整理一下canvas的基础学习

    好久没有用过canvas,都要忘完了.还是决定复习一下以前的笔记,以及整理一下笔记,以后好查阅