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扩展。
我的阵列出了什么问题?
答案 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