Verilog 有符号数间,及有符号数与常熟比较大小

2023-11-07 19:30

本文主要是介绍Verilog 有符号数间,及有符号数与常熟比较大小,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

有符号数间比较,及有符号数与常数比较

Verilog代码示例

module data_cmp#(parameter DW = 16
)(input signed  [DW-1:0]    a1,input signed  [DW-1:0]    b1,input signed  [DW/4-1:0]  a2,input signed  [DW/4-1:0]  b2
);// constant : Two different ways of expressing it
// 常数:不同的表示方式
localparam MAX = -4'h2;
wire signed [3:0] MIN = 4'he; // -2// Truncate a signed variable: Truncate the high [15:12] comparison
// 截断:将输入16bits数截取高4bits,并用有符号变量表示
wire signed [DW/4-1:0] aa2, bb2;
assign aa2 = a1[DW-1:DW-1-3];
assign bb2 = b1[DW-1:DW-1-3];// Signed number comparison : TURE/ERROR
// 有符号数比较:结果正确/错误
assign cmp0 = a1            > b1;           // 16b, TURE
assign cmp1 = a2            > b2;           // 4b, TURE
assign cmp2 = aa2           > bb2;          // high 4b, TURE
assign cmp3 = $signed(aa2)  > bb2;          // TURE
assign cmp4 = $signed(aa2)  > $signed(bb2); // TURE// Signed numbers are compared with constants : TURE/ERROR
// 有符号数与常数比较:结果正确/错误
assign cmp5 = aa2           > MAX;          // ERROR
assign cmp6 = $signed(aa2)  > MAX;          // ERROR
assign cmp7 = aa2           > MIN;          // TURE
assign cmp8 = $signed(aa2)  > MIN;          // TUREendmodule 
Verdi仿真波形

在这里插入图片描述

结论

1、有符号数之间比较:可用过signed关键字标注,可得到正确结果;
2、有符号数与常数比较:使用localparam、parameter定义的一定bit位宽的有符号常数(如4bits),依然按无符号比较;但是如果定义时不标注bit位宽(直接localparam MAX = -2),是可以比较正确的;
3、有符号数与常数比较:使用wire定义的有符号常量(其实是变量),会按照有符号数进行比较;

综上,localparam、parameter定义的一定bit位宽的常量,在常量和变量比较时按照无符号比较;而为什么wire定义的一定bit位宽的变量与变量比较,是按照变量间有符号比较;

这篇关于Verilog 有符号数间,及有符号数与常熟比较大小的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/365783

相关文章

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

SQL Server 查询数据库及数据文件大小的方法

《SQLServer查询数据库及数据文件大小的方法》文章介绍了查询数据库大小的SQL方法及存储过程实现,涵盖当前数据库、所有数据库的总大小及文件明细,本文结合实例代码给大家介绍的非常详细,感兴趣的... 目录1. 直接使用SQL1.1 查询当前数据库大小1.2 查询所有数据库的大小1.3 查询每个数据库的详

Python如何实现高效的文件/目录比较

《Python如何实现高效的文件/目录比较》在系统维护、数据同步或版本控制场景中,我们经常需要比较两个目录的差异,本文将分享一下如何用Python实现高效的文件/目录比较,并灵活处理排除规则,希望对大... 目录案例一:基础目录比较与排除实现案例二:高性能大文件比较案例三:跨平台路径处理案例四:可视化差异报

MySQL中比较运算符的具体使用

《MySQL中比较运算符的具体使用》本文介绍了SQL中常用的符号类型和非符号类型运算符,符号类型运算符包括等于(=)、安全等于(=)、不等于(/!=)、大小比较(,=,,=)等,感兴趣的可以了解一下... 目录符号类型运算符1. 等于运算符=2. 安全等于运算符<=>3. 不等于运算符<>或!=4. 小于运

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

Pyserial设置缓冲区大小失败的问题解决

《Pyserial设置缓冲区大小失败的问题解决》本文主要介绍了Pyserial设置缓冲区大小失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录问题描述原因分析解决方案问题描述使用set_buffer_size()设置缓冲区大小后,buf

详解C++中类的大小决定因数

《详解C++中类的大小决定因数》类的大小受多个因素影响,主要包括成员变量、对齐方式、继承关系、虚函数表等,下面就来介绍一下,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 非静态数据成员示例:2. 数据对齐(Padding)示例:3. 虚函数(vtable 指针)示例:4. 继承普通继承虚继承5.

MySQL8.0设置redo缓存大小的实现

《MySQL8.0设置redo缓存大小的实现》本文主要在MySQL8.0.30及之后版本中使用innodb_redo_log_capacity参数在线更改redo缓存文件大小,下面就来介绍一下,具有一... mysql 8.0.30及之后版本可以使用innodb_redo_log_capacity参数来更改

java获取图片的大小、宽度、高度方式

《java获取图片的大小、宽度、高度方式》文章介绍了如何将File对象转换为MultipartFile对象的过程,并分享了个人经验,希望能为读者提供参考... 目China编程录Java获取图片的大小、宽度、高度File对象(该对象里面是图片)MultipartFile对象(该对象里面是图片)总结java获取图片

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.