verilog - 我可以在verilog中的数组和位之间使用布尔值和运算吗
问题描述
我有一个输入,它是 4 位,定义为:输入 [3:0] in;
另一个输入说启用,它是 1 位,定义为:输入启用;并且一条线被定义为:wire [3:0] out_int;
我想得到它们的布尔AND运算:
out_int[3:0] = in[3:0] && 启用;
我无法获得所需的输出,我想要建模的是,如果 enable hv 为 1 或 0 out_int (all 4 bits) 应等于 in (all 4 bits) ,并且当 enable 为 X 或 Z 时全部为 4 out_int 的位应该是 4'bx。
解决方案
您正在使用结果为 1 位的逻辑与运算符。&&
要检查 z 或 x,您需要使用===
Verilog 或$isunkown()
SystemVerilog 中的运算符。
您似乎想要的是条件运算符? :
。
// condition true false
out_int[3:0] = (enable ===1'bx || enable === 1'bz) ? 4'bx : in[3:0];
推荐阅读
- ios - 当应用程序处于后台时,Firebase 通知 [IOS] 不起作用
- sql-server - SQL Server:在单独的表中捕获所有已更改的列
- python - MYSQL - 匹配的返回模式
- laravel-5 - Carbon\Carbon 类的对象无法转换为 int LARAVEL
- powershell - Powershell 和服务结构 - 如何选择特定信息并在以后的操作中使用它?
- sql - 使用WORD中的书签值进行sql查询
- angular - 仅获取点击 ID 的 JSON 数据
- powershell - PowerShell 任务计划程序作业无法启动。附加数据:错误值:2147944187
- spring-data-rest - 使用 querydsl 和 spring 数据搜索 A 或 B 的位置
- sqlite - 我需要检索最后一个数据行单个数据