|
我现在要做一个4*4矩阵的运算,先要把矩阵输入到寄存器中(verilog没有二维的概念),然后对这些寄存器进行运算。我的想法是输入的时候一列一列输入,矩阵输入完全再进行计算。我问的是如何对矩阵进行初始化(RTL级)。 input clk, input reset, input [5:0] A0, input [5:0] A1, input [5:0] A2, input [5:0] A3, input [5:0] A4, input [5:0] A5, input [5:0] A6, input [5:0] A7, input [5:0] A8, input [5:0] A9, input [5:0] A10, input [5:0] A11, input [5:0] A12, input [5:0] A13, input [5:0] A14, input [5:0] A15, output [5:0] B0, output [5:0] B1, output [5:0] B2, output [5:0] B3, output [5:0] B4, output [5:0] B5, output [5:0] B6, output [5:0] B7, output [5:0] B8, output [5:0] B9, output [5:0] B10, output [5:0] B11, output [5:0] B12, output [5:0] B13, output [5:0] B14, output [5:0] B15 ); reg[5:0] temp0[0:3];//temp0~temp3相当于矩阵的第1列到第四列,CLK来一次 就输出一列 reg[5:0] temp1[0:3]; reg[5:0] temp2[0:3]; reg[5:0] temp3[0:3]; reg[5:0] temp_in[0:15];//存放矩阵的值,16个6位的寄存器 reg[5:0] temp_out[0:15];//存放计算后的输出逆矩阵的值 initial begin temp0[0]<=A0; temp0[1]<=A1; temp0[2]<=A2; temp0[3]<=A3; temp1[0]<=A4; temp1[1]<=A5; temp1[2]<=A6; temp1[3]<=A7; temp2[0]<=A8; temp2[1]<=A9; temp2[2]<=A10; temp2[3]<=A11; temp3[0]<=A12; temp3[1]<=A13; temp3[2]<=A14; temp3[3]<=A15; end always @(posedge clk ) begin for(i=0;i<4;i=i+1) temp_in<=temp0; temp_in[i+4]<=temp1; temp_in[i+8]<=temp2; temp_in[i+12]<=temp3; end (1)initial 好像不能综合,那么我那个赋值语句该怎么写? (2)我这样对输入的操作好像有问题???
|
|