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

Verilog 有符号数详解(含代码验证)

目录

sign( )使用

有符号位的二进制表示

有符号数扩位方法

代码验证

$signed( )和$unsigned( ) 函数


sign( )使用

如果想把a、b作为有符号数来运算,那么就得在a、b数据定义的时候用signed修改,或者在计算的时候用$signed()来修饰

在有符号数运算的时候常常需要扩位,比如verilog中的加法和乘法操作前,会先对操作数据扩位成结果相同的位宽,然后进行加法或者乘法处理。假如a和b都为4位数据,c为5位数据,c = a + b,这个运算的时候会先把a和b扩位成5位,然后按照无符号加法进行相加。

有符号位的二进制表示

用-2来举例:

首先求2的补码(计算2二进制的反码后+1)

10(原码)→01(反码)→10(补码)

然后一般我们再在最高位赋1 (代表负数)最后结果就是110

有符号数扩位方法

这里需要特别注意,扩位的时候,把扩充的位数全部当做符号位

如果需要扩位到16bit,需要把前面所有位都作为符号位,全赋1,最后结果是

1111_1111_1111_1110

代码验证

reg signed [15:0]     a;
wire signed [15:0]    b;
 
initial begin
 
a = -2;
 
$display("a = %b", a);
 
a = 3;
	
$display("a = %b", a);
 
end   

 


$signed( )和$unsigned( ) 函数

        在进行有符号数运算的代码设计时,往往需要用到2个系统函数$signed()和$unsigned()。$signed()是把无符号数当做有符号数运算

$unsigned()是把有符号数当做无符号数运算

还是用-2举例,输入无符号位的16'b1111_1111_1111_1110

无符号位 结果是65534,有符号位结果-2

reg [15:0]               data0;
 
initial begin
	
data0 = 16'b1111_1111_1111_1110;	
	
$display("data0 = %0d", data0);	
$display("data0 = %0d", $signed(data0));

end

  

还是用-2举例,输入有符号位的16'b1111_1111_1111_1110

无符号位 结果是65534,有符号位结果-2

reg signed [15:0]   data0;
 
initial begin
	
data0 = 16'b1111_1111_1111_1110;	
	
$display("data0 = %0d", data0);	
$display("data0 = %0d", $unsigned(data0));

end

 

 verilog有符号数使用方法简介_MmikerR的博客-CSDN博客_verilog有符号数

verilog中signed的使用 - 下夕阳 - 博客园 (cnblogs.com)

相关文章:

  • 今天是圣诞节, 要打印一个漂亮的圣诞树送给想象中的女朋友,请你帮助他实现梦想。
  • 同样是测试工程师,月薪8k的功能测试和月薪14k的自动化测试,差在了那里?
  • k8s 认证机制源码分析
  • Java-KoTime:接口耗时监测与邮件通知接口耗时情况
  • 【Linux】Linux系统编程(入门与系统编程)(一)(环境搭建、常见指令以及权限理解)
  • 【JavaScript高级】函数相关知识:函数、纯函数、柯里化、严格模式
  • Android多渠道之自定义apk输出
  • Day03 Css的学习深入 background-X属性
  • aardio + Python 可视化快速开发桌面程序,一键生成独立 EXE
  • 分享两款智慧物业系统源码,前后端分离,前端VUE,Uni-app框架
  • 新手看过来----讨厌的运算符
  • Matlab中importdata函数的使用
  • 4)自适应滤波(一)
  • Web前端期末大作业-重庆旅游景区网页设计(HTML+CSS+JS)
  • MySQL:复合查询和内外连接
  • C学习-枚举(九)
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Swoft 源码剖析 - 代码自动更新机制
  • vue-router 实现分析
  • windows下mongoDB的环境配置
  • 浮动相关
  • 高度不固定时垂直居中
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 汉诺塔算法
  • 机器学习学习笔记一
  • 记录一下第一次使用npm
  • 类orAPI - 收藏集 - 掘金
  • 深入浅出webpack学习(1)--核心概念
  • 双管齐下,VMware的容器新战略
  • 消息队列系列二(IOT中消息队列的应用)
  • 原生Ajax
  • 2017年360最后一道编程题
  • Prometheus VS InfluxDB
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​2021半年盘点,不想你错过的重磅新书
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #LLM入门|Prompt#3.3_存储_Memory
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (分布式缓存)Redis分片集群
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • .mysql secret在哪_MYSQL基本操作(上)
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .NET开源快速、强大、免费的电子表格组件
  • @html.ActionLink的几种参数格式
  • @Mapper作用
  • [ solr入门 ] - 利用solrJ进行检索
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
  • [C#]C#学习笔记-CIL和动态程序集
  • [C#]winform利用seetaface6实现C#人脸检测活体检测口罩检测年龄预测性别判断眼睛状态检测