为什么这个 verilog 关系语句返回 true?

2023-12-20

我有一条名为 sin_hall2 的 9 位签名线。

该语句返回 true。 sin_hall2[8:0]>9'd1.

当我查看模拟时,sin_hall2=-169。我假设这是 verilog 处理比较负数的方式,但我做错了什么。当我执行 sin_hall2[8:0]>9'sh001 时,我收到相同的结果。


有符号数使用二进制补码格式。也就是说,如果解释为无符号,它们将显示为大数字,即无符号数字范围的后半部分。

如果比较的任何部分是无符号的,则该比较也是无符号的。选择位宽,即使整个范围也是无符号的

reg signed [8:0] sin_hall2;

initial begin
  sin_hall2 = -9'd169 ;
  $display( "Comparison unsigned : %b ", sin_hall2 > 9'd1 );
  $display( "Comparison cast     : %b ", sin_hall2 > $signed(9'd1) );
  $display( "Comparison signed   : %b ", sin_hall2 > 9'sd1 );
  $display( "Comparison signed [8:0]: %b ", sin_hall2[8:0] > 9'sd1 );
end

Returns:

# Comparison unsigned : 1 
# Comparison cast     : 0 
# Comparison signed   : 0
# Comparison signed [8:0]: 1 

EDA Playground 上的示例 http://www.edaplayground.com/s/405/1157.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么这个 verilog 关系语句返回 true? 的相关文章

  • 一个只接受编译时已知表达式的函数?

    编译时表达式很好 因为您可以使用它们来专门化模板 例如 可以通过使用带有以下内容的编译时表达式来访问元组std get method std cout lt lt std get lt 0 gt my tuple lt lt std end
  • PHP 中使用 @ 运算符抑制错误

    您认为 在您可能正在处理错误的情况下 使用 运算符来抑制 PHP 中的错误 警告是否有效 如果是这样 你会在什么情况下使用它 欢迎使用代码示例 编辑 回复者注意 我不想关闭错误报告 但是 例如 常见的做法是使用 fopen file 然后检
  • verilog 中的案例陈述

    我遇到了优先级编码器设计 并找到了一种使用 case 语句来实现它的新方法 唯一令人困惑的是 case语句是否优先考虑case 例子 case 1 b1 A 3 Y lt 4 b1000 A 2 Y lt 4 b0100 A 1 Y lt
  • std::valarray 的运算符* 有什么问题?

    考虑以下 MCVE 其中我有两个值数组 其中w是两次v 在这里尝试一下 https godbolt org z JkXPNN include
  • 为什么 std::sort 将元素与其自身进行比较

    正如题主所说 为什么下面的代码将某些元素与它们自身进行比较 include
  • 为什么我不能在 C# 中编写从基类到派生类的隐式运算符?

    public class Derived BaseClass public Derived string name base name public static implicit operator BaseClass Derived de
  • 与 MySQL 中的 SQL Server EXCEPT 运算符类似的功能吗?

    MySQL中是否有类似的操作数 函数 命令EXCEPT http msdn microsoft com en us library ms188055 aspxSQL Server 中的操作数 EXCEPT返回左侧查询中未在右侧查询中找到的任
  • 如何使用可用内存有效地比较 1,000 张图像

    这是一个棘手的问题 我的磁盘中存储了大约 1 000 张图像 我想通过成对比较来找到彼此相似的图像 所以我必须做周围1 000 999 2 https stackoverflow com questions 46958633 generat
  • 在 C# 中将字符串值转换为运算符

    我正在尝试找出一种动态构建条件的方法 到目前为止 这是我的代码 var greaterThan gt var a 1 var b 2 if a Convert ToOperator greaterThan b 我确实读过这篇文章 但不知道如
  • Java 递增/递减运算符 - 它们的行为方式是什么,功能是什么?

    开始学习Java已经三天了 我有这个程序 但我不明白其中的代码main方法与 and 运营商 我什至不知道该怎么称呼他们 这些操作员的名字 谁能给我解释一下这是怎么回事 class Example public static void ma
  • Python 中的字符串、整数和运算符

    如何在运算中使用算术运算符 由用户作为字符串输入 我可以打印操作本身 但我想打印解决方案 这是我的笨拙尝试 Initialise variables x 2 y 3 Prompt the user for an arithmetic ope
  • 比较字符变量

    我想在 R Studio 中比较两个不同的字符变量 第一列 BZ Pred 显示参与者预测的 5 个最常用的应用程序 第二列 BZ Act 显示实际使用最多的 5 个应用程序 现在我想创建第三列 如果第一个应用程序被正确猜测 则包含 是 如
  • 为什么如果条件无法比较负整数和正整数[重复]

    这个问题在这里已经有答案了 include
  • 如何左移大于32位的数字? [复制]

    这个问题在这里已经有答案了 据我了解 JS在执行位移操作时将数字视为32位 尽管它支持64位数字 我怎样才能实现leftShift适用于 64 位数字的函数 也就是说 它不会转变成负数 例如192 lt lt 24 应该3221225472
  • C++ 中的比较技巧

    A class class foo public int data 现在我想向此类添加一个方法 进行一些比较 看看它的数据是否等于给定的数字之一 当然 我可以写if data num1 data num2 data num3 但说实话 我写
  • 可以覆盖/实现的 ruby​​ 运算符列表

    是否有可以覆盖的所有 ruby 运算符的列表 不是那些不能的 Here s Ruby 运算符表 http phrogz net programmingruby language html table 18 4 方法和可重载的有 Elemen
  • 将 < 或 > 运算符作为参数传递给函数?

    我的函数里面有一个if 像这样的声明 if passedValue lt staticValue 但我需要能够传递一个参数来指示 if 表达式是像上面那样还是 if passedValue gt staticValue 但我真的无法通过 l
  • Lightspeed 与 NHibernate

    有什么体验光速 http www mindscape co nz products LightSpeed comparison aspx Mindscape 提供的比较并没有过多说明 NHibernate Lightspeed 看起来很灵活
  • 比较 ruby​​ 哈希值[重复]

    这个问题在这里已经有答案了 可能的重复 如何比较两个哈希值 https stackoverflow com questions 4928789 how do i compare two hashes 我有两个 ruby 哈希值 本质上是模型
  • \add_34/U1_1_6 的 Verilog 命名约定

    有人可以解释一下这个命名约定在下面的 Verilog 行中意味着什么吗 我不知道这是什么 add 34 部分的意思是 ADDHXL add 34 U1 1 6 A n1022 B add 34 carry 6 CO add 34 carry

随机推荐