Matrix 分配4*4矩阵的值
我正试图以这种形式创建一个4*4矩阵: 2 3 1Matrix 分配4*4矩阵的值,matrix,verilog,Matrix,Verilog,我正试图以这种形式创建一个4*4矩阵: 2 3 1 1231 1 12 3 3112 然后我需要分配每个位置的values元素乘以4个输入,每个输入8位 a0, a1, a2, a3 我尝试编写以下代码: module Mix_Nibbles_Matriex( out_0,out_1,out_2,out_3,nibble_0,nibble_1,nibble_2,nibble_3, clk,rst,load ); input clk,rst,load ; output re
1231
1 12 3
3112 然后我需要分配每个位置的values元素乘以4个输入,每个输入8位
a0, a1, a2, a3
我尝试编写以下代码:
module Mix_Nibbles_Matriex(
out_0,out_1,out_2,out_3,nibble_0,nibble_1,nibble_2,nibble_3,
clk,rst,load
);
input clk,rst,load ;
output reg [7:0] out_0,out_1,out_2,out_3;
input [7:0] nibble_0,nibble_1,nibble_2,nibble_3;
//wire matrix[3:0][0:3];
reg [1:0][7:0] a_unpacked_array[4];
always @( posedge clk or negedge rst)
if (!rst)
a_unpacked_array[0][0]=0;
else if (load)
assign a_unpacked_array[0][0]=2;
assign a_unpacked_array[0][1]=3;
assign a_unpacked_array[0][2]=1;
assign a_unpacked_array[0][3]=1;
assign a_unpacked_array[1][0]=2;
assign a_unpacked_array[1][1]=3;
assign a_unpacked_array[1][2]=1;
assign a_unpacked_array[1][3]=1;
assign a_unpacked_array[2][0]=2;
assign a_unpacked_array[2][1]=3;
assign a_unpacked_array[2][2]=1;
assign a_unpacked_array[2][3]=1;
assign a_unpacked_array[3][0]=2;
assign a_unpacked_array[3][1]=3;
assign a_unpacked_array[3][2]=1;
assign a_unpacked_array[3][3]=1;
//display ("a_unpacked_array = %b", a_unpacked_array);
endmodule
我仍然有这些错误:
错误:HDLCompiler:939-“D:/Embedded\u Project/Mix\u Nibbles\u matrix.v”第38行:verilog的这种模式下不允许单值范围错误:HDLCompiler:1439-“D:/Embedded\u Project/Mix\u Nibbles\u matrix.v”第38行:在verilog的这种模式下不允许多个压缩维度
错误:HDLCompiler:1417-“D:/Embedded\u Project/Mix\u Nibbles\u matrix.v”第44行:非网络a\u unpacketed\u数组的assign语句中不允许位选择或部分选择
错误:HDLCompiler:598-“D:/Embedded\u Project/Mix\u Nibbles\u matrix.v”第27行:由于以前的错误,模块被忽略
您的代码有几个问题
reg[1:0][7:0]一个未打包的数组[4]代码>-编译器尝试将4
视为范围,但不允许使用单值范围。也许你的意思是[3:0]
?而且[1:0]
可能应该是[3:0]
始终
块存在一些问题:缺少开始-结束
,不必要的分配
关键字,等等:
always @(posedge clk or negedge rst)
if (!rst) begin
a_unpacked_array[0][0] <= 0;
//...
end else if (load) begin
a_unpacked_array[0][0] <= 2;
//...
end
始终@(posedge clk或negedge rst)
如果(!rst)开始
a_unpackage_array[0][0]非常感谢,我已经修改了您在回复中提到的代码,但是我仍然有这个错误:在verilog的这种模式下不允许多个压缩维度。。注:我拥有ISE Project navigator版本14.6版权所有(c)1995-2013…如果我试图在上述评论中提及您,是否可以@qiupase——Qiu@user2014,错误消息显示:“不允许多个打包维度”,因此请尝试多个未打包维度:reg[7:0]a_unpacketed_数组[0:3][0:3]
@user2014:很抱歉造成混淆,我对我的答案做了一点编辑。