发明内容
发明目的:针对现有技术的不足,本发明公开了一种并行化矩阵求逆硬件实现装置,主要包括对矩阵求逆脉动阵列的设计,实现数据的并行化处理,提高矩阵求逆的硬件实现效率。
技术方案:一种并行化矩阵求逆硬件装置的实现方法,包括以下步骤:
步骤1:根据输入矩阵A的维数确定脉动阵列的维数以及总体架构,所述脉动阵列包括MSGR(Modified Square Givens Rotation)阵列模块和IAM(Invert and Multiply)阵列模块,其中MSGR阵列模块主要完成矩阵A的SGR(Square Givens Rotation)分解获得上三角矩阵U,随后输入与矩阵A同阶的单位矩阵E,用存储的系数对单位矩阵E进行相同的变换后获得矩阵B;IAM阵列模块利用迭代算法求上三角矩阵U的逆矩阵U-1,并且将U-1与矩阵B相乘,从而完成整个矩阵求逆过程;
步骤2:
若矩阵A是N×N维的,则MSGR阵列模块是一个N行N+1列的倒梯形模块,包括N个MSGR阵列第一类边界处理单元、N(N+1)/2个MSGR阵列内部处理单元和N个MSGR阵列第二类方形处理单元,MSGR阵列第一类边界处理单元将输入参数对<XIN,YIN>映射到输出参数对<MOUT,NOUT>;MSGR阵列内部处理单元将<X'IN,Y'IN>和<M'IN,N'IN>更新到<X'OUT,Y'OUT>、<M'OUT,N'OUT>;MSGR阵列第二类边界处理单元根据输入参数对<M”IN,N”IN>确定UOUT,同时进行溢出处理;其中位于MSGR阵列模块上部边缘的1个第一类边界处理单元和N-1个内部处理单元需要外部输入数据,第一类边界处理单元的输出是相邻下一列内部处理单元的输入,内部处理单元的一个输出是相邻下一行的第一类边界处理单元或者内部处理单元的输入,内部处理单元的另一个输出是相邻下一列内部处理单元或者第二类方形处理单元的输入,位于MSGR阵列模块右侧边缘的N个第二类方形处理单元的输出为MSGR阵列模块的输出;
步骤3:设计IAM阵列模块,IAM阵列模块包含N个第二类圆形处理单元,N(N-1)/2个第三类方形处理单元,IAM阵列模块的输入即为MSGR阵列模块的输出,IAM阵列边界处根据输入参数X”'IN确定输出参数Y”'OUT;IAM阵列内部处理单元根据输入参数<X””IN,Y””IN>确定<X””OUT,Y””OUT>,其中位于IAM阵列模块左侧边缘的1个第二类圆形处理单元和N-1个第三类方形处理单元接收MSGR阵列模块的输出,位于IAM阵列模块下侧边缘的1个第二类圆形处理单元和N-1个第三类方形处理单元的输出即为IAM阵列模块的输出,IAM阵列模块第二类圆形处理单元的输出是相邻下一行第三类方形处理单元的输入,IAM阵列模块第三类方形处理单元的一个输出为相邻下一行的第三类方形处理单元的输入,IAM阵列模块第三类方形处理单元的另一个输出为相邻下一列第三类方形处理单元的或者第二类圆形处理单元的输入。
有益效果:与现有技术相比,本发明具有如下优点:本发明公开了一种并行化矩阵求逆硬件装置的实现方法,设计了基于改进Givens旋转的矩阵求逆脉动阵列,整个矩阵求逆过程采用并行化处理,能有效提高矩阵求逆的硬件实现速度。本发明可以应用于无线通信、信号处理以及数值计算等领域矩阵求逆问题的硬件实现。
具体实施方式
下面结合附图和具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等同变换均落于本申请所附权利要求所限定的范围。
本发明公开了一种并行化矩阵求逆硬件装置的实现方法,应用于MIMO通信系统接收端的信道估计和接收端的信号均衡处理,对于一个发送天线数为M,接收天线数为N的MIMO通信系统,其接收机信号可以表示为r=Hs+n,其中,r表示接收信号,是维数为M的列向量;s表示发送信号,是维数为N的列向量;H表示信道矩阵,是维数为M×N的矩阵;n表示加性高斯白噪声,是维数为M的列向量。接收端的均衡器从接收到的信号r估计出发送信号s,常见的均衡算法包括迫零算法和最小均方误差算法。基于迫零算法的均衡表达式为其中表示基于迫零算法的均衡器对发送信号的估计量;基于最小均方误差算法的均衡表达式为其中表示基于最小均方误差算法的均衡器对发送信号的估计量,上标H表示矩阵的共轭转置,IM表示M维单位矩阵,表示噪声的平均功率。将待求逆矩阵(HHH)或矩阵记为A,且表示如下:
本发明提供了一种并行化矩阵求逆硬件装置的实现方法,主要包括以下步骤:
步骤1:根据输入矩阵A的维数确定脉动阵列的维数以及总体架构。该脉动阵列主要包括两个大模块,MSGR阵列模块和IAM阵列模块,其中MSGR阵列模块主要完成矩阵A的SGR分解获得上三角矩阵U,随后输入与矩阵A同阶的单位矩阵E,用存储的系数对单位矩阵E进行相同的变换后获得IAM阵列模块主要是利用迭代算法求上三角矩阵U的逆矩阵U-1,并且将U-1与相乘,从而完成整个矩阵求逆过程。输入数据即作为MSGR阵列模块的输入,MSGR阵列模块的输出作为IAM阵列模块的输入,IAM阵列模块的输出即为矩阵求逆的结果。待求逆矩阵A的维数决定了MSGR阵列模块以及IAM阵列模块的结构,如果矩阵A是N×N维的,则MSGR阵列模块是一个N行N+1列的倒梯形模块,IAM阵列模块是一个N行N列的下三角模块,总体架构如图1所示。
步骤2:设计MSGR阵列模块:输入矩阵A的维数决定了MSGR阵列模块是一个N行N+1列的倒梯形模块。MSGR阵列模块包含N个MSGR阵列第一类边界处理单元,N(N+1)/2个MSGR阵列内部处理单元以及N个MSGR阵列第二类方形处理单元。
步骤2.1:设计MSGR阵列模块的输入:
每个时序MSGR阵列模块有N个输入接口,每个输入接口输入两个参数,即位于MSGR阵列模块上部边缘的1个MSGR阵列第一类边界处理单元和N-1个MSGR阵列内部处理单元需要外部输入数据。MSGR阵列第一类边界处理单元和MSGR阵列内部处理单元的输入输出参数分别如图3和图5所示。每个时序参数YIN的输入值均为1,关于参数XIN的输入如图2所示,第1个时序输入a11,z…,z;第2个时序输入a12,a21,z,…,z;……;第N个时序输入a1N,a2,N-1,…,aN1,此时矩阵A的第一列元素全部输入完毕;紧接着输入单位矩阵E,即第N+1个时序输入1,a2,N,a3,N-1,…,aN2;第N+2个时序输入0,0,…,aN-1,4,aN3;……;第2N个时序输入0,0,0,…,aNN,此时单位矩阵E的第一列元素全部输入完毕;第2N+1个时序输入x,0,0,…,0;第2N+2个时序输入x,x,0,…,0;直到单位矩阵E输入完毕,即输入x,x,…x,1;其中z表示延迟一个时序,如果没有新的待求逆矩阵输入时,x处的元素输入空,如果需要接着进行新的矩阵求逆运算,则在x处输入新的待求逆矩阵元素。
步骤2.2:设计MSGR阵列第一类边界处理单元:
步骤2.2.1:MSGR阵列第一类边界处理单元的算法及功能描述:MSGR阵列第一类边界处理单元主要是将输入参数对<XIN,YIN>映射到输出参数对<MOUT,NOUT>。如果参数XIN的输入值是矩阵A的对角元素,则
同时定义寄存器R1和寄存器R2,如果YIN等于0,则寄存器R1赋值为R1=1,寄存器R2赋值为R2=1;否则,寄存器R1和寄存器R2分别赋值为
如果参数XIN的输入值不是矩阵A的对角元素,则
且寄存器R1和寄存器R2的值保持不变。
约定语句If(A)表示如果条件A成立,则执行B操作,否则执行C操作。则MSGR阵列第一类边界处理单元的算法可以描述为:
If(XIN是对角元素)Then
Else
步骤2.2.2:设计MSGR阵列第一类边界处理单元的内部结构:由步骤2.2.1可知,MSGR阵列第一类边界处理单元包括两个选择器,2个乘法器和6个寄存器,其内部结构如图4所示。
步骤2.3:设计MSGR阵列内部处理单元:
步骤2.3.1:MSGR阵列内部处理单元的算法及功能描述:MSGR阵列内部处理单元主要是将输入参数对<X'IN,Y'IN>和<M'IN,N'IN>更新到<X'OUT,Y'OUT>、<M'OUT,N'OUT>。如果输入参数MIN对应矩阵A中的对角元素,则
同时定义寄存器α1,寄存器α2,寄存器β1,寄存器β2,寄存器γ1,寄存器γ2,以及寄存器δ1。如果输入参数M'IN等于0,寄存器α1,寄存器α2,寄存器γ1,寄存器γ2,以及寄存器δ1分别赋值为α1=1,α2=1,γ1=0,γ2=0,δ1=1,寄存器β1和寄存器β2的赋值取决于输入参数Y'IN,如果Y'IN等于0,则β1=1,β2=1,否则如果输入参数M'IN不等于0,则寄存器α1,寄存器α2,寄存器β1,寄存器β2,寄存器γ1,寄存器γ2,以及寄存器δ1分别赋值为α1=Y'IN,α2=0,β2=0,γ1=X'IN,γ2=M'IN,δ1=N'IN。
如果输入参数M'IN不是对应矩阵A中的对角元素,则
且寄存器α1,寄存器α2,寄存器β1,寄存器β2,寄存器γ1,寄存器γ2,以及寄存器δ1的值保持不变。
由步骤2.2.1中的语句约定,MSGR阵列内部处理单元的算法可以描述为:
If(MIN是对角元素)Then
Else
步骤2.3.2:由步骤2.3.1可知,MSGR阵列内部处理单元包括3个选择器,11个乘法器,4个加法器,11个寄存器。
步骤2.4:设计MSGR阵列第二类边界处理单元:
步骤2.4.1:MSGR阵列第二类边界处理单元的算法及功能描述:
MSGR阵列第二类边界处理单元主要是将输入参数对<M”IN,N”IN>映射到UOUT,同时进行溢出处理。令令M”IN_real和N”IN_real分别表示输入参数M”IN和N”IN的实部,M”IN_imag和N”IN_imag分别表示输入参数M”IN和N”IN的虚部,令S=N”IN_real2+N”IN_imag2,。如果S大于4,则
如果S小于0.25,则
通过(公式8)和(公式9),M”IN_real,N”IN_real,M”IN_imag和N”IN_imag的指数值都得到了更新,将更新后的M”IN和N”IN相除得到输出UOUT。
由步骤2.2.1中的语句约定,MSGR阵列第二类边界处理单元的算法可以描述为:
S=NIN_real2+NIN_imag2
If(S>4)Then
If(S<0.25)Then
步骤2.4.2:由步骤2.4.1可知,MSGR阵列第二类边界处理单元包括两个乘法器,1个选择器,1个移位寄存器,8个加法器,6个寄存器。
步骤3:设计IAM阵列模块;IAM阵列模块主要是根据迭代算法求上三角矩阵U的逆矩阵U-1,并且将U-1与相乘,由输入矩阵A的维数确定IAM阵列模块是一个N行N列的下三角模块,IAM阵列模块包含N个第二类圆形处理单元,N(N-1)/2个第三类方形处理单元。IAM阵列模块的输入即为MSGR阵列模块的输出。
步骤3.1:设计IAM阵列边界处理单元:
步骤3.1.1:IAM阵列边界处理单元的算法及功能描述:
如果输入参数X”'IN对应矩阵A中的对角元素,则
Y”'OUT=0 (公式11)
同时定义寄存器R,寄存器R赋值为1/X”'IN。
如果输入参数X”'IN不是对应矩阵A中的对角元素,则
Y”'OUT=-R×X”'IN (公式12)
且寄存器R的值保持不变。
由步骤2.2.1中的语句约定,IAM阵列边界处理单元的算法可以描述为:
步骤3.1.2:由步骤3.1.1,IAM阵列边界处理单元包含1个选择器,3个寄存器,1个除法器,1个乘法器,其内部结构如图8所示。
步骤3.2:设计IAM阵列内部处理单元:
步骤3.2.1:IAM阵列内部处理单元的算法及功能描述:
如果输入参数X””IN对应矩阵A中的对角元素,则
同时定义寄存器R,寄存器R赋值为Y””IN/X””IN。
如果输入参数X””IN不是对应矩阵A中的对角元素,则
且寄存器R的值保持不变。
由步骤2.2.1中的语句约定,IAM阵列内部处理单元的算法可以描述为:
步骤3.2.3:由步骤3.2.1,IAM阵列内部处理单元包括1个选择器,5个寄存器,1个除法器,1个乘法器和1个加法器,其内部结构如图10所示。