0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于有符号数据类型的示例

芯片验证工程师 来源:芯片验证工程师 作者:芯片验证工程师 2022-10-17 14:40 次阅读

我们学习一下Systemverilog中的有符号数据类型的赋值。

module top;
 logic [7:0] r1;
 logic signed [7:0] sr1;
 initial begin
    r1 = -2;
    $display($stime,,,"r1=%d",r1);
    sr1 = -2;
    $display($stime,,,"sr1=%d",sr1);
    r1 = r1+1;
    $display($stime,,,"r1=%d",r1);
    sr1 = sr1+1;
    $display($stime,,,"sr1=%d",sr1);
 end
 endmodule

Simulation log:

# run –all
# 0 r1=254

# 0 sr1= -2
# 0 r1=255
# 0 sr1= -1
# exit

" r1 "被声明为默认的无符号8位向量,而" sr1 "被声明为有符号8位向量。

当我们赋值r1 =−2时,因为“r1”是无符号的,所以它实际上会拿到值254(相当于十进制数字−2)。但是“sr1”会拿到值−2。

当我们给“r1”加一个1时,它的计算结果是255(254 + 1)。当我们给“sr1”加一个1时,它的计算结果是- 1(−2 + 1)。

f23af3da-47af-11ed-a3b6-dac502259ad0.png

默认情况下,logic, reg, wire,input,output都是无符号的,但是也可以声明为signed:

wire signed [7:0] w;
module sm (input signed [7:0] iBus, output logic signed 
[7:0] oBus);

下面还有一些简单的示例:

logic signed [3:0] sr = -1; ( sr = 4’sb1111)
logic signed [7:0] sr1 = 1; (sr1 = 8’sb00000001)
logic [7:0] adds = sr + sr1; ( adds = 8’b00000000)

logic [7:0] usr = 1;
logic signed [7:0] s_add;
s_add = sr + usr; (s_add = 15+1 = 8’sb00010000) (signed + 
unsigned = unsigned; sr is treated as unsigned 15)

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Verilog
    +关注

    关注

    28

    文章

    1327

    浏览量

    109312
  • System
    +关注

    关注

    0

    文章

    161

    浏览量

    36575
  • 数据类型
    +关注

    关注

    0

    文章

    228

    浏览量

    13499

原文标题:SystemVerilog中的有符号数据类型

文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    关于verilog中的无符号数和有符号数

    在数字电路中,出于应用的需要,我们可以使用无符号数,即包括0及整数的集合;也可以使用有符号数,即包括0和正负数的集合。在更加复杂的系统中,也许这两种类型的数,我们都会用到。 有符号数
    的头像 发表于 11-18 17:46 1.6w次阅读

    采集的数据转换成符号数的问题

    的时候怎么都不正确,具体原因如下,字符串转数值的时候只发现可以转换成无符号数,而采集下来的数据符号数,转换成无符号数之后就无法正确显示波
    发表于 05-02 11:55

    关于符号数符号数的困惑

    ,存储无符号数)Tab = -4'd12;//整数Tab的十进制数为-12,位形式为110100.(因为Tab是整数寄存器变量,存储符号数)我的困惑是,-12的二进制补码应该是10100,为什么这里写成110100了?前面为啥
    发表于 11-02 14:13

    1.2FreeRTOS中的数据类型

    即可。BaseType_t这个数据类型根据系统架构的位数而定,对于 32 位架构,BaseType_t 定义的是 32 位符号数,对于 16 位架构,BaseType_t定义的是 16 位
    发表于 07-22 23:27

    双状态无符号/符号数据类型

    双状态无符号数据类型双状态符号数据类型四状态数据类型
    发表于 01-18 06:03

    Verilog 变量声明与数据类型

    没有特别指定,reg型变量是无符号数,而integer声明的变量是符号数的。integer类型数据一般作为循环变量用在循环语句中。例:r
    发表于 08-06 09:21

    CODESYS支持的数据类型哪些

    CODESYS支持的数据类型哪些?CODESYS关于数据类型的相关规则是什么?
    发表于 09-30 09:01

    SpinalHDL的UInt与SInt数据类型能够进行符号/无符号数操作

    在Bits的基础上,SpinalHDL提供了UInt、SInt数据类型,从而能够进行符号/无符号数操作。变量定义/初始化UInt/SInt的初始化与Bits
    发表于 07-14 14:45

    是否可以使用ActiveX API获取符号数据类型

    ActiveX API 提供了一种方法 GetSymbolInfo,它返回输入符号名称的地址和大小。但我还需要数据类型,而且我没有看到任何 API 功能来获取此信息。我在我的嵌入式应用程序中使用 TSA 表,因此我希望主机可以使用数据类
    发表于 03-21 07:37

    fpga 有符号数、无符号数

    signed 关键字定义输入端口的数据类型为有符号数  input signed [7:0] a;  input signed [7:0] b; //通过 signed 关键字定义寄存器的数据类型为有
    的头像 发表于 10-09 15:22 5739次阅读
    fpga 有<b class='flag-5'>符号数</b>、无<b class='flag-5'>符号数</b>

    plc位、字节、字、双字、有符号、无符号数据类型的关系

    plc位、字节、字、双字、有符号、无符号的关系以下内容由深圳市综科智控科技开发有限公司编辑整理 2021/08/18前言:很多同学在PLC开发过程中,因为数据类型选择错误而出现得到的数据
    发表于 12-29 18:52 2次下载
    plc位、字节、字、双字、有<b class='flag-5'>符号</b>、无<b class='flag-5'>符号数据类型</b>的关系

    关于字符串数据类型示例

    字符串数据类型是一个有序的字符集合。
    的头像 发表于 10-17 14:38 1667次阅读

    汇编基础知识教程之数据类型与寄存器

    字、半字或字节。这些数据类型的扩展是。-h或-sh用于半字,-b或-sb用于字节,而字则没有扩展。有符号和无符号数据类型之间的区别是。
    的头像 发表于 01-30 15:06 700次阅读
    汇编基础知识教程之<b class='flag-5'>数据类型</b>与寄存器

    ARRAY 数据类型的变量

    要求 全局数据块已打开。 操作步骤 要声明一个 ARRAY 数据类型的变量,请按以下步骤操作: 在“名称”(Name) 列中,输入变量的名称。 在“数据类型”列中输入“Array”数据类型
    的头像 发表于 07-06 11:08 654次阅读

    FreeRTOS使用的数据类型有哪些

    的就是 32 位无符号数。对于 32 位架构的处理器,一定要禁止此宏定义,即设置此宏定义数值为 0 即可。 BaseType_t 这个数据类型根据系统架构的位数而定,对于 32 位架
    的头像 发表于 09-28 11:49 413次阅读