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中进行数组声明,但它显示错误:
具有解压缩数组的函数参数需要系统Verilog扩展。
我的阵列出了什么问题?
在 Verilog 中,不能使用多维实体作为输入或输出,在 SystemVerilog 中是允许的。
Verilog 不允许 I/O 端口是 2D 阵列。
在 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