logic - Verilog 中的 if 语句和分配连线

标签 logic hardware verilog hdl

我试图找出基于组合逻辑分配电线的基础知识。
我有:

wire val;
wire x;
wire a;
wire b;

always @*
begin

if(val == 00)
 //I want to assign x = a
if(val == 01)
 //I want to assign x = b

end
哪里ab是带有值的电线 - 和 x是进入寄存器的电线。
如果您能指出我需要改变的正确方向,我将不胜感激。

最佳答案

wire s 只能由 assign 分配语句,不能与 if 语句一起使用。
如果您更改 xreg类型,然后您将能够在 always 块中分配它。

这将合成完全相同,一个常见的误解是 reg类型变量意味着一个寄存器,但它只是改变了赋值的方式。

或者,您可以使用带有三元运算符 ?: 的赋值语句, 如果您希望它保留为电线类型:

assign x = (val==0) ?   a : 
           (val==1) ?   b : 
                      'bx ;

关于logic - Verilog 中的 if 语句和分配连线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17752727/

相关文章:

delphi - 了解 Delphi 中硬盘的速度有多快

android - 使用 minio 来存储 Android 应用程序的附件

verilog - Systemverilog 中的多个时钟断言

slice - (System)从任意位置切出的Verilog位

logic - 语义推理机的健全性意味着什么?

python - 如何在输出窗口中并排打印单独的多行 ascii 符号

android - 开发人员友好的 OBD-II 端口汽车诊断工具?

for-loop - 解决verilog中的无限循环

haskell - 如何找到最优的加工顺序?

python - 尝试对 Recaman 序列进行编码,但我为绘制圆弧传递的参数存在问题