CN108228536B - 使用FPGA实现Hermitian矩阵分解的方法 - Google Patents
使用FPGA实现Hermitian矩阵分解的方法 Download PDFInfo
- Publication number
- CN108228536B CN108228536B CN201810120721.4A CN201810120721A CN108228536B CN 108228536 B CN108228536 B CN 108228536B CN 201810120721 A CN201810120721 A CN 201810120721A CN 108228536 B CN108228536 B CN 108228536B
- Authority
- CN
- China
- Prior art keywords
- tmp
- matrix
- cordic
- columns
- rows
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种使用FPGA实现Hermitian矩阵分解的方法,提供了一种使用FPGA实现Jacobi算法的方法,对阵列天线接收到的复数Hermitian矩阵采用Jacobi算法进行分解,在硬件实现上使用FPGA实现Jacobi算法,对于Jacobi算法中复杂的乘法、除法运算全部使用CORDIC核按照一定规则代替,最终得到Hermitian矩阵的特征值和特征向量。本发明方法使用FPGA计算Hermitian矩阵的特征值和特征向量,有关矩阵运算几乎全部使用CORDIC核,并且对CORDIC核进行复用,省去了大量的乘法、除法运算,节约FPGA资源,处理时间快,并行性好,在阵列信号处理中应用前景广阔。
Description
技术领域
本发明涉及一种使用FPGA实现Hermitian矩阵分解的方法。
背景技术
在阵列信号处理中,对多天线接收到的信号往往需要进行矩阵分解,求得矩阵的特征值和特征向量,以便对信源方向进行估计。传统的矩阵分解是用DSP(数字信号处理器)实现,耗时大,FPGA作为现场可编程门阵列,拥有并行计算的优势,处理时间快,逐渐的被用于实现复杂的阵列信号处理算法,但FPGA也有劣势,那就是进行非线性运算特别的复杂,所以为了充分利用FPGA优势,同时兼顾FPGA的劣势,FPGA进行矩阵分解就采用并行性好的Jacobi算法,而不用QR算法。
发明内容
为了克服现有技术的缺点,本发明提供了一种使用FPGA实现Hermitian矩阵分解的方法。
本发明所采用的技术方案是:一种使用FPGA实现Hermitian矩阵分解的方法,包括如下步骤:
步骤一、将n×n的复数矩阵T存入RAM中,同时构造n×n的单位对角阵V存于RAM中;
步骤二、选择一个(p,q)对,将Tp,p和Tq,q所在的两列的元素组成n×2的矩阵T_tmp,同时选取V对应的元素组成n×2的V_tmp矩阵;
步骤三、使用COEDIC核求解Tp,q的幅度Amp和相位θ;
步骤五、分别对T_tmp和V_tmp进行旋转变换,然后将计算结果分别用于更新T_tmp和V_tmp;
步骤六、用T_tmp和V_tmp更新T矩阵和V矩阵相应位置元素;
步骤七、另选一个(p,q)对,重复步骤二至六;直至T矩阵成为了对角阵,则T的主对角元素就是T的特征值,V的列向量就是T的特征向量。
与现有技术相比,本发明的积极效果是:
本发明提供了一种使用FPGA实现Jacobi算法的方法,对阵列天线接收到的复数Hermitian矩阵采用Jacobi算法进行分解,在硬件实现上使用FPGA实现Jacobi算法,对于Jacobi算法中复杂的乘法、除法运算全部使用CORDIC核按照一定规则代替,最终得到Hermitian矩阵的特征值和特征向量。
本发明方法使用FPGA计算Hermitian矩阵的特征值和特征向量,有关矩阵运算几乎全部使用CORDIC核,并且对CORDIC核进行复用,省去了大量的乘法、除法运算,节约FPGA资源,处理时间快,并行性好,在阵列信号处理中应用前景广阔。
附图说明
本发明将通过例子并参照附图的方式说明,其中:
图1是5×5矩阵并行排序规则演示图;
图2为并行排序规则演示图;
图3为8×8矩阵并行排序规则演示图;
图4为7×7矩阵并行排序规则演示图;
图5是本发明的FPGA模块框图。
具体实施方式
假定协方差矩阵T是5*5的复数矩阵,其特征分解过程如下:
算法描述:
设置矩阵T为5*5的矩阵,同时设置5*5的单位对角矩阵V,其并行排序规则演示如图1所示:
1.循环3次扫描(看实际情况,可能需要更多的扫描次数);
2.每个扫描,串行执行5个steps;
3.每个step并行执行2个的(p,q)pair变化;
5个steps包含的(p,q)pair分别为:
Step1:(1,2)(3,4)
Step2:(1,4)(3,5)
Step3:(2,3)(4,5)
Step4:(1,5)(2,4)
Step5:(1,3)(2,5)
4.对T做扫描、变化和更新的同时对V执行相同操作。
循环完成后,T只有主对角线为非零,其余元素都为0,T的主对角元素就是T的特征值,V的列向量就是T的特征向量。
对p,q选择的说明:
对于n(n为偶数)阶矩阵图2给出了并行排序的规则,确定旋转执行时的步骤,按照图2所示的规则,将奇行列数1,3,5,…,n-3,n-1排在第一排,将偶行列数2,4,6,…,n-2,n排在第二排,第一行列始终保持顺序不变,其他的行列按照箭头所指的方向(即顺时针方向)和对应行列互换位置。每次排序结束后,将每一列的上下两个元素(如n-1和n),按从小到大的顺序进行排序,并分别作为p和q的值,即p=n-1,q=n。这样,当n为偶数时,扫描一次需要n-1步。
为了更加清楚地说明并行排序规则,我们以n=8来举例说明:
假设A是8×8的实矩阵,那么根据图2的并行排序规则,我们可以作图3来演示其Step1到Step7的生成过程:
根据图3的并行排序规则,很容易得到如下的扫描分解步骤:
Step1:(1,2)(3,4)(5,6)(7,8)
Step2:(1,4)(2,6)(3,8)(5,7)
Step3:(1,6)(4,8)(2,7)(3,5)
Step4:(1,8)(6,7)(4,5)(2,3)
Step5:(1,7)(5,8)(3,6)(2,4)
Step6:(1,5)(3,7)(2,8)(4,6)
Step7:(1,3)(2,5)(4,7)(6,8)
当n×n的矩阵在n为奇数条件下的情况:按照图2所示的规则,将奇行列数1,3,5,…,n-2,n排在第一排,将偶行列数2,4,6,…,n-1,n+1排在第二排,第一行列始终保持顺序不变,其他的行列按照箭头所指的方向(即顺时针方向)和对应行列互换位置。每次排序结束后,将每一列的上下两个元素(如n和n+1),按从小到大的顺序进行排序,并分别作为p和q的值,即p=n,q=n+1。这样,当n为奇数时,扫描一次需要n步。
当n为奇数时,有两种方法来进行扫描,我们以n=7为例:
方法一:
根据图2的并行排序规则来进行扫描,则其演示图如图4所示:
很明显,与n=8时的演示图有所区别,由于没有第8行和列,所以以星号“*”代替,并且,与星号对应搭配的行和列(即图中没有画椭圆的部分)在那次Step中不参与Jacobi旋转处理。
根据图4,很容易得到如下的扫描分解步骤:
Step1:(1,2)(3,4)(5,6)
Step2:(1,4)(2,6)(5,7)
Step3:(1,6)(2,7)(3,5)
Step4:(6,7)(4,5)(2,3)
Step5:(1,7)(3,6)(2,4)
Step6:(1,5)(3,7)(4,6)
Step7:(1,3)(2,5)(4,7)
从图4和分解步骤中都可以明显地看出,当n为奇数时,按照此方法来进行扫描,得到的结果与根据图3的n=8时的并行排序规则得到的扫描分解步骤相同,即以星号“*”代替“8”,并且,与星号对应搭配的行和列(即图中没有画椭圆的部分)在那次Step中不参与Jacobi旋转处理。
方法二:
对7×7矩阵补0成为8×8矩阵,然后按照8×8矩阵进行扫描。
FPGA实现流程如图5所示:
1.将5×5的复数矩阵T存入RAM中,构造5×5单位对角阵V存于RAM中;
2.根据上面提到的p、q选取方式,选T的10个元素(即Tp,p和Tq,q所在的两列),组成5×2的矩阵(即第一次p=1、q=2),记为T_tmp,再从T_tmp中选取4个元素组成矩阵同时选取V对应的10个元素组成5X2的V_tmp矩阵;
3.使用COEDIC核求解Tp,q幅度Amp和相位θ;
下面是计算规则:
(2)先计算右边,将实部(a1,1a2,1a3,1a4,1a5,1)T送入CORDIC核的X输入端,实部(m1, 1m2,1m3,1m4,1m5,1)T送入CORDIC核的Y端,CORDIC的相位脚输入α,输出端X更新(a1,1a2,1a3,1a4, 1a5,1)T,输出端Y更新(m1,1m2,1m3,1m4,1m5,1)T;
(3)对虚部执行相同操作,这里可以同时使用两个CORDIC核与步骤(2)同时进行,也可以一个CORDIC核复用;
注意:以上只有(2)、(3)需要对V_tmp执行相同操作。
7.用T_tmp和V_tmp更新T矩阵和V矩阵相应位置元素;
8.选取另一对p,q,重复步骤2~7;
9.以上的步骤根据实际应用的需要,可以循环执行多次。
10.最后T矩阵成为了对角阵,对角线元素就是特征值,V矩阵的列向量就是特征向量。
Claims (2)
1.一种使用FPGA实现Hermitian矩阵分解的方法,其特征在于:包括如下步骤:
步骤一、将n×n的复数矩阵T存入RAM中,同时构造n×n的单位对角阵V存于RAM中;
步骤二、选择一个(p,q)对,将Tp,p和Tq,q所在的两列的元素组成n×2的矩阵T_tmp,同时选取V对应的元素组成n×2的V_tmp矩阵;对于n阶矩阵,所述(p,q)对按照如下并行排序规则确定:
(1)当n为偶数时,将奇行列数1,3,5,…,n-3,n-1排在第一排,将偶行列数2,4,6,…,n-2,n排在第二排,第一行列始终保持顺序不变,其他的行列按照顺时针方向和对应行列互换位置,每次排序结束后,将每一列的上下两个元素按从小到大的顺序进行排序,并分别作为p和q的值,排序次数共n-1次,每次排序得到n/2个(p,q)对;
(2)当n为奇数时,将奇行列数1,3,5,…,n-2,n排在第一排,将偶行列数2,4,6,…,n-1,n+1排在第二排,第一行列始终保持顺序不变,其他的行列按照顺时针方向和对应行列互换位置,每次排序结束后,去除与序号n+1搭配的一列后将其余每一列的上下两个元素按从小到大的顺序进行排序,并分别作为p和q的值,排序次数共n次,每次排序得到(n-1)/2个(p,q)对;
步骤三、使用CORDIC核求解Tp,q的幅度Amp和相位θ;
(一)对T_tmp和V_tmp进行旋转变换的方法为:
(二)将对T_tmp和V_tmp进行旋转变换的计算结果分别用于更新T_tmp和V_tmp的方法为:
(2)将实部(a1,1a2,1a3,1......an,1)T送入CORDIC核的X输入端,实部(m1,1m2,1m3, 1......mn,1)T送入CORDIC核的Y端,CORDIC的相位脚输入α,输出端X更新(a1,1a2,1a3, 1......an,1)T,输出端Y更新(m1,1m2,1m3,1......mn,1)T;
(3)对虚部执行与第(2)步相同的操作;对V_tmp执行与第(2)步和第(3)步相同操作;
(4)使用CORDIC计算
步骤五、分别对T_tmp和V_tmp进行旋转变换,然后将计算结果分别用于更新T_tmp和V_tmp;
步骤六、用T_tmp和V_tmp更新T矩阵和V矩阵相应位置元素;
步骤七、另选一个(p,q)对,重复步骤二至六;直至T矩阵成为了对角阵,则T的主对角元素就是T的特征值,V的列向量就是T的特征向量。
2.根据权利要求1所述的使用FPGA实现Hermitian矩阵分解的方法,其特征在于:第(3)步所述对虚部执行与第(2)步相同的操作时,同时使用两个CORDIC核与第(2)步同时进行或者使用一个CORDIC核复用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810120721.4A CN108228536B (zh) | 2018-02-07 | 2018-02-07 | 使用FPGA实现Hermitian矩阵分解的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810120721.4A CN108228536B (zh) | 2018-02-07 | 2018-02-07 | 使用FPGA实现Hermitian矩阵分解的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108228536A CN108228536A (zh) | 2018-06-29 |
CN108228536B true CN108228536B (zh) | 2021-03-23 |
Family
ID=62670960
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810120721.4A Active CN108228536B (zh) | 2018-02-07 | 2018-02-07 | 使用FPGA实现Hermitian矩阵分解的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108228536B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733627A (zh) * | 2018-04-30 | 2018-11-02 | 南京大学 | 一种正定矩阵Cholesky分解的FPGA实现方法 |
CN109740114B (zh) * | 2018-12-28 | 2023-07-28 | 中国航天科工集团八五一一研究所 | 基于fpga的实对称矩阵特征分解实时处理方法 |
CN110110285B (zh) * | 2019-04-10 | 2020-05-22 | 浙江大学 | 一种用于FPGA的并行Jacobi计算加速实现方法 |
CN112068798B (zh) * | 2020-08-14 | 2023-11-03 | 本源量子计算科技(合肥)股份有限公司 | 一种实现网络节点重要性排序的方法及装置 |
CN112214729A (zh) * | 2020-10-15 | 2021-01-12 | 上海无线电设备研究所 | 一种用于music算法特征值分解的多核并行处理方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7649955B2 (en) * | 2006-03-24 | 2010-01-19 | Intel Corporation | MIMO receiver and method for beamforming using CORDIC operations |
KR101084792B1 (ko) * | 2004-11-15 | 2011-11-21 | 콸콤 인코포레이티드 | 야코비 회전을 이용한 행렬의 고유값 분해 및 특이값 분해 |
CN103294649A (zh) * | 2013-05-23 | 2013-09-11 | 东南大学 | 双边cordic运算单元及基于该运算单元的并行雅克比埃尔米特阵特征分解方法和实现电路 |
CN103501212A (zh) * | 2013-09-30 | 2014-01-08 | 上海交通大学 | 一种mimo预编码技术的奇异值分解方法及装置 |
CN104793176A (zh) * | 2015-04-28 | 2015-07-22 | 周林 | 一种基于fpga的doa估计快速实现方法 |
CN105426345A (zh) * | 2015-12-25 | 2016-03-23 | 南京大学 | 一种矩阵求逆运算方法 |
CN106940689A (zh) * | 2017-03-07 | 2017-07-11 | 电子科技大学 | 基于Jacobi迭代算法的高精度矩阵特征值分解实现方法 |
-
2018
- 2018-02-07 CN CN201810120721.4A patent/CN108228536B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101084792B1 (ko) * | 2004-11-15 | 2011-11-21 | 콸콤 인코포레이티드 | 야코비 회전을 이용한 행렬의 고유값 분해 및 특이값 분해 |
US7649955B2 (en) * | 2006-03-24 | 2010-01-19 | Intel Corporation | MIMO receiver and method for beamforming using CORDIC operations |
CN103294649A (zh) * | 2013-05-23 | 2013-09-11 | 东南大学 | 双边cordic运算单元及基于该运算单元的并行雅克比埃尔米特阵特征分解方法和实现电路 |
CN103501212A (zh) * | 2013-09-30 | 2014-01-08 | 上海交通大学 | 一种mimo预编码技术的奇异值分解方法及装置 |
CN104793176A (zh) * | 2015-04-28 | 2015-07-22 | 周林 | 一种基于fpga的doa估计快速实现方法 |
CN105426345A (zh) * | 2015-12-25 | 2016-03-23 | 南京大学 | 一种矩阵求逆运算方法 |
CN106940689A (zh) * | 2017-03-07 | 2017-07-11 | 电子科技大学 | 基于Jacobi迭代算法的高精度矩阵特征值分解实现方法 |
Non-Patent Citations (3)
Title |
---|
Novel Field-Programmable Gate Array Architecture for Computing the Eigenvalue Decomposition of Para-Hermitian Polynomial Matrices;Server Kasap 等;《 IEEE Transactions on Very Large Scale Integration(VLSI)Systems》;20130331;第522-536页 * |
对称矩阵特征值分解的FPGA实现;刘永勤;《现代电子技术》;20170615;第40卷(第12期);第15-18页 * |
阵列测向算法的快速实现技术研究;黄令;《中国优秀硕士学位论文全文数据库 信息科技辑》;20160215;第I136-71页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108228536A (zh) | 2018-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108228536B (zh) | 使用FPGA实现Hermitian矩阵分解的方法 | |
CN108205702B (zh) | 一种多输入多输出矩阵卷积的并行处理方法 | |
US20210350204A1 (en) | Convolutional neural network accelerator | |
US20190187983A1 (en) | Neural processing accelerator | |
CN105930902A (zh) | 一种神经网络的处理方法、系统 | |
CN110244272B (zh) | 基于秩一去噪模型的波达方向估计方法 | |
CN108845828B (zh) | 一种协处理器、矩阵运算加速方法及系统 | |
CN103294649B (zh) | 并行双边coridc运算单元、基于该运算单元的并行雅可比运算的埃尔米特阵特征分解实现电路和实现方法 | |
Patel et al. | A low-complexity high-speed QR decomposition implementation for MIMO receivers | |
CN106526565A (zh) | 一种基于支持向量机的单比特空间谱估计方法 | |
CN103378888A (zh) | 下行波束赋形方法及设备 | |
US20220100815A1 (en) | Method of realizing accelerated parallel jacobi computing for fpga | |
WO2017032220A1 (zh) | 一种预编码矩阵确定方法及装置 | |
CN106960083A (zh) | 一种基于主瓣波束图优化的鲁棒自适应波束形成方法 | |
Wang et al. | Hardware efficient architectures of improved Jacobi method to solve the eigen problem | |
CN109190755B (zh) | 面向神经网络的矩阵转换装置及方法 | |
Ma et al. | Accelerating SVD computation on FPGAs for DSP systems | |
CN108008665B (zh) | 基于单片fpga的大规模圆阵实时波束形成器及波束形成计算方法 | |
CN114237548A (zh) | 基于非易失性存储器阵列的复数点乘运算的方法及系统 | |
Triantafyllou et al. | On rank and null space computation of the generalized Sylvester matrix | |
Gupta et al. | Hardware architecture for eigenvalues computation using the modified jacobi algorithm on fpga | |
Wang et al. | An efficient architecture for floating-point eigenvalue decomposition | |
WO2011161202A2 (en) | A parallel multi-pipeline systolic array for complex singular value decomposition on a multi-processor device | |
Chen et al. | Scalable and efficient parallel algorithms for Euclidean distance transform on the LARPBS model | |
CN113595681B (zh) | 基于Givens旋转的QR分解方法、系统、电路、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |