当前位置: 首页 > news >正文

RTL设计中中$signed函数的使用

这次在进行lint检查时,出现了关于$signed函数的使用警告,基于此点,给自己把$signed的应用整理记录在此。

在硬件中,都是二进制数,但是在实际的使用中经常使用的是有符号数,就是一个数是有正负之分。verilog语言给我们提供了方便设计者的有符号数处理的函数$signed,这也依赖于我们的编译器能识别并正确的解释该函数。该函数存在以下几方面的使用和注意事项。

1 数据类型的声明

在定义一个有符号变量时,直接在定义时声明,在之后的使用中不用在该变量前加上$signed。

wire signed [2:0] data_a;
reg  signed [3:0] data_b;

如果定义的变量没有声明为有符号数,在使用过程中需要做有符号数运算时,需要在该变量前加上$signed。

wire [3:0] data_c;
wire signed [4:0] data_d;assign data_d = $signed(data_c)+$signed(-3'd2);

 定义有符号数变量的最小位宽为2bit,因为1bit无法表示符号位和数值位。

 如果一个变量已经被定义为有符号数,在调用时还在该变量前加了$signed,则在lint检查时会报warning。

2 加、减、乘运算

运算的操作数都是$signed的才会进行有符号运算,否则按照无符号数进行运算。

3 移位操作

有符号数移位操做后会成为无符号数。

4 位扩展和截短操作

对有符号数进行截短操作后获得一个无符号数,对一个有符号数进行位扩展需要考虑是向左还是向右进行扩展,但一般多用于向左扩展符号位,保留其有能号数的性质。

5 参考链接

数字IC秋招面试专题(二)verilog的signed和unsigned_verilog $signed-CSDN博客总

写在最后,记住输入是什么样子,明确需要的结果是什么,就会时刻记住数据的正确格式和类型。


http://www.mrgr.cn/news/25370.html

相关文章:

  • 海外仓系统如何为企业提供智能财务解决方案?
  • 严重干扰的验证码识别系统源码分享
  • 工具使用记录-Tkinter
  • Rust:Result 和 Error
  • el-input 只能输入数字和一个小数点,或者只能输入两位小数
  • 线程---实践与技巧(C语言)
  • 线程池的应用-->2
  • 职场效率提升秘籍
  • 合成控制法SCM
  • CSS——盒子模型
  • 数据处理与统计分析篇-day02-Linux进阶
  • 山峰个数【python实现】
  • 未来工业,新质赋能!迈威通信邀您共赴智造盛宴
  • C++多态讲解
  • 「漏洞复现」SPIP porte_plume插件 远程代码执行漏洞(CVE-2024-7954)
  • 装杯 之 Linux 指令1
  • NPDP|在传统行业,怎么做好产品管理?有啥诀窍
  • 计算机专业选题推荐-基于Java的企业员工考勤小程序
  • 简单分享-获取.txt文件内数据 文件内数据逗号分隔 分隔符 C语言
  • FreeRTOS 项目剖析