Verilog数组赋值

时间:2016-05-16 10:40:04

标签: windows verilog

module sobel_CI(a,result,clock);

input clock;
input [31:0] a[0:3];

output [31:0] result;
assign result= a[0]+a[1]+a[2]+a[3];
endmodule

我试图在Verilog中进行数组声明,但它显示错误:

  带有解压缩数组的

函数参数需要systemverilog扩展。

我的阵列出了什么问题?

1 个答案:

答案 0 :(得分:5)

在Verilog中,您不能将多维实体用作输入或输出,SystemVerilog中允许使用它。

  

Verilog不允许I / O端口为二维阵列。

在Verilog 2001中,您可以将数组展平为矢量并将其传递到端口,但这有点尴尬。这是一种方法:

module top (in, out);
input   [31:0] in; 
wire     [7:0] array [0:3];
output  [31:0] out;

assign {array[3],array[2],array[1],array[0]} = in;
assign out = {array[3],array[2],array[1],array[0]};
endmodule