我正在尝试添加两个数组,并希望在verilog代码中输出数组。但是错误发生了。这是错误:HDLCompiler:1335:不能将端口和声明为verilog代码中的数组。任何人都可以告诉我如何在verilog代码中声明输出数组。感谢。
module array(clk,sum,reset);
input clk,reset;
//input [7:0] din;
//input [7:0] A[3:0];
//input [7:0] B[3:0];
output sum[3:0];
wire [7:0] sum[3:0];
reg [7:0] A[3:0];
reg [7:0] B[3:0];
integer i;
always@(posedge clk)
begin
if(reset==1'b1)
begin
A[0]<=1;
A[1]<=2;
A[2]<=3;
A[3]<=4;
B[0]<=5;
B[1]<=5;
B[2]<=5;
B[3]<=5;
sum[0]<=0;
sum[1]<=0;
sum[2]<=0;
sum[3]<=0;
end
else
begin
for(i=0;i<4;i=i+1)
begin
sum[i]=(A[i] + B[i]);
end
end
end
endmodule
答案 0 :(得分:1)
只有SystemVerilog支持数组样式端口,如果你可以使用它,你可能应该停止使用Verilog-95样式的端口声明。
Verilog 2001及以上端口声明,带有SystemVerilog多维端口
module array(
input clk,
input reset,
input [7:0] A [3:0],
input [7:0] B [3:0],
output reg [7:0] sum[3:0]
);
Verilog vs SystemVerilog文件通常由文件扩展名标识,因此保存为.sv文件通常会将编译器切换到SystemVerilog。
EDA Playground上使用免费modelsim 10.1d模拟器的组合版本。
另请注意,如果要在始终阻止中为sum
分配值,则需要reg
而不是连线。由于您现在使用SystemVerilog,所以可以将所有内容声明为逻辑,以获取更多信息Checkout this answer。