CN103678257B - 基于fpga的正定矩阵浮点求逆器及其求逆方法 - Google Patents
基于fpga的正定矩阵浮点求逆器及其求逆方法 Download PDFInfo
- Publication number
- CN103678257B CN103678257B CN201310711756.2A CN201310711756A CN103678257B CN 103678257 B CN103678257 B CN 103678257B CN 201310711756 A CN201310711756 A CN 201310711756A CN 103678257 B CN103678257 B CN 103678257B
- Authority
- CN
- China
- Prior art keywords
- matrix
- computing
- module
- data
- signal
- 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
Abstract
一种基于FPGA的正定矩阵浮点求逆器及其求逆方法,包括过程控制模块、运算模块和存储模块,所述的过程控制模块分别与运算模块、存储模块连接,所述的运算模块与存储模块连接;所述的过程控制模块,用于生成信号控制运算模块和存储模块的有序运行;所述的运算模块,用于进行矩阵运算;所述的存储模块,用于缓存待运算矩阵的数据和结果矩阵的数据,并提供系统总线访问接口。本发明可以方便快捷地在FPGA的芯片上实现正定矩阵浮点求逆器,在保证精度的前提下,提高矩阵求逆速度。
Description
技术领域
本发明属于高性能计算领域,具体是一种基于FPGA的正定矩阵浮点求逆器及其求逆方法。
背景技术
矩阵运算是科学计算中的基本操作,在工业控制、模式识别、数字信号处理等领域中都广泛存在,特别在预测控制二次规划求解过程中,正定矩阵求逆成为计算过程中最为耗时的关键操作,严重影响控制的整体性能。目前大部分矩阵求逆都是利用软件来实现,但是随着矩阵维数的增长,软件处理的速度也会大幅度变慢。而且由于不能将计算软件嵌入到实时性要求高的嵌入式电子系统中,因此在电子系统中无法计算矩阵求逆或者无法满足实时性要求的缺陷也越来越明显。
近年来飞速发展的FPGA技术,给矩阵运算的高速实时运行创造了机会。FPGA技术已经从最初只能面向纯逻辑代替应用转变为能够面向复杂计算的密集型应用。最新的FPGA器件,不仅逻辑资源门极其丰富,而且还包括大量面向高计算性能的DSP单元、块状RAM(Block RAM,BRAM)等。同时为方便FPGA的调试,各FPGA厂商还提供了各种片内逻辑分析工具(如Xilinx公司的ChipScope),在软硬件上均保证了FPGA实现高性能矩阵计算的可能性。矩阵运算的硬件化可以充分利用硬件并行性的特点,在很大程度上提高矩阵计算效率。
下面介绍一下FPGA的相关背景技术,此背景技术不属于本正定矩阵浮点求逆器所包含的内容,可以在相关厂商的网站上或技术资料中可以找到。
目前FPGA拥有众多的系列产品,主要生产厂商有Xilinx、Altera、Actel、Lattice和QuickLogic等公司。尽管这些厂商生产的FPGA品种和型号繁多,但其原理和内部基本结构是相同的,都是由细粒度的可编程逻辑单元(Configurable LogicBlock,CLB)、可编程连线资源(Programmable Interconnect,PI)及可编程输入/输出单元(Input/Output Block,IOB)组成。其中CLB是FPGA的基本逻辑单元,它提供了用户所需要的逻辑功能,通常规则的排成一个阵列,散布于整个芯片;IOB完成芯片内部逻辑和外部封装脚的接口,它可编程为输入、输出、和双向I/O口三种方式,通常排列与芯片的四周;PI包括各种长度的连接线段和一些可编程的连接开关,它们将各个可编程逻辑块或输入/输入连接起来,构成特定的功能电路。以Xilinx公司的FPGA为例,其结构示意图如图1。其中BRAM是BLOCK-RAM的简称,为芯片提供存储单元;DCM是Xilinx FPGA独有的时钟管理单元,可以实现时钟频率综合、相位偏移等功能;每个CLB单元的逻辑功能由一小块称为查找表(Look-Up Table,LUT)的存储单元指定。Xilinx Virtex-4FPGA中每个CLB包含两个Slice。Slice内部包含2个LUT、2个触发器、多路开关及进位链等资源。CLB内部的两个Slice是相互独立的,各自分别连接开关阵列(Switch Matrix),以便与通用布线阵列(General routing Matrix)相连。
采用FPGA进行设计不是以功能电路为基础分布式系统综合技术,而是以功能IP核(Intellectual Property core)为基础的系统固件和电路综合技术。IP核是为了实现某种特定功能而利用FPGA中的CLB、IOB以及PI逻辑电路资源构建成的特殊电路。各个厂商为了便于用户进行开发,都会提供一些免费的IP核。而出厂前就已经在芯片中预先设置好的IP核称为硬核。如在本正定矩阵浮点求逆器中的DSP即为Xilinx Virtex-4提供的硬核。
通过查阅相关文献,目前使用FPGA实现矩阵求逆方面已经有些成果,如李涛,张忠培的矩阵求逆的FPGA实现,将矩阵先采用LU分解设计,再分别求上下三角矩阵的求逆,但该方法逻辑过于复杂,资源消耗太高,计算时间较长,并且对于芯片要求也很高,不利于实际应用。
发明内容
为克服上述现有技术的不足,本发明提供一种在FPGA芯片上使用的正定矩阵浮点求逆器及求逆方法,在尽可能减少硬件资源消耗的情况下,采用逻辑相对简单的算法和并行流水线结构在保证计算精度的前提下能够大大提高计算速度。
本发明的技术解决方案如下:
一种基于FPGA的正定矩阵浮点求逆器,其特点在于,包括过程控制模块、运算模块和存储模块,所述的过程控制模块分别与运算模块、存储模块连接,所述的运算模块与存储模块连接;
所述的过程控制模块,用于生成信号控制运算模块和存储模块的有序运行;
所述的运算模块,用于进行矩阵运算;
所述的存储模块,用于缓存待运算矩阵的数据和结果矩阵的数据,并提供系统总线访问接口。
一种基于FPGA的正定矩阵浮点求逆方法,其特点在于,该方法包括如下步骤:
步骤一,将待运算的数据写入存储模块;
步骤二,系统总线向过程控制模块提供矩阵维数信息和求逆使能信号,过程控制模块对内部寄存器进行初始化,设置循环计数器K=1,状态寄存器Step=1;
步骤三,过程控制模块开始运行第一步状态,启动运算模块的除法器,计算待求逆矩阵第一个数据a11的倒数
步骤四,在过程控制模块提供的控制信号下运算模块按照求逆公式的分解步骤依次进行矩阵减、乘,倒数运算,每个步骤对应一个状态,各状态之间的转换由状态寄存器统一管理,并将运算结果写入存储模块。
步骤五,在所有状态顺序执行一趟后K值加1;
步骤六,在过程控制模块中判断循环计数器K值是否等于矩阵维数减1,如果等于转入步骤七,否则返回步骤四继续迭代求解;
步骤七,过程控制模块生成求逆结束信号,等待总线设备从存储模块中读出运算结果。
1、正定矩阵求逆算法
本发明正定矩阵浮点求逆器运行过程基于以下循环算法:
假设n维矩阵 其中A11是(n-1)×(n-1)维,是(n-1)×1维,A22是标量。假设 则有推导可得到: 如果已知通过递推方式就能得到矩阵A的逆。
本正定矩阵浮点求逆器中将递推公式分解为若干步骤,每步中分别进行相应的矩阵减乘运算以及标量的倒数运算,其中循环次数由待求矩阵的维数决定。
2、正定矩阵浮点求逆器的整体结构
2.1正定矩阵浮点求逆器各子模块的主要功能
过程控制模块,主要用于生成过程控制信号控制运算模块和存储模块的有序运行。过程控制模块与系统总线相连在求逆运算开始前接收待求矩阵维数信息、待求矩阵数据存放结束信号以及求逆使能信号,在求逆运算结束后给系统总线发送求逆结束信号,通知系统总线从存储模块读取运算结果。其中维数信息为8bit的数字信号,待求矩阵数据存放结束信号、求逆使能信号和求逆结束信号均为脉冲长度为1个时钟周期的高电平信号;在求逆运算过程中,过程控制模块与存储模块相连提供存储器操作地址选择信号,与运算模块相连提供运算器使能信号、待运算数据的初始地址,并在运算结束后接收运算结束信号,其中存储器操作地址选择信号为1~3bit的数字信号,待运算数据的初始地址为11bit的数字信号,运算器使能信号和运算结束信号均为脉冲长度为1个时钟周期的高电平信号。
运算模块,主要进行相应的矩阵运算,包括矩阵相减、矩阵相乘、矩阵点乘以及标量倒数运算。运算模块与过程控制模块相连在运算开始时接收待运算矩阵的初始地址、待运算矩阵的维数信息以及运算使能信号,在运算结束后给过程控制模块提供运算结束信号,其中待运算矩阵的维数信息是8bit的数字信号,待运算矩阵的初始地址为11bit的数字信号,运算使能信号和运算结束信号均为脉冲长度为1个时钟周期的高电平信号;运算模块与存储模块相连提供待运算矩阵数据的存放地址、运算结果数据、运算结果数据的存放地址和运算结果数据的写使能信号,接收存储模块送出的待运算矩阵数据,其中数据均为32bit的数字信号,地址信号均为11bit的数字信号。
存储模块,主要用于缓存待运算矩阵的数据和结果矩阵的数据,并提供总线访问接口,允许其它设备通过总线与本正定矩阵浮点求逆器交换数据。存储模块与总线相连在求逆运算开始之前接收待求逆矩阵数据,在求逆结束之后由总线送出结果矩阵数据;存储模块与过程控制模块相连接受存储器操作地址选择信号;存储模块与运算模块相连提供待运算矩阵数据,接收待运算矩阵数据的存放地址、结果数据、结果数据存放地址和结果数据写使能信号。
本正定矩阵浮点求逆器作为一个总线设备连接在系统总线上,各模块与系统总线采用统一时钟频率,由总线提供待运算矩阵的数据和维数信息,由本矩阵求逆器完成矩阵求逆计算过程,提升了系统处理矩阵求逆运算的性能。
2.2正定矩阵浮点求逆器各子模块内部结构
2.2.1过程控制模块
所述的过程控制模块主要包括有限状态机和多路选通器阵列两个部分。有限状态机是指包含有限个状态以及在这些状态之间转移和动作的时序逻辑电路。有限状态机内含有一组具有“记忆”功能的寄存器,这些寄存器的功能是记忆有限状态机的内部状态,常被称为状态寄存器。在有限状态机中,状态寄存器的下一个状态不仅与输入信号有关,而且还与该寄存器的当前状态有关,因此有限状态机又可以认为是组合逻辑和寄存器逻辑的一种组合。其中,寄存器逻辑的功能是存储有限状态机的内部状态;而组合逻辑又可以分为状态逻辑和输出逻辑两部分,状态逻辑的功能是确定有限状态机的下一个状态,输出逻辑的功能是确定有限状态机的输出。本模块中根据上述求逆算法将整个求逆器的运行过程分解成有限个步骤,每个步骤对应于一个状态,每一个状态中执行一种或多种矩阵运算,各状态之间的跳转由状态寄存器统一协调,循环迭代次数由循环计数器管理,这些所有的状态以及各个状态中的动作和转移构成了有限状态机。
多路选通器是指在多路数据传送过程中,能够根据需要将其中任意一路选出来的电路,本模块中多路选通器主要包括运算器操作数选择器、存储器操作地址选择器以及存储器写入数据选择器。运算器操作数选择器决定哪块存储器的输出数据送入该运算器,其输入端与有限状态机相连接收不同状态下的选择信号,与存储模块相连接收待运算的数据,选择信号为1~3bit的数字信号,输出端与各个运算器的输入端相连,信号为32bit的数字信号;存储器操作地址选择器决定何种类型运算的运算数据地址送入该存储模块,其输入端与有限状态机相连获取不同状态下的选择信号,选择信号为1~3bit的数字信号,与运算模块相连接收待运算矩阵数据和结果矩阵数据的地址,地址信号为11bit的数字信号,输出端与各个存储单元输入地址ADDR相连,地址信号为11bit的数字信号;存储器写入数据选择器决定何种类型运算的运算结果送入该存储模块,其输入端与有限状态机相连获取不同状态下的选择信号,选择信号为1~3bit的数字信号,与运算模块相连接收运算结果矩阵数据,数据为32bit的数字信号,输出端与各存储单元输入数据DIN端口,信号为32bit的数字信号。
另外有限状态机还与系统总线相连传输待求矩阵的维数信息、求逆使能信号以及求逆结束信号,其中维数信息为8bit的数字信号,求逆使能信号和求逆结束信号均为脉冲长度为1个时钟周期的高电平信号;与运算模块相连传输运算器使能信号、待运算数据的初始地址以及运算结束信号,其中初始地址为11bit的数字信号,运算器使能信号和运算结束信号均为脉冲长度为1个时钟周期的高电平信号。有限状态机在每一个状态初始时刻给存储模块送入存储器操作地址选择信号、存储器写入数据选择信号,给运算模块送入运算器使能信号、待运算数据的初始存放地址和运算器操作数选择信号后开始等待运算结束。运算器从存储器中读取待运算数据,进行相应的矩阵运算,并将运算结果存放到对应的存储器中后给有限状态机提供一个运算结束信号。有限状态机接收到结束信号后状态寄存器转到下一个状态,有限状态机开始生成下一个状态的控制信号。
2.2.2存储模块
所述的存储模块包括:待运算矩阵存储单元、中间运算结果矩阵存储单元、结果矩阵存储单元、总线数据接口和内部数据接口,其中:待运算矩阵存储单元与总线接口相连接传输待运算的数据、待运算数据存放地址,与内部数据接口相连传输待运算的数据和地址信息,与有限状态机相连获取该存储单元操作地址选择信号;中间运算结果矩阵存储单元与内部数据接口相连传输中间运算以及中间运算结果的数据和地址信息,与有限状态机相连获取该存储单元操作地址选择信号以及写入数据选择信号;结果矩阵存储单元与总线接口相连接传输求逆结果矩阵、读数据存放地址,与内部数据接口相连接收求逆运算结果的数据和地址信息,与有限状态机相连获取该存储单元操作地址选择信号以及写入数据选择信号;内部数据总线与运算模块相连传输每次运算的数据,读、写数据的地址以及运算结果写使能信号,其中内部数据接口中数据信号宽度为32bit,地址信号为11bit,运算。总线数据接口中数据信号为32bit,地址信号为12bit,经地址译码后连接至待运算矩阵存储单元和结果矩阵存储单元。
2.2.3运算模块
所述运算模块包括矩阵减法器、矩阵乘法器1、矩阵乘法器2和除法运算器四个部分,主要完成矩阵的基本运算。每部分分别由运算器和运算控制器组成,其中运算器由DSP运算单元生成,各运算器的操作数均为32bit浮点数。各子模块内部结构和输入输出信号:
(1)矩阵减法器
所述矩阵减法器由减法器和减法控制器两部分组成,主要实现相同维数矩阵间的减法。其连接关系为:减法控制器与有限状态机相连传输减法使能信号、矩阵维数信息、运算数据初始存放地址以及减法完成信号。其中减法使能信号和减法完成信号均是脉冲长度为1个时钟周期的高电平信号,使能信号激励矩阵减法器开始运行,完成信号表明本次矩阵减法完成;减法控制器与存储模块相连传输运算数据地址信息、结果数据存放地址信息和运算结果有效信号。其中地址信息为11bit数字信号,结果有效信号为高电平脉冲信号,脉冲长度的周期数等于矩阵元素的个数,该高电平用来通知存储模块保存当前减法器的输出结果。该信号由减法控制器内部延迟器产生,延时长度等于完成一次浮点减法需要的时间,一般为3~5个时钟周期;浮点减法器的输入部分与存储模块相连读取参加运算的数据,数据格式为2路32bit数字信号,浮点减法器的输出部分与存储模块相连将结果写入存储器,数字格式仍为32bit数字信号。
(2)矩阵乘法器1
所述矩阵乘法器1主要由乘法器和乘法控制器两大部分组成,其内部结构和信号流向如图3所述。乘法器执行矩阵数据的乘法和累加操作,该模块包括:浮点乘法器、浮点-定点转换器、定点累加器和定点-浮点转换器,其中:浮点乘法器与存储模块相连传输待运算数据信号,数字格式为2路32bit数字信号;浮点乘法器与浮点-定点转换器相连传输浮点乘法信号,数字格式为32bit数字信号;浮点-定点转换器与定点累加器相连传输定点乘法信号,数字格式为48bit数字信号;定点累加器与乘法控制器模块相连接收累加器清零信号,与定点-浮点转换器相连传输定点累加信号,数字格式为48bit数字信号;定点-浮点转换器与存储模块相连传输运算结果信号,数字格式为32bit数字信号。
乘法控制器与有限状态机相连传输乘法使能信号、矩阵维数信息、运算数据初始存放地址以及乘法完成信号,其中乘法使能信号和乘法完成信号均是脉冲长度为1个时钟周期的高电平信号,使能信号激励乘法器开始运行,完成信号表明本次矩阵乘法完成;乘法控制器与存储模块相连传输运算数据地址信息、结果矩阵存放地址信息和结果有效信号。其中地址信息为11bit的数字信号,结果有效信号为周期性脉冲信号,高电平表示结果有效,低电平表示结果无效,该信号有效时存储模块将乘法器的输出保存至结果矩阵的地址控制信号所表示的位置,无效时存储模块无任何操作。该信号由乘法控制器内部周期计数器和延迟器产生。其计数器计数周期等于矩阵乘法运算中参与内积的向量长度,每个计数周期结束后产生1个时钟周期长度的高电平脉冲信号。计数器在矩阵乘法运算开始时开始计数,运算结束时停止计数。其延时长度等于矩阵乘法器1的整体流水线延迟。乘法控制器与定点累加器相连传输定点累加器清零信号,累加器清零信号为周期性脉冲信号,脉冲长度为1个时钟周期。为高电平时,累加器中保存的数值在下个时钟上升沿清零;信号为低电平时,累加器在下个时钟上升沿进行累加运算。该信号由乘法控制模块内部周期计数器和延时器产生。其计数器计数周期等于矩阵乘法运算中参与内积的向量长度,每个周期结束后产生1个时钟周期长度的脉冲信号。计数器在矩阵乘法运算开始时开始计数,运算结束时停止计数。上述脉冲信号经过延时器后生成累加器清零信号,其延时长度等于运算模块中从浮点乘法器输入到累加器输出之间的流水线延迟。本正定矩阵浮点求逆器中的矩阵乘法器1采用流水线结构,吞吐率最高可达1.0,即平均1个时钟周期完成一次乘法累加运算,大大提高了计算效率。
(3)矩阵乘法器2
所述矩阵乘法器2由乘法器和乘法控制器两部分组成,主要完成点与矩阵相乘。在矩阵点乘过程中,乘法器的一个输入一直为常量,另一个输入依次是矩阵的元素。乘法控制器只需要在每个周期将矩阵数据的地址发送给存储模块,乘法器从存储模块读入1个数据即可进行计算。乘法器完成2个32bit浮点数相乘后直接将结果写入存储模块中,不需要累加过程。内部连接关系如下:乘法控制器与有限状态机相连传输乘法使能信号、矩阵维数信息、运算数据初始存放地址以及乘法完成信号。其中乘法使能信号和乘法完成信号均是脉冲长度为1个时钟周期的高电平信号,使能信号激励乘法器开始运行,完成信号表明本次点乘运算完成;乘法控制器与存储模块相连传输运算数据地址信息、结果数据存放地址信息和运算结果有效信号。其中地址信息为11bit数字信号,结果有效信号为高电平脉冲信号,脉冲长度的周期数等于待乘矩阵元素的个数,该高电平用来通知存储模块保存当前乘法器的输出结果。该信号由乘法控制器内部延迟器产生,延时长度等于完成一次浮点乘法需要的时间,一般为4个时钟周期;乘法器的输入部分与存储模块相连读取参加运算的数据,数据格式为2路32bit数字信号,乘法器的输出部分与存储模块相连将结果写入存储器,数字格式仍为32bit数字信号。
(4)除法运算器
所述除法运算器主要完成数据的倒数运算,由除法器和除法控制器两部分组成。除法器的被除数部分输入量一直1,除数部分输入待求倒数的数据。其内部连接关系如下:除法控制器与有限状态机相连传输除法使能信号、除数存放地址以及除法完成信号。其中除法使能信号和除法完成信号均是脉冲长度为1个时钟周期的高电平信号,使能信号激励除法器开始运行,完成信号表明本次除法完成;除法控制器与存储模块相连传输除数存放地址信息、结果数据存放地址信息和运算结果有效信号。其中地址信息为11bit数字信号,结果有效信号为脉冲长度为1个时钟周期的高电平信号,该高电平用来通知存储模块保存当前除法器的输出结果。该信号由除法控制器内部延迟器产生,延时长度等于完成一次浮点除法需要的时间,一般为10~20个时钟周期;除法器的输入部分与存储模块相连读取除数,数据格式为32bit数字信号,除法器的输出部分与存储模块相连将结果写入存储器,数字格式仍为32bit数字信号。
与现有技术相比,本发明在保证计算精度的前提下能够大大提高计算速度。
附图说明
图1Xilinx的FPGA芯片内部结构示意图;
图2为本正定矩阵浮点求逆器整体内部结构和各模块输入输出信号流向图;
图3为运算模块中矩阵乘法器1子模块的内部结构和信号流向图;
图4为正定矩阵求逆器的运行流程图。
具体实施方式
下面结合实施例和附图对本发明作进一步说明,但不应以此限制本发明的保护范围。
本发明正定矩阵浮点求逆器主要由过程控制模块、运算模块和储存模块三个部分组成,其整体结构和内部信号流向如图2所示。采用Xilinx的Virtex IV(XC4VFX12-10-ffg668)芯片实现了正定矩阵浮点求逆器,各模块的具体实现过程是:
1、过程控制模块
本实施例中过程控制模块由XC4VFX12-10-ffg668芯片内部的LUTs(查找表)和FF(触发器)等数字逻辑电路实现如有限状态机、多路选通器、计数器等基本单元。多路选通器主要包括运算器操作数选择器、存储器操作地址选择器以及存储器写入数据选择器,其中运算器操作数选择器输入端与有限状态机相连,输出端与运算器输入端相连;存储器操作地址选择器输入端与有限状态机相连,输出端与存储器输入地址ADDR相连;存储器写入数据选择器输入端与有限状态机相连,输出端与存储器输入数据相连。有限状态机输入端与总线接口相连,输出端与多路选通器、运算模块、总线接口相连。
2、存储模块
本实施例中存储模块由XC4VFX12-10-ffg668芯片的Block-RAM实现。在Xilinx FPGA中,块RAM按照列来排列,这样保证了每个CLB单元周围都有比较接近的块RAM用于存储和交换数据。块RAM几乎是FPGA器件中除了逻辑资源之外用的最多的功能块,Xilinx的主流FPGA芯片内部都集成了数量不等的块RAM硬核资源,速度可以达到数百兆赫兹,不会占用额外的CLB资源,而且可以在IP核生成器中灵活地对RAM进行配置,构成单端口RAM、真正双口RAM、ROM(在RAM中存入初值)和FIFO等应用模式。本实施例中共应用4个4KB大小的内存模块,分别标号为0、1、2、3,均采用真正双端口模式。双端口模式的存储器有两个独立的读写通道,分别记为A、B。以端口A为例,进行读操作时WEA为低电平,ADRRA为要读数据的地址;进行写操作时WEA信号为高,DINA为要写入的数据,ADRRA为数据要写入的地址。A、B两个端口支持读写操作的任何组合:两个同时读操作、两个端口同时写操作(不同的地址)或两个不同的时钟下一个端口执行写操作,另一个端口执行读操作。这样每个存储单元就有两个相对独立的读写通道,但值得注意的是这两个通道不可以在同一时刻对同一个地址进行不同的操作。本实施例中存储器0、1的通道A分别与PLB总线接口相连,其余通道与内部数据接口相连。在求逆运算开始之前,由总线数据接口通过存储器0的A通道将待求逆矩阵的数据写入存储器0。计算过程中,该模块与内部数据接口相连,将待运算数据送入运算模块,并将计算的中间结果存入预先设定的存储地址中。矩阵逆的最终结果通过存储器1的B通道写入存储器1中,待逆运算全部结束,通过存储器1的A通道由总线数据接口将结果全部读出。
3、运算模块
本实施例中运算模块由XC4VFX12-10-ffg668芯片的DSP48运算单元实现。DSP48作为FPGA内高性能加速单元,具有极高的性能、较低的功耗和很高的经济性。每个DSP48单元都包含两个DSP slices来构成通用的粗精度DSP架构基础,其中每个DSP Slices具有一个后接多路复用器的2输入乘法器和一个3输入加法/减法器。乘法器接收两个18位的2进制补码操作数,产生一个36位的2进制补码结果,该结果可符号扩展至48位,并且可以反馈至加法/减法器。加法/减法器接受3个48位的2进制补码操作数,产生一个48位的2进制补码结果。进行级联后还可以支持更高级别的DSP功能。DPS48可以根据用户的定制完成浮点数的乘法、加减法、除法、开方、比较等基本运算,还能实现浮点到定点、定点到浮点之间的转换。在定制浮点处理单元时还需要制定输出延迟、数据率,输出信号的选择等时序和引脚参数。
本实施例中使用DSP48单元实现运算器部分,如浮点减法器、浮点乘法器、定点-浮点转换器、定点累加器、浮点-定点转换器、浮点除法器等基本单元。运算控制器部分由FPGA芯片内部数字逻辑电路实现,如计数器、延迟器等基本单元。
矩阵减法器中的减法器部分由浮点减法器构成,输入与输出端均与存储模块相连,减法控制器部分输入端与过程控制模块相连,输出端与存储模块和过程控制模块相连;矩阵乘法器1中乘法器部分由浮点乘法器、定点-浮点转换器、定点累加器、浮点-定点转换器构成。浮点乘法器输入端与存储模块相连传输待运算数据信号,浮点乘法器的输出端与浮点-定点转换器输入端相连,浮点-定点转换器输出端与定点累加器输入端相连,定点累加器输出端与定点-浮点转换器输入端相连传,定点-浮点转换器输出端与存储模块相连传输运算结果信号。另外定点累加器输入端还与乘法控制器相连接收累加器清零信号。乘法控制器输入端与过程控制模块相连,输出端与存储模块和过程控制模块相连;矩阵乘法器2中乘法器部分由浮点乘法器构成,其输入与输出端均与存储模块相连,乘法控制器输入端与过程控制模块相连,输出端与存储模块和过程控制模块相连;除法运算器中除法器部分由浮点除法器构成,其输入与输出端均与存储模块相连,除法控制器输入端与过程控制模块相连,输出端与存储模块和过程控制模块相连。
本实施例中运算模块中各个运算子模块之间是相互独立的,没有任何连接关系,它们的运行顺序由过程控制模块中的有限状态机统一控制。
以上模块采用VLOG语言定制实现。整个正定矩阵求逆器的时序操作过程如图4所示:
(1)复位后正定矩阵求逆器处于空闲状态;
(2)总线设备首先将待运算数据写入存储模块;
(3)将矩阵维数和求逆使能信号发送给过程控制模块,过程控制模块对内部寄存器进行初始化,设置循环计数器K=1,状态寄存器Step=0;
(4)过程控制模块开始运行第一步状态,启动运算模块的除法运算器,计算待求逆矩阵第一个数据a11的倒数
(5)在过程控制模块提供的控制信号下运算模块按照求逆公式的分解步骤依次进行矩阵减、乘,倒数运算,每个步骤对应一个状态,各状态之间的转换由状态寄存器统一管理,并将运算结果写入存储模块。所有状态顺序执行一趟后K值加1;
(6)判断循环计数器K是否等于矩阵维数减1,如果等于转入步骤7,否则跳入步骤5继续迭代求解;
(7)过程控制模块生成求逆结束信号,等待总线设备从存储模块中读出运算结果。
其中,运算模块的工作过程如下:
1)由过程控制模块给出运算使能信号,运算开始运行;
2)运算控制模块不断计算出待运算数据的存放地址送入存储模块,存储模块将运算数据送入运算器进行计算;
3)当一组数据计算完毕以后,运算控制模块提供给存储模块结果数据存放地址和写使能信号。
4)当所有组数据都计算结束后,运算控制模块输出运算结束信号给过程控制模块。
以10*10的正定矩阵求逆测试本正定矩阵浮点求逆器的性能,矩阵数据随机产生。采用正定矩阵浮点求逆器计算仅需要2666个时钟周期,并且精度可达到10-4。
经试验表明,在FPGA芯片上使用本发明正定矩阵浮点求逆器,与传统的使用CPU计算矩阵求逆的方法相比,大大提高了矩阵计算速度,并且精度可达10-4。
Claims (2)
1.一种基于FPGA的正定矩阵浮点求逆器,其特征在于,包括过程控制模块、运算模块和存储模块,所述的过程控制模块分别与运算模块、存储模块连接,所述的运算模块与存储模块连接;
所述的过程控制模块,用于生成信号控制运算模块和存储模块的有序运行;
所述的运算模块,用于进行矩阵运算;
所述的存储模块,用于缓存待运算矩阵的数据和结果矩阵的数据,并提供系统总线访问接口;
所述的过程控制模块与系统总线相连,在求逆运算开始前接收待求矩阵维数信息、待求矩阵数据存放结束信号以及求逆使能信号,在求逆运算结束后给系统总线发送求逆结束信号,通知系统总线从存储模块读取运算结果,在求逆运算过程中,向存储模块提供存储器操作地址选择信号,向运算模块提供运算器使能信号、待运算数据的初始地址,并在运算结束后接收运算模块发出的运算结束信号;
所述的运算模块,在运算开始时接收过程控制模块发出的待运算矩阵的初始地址、待运算矩阵的维数信息以及运算使能信号,在运算结束后向过程控制模块发送运算结束信号;向存储模块提供待运算矩阵数据的存放地址、运算结果数据、运算结果数据的存放地址和运算结果数据的写使能信号,接收存储模块送出的待运算矩阵数据;
所述的存储模块,在求逆运算开始之前接收总线传输的待求逆的矩阵数据,在求逆结束之后缓存结果矩阵数据;接收过程控制模块发出的存储器操作地址选择信号;接收运算模块发出的待运算矩阵数据的存放地址、结果数据、结果数据存放地址和结果数据写使能信号,提供待运算矩阵数据。
2.一种基于FPGA的正定矩阵浮点求逆方法,其特征在于,该方法包括如下步骤:
步骤一,将待运算的数据写入存储模块;
步骤二,系统总线向过程控制模块提供矩阵维数信息和求逆使能信号,过程控制模块对内部寄存器进行初始化,设置循环计数器K=1,状态寄存器Step=1;
步骤三,过程控制模块开始运行第一步状态,启动运算模块的除法器,计算 待求逆矩阵第一个数据a11的倒数
步骤四,在过程控制模块提供的控制信号下运算模块按照求逆公式的分解步骤依次进行矩阵减、乘,倒数运算,每个步骤对应一个状态,各状态之间的转换由状态寄存器统一管理,并将运算结果写入存储模块;
步骤五,在所有状态顺序执行一趟后K值加1;
步骤六,在过程控制模块中判断循环计数器K值是否等于矩阵维数减1,如果等于转入步骤六,否则返回步骤四继续迭代求解;
步骤七,过程控制模块生成求逆结束信号,等待总线设备从存储模块中读出运算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310711756.2A CN103678257B (zh) | 2013-12-20 | 2013-12-20 | 基于fpga的正定矩阵浮点求逆器及其求逆方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310711756.2A CN103678257B (zh) | 2013-12-20 | 2013-12-20 | 基于fpga的正定矩阵浮点求逆器及其求逆方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103678257A CN103678257A (zh) | 2014-03-26 |
CN103678257B true CN103678257B (zh) | 2016-09-28 |
Family
ID=50315870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310711756.2A Active CN103678257B (zh) | 2013-12-20 | 2013-12-20 | 基于fpga的正定矩阵浮点求逆器及其求逆方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103678257B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572011B (zh) * | 2014-12-22 | 2018-07-31 | 上海交通大学 | 基于fpga的通用矩阵定点乘法器及其计算方法 |
CN104536943B (zh) * | 2015-01-13 | 2017-08-29 | 江苏中兴微通信息科技有限公司 | 一种低除法量的矩阵求逆定点实现方法及装置 |
CN110313002B (zh) * | 2015-12-28 | 2023-02-24 | 京微雅格(北京)科技有限公司 | 一种基于plb的fpga芯片布线方法 |
US10762164B2 (en) | 2016-01-20 | 2020-09-01 | Cambricon Technologies Corporation Limited | Vector and matrix computing device |
CN107704433A (zh) * | 2016-01-20 | 2018-02-16 | 南京艾溪信息科技有限公司 | 一种矩阵运算指令及其方法 |
CN111857820A (zh) * | 2016-04-26 | 2020-10-30 | 中科寒武纪科技股份有限公司 | 一种用于执行矩阵加/减运算的装置和方法 |
CN106021188B (zh) * | 2016-05-11 | 2019-04-12 | 广州广电运通金融电子股份有限公司 | 浮点矩阵求逆的并行硬件架构和并行计算方法 |
CN106815046A (zh) * | 2016-12-20 | 2017-06-09 | 中核控制系统工程有限公司 | 基于域存储的算法执行方法 |
CN107391447A (zh) * | 2017-07-26 | 2017-11-24 | 成都网烁信息科技有限公司 | 一种电脑加速系统及方法 |
CN108388446A (zh) | 2018-02-05 | 2018-08-10 | 上海寒武纪信息科技有限公司 | 运算模块以及方法 |
CN109376853B (zh) * | 2018-10-26 | 2021-09-24 | 电子科技大学 | 回声状态神经网络输出轴突电路 |
CN109492565A (zh) * | 2018-10-30 | 2019-03-19 | 大连海事大学 | 一种基于fpga的递进式正交子空间投影高光谱目标检测系统 |
CN110162742B (zh) * | 2019-03-31 | 2023-09-15 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 实数矩阵求逆的浮点运算电路实现方法 |
CN110377875B (zh) * | 2019-07-16 | 2024-01-16 | 广东省新一代通信与网络创新研究院 | 矩阵求逆方法、装置、设备及计算机可读存储介质 |
CN111596320B (zh) * | 2020-05-28 | 2023-03-24 | 成都天奥信息科技有限公司 | 一种高性能的抗干扰方法及装置 |
CN113791753A (zh) * | 2021-09-15 | 2021-12-14 | 山东芯慧微电子科技有限公司 | 一种基于fpga的支持快速除法的可编程dsp |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN2565085Y (zh) * | 2002-05-01 | 2003-08-06 | 华为技术有限公司 | 求逆计算装置及包含该装置的译码器 |
CN102129420A (zh) * | 2011-03-07 | 2011-07-20 | 哈尔滨工业大学 | 基于Cholesky分解解决最小二乘问题的FPGA实现装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7200631B2 (en) * | 2003-01-10 | 2007-04-03 | Lucent Technologies Inc. | Method and apparatus for determining an inverse square root of a given positive-definite hermitian matrix |
-
2013
- 2013-12-20 CN CN201310711756.2A patent/CN103678257B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN2565085Y (zh) * | 2002-05-01 | 2003-08-06 | 华为技术有限公司 | 求逆计算装置及包含该装置的译码器 |
CN102129420A (zh) * | 2011-03-07 | 2011-07-20 | 哈尔滨工业大学 | 基于Cholesky分解解决最小二乘问题的FPGA实现装置 |
Non-Patent Citations (6)
Title |
---|
lan jian等.Implementation of dynamic matrix control on field programmable gate array.《Journal of shanghai jiaotong university(science)》.2011,第4卷(第16期), * |
Lan jian等.implementation of dynamic matrix control on FPGA.《Control Conference(CCC),2010 29th chinese》.2010,第5970-5974页. * |
任意维矩阵求逆的FPGA设计与实现;王锐等;《中国集成电路》;20070405;第51-56页 * |
基于FPGA的预测控制器设计和应用;杨楠;《中国优秀硕士学位论文全文数据库 信息科学辑》;20120115;I135-228 * |
姜腾飞.《基于FPGA的工业预测控制器开发与应用》.《中国优秀硕士学位论文全文数据库 信息科学辑》.2013,I140-396. * |
郭显娥.程序实现对称正定矩阵的求逆.《雁北师院学报》.1998,第14卷(第5期),第11-15页. * |
Also Published As
Publication number | Publication date |
---|---|
CN103678257A (zh) | 2014-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103678257B (zh) | 基于fpga的正定矩阵浮点求逆器及其求逆方法 | |
CN104572011B (zh) | 基于fpga的通用矩阵定点乘法器及其计算方法 | |
EP2382535B1 (en) | Symmetric transpose convolution fir filter with pre-adder | |
Derafshi et al. | A high speed FPGA implementation of a 1024-point complex FFT processor | |
Garland et al. | Low complexity multiply accumulate unit for weight-sharing convolutional neural networks | |
Sen et al. | Low power mac unit for DSP processor | |
Bhagyalakshmi et al. | Design and implementation of DA-based reconfigurable FIR digital filter on FPGA | |
Maslennikow et al. | Parallel implementation of Cholesky LL T-algorithm in FPGA-based processor | |
Hong et al. | Design and implementation of a high-speed matrix multiplier based on word-width decomposition | |
Roodsari et al. | Diba: n-dimensional bitslice architecture for lstm implementation | |
Patle et al. | Implementation of Baugh-Wooley Multiplier Based on Soft-Core Processor | |
Subathradevi et al. | Systolic array multiplier for augmenting data center networks communication link | |
Henriksson et al. | Streaming Matrix Transposition on FPGAs Using Distributed Memories | |
Chen et al. | Edge FPGA-based Onsite Neural Network Training | |
Zhang et al. | A scalable architecture for accelerating multi-operation and continuous floating-point matrix computing on FPGAs | |
Magar | Intelligent and Superior Vedic Multiplier for FPGA Based Arithmetic Circuits | |
Rentería-Mejía et al. | Hardware design of FFT polynomial multipliers | |
Myjak et al. | Medium-grain cells for reconfigurable DSP hardware | |
Zhao et al. | An FPGA-Based CNN Efficient Storage Processor | |
Wang et al. | An implementation architecture design of LU decomposition in resource-limited system | |
Naaz et al. | FPGA implementation of high speed Vedic multiplier using CSLA for parallel FIR architecture | |
Kumar et al. | Simulation and Implementation of Efficient Binary Multiplier Circuits | |
Alaspure et al. | Concurrent Computation Strategies: Unveiling the Power of Vedic Mathematics | |
K Asker | Implementation of MAC Units on FPGAs for DSP Architecture | |
Sridharan et al. | Low power hardware implementation of high speed FFT core |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211206 Address after: 200240 floor 3, building 2, unit 1, building F, No. 154, Lane 953, Jianchuan Road, Minhang District, Shanghai Patentee after: Shanghai bidi Data Technology Co.,Ltd. Address before: 200240 No. 800, Dongchuan Road, Shanghai, Minhang District Patentee before: SHANGHAI JIAO TONG University |
|
TR01 | Transfer of patent right |