verilog - Verilog 中的逻辑 && 与按位 &
问题描述
考虑以下作业
A1 = (b[3:0] ==c[3:0] & d[3:0]==e[3:0]) ?1'b1 : 1'b0 ;
A2 = (b[3:0] ==c[3:0] && d[3:0]==e[3:0]) ?1'b1 : 1'b0 ;
这 2 个作业是等效的,还是可能因工具而异?是否有可能将 (b[3:0] ==c[3:0]) 评估为 T/F 取决于工具是否将 T 存储为“1”或“0”。
解决方案
等式、关系和逻辑运算符的结果在 IEEE 1800-2017 LRM 的第 11.4.4-7 节中定义。没有实施差异的余地。真值定义为 1'b1,假值定义为 1'b0。
请注意,逻辑运算符和位运算符之间的优先级略有不同,当您开始处理多位结果时很容易混淆它们,因此仅当您的意图是处理多位结果时才使用位运算符。
推荐阅读
- java - 使用参数创建不要将新行插入数据库表
- angular - 角度材料设计中的电话号码模式验证
- clojure - postwalk 评估算术表达式
- hangouts-chat - 如何在单击按钮时将 excel、word、图像、pdf 等文件附加到环聊聊天
- vue.js - Vue - 异步加载所有组件时是否有副作用?
- angular - “无法分配给服务,因为它不是变量”使用 Angular 4 Testbed e2e 测试
- xml - 一步通过 xslt 复制和操作 xml 元素
- jquery - 客户端向节点服务器发送 sql 请求
- c# - 使用 HTMLAgilityPack 提取不在标签之间的文本
- java - 如何包含多个字符串/链接,以便我可以拥有多个带有链接的文本?