CN104536943B - 一种低除法量的矩阵求逆定点实现方法及装置 - Google Patents

一种低除法量的矩阵求逆定点实现方法及装置 Download PDF

Info

Publication number
CN104536943B
CN104536943B CN201510016994.0A CN201510016994A CN104536943B CN 104536943 B CN104536943 B CN 104536943B CN 201510016994 A CN201510016994 A CN 201510016994A CN 104536943 B CN104536943 B CN 104536943B
Authority
CN
China
Prior art keywords
register
indata
output
data
modules
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510016994.0A
Other languages
English (en)
Other versions
CN104536943A (zh
Inventor
曹瑶
何世文
常洪明
杨广奇
张军
洪伟
江华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing etaco Communication Technology Co.,Ltd.
Original Assignee
In Jiangsu Emerging Micro-Communication Ceases Science And Technology Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by In Jiangsu Emerging Micro-Communication Ceases Science And Technology Ltd filed Critical In Jiangsu Emerging Micro-Communication Ceases Science And Technology Ltd
Priority to CN201510016994.0A priority Critical patent/CN104536943B/zh
Publication of CN104536943A publication Critical patent/CN104536943A/zh
Application granted granted Critical
Publication of CN104536943B publication Critical patent/CN104536943B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开了一种低除法量的矩阵求逆定点实现方法及装置,根据输入待求逆矩阵的维数确定脉动阵列的总体架构,对不同类型的处理单元进行了算法描述与功能分析,并设计了各处理单元的内部结构,实现了对数据的并行化处理。本发明提出的低除法量矩阵求逆定点实现方法及装置在第一类方形处理单元中用查找移位的方法代替除法操作,降低了基带实现的复杂度;整体设计中不会出现多次累乘和累加的结构,避免数据溢出;对IAM阵列中模块接口优化,减少了除法器的使用数量。该矩阵求逆方案能够实现实时的,低复杂度,稳定的矩阵求逆过程,可以运用于通信系统中的基带实现。

Description

一种低除法量的矩阵求逆定点实现方法及装置
技术领域
本发明涉及一种能够运用少量除法实现实时矩阵求逆定点实现,通过更加适合基带系统开发的移位运算代替原有除法运算,设计过程中对数据进行归一化操作,抑制数据溢出,从而实现结构上的简化和运算效率的提高,有利于基带模块的实现。该方法主要应用于MIMO系统中的信道估计和信号均衡。
背景技术
实时矩阵求逆技术是多输入多输出MIMO(Multiple-Input Multiple-Output)系统中的核心技术,例如802.11n,然而现在关于实时矩阵求逆的实现结构的设计相对较少,并且大部分的基带实现结构都会涉及到大量的除法运算,对于实现复杂度和时序要求较高,所以如何简单快速实现矩阵的并行求逆成为当前MIMO系统急需解决的一个技术难题。
Givens旋转在数值线性代数中常用于矩阵的QR分解,在Lei Ma,Kevin Dickson等人的文章中提出一种改进的Givens旋转方法MSGR(Modified Squared GivensRotations),该方法能够克服原有的Givens旋转的局限性,可应用于MIMO系统,但是该方法中涉及到了大量的除法运算,也没有考虑基带实现的定点化实现方案,所以需要对MSGR方法做模型修正和定点化验证,这样才能更有利于基带工程的实现。
发明内容
发明目的:针对现有技术中存在的问题,本发明提供一种基于流水线方式的低除法量矩阵求逆定点实现方法及装置,能够实时稳定地对并行输入的数据进行求解,同时提供较快的运算速率和低复杂度的运算操作,能够应用于通信基带系统工程中。
技术方案:本发明中涉及表示方法的定义:
定义1:定义定点化表达形式fixpoint(L,F),其中L为总数值bit数,F表示小数bit数。
定义2:定点化二进制储存格式为:
其中符号位占1bit,如果数据大于零,符号位为0;如果数据小于零,符号位为1。
定义3:任意复数X定点化规则为:分别对real(X)和imag(X)按照定义1和定义2做定点化,其中real()和imag()分别表示取出复数x的实部和虚部;规定定点化后复数X表示为2*XL,其中XL表示实部或虚部,L表示定点化位数。
定义4:右移,right shift(data,n)表示将数据data右移n位;
定义5:左移,left shift(data,n)表示将数据data左移n位;
本发明提出一种低除法量的矩阵求逆定点实现方法,包括以下步骤:
步骤1:根据输入矩阵A的维数确定脉动阵列的维数以及总体架构,所述脉动阵列包括MSGR阵列模块和IAM阵列模块,其中MSGR阵列模块主要完成矩阵A的SGR分解获得上三角矩阵U,并基于存储的系数对与矩阵A同阶的单位矩阵E进行相同的变换获得矩阵B;IAM阵列模块求解上三角矩阵U的逆矩阵U-1,并将U-1与矩阵B相乘;输入数据即作为MSGR阵列模块的输入,MSGR阵列模块的输出作为IAM阵列模块的输入,IAM阵列模块的输出即为矩阵求逆的结果。
待求逆矩阵A的维数决定了MSGR阵列模块以及IAM阵列模块的结构,设矩阵A是N×N维的,则MSGR阵列模块是一个N行N列的上三角模块,包括N个第一类圆形处理单元和N(N-1)/2个第一类方形处理单元;IAM阵列模块是一个N行N列的下三角模块,IAM阵列模块包括1个第二类圆形处理单元、N-1个第三类圆形处理单元、N-1个第二类方形处理单元和(N-1)(N-2)/2个第三个方形处理单元。
步骤2:设计MSGR阵列模块,所述MSGR阵列模块包括第一类圆形处理单元和第一类方形处理单;
步骤2.1:设计MSGR阵列模块的输入;
是需要求逆的矩阵,是与A同阶单位矩阵,则扩展矩阵B表示为:
(公式1)
将矩阵B以列向并行输入,并对数据流进行补零操作,从而满足实时传输需求。实现步骤均按照按照定义3的数据定点化格式进行,再加上1位对角元素校验位;若该元素是矩阵A的对角元素,则校验位为1;若不是则为0。
步骤2.2:设计第一类圆形处理单元;
所述第一类圆形处理单元将列向输入Yin映射到横向输出Xout,其具体实现方法是:
(1)将列向输入数据Yin分解为数据段Yindata和校验位Yinbit
(2)参数寄存器赋值:校验位Yinbit和数据位Yindata判别,若Yinbit=1且Yindata=0,则将寄存器R中的值赋为1,若Yinbit=1且Yindata≠0,则将Yindata的共轭Yindata *存入寄存器R,其余情况寄存器R中的值保持不变;
(3)输出寄存器赋值:校验位Yinbit判别,若Yinbit=1,则将Yindata乘以自身的共轭Yindata *,乘法结果经过截位操作后保存在输出寄存器中,Yinbit的值赋给Xoutbit,否则将Yindata乘以寄存器R的值,乘法经过截位操作后结果保存在输出寄存器中,Yinbit的值赋给Xoutbit
(4)将输出寄存器值Xoutdata和校验位Xoutbit组合成横向输出数据Xout
步骤2.3:设计第一类方形处理单;
所述第一类方形处理单元将横向输入Xin和列向输入Yin映射到横向输出Xout和列向输出Yout,其具体实现方法是:
(1)将横向输入数据Xin分解为Xindata和横向校验位Xinbit,将列向输入数据Yin分解为Yindata和列向校验位Yinbit
(2)参数寄存器赋值:横向校验位Xinbit判别,若Xinbit=1,则做横向数据Xindata和列向数据Yindata判别,若Xindata=0且Yindata=0,则寄存器α赋值1,寄存器γ赋值0,寄存器R赋值1,若Xindata=0且Yindata≠0,则寄存器α赋值1,寄存器γ赋值0,寄存器R赋值Yindata的共轭Yindata *,若Xindata≠0,则对Xindata和Yindata调用Block bitshift函数,将Block bitshift(Xindata,Yindata)结果保存在寄存器α中,将Block bitshift(Xindata,Xindata)结果保存在寄存器γ中,并且将Yindata *存入寄存器R中;若Xinbit≠1,则保持寄存器中的参数值不变;
(3)输出寄存器赋值:进行横向校验位Xinbit判别,若为Xinbit=1,则将Yindata乘以自身的共轭Yindata *截位后再加上Xindata,结果保存在横向输出寄存器中,并将列向输出寄存器中的值赋为零,Xinbit的值赋给Xoutbit,Yinbit的值赋给Youtbit;否则将Yindata乘以寄存器R的值截位后再加上Xindata,结果保存在横向输出寄存器中,Yindata乘以寄存器γ的值截位后的值减去Xindata乘以寄存器α的值截位后的值,结果保存在列向输出寄存器中,Xinbit的值赋给Xoutbit,Yinbit的值赋给Youtbit
(4)将横向输出寄存器值的Xoutdata和Xoutbit组合成横向输出数据Xout,将列向输出寄存器值的Youtdata和Youtbit组合成列向输出数据Yout
所述Dout=Block bitshift(Adata,Bdata)的具体实现方法是:
(1)查找Adata,、Bdata的最高非零位N、M;
(2)判别N与定义1小数位宽F的关系,若N>F且M>N-F则将Bdata右移N-F位,若N>F且M<N-F,则为右移位溢出,将最小数据min存入输出寄存器,若N<F且M<N+L-F则将Bdata左移F-N位,操作结果存入输出寄存器中,若N<F且M>N+L-F则将将最大数据max存入输出寄存器,若N=F,则无需对Bdata进行操作,其中min和max分别表示按照定义二所能表示的最大和最小非零值,分别为2L-1和2-F
步骤3:设IAM阵列模块,所述IAM阵列模块包括第二类圆形处理单元、第二类方形处理单元、第三类圆形处理单元、第三类方形处理单元;
步骤3.1:设计第二类圆形处理单元;
所述第二类圆形处理单元将横向输入Xin映射到列向输出Yout,其具体实现方法是:
(1)将横向输入数据Xin分解为数据Xindata和校验位Xinbit
(2)校验位Xinbit判别,若Xinbit=1,则将1/Xindata存入寄存器R中,输出寄存器赋值为零;否则将Xindata乘以寄存器R的值截位后再乘以-1,乘法结果截位后保存在输出寄存器中;
(3)将输出寄存器值的Youtdata作为列向输出数据Yout
步骤3.2:设计第二类方形处理单元;
所述第二类方形处理单元将横向输入Xin和列向输入Yin映射到横向输出Xout和列向输出Yout以及参数输出Tout,其具体实现方法是:
(1)将横向输入数据Xin分解为数据Xindata和校验位Xinbit
(2)校验位Xinbit判别,若Xinbit=1,则将1/Xindata存入寄存器T中,将Yin存入寄存器R中,列向输出寄存器赋值为零;否则将Xindata乘以寄存器R的值截位后再乘以寄存器T的值再经过截位操作,然后用Yin减去该值,结果存入列向输出寄存器中;
(3)横向输出Xout恒等于横向输入Xin
(4)将列向输出寄存器值的Youtdata作为列向输出数据Yout,将寄存器T的值作为参数输出Tout
步骤3.3:设计第三类圆形处理单元;
所述第三类圆形处理单元将横向输入Xin和参数输入Tin映射到列向输出Yout,其具体实现方法是:
(1)将横向输入数据Xin分解为数据Xindata和校验位Xinbit
(2)校验位Xinbit判别,若Xinbit=1,则将Tin存入寄存器R中,输出寄存器赋值为零;否则将Xindata乘以寄存器R的值截位后再乘以-1,乘法结果经过截位保存在输出寄存器中;
(3)将输出寄存器值的Youtdata作为列向输出数据Yout
步骤3.4:设计第三类方形处理单元;
所述第三类方形处理单元将横向输入Xin和列向输入Yin以及参数输入Tin映射到横向输出Xout和列向输出Yout以及参数输出Tout,其具体实现方法是:
(1)将横向输入数据Xin分解为数据Xindata和校验位Xinbit
(2)校验位Xinbit判别,若Xindata=1,则将Tin存入寄存器T中,将Yin存入寄存器R中,列向输出寄存器赋值为零;否则将Xindata乘以寄存器R的值截位后再乘以寄存器T的值再经过截位操作,然后用Yin减去该值,结果存入列向输出寄存器中;
(3)横向输出Xout恒等于横向输入Xin
(4)将列向输出寄存器值的Youtdata作为列向输出数据Yout,将寄存器T中的值作为参数输出Tout
本发明还提出一种低除法量的矩阵求逆定点实现装置,包括MSGR阵列模块和IAM阵列模块,其中MSGR阵列模块用于对矩阵A进行QR分解得到上三角矩阵U,并基于存储的系数对与矩阵A同阶的单位矩阵E进行相同的变换得到矩阵B;IAM模块对上三角矩阵U进行求逆,并将逆矩阵U-1和矩阵B相乘;
所述MSGR阵列模块包括第一类圆形处理单元和第一类方形处理单元,其中第一类圆形处理单元包括Bit split模块、Bit merge模块、Bit check模块、Data check模块、Delay模块、Conj模块和Bitsat模块;第一类方形处理单元包括Bit check模块、Data check模块和Block bitshift模块;
所述IAM阵列模块包括第二类圆形处理单元、第二类方形处理单元、第三类圆形处理单元和第三类方形处理单元,其中第二类圆形处理单元、第二类方形处理单元、第三类圆形处理单元和第三类方形处理单元都包括Bit split模块、Bit merge模块、Bit check模块和Data check模块;
比特拆分模块(Bit split模块),用于将数据拆分为数据段和校验位,其中数据段用来数值计算,校验位用来判别输入数据是否为矩阵对角元素;
比特合成模块(Bit merge模块),用于将数据段和校验位组合为数据,其中校验位放在最低位;
校验位校验模块(Bit check模块),用于判断校验位是否为1;
数据段检验模块(Data check模块),用于判断数据段是否为0;
延迟模块(Delay模块),用于输入端数据段的对齐操作;
共轭模块(Conj模块),用于数据段的共轭操作;
截位模块(Bitsat模块),用于数据截位操作,来满足不同的数据位宽需求;
比特块移动模块(Block bitshift模块)包括最高非零位获取模块(get bit模块)、右移模块(Right shift模块)和左移模块(Left shift模块),其中get bit模块采用二分查找法来寻找数据的最高非零位;Right shift(data,n)用于将数据按照bit位右移n位;Left shift(data,n)用于将数据按照bit位左移n位。
有益效果:本发明提出的低除法量矩阵求逆定点实现方法及其装置主要有以下优点:第一,在第一类方形处理单元中用查找移位的方法代替除法操作,降低了基带实现的复杂度;第二,整体设计中不会出现多次累乘和累加的结构,避免数据溢出;第三,对IAM阵列中模块接口优化,减少了除法器的使用数量。该矩阵求逆方案能够实现实时的,低复杂度,稳定的矩阵求逆过程,可以运用于通信系统中的基带实现。
附图说明
图1为本发明的脉动阵列总体架构;
图2为本发明的第一类圆形处理单元示意图;
图3为本发明的第一类方形处理单元示意图;
图4为本发明的第二类圆形处理单元示意图;
图5为本发明的第二类方形处理单元示意图;
图6为本发明的第三类圆形处理单元示意图;
图7为本发明的第三类方形处理单元示意图;
图8为本发明的第一类圆形处理单元内部结构简化图;
图9为本发明的第一类方形处理单元内部结构简化图;
图10为本发明的Block bitshift模块内部结构简化图;
图11为本发明的二分法查找原理图;
图12为本发明的第二类圆形处理单元内部结构简化图;
图13为本发明的第二类方形处理单元内部结构简化图;
图14为本发明的第三类圆形处理单元内部结构简化图;
图15为本发明的第三类方形处理单元内部结构简化图。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
以4×4的矩阵为例,发明提供一种矩阵求逆的并行化定点实现方法及其装置,应用于多输入多输出(Multiple Input Multiple Output,MIMO)通信系统接收端的信道估计和接收端的信号均衡处理。整个求逆装置包括MSGR阵列模块和IAM阵列模块,其中MSGR阵列模块主要完成矩阵A的SGR分解获得上三角矩阵U,随后输入与矩阵A同阶的单位矩阵E,用存储的系数对单位矩阵E进行相同的变换后获得矩阵B;IAM阵列模块利用迭代算法求上三角矩阵U的逆矩阵U-1,并且将U-1与矩阵B相乘,从而完成整个矩阵求逆过程。输入数据即作为MSGR阵列模块的输入,MSGR阵列模块的输出作为IAM阵列模块的输入,IAM阵列模块的输出即为矩阵求逆的结果。
本发明提供的矩阵求逆的并行化定点实现方法,包括如下步骤:
步骤1:根据输入矩阵A的维数确定脉动阵列的维数以及总体架构(如图1),所述MSGR阵列模块是一个4行4列的上三角模块,包括4个第一类圆形处理单元和6个第一类方形处理单元;IAM阵列模块是一个4行4列的下三角模块,IAM阵列模块包括1个第二类圆形处理单元、3个第三类圆形处理单元、3个第二类方形处理单元和3个第三个方形处理单元。
步骤2:设计MSGR阵列模块;
步骤2.1:设计MSGR阵列模块的输入,如图1中MSGR矩阵列向输入数据流时序所示,第1个时序输入a11,0,0,0;第2个时序输入a12,a21,0,0;……;第4个时序输入a14,a23,…,a41,此时矩阵A的第一列元素全部输入完毕;紧接着输入单位矩阵E,即第5个时序输入1,a24,a33,a42;第6个时序输入0,0,a34,a43;……;第8个时序输入0,0,0,a44,此时单位矩阵E的第一列元素全部输入完毕;第9个时序输入x,0,1,0;……;直到单位矩阵E输入完毕,即输入x,x,x,1;如果没有新的待求逆矩阵输入时,x处的元素输入空,如果需要接着进行新的矩阵求逆运算,则在x处输入新的待求逆矩阵元素。
实现步骤均按照fixpoint(32,16)格式进行,按照数据定点化定义3,再加上1bit对角元素校验位来表示输入输出数据,即2*S33;若该元素是待求逆矩阵的对角元素,则校验位为1,否则校验位为0。
步骤2.2:设计MSGR阵列模块中第一类圆形处理单元;如图2和图8所示,第一类圆形处理单元将列向输入YIN映射到横向输出XOUT,具体实现方法是:
(1)列向33bits输入数据Yin流入Bit split模块分解为32bits的数据Yindata和1bit的校验位Yinbit
(2)参数寄存器赋值:校验位Yinbit和数据位Yindata判别,若Yinbit=1且Yindata=0,则将寄存器R中的值赋为1,若Yinbit=1且Yindata≠0,则将Yindata的共轭Yindata *存入寄存器R中,其余情况寄存器R中的值保持不变;
(3)输出寄存器赋值:校验位Yinbit判别,若Yinbit=1,则将Yindata乘以自身的共轭Yindata *,乘法结果经过截成32bits后保存在输出寄存器中,Yinbit的值赋给Xoutbit,否则将Yindata乘以寄存器R的值,乘法经过截成32bits后结果保存在输出寄存器中,Yinbit的值赋给Xoutbit
(4)将输出寄存器中32bits的Xoutdata和1bit的校验位Xoutbit组合成33bits的横向输出数据Xout
步骤2.2.1:第一类圆形处理单元Bit split模块和Bit merge模块功能及算法描述为:
Bit split模块用于数据拆分,将数据拆分为data和校验bit,其中data用来数值计算,校验bit用来判别输入数据是否为矩阵对角元素;
Bit merge模块用于数据组合,将data和校验bit组合为数据,data放在高32位,校验bit放在最低位。
Bit split Bit merge
步骤2.2.2:第一类圆形处理单元Bit check模块和Data check模块的功能及算法描述为:
Bit check模块用来校验bit位是否为1,用于逻辑真假判断;
Data check模块判断data数据是否为0,根据判别结果对给寄存器R进行操作。
Reg R
步骤2.2.3:第一类圆形处理单元Delay模块和Conj模块功能描述为:
Delay模块:用于下一级乘法器输入端data数据对齐;
Conj模块:用于使data数据虚部乘以-1;
步骤2.2.4:第一类圆形处理单元Bitsat模块功能描述为:
Bitsat模块:用于数据截位操作,来满足不同的数据位宽需求。
步骤2.3:设计MSGR阵列模块中第一类方形处理单元;如图3和图9所示,第一类方形处理单元将横向输入Xin和列向输入Yin映射到横向输出Xout和列向输出Yout,具体实现方法是:
(1)横向和列向各33bits输入数据Xin和Yin流入Bit split模块分解为32bits的Xindata、Yindata和1bit的校验位Xinbit、Yinbit
(2)参数寄存器赋值:横向校验位Xinbit判别,若Xinbit=1,则做横向数据Xindata和列向数据Yindata判别,若Xindata=0且Yindata=0,则寄存器α赋值1,寄存器γ赋值0,寄存器R赋值1,若Xindata=0且Yindata≠0,则寄存器α赋值1,寄存器γ赋值0,寄存器R赋值Yindata的共轭Yindata *,若Xindata≠0,则对Xindata和Yindata调用Block bitshift函数,将Block bitshift(Xindata,Yindata)结果保存在寄存器α中,将Block bitshift(Xindata,Xindata)结果保存在寄存器γ中,并且将Yindata *存入寄存器R中;若Xinbit≠1,则保持寄存器中的参数值不变;
(3)输出寄存器赋值:进行横向校验位Xinbit判别,若为Xinbit=1,则将Yindata乘以自身的共轭Yindata *截成32bits后再加上Xindata,结果保存在横向输出寄存器中,并将列向输出寄存器中的值赋为零,Xinbit的值赋给Xoutbit,Yinbit的值赋给Youtbit;否则将Yindata乘以寄存器R的值截成32bits后再加上Xindata,结果保存在横向输出寄存器中,Yindata乘以寄存器γ的值截成32bits后减去Xindata乘以寄存器α的值截成32bits后的值,结果保存在列向输出寄存器中,Xinbit的值赋给Xoutbit,Yinbit的值赋给Youtbit
(4)将输出32bits的Xoutdata和Youtdata和1bit的校验位Xoutbit和Youtbit组合成33bits的横向和列向输出数据Xout和Yout
步骤2.3.1:第一类方形处理单元Bit check模块和Data check模块描述同步骤2.2.1;
步骤2.3.2:第一类方形处理单元Bit check模块和Data check模块描述同步骤2.2.2;
步骤2.3.3:如图10所示,第一类方形处理单元Block bitshift模块的描述为:
在模块的功能实现中,输入端Adata,、Bdata到输出端Dout的映射为Dout=Blockbitshift(Adata,Bdata),具体的实现步骤:
(1)Adata,、Bdata分别输入get bit模块,查找到最高非零位N、M;
(2)判别N与定义一中小数位宽F的关系,若N>F则对Bdata进行右移操作Rightshift(Bdata,N-F),若N<F则对Bdata进行左移操作Left shift(Bdata,F-N),若N=F则不对Bdata进行操作,操作结果存入输出寄存器中;
(3)溢出判断操作,在N>F情况下,若M<N-F则判断为右移位溢出,将最小数据min存入输出寄存器;在N<F情况下,若M>N+L-F则判断为左移位溢出,将最大数据max存入输出寄存器;其中min和max分别表示按照定义二所能表示的最大和最小非零值,分别为2L-1和2-F
Block bitshift
步骤2.3.3.1:Block bitshift模块中get bit模块描述为:
如图11所示,get bit模块采用二分查找法来寻找数据的最高非零位,输入输出的映射规范表示为N=get bit(data),N初始化为0,具体的实现步骤:
(1)提取输入数据data的位宽L,若L<2则执行步骤(3),否则执行步骤(2);
(2)将data分为高L/2位data1和低L/2位data2,若data1=0,则N=N+0,然后把data2的值赋给data,重新执行步骤(1),若data1≠0,则N=N+L/2,然后把data1的值赋给data,重新执行步骤(1);
(3)判别data是否为0,若data=0则N=N+0,然后输出N,若data≠0则N=N+1,然后输出N;
步骤2.3.3.2:Block bitshift模块中Right shift模块和Left shift模块描述为:
Right shift(data,n)表示将数据data按照定义二的格式按照bit位右移n位;
Left shift(data,n)表示将数据data按照定义二的格式按照bit位左移n位。
步骤3:设计IAM阵列模块;IAM阵列模块的输入为MSGR阵列模块的输出,如图1中IAM矩阵横向输入数据流时序。
步骤3.1:IAM阵列模块中第二类圆形处理单元,如图4和图12所示,第二类圆形处理单元将横向输入Xin映射到列向输出Yout,具体实现方法是:
(1)横向33bits输入数据Xin流入Bit split模块分解为32bits的数据Xindata和1bit的校验位Xinbit
(2)校验位Xinbit判别,若Xinbit=1,则将1/Xindata存入寄存器R中,输出寄存器赋值为零;否则将Xindata乘以寄存器R的值截成32bits后再乘以-1,乘法结果截成32bits后保存在输出寄存器中;
(3)将输出32bits的Youtdata作为列向输出数据Yout
步骤3.1.1:第二类圆形处理单元Bit check模块和Data check模块描述同步骤2.2.1;
步骤3.1.2:第二类圆形处理单元Bit check模块和Data check模块同步骤2.2.2。
步骤3.2:IAM阵列模块中第二类方形处理单元,如图5和图13所示,第二类方形处理单元将横向输入Xin和列向输入Yin映射到横向输出Xout和列向输出Yout以及参数输出Tout,具体实现方法是:
(1)横向33bits输入数据Xin流入Bit split模块分解为32bits的数据Xindata和1bit的校验位Xinbit,列向输入32bits输入数据Yin直接赋值给Yindata
(2)校验位Xinbit判别,若Xinbit=1,则将1/Xindata存入寄存器T中,将Yin存入寄存器R中,列向输出寄存器赋值为零;否则将Xindata乘以寄存器R的值截成32bits后再乘以寄存器T的值再经过32bits截位操作,然后用Yindata减去该值,结果存入列向输出寄存器中;
(3)横向输出Xout恒等于横向输入Xin
(4)将列向输出32bits的Youtdata作为列向输出数据Yout,将寄存器T中的值作为参数输出Tout
步骤3.2.1:第二类方形处理单元Bit check模块和Data check模块描述同步骤2.2.1;
步骤3.2.2:第二类方形处理单元Bit check模块和Data check模块同步骤2.2.2。
步骤3.3:IAM阵列模块中第三类圆形处理单元;如图6和图14所示,第三类圆形处理单元将横向输入Xin和参数输入Tin映射到列向输出Yout,具体实现方法是:
(1)横向33bits输入数据Xin流入Bit split模块分解为32bits的数据Xindata和1bit的校验位Xinbit
(2)校验位Xinbit判别,若Xinbit=1,则将Tin存入寄存器R中,输出寄存器赋值为零;否则将Xindata乘以寄存器R的值截成32bits后再乘以-1,乘法结果经过32bits截位操作保存在输出寄存器中;
(3)将输出32bits的Youtdata作为列向输出数据Yout
步骤3.3.1:第二类方形处理单元Bit check模块和Data check模块描述同步骤2.2.1;
步骤3.3.2:第二类方形处理单元Bit check模块和Data check模块描述同步骤2.2.2。
步骤3.4:IAM阵列模块中第三类方形处理单元;如图7和图15所示,第三类方形处理单元将横向输入Xin和列向输入Yin以及参数输入Tin映射到横向输出Xout和列向输出Yout以及参数输出Tout,具体实现方法是:
(1)横向33bits输入数据Xin流入Bit split模块分解为32bits的数据Xindata和1bit的校验位Xinbit,列向输入32bits输入数据Yin直接赋值给Yindata
(2)校验位Xinbit判别,若Xindata=1,则将Tin存入寄存器T中,将Yin存入寄存器R中,列向输出寄存器赋值为零;否则将Xindata乘以寄存器R的值截成32bits后再乘以寄存器T的值再经过32bits截位操作,然后用Yindata减去该值,结果存入列向输出寄存器中;
(3)横向输出Xout恒等于横向输入Xin
(4)将输出32bits的Youtdata作为列向输出数据Yout,将寄存器T中的值作为参数输出Tout
步骤3.4.1:第二类方形处理单元Bit check模块和Data check模块描述同步骤2.2.1;
步骤3.4.2:第二类方形处理单元Bit check模块和Data check模块描述同步骤2.2.2。
为了进一步说明本发明的效果,以4×4复数矩阵为例,列出了MSGR阵列模块和IAM阵列模块的资源占用量,如表1所示。
表1MSGR阵列和IAM资源占用量(4×4矩阵为例)
阵列 乘法器 加法器 除法器
MSGR阵列 32 18 0
IAM阵列 20 6 4
为了对比不同定点化方式的求逆效果,针对Matlab随机产生的矩阵,本发明进行了不同定点化方式的仿真,仿真方案如表2所示,仿真结果如表3所示。通过仿真可以得到结论全局fixpoint(32,16)的定点化方式能够准确的对4×4的矩阵进行求逆,误差达到10-8的数量级,而全局fixpoint(16,8)的定点化方式虽然位宽减少了一半,但是误差只有10-4的数量级,精度过低。
表2随机矩阵的定点化仿真方案
方案编号 输入数据动态范围 运算定点化
方案一 -214~214 fixpoint(16,8)
方案二 -214~214 fixpoint(32,16)
表3随机矩阵的定点化仿真结果
针对Matlab随机产生的随机矩阵流,以100组为例,本发明进行了不同定点化方式的仿真,仿真方案如表3所示,仿真结果如表4所示。通过仿真结果可以看出全局fixpoint(32,16)的定点化方式准确率几乎为100%,但是数据位宽需要32位,全局fixpoint(24,16)的定点化方式虽然数据位宽只需要24位,但是的准确率较低;而数据过程采用fixpoint(32,16)定点方式,乘法器输入端两个数据分别采用fixpoint(24,16)和fixpoint(17,12)是一种较为适中的定点化方式,这种定点化方式主要考虑到FPGA硬件实现上的乘法器资源占用量的问题,从结果上看这种定点化方式位宽适中,准确率也较高。
表4随机矩阵流(100组)的定点化仿真方案
表5随机矩阵流(100组)的定点化仿真结果
方案编号 均方误差(NMSE) 准确率
方案一 ≤10-5 92%
方案二 ≤10-5 99%
方案三 ≤10-5 97%

Claims (10)

1.一种低除法量的矩阵求逆定点实现方法,其特征在于,包括以下步骤:
步骤1:根据输入矩阵A的维数确定脉动阵列的维数以及总体架构,所述脉动阵列包括MSGR阵列模块和IAM阵列模块,其中MSGR阵列模块主要完成矩阵A的SGR分解获得上三角矩阵U,并基于存储的系数对与矩阵A同阶的单位矩阵E进行相同的变换获得矩阵B;IAM阵列模块求解上三角矩阵U的逆矩阵U-1,并且将U-1与矩阵B相乘;
步骤2:设计MSGR阵列模块,所述MSGR阵列模块包括第一类圆形处理单元和第一类方形处理单元,其中第一类圆形处理单元将列向输入Yin映射到横向输出Xout,第一类方形处理单元将横向输入Xin和列向输入Yin映射到横向输出Xout和列向输出Yout
步骤3:设计IAM阵列模块,所述IAM阵列模块包括第二类圆形处理单元、第二类方形处理单元、第三类圆形处理单元和第三类方形处理单元,其中第二类圆形处理单元将横向输入Xin映射到列向输出Yout;第二类方形处理单元将横向输入Xin和列向Yin映射到横向输出Xout和列向输出Yout以及参数输出Tout;第三类圆形处理单元将横向输入Xin和参数输入Tin映射到列向输出Yout;第三类方形处理单元将横向输入Xin和列向输入Yin以及参数输入Tin映射到横向输出Xout和列向输出Yout以及参数输出Tout
2.如权利要求1所述的低除法量的矩阵求逆定点实现方法,其特征在于,所述脉动阵列维数和总体架构的具体确定方法是:
设矩阵A是N×N维的,则MSGR阵列模块是一个N行N列的上三角模块,包括N个第一类圆形处理单元和N(N-1)/2个第一类方形处理单元;IAM阵列模块是一个N行N列的下三角模块,IAM阵列模块包括1个第二类圆形处理单元、N-1个第三类圆形处理单元、N-1个第二类方形处理单元和(N-1)(N-2)/2个第三类方形处理单元。
3.如权利要求1所述的低除法量的矩阵求逆定点实现方法,其特征在于,所述MSGR阵列模块输入的确定方法为:
是需要求逆的矩阵,是与A同阶单位矩阵,则扩展矩阵B表示为:
将矩阵B以列向并行输入,并对数据流进行补零操作,从而满足实时传输需求。
4.如权利要求1所述的低除法量的矩阵求逆定点实现方法,其特征在于,所述第一类圆形处理单元将列向输入Yin映射到横向输出Xout的具体实现方法是:
(1)将列向输入数据Yin分解为数据段Yindata和校验位Yinbit
(2)参数寄存器赋值:校验位Yinbit和数据位Yindata判别,若Yinbit=1且Yindata=0,则将寄存器R中的值赋为1,若Yinbit=1且Yindata≠0,则将Yindata的共轭Yindata *存入寄存器R,其余情况寄存器R中的值保持不变;
(3)输出寄存器赋值:校验位Yinbit判别,若Yinbit=1,则将Yindata乘以自身的共轭Yindata *,乘法结果经过截位操作后保存在输出寄存器中,Yinbit的值赋给Xoutbit,否则将Yindata乘以寄存器R的值,乘法经过截位操作后结果保存在输出寄存器中,Yinbit的值赋给Xoutbit
(4)将输出寄存器值Xoutdata和校验位Xoutbit组合成横向输出数据Xout
5.如权利要求1所述的低除法量的矩阵求逆定点实现方法,其特征在于,所述第一类方形处理单元将横向输入Xin和列向输入Yin映射到横向输出Xout和列向Yout的具体实现方法是:
(1)将横向输入数据Xin分解为Xindata和横向校验位Xinbit,将列向输入数据Yin分解为Yindata和列向校验位Yinbit
(2)参数寄存器赋值:横向校验位Xinbit判别,若Xinbit=1,则做横向数据Xindata和列向数据Yindata判别,若Xindata=0且Yindata=0,则寄存器α赋值1,寄存器γ赋值0,寄存器R赋值1,若Xindata=0且Yindata≠0,则寄存器α赋值1,寄存器γ赋值0,寄存器R赋值Yindata的共轭Yindata *,若Xindata≠0,则对Xindata和Yindata调用Block bitshift函数,将Block bitshift(Xindata,Yindata)结果保存在寄存器α中,将Block bitshift(Xindata,Xindata)结果保存在寄存器γ中,并且将Yindata *存入寄存器R中;若Xinbit≠1,则保持寄存器中的参数值不变;
(3)输出寄存器赋值:进行横向校验位Xinbit判别,若为Xinbit=1,则将Yindata乘以自身的共轭Yindata *截位后再加上Xindata,结果保存在横向输出寄存器中,并将列向输出寄存器中的值赋为零,Xinbit的值赋给Xoutbit,Yinbit的值赋给Youtbit;否则将Yindata乘以寄存器R的值截位后再加上Xindata,结果保存在横向输出寄存器中,Yindata乘以寄存器γ的值截位后的值减去Xindata乘以寄存器α的值截位后的值,结果保存在列向输出寄存器中,Xinbit的值赋给Xoutbit,Yinbit的值赋给Youtbit
(4)将横向输出寄存器值的Xoutdata和Xoutbit组合成横向输出数据Xout,将列向输出寄存器值的Youtdata和Youtbit组合成列向输出数据Yout
Dout=Block bitshift(Adata,Bdata)的具体实现方法是:
(1)查找Adata,、Bdata的最高非零位N、M;
(2)判别N与定义1小数位宽F的关系,若N>F且M>N-F则将Bdata右移N-F位,若N>F且M<N-F,则为右移位溢出,将最小数据min存入输出寄存器,若N<F且M<N+L-F则将Bdata左移F-N位,操作结果存入输出寄存器中,若N<F且M>N+L-F则将最大数据max存入输出寄存器,若N=F,则无需对Bdata进行操作,其中min和max分别表示按照定义二所能表示的最大和最小非零值,分别为2L-1和2-F
6.如权利要求1所述的低除法量的矩阵求逆定点实现方法,其特征在于,所述第二类圆形处理单元将横向输入Xin映射到列向输出Yout的具体实现方法是:
(1)将横向输入数据Xin分解为数据Xindata和校验位Xinbit
(2)校验位Xinbit判别,若Xinbit=1,则将1/Xindata存入寄存器R中,输出寄存器赋值为零;否则将Xindata乘以寄存器R的值截位后再乘以-1,乘法结果截位后保存在输出寄存器中;
(3)将输出寄存器值的Youtdata作为列向输出数据Yout
7.如权利要求1所述的低除法量的矩阵求逆定点实现方法,其特征在于,所述第二类方形处理单元将横向输入Xin和列向输入Yin映射到横向输出Xout和列向输出Yout以及参数输出Tout
(1)将横向输入数据Xin分解为数据Xindata和校验位Xinbit
(2)校验位Xinbit判别,若Xinbit=1,则将1/Xindata存入寄存器T中,将Yin存入寄存器R中,列向输出寄存器赋值为零;否则将Xindata乘以寄存器R的值截位后再乘以寄存器T的值再经过截位操作,然后用Yin减去经过截位操作后的值,结果存入列向输出寄存器中;
(3)横向输出Xout恒等于横向输入Xin
(4)将列向输出寄存器值的Youtdata作为列向输出数据Yout,将寄存器T的值作为参数输出Tout
8.如权利要求1所述的低除法量的矩阵求逆定点实现方法,其特征在于,所述第三类圆形处理单元将横向输入Xin和参数输入Tin映射到列向输出Yout的具体实现方式是:
(1)将横向输入数据Xin分解为数据Xindata和校验位Xinbit
(2)校验位Xinbit判别,若Xinbit=1,则将Tin存入寄存器R中,输出寄存器赋值为零;否则将Xindata乘以寄存器R的值截位后再乘以-1,乘法结果经过截位保存在输出寄存器中;
(3)将输出寄存器值的Youtdata作为列向输出数据Yout
9.如权利要求1所述的低除法量的矩阵求逆定点实现方法,其特征在于,所述第三类方形处理单元将横向输入Xin和列向输入Yin以及参数输入Tin映射到横向输出Xout和列向输出Yout以及参数输出Tout的具体实现方法是:
(1)将横向输入数据Xin分解为数据Xindata和校验位Xinbit
(2)校验位Xinbit判别,若Xindata=1,则将Tin存入寄存器T中,将Yin存入寄存器R中,列向输出寄存器赋值为零;否则将Xindata乘以寄存器R的值截位后再乘以寄存器T的值再经过截位操作,然后用Yin减去经过截位操作的值,结果存入列向输出寄存器中;
(3)横向输出Xout恒等于横向输入Xin
(4)将列向输出寄存器值的Youtdata作为列向输出数据Yout,将寄存器T中的值作为参数输出Tout
10.一种低除法量的矩阵求逆定点实现装置,其特征在于,包括MSGR阵列模块和IAM阵列模块,其中MSGR阵列模块用于对矩阵A进行QR分解得到上三角矩阵U,并基于存储的系数对与矩阵A同阶的单位矩阵E进行相同的变换得到矩阵B;IAM模块对上三角矩阵U进行求逆,并将逆矩阵U-1和矩阵B相乘;
所述MSGR阵列模块包括第一类圆形处理单元和第一类方形处理单元,其中第一类圆形处理单元包括Bit split模块、Bit merge模块、Bit check模块、Data check模块、Delay模块、Conj模块和Bitsat模块;第一类方形处理单元包括Bit check模块、Data check模块和Block bitshift模块;
所述IAM阵列模块包括第二类圆形处理单元、第二类方形处理单元、第三类圆形处理单元和第三类方形处理单元,所述第二类圆形处理单元、第二类方形处理单元、第三类圆形处理单元和第三类方形处理单元都包括Bit split模块、Bit merge模块、Bit check模块和Data check模块;
Bit split模块,用于将数据拆分为数据段和校验位,其中数据段用来数值计算,校验位用来判别输入数据是否为矩阵对角元素;
Bit merge模块,用于将数据段和校验位组合为数据;
Bit check模块,用于校验位的校验;
Data check模块,用于数据段的校验;
Delay模块,用于输入端数据段的对齐操作;
Conj模块,用于求数据段的共轭操作;
Bitsat模块,用于数据的截位操作;
Block bitshift模块包括get bit模块、Right shift模块和Left shift模块,其中getbit模块采用二分查找法来寻找数据段的最高非零位;Right shift(data,n)用于将数据段按照bit位右移n位;Left shift(data,n)用于将数据段按照bit位左移n位。
CN201510016994.0A 2015-01-13 2015-01-13 一种低除法量的矩阵求逆定点实现方法及装置 Active CN104536943B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510016994.0A CN104536943B (zh) 2015-01-13 2015-01-13 一种低除法量的矩阵求逆定点实现方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510016994.0A CN104536943B (zh) 2015-01-13 2015-01-13 一种低除法量的矩阵求逆定点实现方法及装置

Publications (2)

Publication Number Publication Date
CN104536943A CN104536943A (zh) 2015-04-22
CN104536943B true CN104536943B (zh) 2017-08-29

Family

ID=52852471

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510016994.0A Active CN104536943B (zh) 2015-01-13 2015-01-13 一种低除法量的矩阵求逆定点实现方法及装置

Country Status (1)

Country Link
CN (1) CN104536943B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9870341B2 (en) * 2016-03-18 2018-01-16 Qualcomm Incorporated Memory reduction method for fixed point matrix multiply

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2261795A1 (en) * 2009-06-02 2010-12-15 ITT Manufacturing Enterprises, Inc. Circuits and methods for performing exponentiation and inversion of finite field elements
CN102184161A (zh) * 2011-05-24 2011-09-14 电子科技大学 基于余数系统的矩阵求逆装置及方法
CN103678257A (zh) * 2013-12-20 2014-03-26 上海交通大学 基于fpga的正定矩阵浮点求逆器及其求逆方法
CN103927290A (zh) * 2014-04-18 2014-07-16 南京大学 一种任意阶下三角复矩阵求逆运算方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2261795A1 (en) * 2009-06-02 2010-12-15 ITT Manufacturing Enterprises, Inc. Circuits and methods for performing exponentiation and inversion of finite field elements
CN102184161A (zh) * 2011-05-24 2011-09-14 电子科技大学 基于余数系统的矩阵求逆装置及方法
CN103678257A (zh) * 2013-12-20 2014-03-26 上海交通大学 基于fpga的正定矩阵浮点求逆器及其求逆方法
CN103927290A (zh) * 2014-04-18 2014-07-16 南京大学 一种任意阶下三角复矩阵求逆运算方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
QR Decomposition-Based Matrix Inversion for High Performance Embedded MIMO Receivers;Lei Ma et al.;《IEEE TRANSACTIONS ON SIGNAL PROCESSING》;20110430;第59卷(第4期);第1858-1867页 *
一种基于Cholesky分解的快速矩阵求逆方法设计;魏婵娟等;《电子设计工程》;20140131;第22卷(第1期);第159-161、164页 *

Also Published As

Publication number Publication date
CN104536943A (zh) 2015-04-22

Similar Documents

Publication Publication Date Title
CN111242289B (zh) 一种规模可扩展的卷积神经网络加速系统与方法
CN106529670B (zh) 一种基于权重压缩的神经网络处理器、设计方法、芯片
CN103970720B (zh) 基于大规模粗粒度嵌入式可重构系统及其处理方法
CN107862374A (zh) 基于流水线的神经网络处理系统和处理方法
CN106951395A (zh) 面向压缩卷积神经网络的并行卷积运算方法及装置
CN111563599B (zh) 一种量子线路的分解方法、装置、存储介质及电子装置
CN104199536B (zh) 一种基于bp神经网络的fpga动态功耗估算方法
CN107918794A (zh) 基于计算阵列的神经网络处理器
CN101763338B (zh) 一种点数可变的混合基fft/ifft实现装置及其方法
CN108564168A (zh) 一种对支持多精度卷积神经网络处理器的设计方法
CN109086722A (zh) 混合车牌识别方法、装置、电子设备
CN102298570A (zh) 一种点数可变的混合基 fft/ifft实现装置及其方法
CN107423816A (zh) 一种多计算精度神经网络处理方法和系统
CN107203807A (zh) 神经网络的计算方法、系统及其装置
CN109447254A (zh) 一种卷积神经网络推理硬件加速方法及其装置
CN105045766A (zh) 基于3072点快速傅里叶变换的数据处理方法及处理器
CN107612523A (zh) 一种基于软件查表法的fir滤波器实现方法
CN108647184A (zh) 一种高精度动态比特位卷积乘法快速实现方法
CN104536943B (zh) 一种低除法量的矩阵求逆定点实现方法及装置
CN103838680A (zh) 一种数据缓存方法和装置
CN115238863A (zh) 一种卷积神经网络卷积层的硬件加速方法、系统及应用
CN107957977A (zh) 一种计算方法及相关产品
CN209517154U (zh) 支持实现精确延时处理的电路结构
CN110222815A (zh) 适用于深度学习硬件加速器的可配置激活函数装置及方法
CN101834818B (zh) Gmsk调制装置及方法

Legal Events

Date Code Title Description
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 211100 8th floor, building B4, wireless Valley, No.9, mozhou East Road, Jiangning District, Nanjing City, Jiangsu Province

Patentee after: NANJING ZEPUTUO INFORMATION TECHNOLOGY Co.,Ltd.

Address before: 211100 No.9, mozhou East Road, Jiangning Economic Development Zone, Nanjing, Jiangsu Province

Patentee before: ZTE Wavetone Science and Technology Ltd.

CP03 Change of name, title or address
TR01 Transfer of patent right

Effective date of registration: 20210702

Address after: 211100 8th floor, building B4, wireless Valley, No.9, mozhou East Road, Jiangning District, Nanjing City, Jiangsu Province

Patentee after: Nanjing etaco Communication Technology Co.,Ltd.

Address before: 211100 8th floor, building B4, wireless Valley, No.9, mozhou East Road, Jiangning District, Nanjing City, Jiangsu Province

Patentee before: NANJING ZEPUTUO INFORMATION TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right