著录项信息
专利名称 | 用于自适应光学波前复原运算的脉动阵列处理方法及电路 |
申请号 | CN200710065047.6 | 申请日期 | 2007-04-02 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2007-09-19 | 公开/公告号 | CN101038582 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/16 | IPC分类号 | G;0;6;F;1;7;/;1;6;;;G;0;2;B;2;6;/;0;8查看分类表>
|
申请人 | 中国科学院光电技术研究所 | 申请人地址 | 四川省双流350信箱
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 中国科学院光电技术研究所 | 当前权利人 | 中国科学院光电技术研究所 |
发明人 | 郑文佳;王春鸿;姜文汉;李梅 |
代理机构 | 北京科迪生专利代理有限责任公司 | 代理人 | 贾玉忠;卢纪 |
摘要
用于实现自适应光学波前复原运算的脉动阵列处理方法:(1)波前复原矩阵数据变换,目的是将矩阵变换为两个独立的带状矩阵,以便脉动阵列在处理时达到最高的使用效率;(2)将变换后的矩阵元素以适当的顺序预存入存储器中,计算时按顺序输出;(3)安排合理的数据流组织方式,使数据在线性阵列中流动起来,计算得到的复原电压值从阵列左端顺序输出。实现该脉动阵列处理方法的电路由多个处理单元PE(processingelement)排列成线性结构,各个PE为一个乘法累加单元,同步工作,阵列中存在两条相向的数据流,具有数据通信局部化,数据流、控制流简单的特点,便于硬件实现。
1.一种用于自适应光学波前复原运算的脉动阵列处理方法,其特征在于步骤如下:
(1)波前复原矩阵数据变换:将m行×2n列的波前复原矩阵分为奇数行和偶数行两个独立的分块矩阵矢量积,若m不为偶数则补一行零;分块后的矩阵Do、De是m/2行×2n列的长方形矩阵;再将其分成m/2行×m/2列大小的块,若4n/m不为整数,则在第一列元素前补零使矩阵列的数目可以被其行数整除;然后分别将每个m/2行×m/2列的方形矩阵对角线以下的元素移到矩阵的上边,其余元素补零;最后将其分别变换为带宽m/2,大小为m/2+2n-1行×2n列的带状矩阵,记为A、B;
(2)数据预存:将所述的A、B矩阵中的元素交错存储在m/2个深度为m/2+4n-1存储器中,其中第x个存储器中第x个至第x+2n-1个存储单元顺序存储矩阵A、B的元素ax,1、bx,1、a(x+1),2、b(x+1),2、......a(x+2n-1),2n、b(x+2n-1),2n,其余存储单元为0;
(3)脉动阵列处理:阵列由m个处理单元排成线性,阵列启动后,每个处理单元在时钟的推动下同步工作,每个流水节拍完成从对应的存储器中取出数据与从单元左端流入的斜率数据相乘再累加到从单元右端流入的误差值部分和上,变换后的矩阵元素从存储器中开始自上而下流入阵列,阵列中存在两条相向的数据流:斜率值gi和误差值ei,斜率值gi从阵列左端流进,每个斜率值重复输入两次;误差值ei从右向左流动,每个节拍从阵列左端流出一个部分和,再经过m/2+1个流水节拍的延时又从右自左循环流入阵列参与运算,当最后一个斜率值进入阵列后,阵列最左端处理单元得到的误差值计算完成并向外输出,m个计算节拍计算结束。
2.一种用于自适应光学波前复原运算的脉动阵列处理电路,其特征在于:它由m/2个乘累加处理单元PE1-PEm/2、m/2个单口输出存储模块RAM1-RAMm/2、延迟寄存器组Delay和多路开关PW组成,乘累加处理单元PE1-PEm/2排列成线性阵列结构,每个处理单元的复原矩阵元素输入端口Din连接相同下标的RAM的数据输出口,位于左方的处理单元的斜率值输出端口Gout、误差值输入端口Ein分别连接位于右方的处理单元的斜率值输入端口Gin、误差值输出端口Eout,处理单元PE1的斜率值输入端口Gin与整个阵列的斜率数据输入端口G相接,处理单元PE1的误差值输出端口Eout接多路开关PW的输入端,多路开关PW的一个出口端连接延迟寄存器组Delay的输入端,Delay的输出端连接处理单元PEm/2的误差值输入端口Ein,多路开关PW的另一出口端为作整个阵列误差值输出端口E。
3.根据权利要求2所述的用于实现自适应光学波前复原运算的脉动阵列处理电路,其特征在于:所述的每个乘累加处理单元PE都由两个寄存器REG1和REG2、一个乘法器MUL和一个加法器ADD组成,乘累加处理单元PE的斜率值输入端口Gin作为第一个寄存器REG1的输入端,第一个寄存器REG1的输出端分别作为乘累加处理单元PE的误差值输出端口Gout和乘法器MUL的一个输入端,乘法器MUL的另一个输入端接乘累加处理单元PE的复原矩阵元素输入端口Din,乘法器MUL的输出端接加法器ADD的一个输入端,加法器ADD的另一个输入端作为乘累加处理单元PE的误差值输入端口Ein,加法器ADD的输出端接第二个寄存器REG2的输入端,第二个寄存器REG2的输出端作为乘累加处理单元PE的误差值输出端口Eout。
技术领域\n本发明涉及一种用于矩阵矢量积运算的双向流水脉动阵列电路,具体适用于自适应光学系统波前处理机的波前复原运算。\n背景技术\n在自适应光学系统中,为了有效校正大气湍流造成的动态波前误差,对波前处理机的计算能力和实时性要求非常高。通用的微型计算机已不能满足要求,必须根据自适应光学系统波前处理的特点研制专用的高速波前处理机。波前处理机的工作流程包括图像处理、斜率计算、波前复原、控制运算和D/A转换五个模块,波前复原运算是波前处理中运算量较大的部分,将子孔径波前斜率向量G乘波前复原矩阵D得到波前误差向量E,即\nE=DG (1)\n设子孔径数为n,驱动器数为m,则D是m×2n的矩阵,G有2n个分量,且一般有2n>m。\n目前处理这种矩阵运算的方法主要有两种:一种是可以将其矩阵分块运算,由多个DSP的多处理器系统来执行,在使用多处理器进行矩阵运算的方法中需要在处理器之间传达信息,从而易发生处理的延迟,且装置集成度不高,不易于大规模集成化;另一种是可以在FPGA构成的脉动阵列实现,可参考2004年3月发表在《光电工程》的一篇论文,题为《(用脉动阵列实现实时波前复原处理》,王彩霞著。这种方法是一种线性单向流水脉动阵列,该方法存在两个缺点:(1)只有斜率向量在阵列中流动,计算结果不能在阵列中流动,每个处理单元PE(processing element)计算完成后都需要向I/O口输出结果,因此该结构需要全局通信和公共数据总线,不是纯脉动阵列。当单元数增大时,将导致系统的结构复杂,且输出带宽易成为系统瓶颈,使得超大规模集成电路VLSI实现变得困难;(2)需要m个处理单元PE,因此PE数目较多,硬件实现的成本高。\n发明内容\n本发明的目的在于提供一种实现用于自适应光学波前复原运算的脉动阵列处理方法,该方法为双向流水纯脉动阵列处理方法,数据只有局部传输,无全局通信和公共数据总线,阵列结构简单,从而使处理速度提高且数据吞吐量增大。\n本发明的另一目的是提供一种用于自适应光学波前复原运算的脉动阵列处理电路,该电路能够使每个处理部件PE的效能达到最大,从而促进装置的小型化和低耗电化。\n本发明的技术方案如下:用于自适应光学波前复原运算的脉动阵列处理方法,其特点在于步骤如下:\n(1)波前复原矩阵数据变换:将m行×2n列的波前复原矩阵分为奇数行和偶数行两个独立的分块矩阵矢量积,若m不为偶数则补一行零;分块后的矩阵Do、De是m/2行×2n列的长方形矩阵;再将其分成m/2行×m/2列大小的块,若4n/m不为整数,则在第一列元素前补零使矩阵列的数目可以被其行数整除;然后分别将每个m/2行×m/2列的方形矩阵对角线以下的元素移到矩阵的上边,其余元素补零;最后将其分别变换为带宽m/2,大小为m/2+2n-1行×2n列的带状矩阵,记为A、B;\n(2)数据预存:将所述的A、B矩阵中的元素交错存储在m/2个深度为m/2+4n-1存储器中,其中第x个存储器中第x个至第x+2n-1个存储单元顺序存储矩阵A、B的元素ax,1、bx,1、a(x+1),2、b(x+1),2、......a(x+2n-1),2n、b(x+2n-1),2n,其余存储单元为0;\n(3)脉动阵列处理:阵列由m个处理单元排成线性,阵列启动后,每个处理单元在时钟的推动下同步工作,每个流水节拍完成从对应的存储器中取出数据与从单元左端流入的斜率数据相乘再累加到从单元右端流入的误差值部分和上,变换后的矩阵元素从存储器中开始自上而下流入阵列,阵列中存在两条相向的数据流:斜率值gi和误差值ei,斜率值gi有节奏地从阵列左端流进,每个斜率值重复输入两次;误差值ei从右向左流动,每个节拍从阵列左端流出一个部分和,再经过m/2+1个流水节拍的延时又从右自左循环流入阵列参与运算,当最后一个斜率值进入阵列后,阵列最左端处理单元得到的误差值计算完成并向外输出,m个计算节拍计算结束。\n用于自适应光学波前复原运算的脉动阵列处理电路,由m/2个乘累加处理单元PE1-PEm/2、m/2个单口输出存储模块RAM1-RAMm/2、延迟寄存器组Delay和多路开关PW组成,乘累加处理单元PE1-PEm/2排列成线性阵列结构,每个处理单元的复原矩阵元素输入端口Din连接相同下标的RAM的数据输出口,位于左方的处理单元的斜率值输出端口Gout、误差值输入端口Ein分别连接位于右方的处理单元的斜率值输入端口Gin、误差值输出端口Eout,处理单元PE1的斜率值输入端口Gin与整个阵列的斜率数据输入端口G相接,处理单元PE1的误差值输出端口Eout接多路开关PW的输入端,多路开关PW的一个出口端连接延迟寄存器组Delay的输入端,Delay的输出端连接处理单元PEm/2的误差值输入端口Ein,多路开关PW的另一出口端为作整个阵列误差值输出端口E。\n所述的每个乘累加处理单元PE都由两个寄存器REG1和REG2、一个乘法器MUL和一个加法器ADD组成,乘累加处理单元PE的斜率值输入端口Gin作为第一个寄存器REG1的输入端,第一个寄存器REG1的输出端分别作为乘累加处理单元PE的误差值输出端口Gout和乘法器MUL的一个输入端,乘法器MUL的另一个输入端接乘累加处理单元PE的复原矩阵元素输入端口Din,乘法器MUL的输出端接加法器ADD的一个输入端,加法器ADD的另一个输入端作为乘累加处理单元PE的误差值输入端口Ein,加法器ADD的输出端接第二个寄存器REG2的输入端,第二个寄存器REG2的输出端作为乘累加处理单元PE的误差值输出端口Eout。\n本发明与现有技术相比的优点在于:\n(1)本发明的自适应光学波前复原运算的脉动阵列处理方法是一种线性双向流水纯脉动阵列,实现流水线式的处理,其阵列中存在两条相向的数据流,且计算结果从阵列的一端顺序流出,因此数据只有局部传输,无全局通信和公共数据总线,阵列结构简单,便于硬件实现,可以使处理速度提高且数据吞吐量增大。\n(2)本发明的自适应光学波前复原运算的脉动阵列处理电路,通过将复原矩阵进行数据变换成带状矩阵,提高了阵列处理单元的利用效率,使每个PE的工作效率接近100%,从而促进了装置的小型化和低耗电化。\n(3)本发明的自适应光学波前复原运算的脉动阵列处理电路,通过分时使用阵列的处理单元来合理有效地减少品了处理单元的数目,PE数目为(m/2),减少了一半的处理单元,节省了硬件资源50%.\n(4)本发明的计算延时为m个流水节拍,实时性好。\n附图说明\n图1为本发明中的波前复原矩阵数据变换的示意图;\n图2为本发明中的乘累加处理单元PE的结构示意图;\n图3为本发明中的m单元n个子孔径自适应光学系统波前复原运算电路的硬件结构。\n具体实施方式\n下面结合图1至图3具体说明本实施方式。本发明的用于自适应光学系统波前复原脉动阵列处理方法,它通过以下步骤完成:\n(1)进行波前复原矩阵数据变换,将矩阵变换为两个独立的带状矩阵\n因为线性脉动阵列在处理带状矩阵矢量积时单元利用率最高,且可以在一个脉动阵列中通过时分使用阵列的处理单元同时完成两个独立的矩阵矢量积以使单元利用率提高一倍,故本发明将m行×2n列的波前复原矩阵分为奇数行和偶数行两个独立的分块矩阵矢量积,设m为偶(若m不为偶数则补一行零),则\n记为:Eo=DoG (2)\n记为:Ee=DeG (3)\n分块后的矩阵Do、De是(m/2)行×2n列的长方形矩阵,再将其分成若干个(m/2)行×(m/2)列大小的块,(若4n/m不为整数,则在第一列元素前补零使矩阵列的数目可以被其行数整除),然后将每个(m/2)行×(m/2)列的方形矩阵D对角线以下的元素移到矩阵的上边,最后将其变换为一个带宽(m/2),大小为((m/2)+2n-1)行×2n列的带状矩阵,记为A、B,图1给出了变换过程示意图。\n(2)将变换后的矩阵进行数据预存\n将上述A、B矩阵中的元素交错存储在(m/2)个深度为(m/2)+4n-1存储器中,在存放的过程中确定存放的位置和存放的顺序。其中第x个存储器中第x个至第x+2n-1个存储单元顺序存储矩阵A、B的元素ax,1、bx,1、a(x+1),2、b(x+1),2、......a(x+2n-1),2n、b(x+2n-1),2n,其余存储单元为0。\n(3)进行脉动阵列处理,使数据在线性阵列中流动起来,计算得到的波前得复原电压值从阵列左端顺序输出\n由m/2个处理单元排成线性阵列,阵列启动后,每个处理单元在时钟的推动下同步工作,每个流水节拍完成从对应的存储器中取出数据与从单元左端流入的斜率数据相乘再累加到从单元右端流入的误差值部分和上。变换后的矩阵元素从存储器中开始自上而下流入阵列,阵列中存在两条相向的数据流:斜率值gi和误差值ei,斜率值gi有节奏地从阵列左端流进,每个斜率值重复输入两次。误差值ei从右向左流动,每个节拍从阵列左端流出一个部分和,再经过m/2+1个流水节拍的延时又从右自左循环流入阵列参与运算,当最后一个斜率值进入阵列后,阵列最左端处理单元得到的误差值计算完成并向外输出,m个计算节拍计算结束。阵列工作时,只有相邻两个处理单元通信,没有全局通信。\n如图3所示,本发明的用于自适应光学波前复原运算的处理电路:由m/2个乘累加处理单元PE1-PEm/2、m/2个单口输出存储模块RAM1-RAMm/2、一个延迟寄存器组Delay和一个多路开关PW组成。\n如图2所示,每个乘累加处理单元PE都由两个寄存器REG1和REG2、一个乘法器MUL、一个加法器ADD组成。其中Gin、Gout:分别为斜率值的输入输出端口,中间进行了锁存;Ein和Eout:分别为误差值的输入输出端口,中间进行了锁存;Din:为波前复原矩阵元素的输入端口。乘法器MUL取寄存器REG1中的斜率数据与Din口输入的波前复原矩阵元素相乘,加法器ADD将乘法器MUL输出与Ein相加后,在时钟的锁存下到REG2做为Eout进行输出,它执行的就是一个乘累加运算。\n乘累加处理单元PE的脚Gin接寄存器REG1的输入端,寄存器REG1的输出端接乘累加处理单元PE的脚Gout和乘法器MUL的一个输入端,乘法器MUL的另一个输入端接乘累加处理单元PE的脚Din,乘法器MUL的输出端接加法器ADD的一个输入端,加法器ADD的另一个输入端接乘累加处理单元PE的脚Ein,加法器ADD的输出端接寄存器REG2的输入端,寄存器REG2的输出端接乘累加处理单元的脚Eout。\n在图3中乘累加处理单元PE1-PEm/2排列成线性阵列结构,只有相邻两个处理单元之间有数据交换,即具有数据通信局部性的特点。每个处理单元的脚Din连接相同下标的RAM的数据输出口,位于左方的处理单元的脚Gout、脚Ein分别连接位于右方的处理单元的脚Gin、脚Eout,处理单元PE1的脚Gin接阵列的斜率数据输入端口,处理单元PE1的脚Gin接阵列的斜率值输入端口G,处理单元PE1的脚Eout接多路开关PW的输入,多路开关PW的一个出口端连接延迟寄存器组Delay的输入端,Delay的输出端连接处理单元PEm/2的脚Ein,多路开关PW的另一出口端接阵列误差值输出端口E。\n每个PE在时钟的驱动下同步工作。RAM1-RAM(m/2)的存储单元数为m/2+4n-1。矩阵A、B离线变换出,RAMx中第x个至第x+2n-1个存储单元交错存储矩阵A、B的元素:ax,1、bx,1、a(x+1),2、b(x+1),2、......a(x+2n-1),2n、b(x+2n-1),2n,其余存储单元为0。运算时按节拍顺序输出。Delay为深度为(m/2)+1的延迟移位寄存器组。\n本发明电路的工作原理为:\n(1)在电路开始工作前,将变换好的矩阵A、B中的元素交替存储在RAM1-RAMm/2中,寄存器组Delay的各存储单元和各个PE中的寄存器初值都为零。\n(2)从第一个斜率值输入,启动电路为时间节拍的零点.各个PE在时钟的推动下同步工作,在第1拍斜率从Gin读入斜率值存入REG1,第2拍取REG1中的斜率值与Din口送入的复原矩阵元素相乘,第3拍加法器取乘法结果与从Ein口读入的数据相加,第4拍加法结果在锁存到REG2作为Eout进行输出,第5拍延迟寄存器组Delay单元中的数据从左向右移动一个存储单元,这样就完成了一次乘累加操作,记为一个流水节拍,包括5个时钟节拍。每当一个误差值输入阵列,就启动阵列运行一个流水节拍,每一个流水节拍各个执行相同的操作。阵列中存在两条相向的数据流:斜率值gi和误差值ei,,斜率值gi从阵列左端顺序输入,每个斜率值重复输入两次,分别参加奇数行、偶数行两个独立的矩阵矢量积运算,斜率值每个流水节拍在阵列中从左向右流经一个PE;误差值ei每个流水节拍在阵列中从右向左流经一个PE。RAM每个流水节拍送入一个数据。在前4n个流水节拍多路开关PW控制从PE1流出的误差值输入延迟寄存器组后再从阵列最右端循环流入阵列参与运算,在第4n+1个流水节拍,即最后一个斜率值g2n流入阵列后,多路开关PW控制将计算完成的误差值e1、e2、e3......输出阵列,每个流水节拍输出一个误差值,在最后一个斜率值送入阵列后m个流水节拍计算结束。
法律信息
- 2015-05-20
未缴年费专利权终止
IPC(主分类): G06F 17/16
专利号: ZL 200710065047.6
申请日: 2007.04.02
授权公告日: 2010.05.12
- 2010-05-12
- 2008-11-19
- 2007-09-19
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
1998-05-20
|
1996-03-07
| | |
2
| |
2005-07-27
|
2003-04-01
| | |
3
| | 暂无 |
1996-02-23
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |