verilog 中的大括号
Curly braces in verilog
我正在查看一个程序,发现了以下代码:
{a2, a1} <= {a1, b};
我不确定我正在执行的程序是用 Verilog 还是 SystemVerilog 编写的。我知道花括号用于 Verilog 中的串联操作,但我不太了解这里进行的是哪种串联操作。此外,由于我不确定给定的片段是在 Verilog 还是 SystemVerilog 中,所以我对代码感到困惑。大括号是否表示 SystemVerilog 中的另一个操作......?
提前致谢
这只是将左侧和右侧分别视为一个变量的连接。 SystemVerilog 2009 取代了 Verilog,因此向后兼容大多数(所有?)语法。
例如
wire [0:0] l1;
wire [2:0] l2;
reg [1:0] r1;
reg [1:0] r2;
assign {l1,l2} = {r1,r2} ;
与
相同
assign l1[0] = r1[1];
assign l2[2] = r1[0];
assign l2[1] = r2[1];
assign l2[0] = r2[0];
我正在查看一个程序,发现了以下代码:
{a2, a1} <= {a1, b};
我不确定我正在执行的程序是用 Verilog 还是 SystemVerilog 编写的。我知道花括号用于 Verilog 中的串联操作,但我不太了解这里进行的是哪种串联操作。此外,由于我不确定给定的片段是在 Verilog 还是 SystemVerilog 中,所以我对代码感到困惑。大括号是否表示 SystemVerilog 中的另一个操作......?
提前致谢
这只是将左侧和右侧分别视为一个变量的连接。 SystemVerilog 2009 取代了 Verilog,因此向后兼容大多数(所有?)语法。
例如
wire [0:0] l1;
wire [2:0] l2;
reg [1:0] r1;
reg [1:0] r2;
assign {l1,l2} = {r1,r2} ;
与
相同assign l1[0] = r1[1];
assign l2[2] = r1[0];
assign l2[1] = r2[1];
assign l2[0] = r2[0];