首页> 中国专利> 基于FPGA的正定矩阵浮点求逆器及其求逆方法

基于FPGA的正定矩阵浮点求逆器及其求逆方法

摘要

一种基于FPGA的正定矩阵浮点求逆器及其求逆方法,包括过程控制模块、运算模块和存储模块,所述的过程控制模块分别与运算模块、存储模块连接,所述的运算模块与存储模块连接;所述的过程控制模块,用于生成信号控制运算模块和存储模块的有序运行;所述的运算模块,用于进行矩阵运算;所述的存储模块,用于缓存待运算矩阵的数据和结果矩阵的数据,并提供系统总线访问接口。本发明可以方便快捷地在FPGA的芯片上实现正定矩阵浮点求逆器,在保证精度的前提下,提高矩阵求逆速度。

著录项

  • 公开/公告号CN103678257A

    专利类型发明专利

  • 公开/公告日2014-03-26

    原文格式PDF

  • 申请/专利权人 上海交通大学;

    申请/专利号CN201310711756.2

  • 发明设计人 徐云雯;李德伟;席裕庚;

    申请日2013-12-20

  • 分类号G06F17/16;

  • 代理机构上海新天专利代理有限公司;

  • 代理人张泽纯

  • 地址 200240 上海市闵行区东川路800号

  • 入库时间 2023-12-17 01:00:24

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-09-28

    授权

    授权

  • 2014-04-23

    实质审查的生效 IPC(主分类):G06F17/16 申请日:20131220

    实质审查的生效

  • 2014-03-26

    公开

    公开

说明书

技术领域

本发明属于高性能计算领域,具体是一种基于FPGA的正定矩阵浮点求逆器 及其求逆方法。

背景技术

矩阵运算是科学计算中的基本操作,在工业控制、模式识别、数字信号处理 等领域中都广泛存在,特别在预测控制二次规划求解过程中,正定矩阵求逆成为 计算过程中最为耗时的关键操作,严重影响控制的整体性能。目前大部分矩阵求 逆都是利用软件来实现,但是随着矩阵维数的增长,软件处理的速度也会大幅度 变慢。而且由于不能将计算软件嵌入到实时性要求高的嵌入式电子系统中,因此 在电子系统中无法计算矩阵求逆或者无法满足实时性要求的缺陷也越来越明显。

近年来飞速发展的FPGA技术,给矩阵运算的高速实时运行创造了机会。 FPGA技术已经从最初只能面向纯逻辑代替应用转变为能够面向复杂计算的密 集型应用。最新的FPGA器件,不仅逻辑资源门极其丰富,而且还包括大量面向 高计算性能的DSP单元、块状RAM(Block RAM,BRAM)等。同时为方便FPGA 的调试,各FPGA厂商还提供了各种片内逻辑分析工具(如Xilinx公司的 ChipScope),在软硬件上均保证了FPGA实现高性能矩阵计算的可能性。矩阵运 算的硬件化可以充分利用硬件并行性的特点,在很大程度上提高矩阵计算效率。

下面介绍一下FPGA的相关背景技术,此背景技术不属于本正定矩阵浮点求 逆器所包含的内容,可以在相关厂商的网站上或技术资料中可以找到。

目前FPGA拥有众多的系列产品,主要生产厂商有Xilinx、Altera、Actel、Lattice 和QuickLogic等公司。尽管这些厂商生产的FPGA品种和型号繁多,但其原理和 内部基本结构是相同的,都是由细粒度的可编程逻辑单元(Configurable Logic  Block,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-4 FPGA中每个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维矩阵An×n=A11A12A21A22,其中A11是(n-1)×(n-1)维,是 (n-1)×1维,A22是标量。假设A11A12A21A22-1=B11B12B21B22,则有 推导可得到:B22=1A22-A12TA11-1A12B12=-A11-1A12B22B21=B12TB11=A11-1-A11-1A12B21,如果已知 通过递推方式就能得到矩阵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

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号