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

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

3天内不再提示

Verilog中signed和$signed()的用法

FPGA设计论坛 ? 来源:FPGA设计论坛 ? 2025-02-17 17:47 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1、在verilog中有时会用signed修饰符来修饰定义的数据,运算的时候也会用$signed()任务来强制转换数据,那么signed的修饰是为什么呢,是为了区分有符号数和无符号数的加法和乘法吗?其实不是的,因为有符号数和无符号数据的加法强结果和乘法器结构是一样的,signed的真正作用是决定如何对操作数扩位的问题。

2、verilog中的加法和乘法操作前,会先对操作数据扩位成结果相同的位宽,然后进行加法或者乘法处理。比如a/b都为4位数据,c为5位数据,c = a + b,这个运算的时候会先把a和b扩位成5位,然后按照无符号加法进行相加。a/b没有被signed修饰的时候会按照无符号数的扩位方式进行扩位,即高位补0,加法的结果当然也是a、b为无符号数相加的结果。

3、如果想把a、b作为有符号数来相加,那么就得在a/b数据定义的时候用signed修改,或者在计算的时候用$signed()来修饰,这样在c = a + b,这个运算开始的扩位就会按照有符号数的方式进行扩位,在高位补符号位,加法得出的结果就是a、b视为有符号数的结果。当然c要视为有符号数据。

e55494b0-ec1b-11ef-9310-92fbcf53809c.png

e5626766-ec1b-11ef-9310-92fbcf53809c.png

e577d7d6-ec1b-11ef-9310-92fbcf53809c.png

$signed()函数

返回有符号的值,值得注意的是verilog中的负数其实是{1’b1,pos_num},而并非高级语言中的补码。使用中最好通过增加$signed{1’b符号,正数}来实现转换以避免错误。

此外在对signed wire 或signed reg 赋值时,右侧的所有变量最好全部加上$signed函数转换,以防止遗漏,造成数据错误

signed变量移位操作时最好使用<<<和>>>,防止对符号位进行操作,导致数据出错

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

    关注

    29

    文章

    1367

    浏览量

    112417

原文标题:Verilog 中signed和$signed()的用法

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    用TXT编辑器打开十六进制文件,如何知道校验和值?

    ).elf --output ./build/APP_PMG1-CY7113/Release/ $(APPNAME)_signed.elf --hex ./build/APP_PMG1-CY7113
    发表于 05-23 07:49

    SVA断言的用法教程

    SVA是System Verilog Assertion的缩写,即用SV语言来描述断言。断言是对设计的属性的描述,用以检查设计是否按照预期执行。
    的头像 发表于 05-15 11:39 ?1005次阅读
    SVA断言的<b class='flag-5'>用法</b>教程

    ADS7883的GND不连接能读出数据,连接后读取的数据全为0,为什么?

    signed int AD_Conv(); void InitClock(void) { WDTCTL = WDTPW + WDTHOLD; BCSCTL1 &= ~XT2OFF
    发表于 01-08 08:40

    Verilog 电路仿真常见问题 Verilog 在芯片设计的应用

    。然而,在实际应用,设计师可能会遇到各种问题,这些问题可能会影响仿真的准确性和设计的可靠性。 Verilog电路仿真常见问题 仿真环境的搭建问题 仿真环境的搭建是进行Verilog仿真的第一步。设计师需要选择合适的仿真工具,并
    的头像 发表于 12-17 09:53 ?1244次阅读

    Verilog 与 ASIC 设计的关系 Verilog 代码优化技巧

    Verilog与ASIC设计的关系 Verilog作为一种硬件描述语言(HDL),在ASIC设计扮演着至关重要的角色。ASIC(Application Specific Integrated
    的头像 发表于 12-17 09:52 ?1102次阅读

    Verilog 测试平台设计方法 Verilog FPGA开发指南

    Verilog测试平台设计方法是Verilog FPGA开发的重要环节,它用于验证Verilog设计的正确性和性能。以下是一个详细的Verilog
    的头像 发表于 12-17 09:50 ?1195次阅读

    Verilog与VHDL的比较 Verilog HDL编程技巧

    Verilog 与 VHDL 比较 1. 语法和风格 VerilogVerilog 的语法更接近于 C 语言,对于有 C 语言背景的工程师来说,学习曲线较平缓。它支持结构化编程,代码更直观,易于
    的头像 发表于 12-17 09:44 ?1820次阅读

    如何自动生成verilog代码

    介绍几种自动生成verilog代码的方法。
    的头像 发表于 11-05 11:45 ?1099次阅读
    如何自动生成<b class='flag-5'>verilog</b>代码

    Verilog硬件描述语言参考手册

    一. 关于 IEEE 1364 标准二. Verilog简介三. 语法总结四. 编写Verilog HDL源代码的标准五. 设计流程
    发表于 11-04 10:12 ?4次下载

    system verilog语言简介

    ICer需要System Verilog语言得加成,这是ICer深度的表现。
    发表于 11-01 10:44 ?0次下载

    Verilog语法运算符的用法

    verilog语法中使用以下两个运算符可以简化我们的位选择代码。
    的头像 发表于 10-25 15:17 ?2662次阅读
    <b class='flag-5'>Verilog</b>语法<b class='flag-5'>中</b>运算符的<b class='flag-5'>用法</b>

    Verilog HDL的基础知识

    本文继续介绍Verilog HDL基础知识,重点介绍赋值语句、阻塞与非阻塞、循环语句、同步与异步、函数与任务语法知识。
    的头像 发表于 10-24 15:00 ?1252次阅读
    <b class='flag-5'>Verilog</b> HDL的基础知识

    Linux lsof命令的基本用法

    在 linux 系统,一切皆文件。通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以 lsof 命令不仅可以查看进程打开的文件、目录,还可以查看进程监听的端口等 socket 相关的信息。本文将介绍 lsof 命令的基本用法,本文中 demo 的演示环境为
    的头像 发表于 10-23 11:52 ?1429次阅读
    Linux lsof命令的基本<b class='flag-5'>用法</b>

    如何利用Verilog-A开发器件模型

    Verilog-A对紧凑型模型的支持逐步完善,在模型的实现上扮演越来越重要的角色,已经成为紧凑模型开发的新标准。而且Verilog-A能够在抽象级别和应用领域中扩展SPICE建模和仿真功能,因此学会
    的头像 发表于 10-18 14:16 ?1431次阅读
    如何利用<b class='flag-5'>Verilog</b>-A开发器件模型

    Efinity编译生成文件使用指导

    (a, b,c, clk, o); input signed [17:0] a; input signed [17:0] b; input signed [17:0] c; input clk
    的头像 发表于 08-13 11:51 ?1790次阅读
    Efinity编译生成文件使用指导