基于fpga的通用矩阵定点乘法器及其计算方法

文档序号:8257891阅读:705来源:国知局
基于fpga的通用矩阵定点乘法器及其计算方法
【技术领域】
[0001]本发明属于高性能计算领域,是一种提高FPGA矩阵运算能力的设计。
【背景技术】
[0002]矩阵乘法操作是科学计算中的一个基本操作,在工业控制、模式识别、数字信号处理等领域广泛存在,特别是在便携式设备中,经常涉及到模式识别、图像处理等操作,这些操作都是有大量的矩阵运算来完成的,而便携式设备通常计算配置较低,矩阵乘法也就成为计算过程中最为耗时的关键操作。矩阵乘法的时间复杂度较高,通常为0(N3),其计算性能直接影响系统的整体性能。
[0003]近年来飞速发展的FPGA技术,给矩阵运算的高速实时运行创造了机会。FPGA技术已经从最初只能面向纯逻辑应用转变为能够面向复杂计算的密集型应用。最新的FPGA器件,不仅逻辑资源门极其丰富,而且还包括大量面向高计算性能的DSP单元、块状RAM (Block RAM, BRAM)等。同时为方便FPGA的调试,各FPGA厂商还提供了各种片内逻辑分析工具(如Xilinx公司的ChipScope),在软硬件上均保证了 FPGA实现高性能矩阵计算的可能性。矩阵运算的硬件化可以充分利用硬件并行性的特点,在很大程度上提高矩阵计算效率。
[0004]目前FPGA拥有众多的系列产品,主要生产厂商有Xilinx、Altera、Actel、Lattice和QuickLogic等公司。尽管这些厂商生产的FPGA品种和型号繁多,但其原理和内部基本结构是相同的,都是由细粒度的可编程逻辑单元(Configurable Logic Block, CLB)、可编程连线资源(Programmable Interconnect,PI)及可编程输入/输出单元(Input/OutputBlock,Ι0Β)组成。其中CLB是FPGA的基本逻辑单元,它提供了用户所需要的逻辑功能,通常规则的排成一个阵列,散布于整个芯片;Ι0Β完成芯片内部逻辑和外部封装脚的接口,它可编程为输入、输出、和双向1/0 口三种方式,通常排列于芯片的四周;PI包括各种长度的连接线段和一些可编程的连接开关,它们将各个可编程逻辑块或输入/输出连接起来,构成特定的功能电路。以Xi I inx公司的FPGA为例,其结构示意图如图1。其中BRAM是BL0CK-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)相连。
[0005]采用FPGA进行设计不是以功能电路为基础分布式系统综合技术,而是以功能IP核(Intellectual Property core)为基础的系统固件和电路综合技术。IP核是为了实现某种特定功能而利用FPGA中的CLB、1B以及PI逻辑电路资源构建成的特殊电路。各个厂商为了便于用户进行开发,都会提供一些免费的IP核。而出厂前就已经在芯片中预先设置好的IP核称为硬核。如在本发明基于FPGA的通用矩阵定点乘法器中使用的DSP48即为Xilinx Virtex-4提供的硬核。
[0006]通过查阅相关文献,目前使用FPGA实现矩阵乘法的大部分直接使用浮点数进行计算,如杨楠,兰建的基于FPGA的通用矩阵浮点乘法器(申请号:201010139877.0)应用浮点运算器设计了矩阵的乘法器,但在计算过程中,浮点计算器运算消耗的时间远大于定点计算。对于NXN矩阵相乘有N3次乘法运算和N2(N-1)次加法运算,若均使用定点计算代替浮点计算则可以节省出很多计算时间,提高整体计算效率。

【发明内容】

[0007]本发明提出一种在FPGA芯片上使用的高性能通用矩阵定点乘法器,充分利用定点计算效率高的特点,将浮点数转换为定点数进行数据计算,在数据转换的同时进行部分结果数据的计算,整个计算采用并行流水线结构,在尽可能减少硬件资源消耗的情况下实现矩阵定点乘法器。
[0008]本发明技术解决方案如下:
[0009]一种基于FPGA的通用矩阵定点乘法器,其特点在于,包括控制模块、转换模块、运算模块和存储模块;
[0010]所述的控制模块分别与所述的运算模块和存储模块相连,用于生成控制信号控制运算模块和存储模块的有序运行;
[0011]所述的转换模块分别与所述的与所述的运算模块和存储模块相连,用于实现定点数与浮点数之间的转换;
[0012]所述的运算模块,用于进行定点数的乘加计算;
[0013]所述的存储模块,还与所述的运算模块相连,用于缓存待运算矩阵数据和结果矩阵数据,并提供系统总线访问接口。
[0014]所述的控制模块与系统总线相连在计算开始前接收请求矩阵乘法信号并返回应答信号,在计算准备阶段接收待乘矩阵维数信息和运算使能信号,在运算结束后返回运算结束信号;与存储模块相连在计算过程中提供待转换数据地址信号、转换结果数据地址信号、待运算数据地址信号、运算结果数据地址信号以及运算结果写使能信号;与运算模块相连在每一轮向量乘法结束时提供定点累加器清零信号。
[0015]所述的转换模块包括浮-定转换器和定-浮转换器;所述的浮-定转换器将在计算机中存储的32位浮点数转换成64位定点数以供后续定点计算,所述的定-浮转换器将乘法运算结果的定点数转换成浮点数以供计算机读取;
[0016]所述的浮-定转换器与存储模块相连接收待转换的浮点数并将转换后的定点数返回存储;与运算模块相连在数据转换阶段将数据转换结果直接提供给运算模块进行计算;
[0017]所述的定-浮转换器与运算模块相连接收乘法运算结果数据;与存储模块相连返回转换结果。
[0018]所述的运算模块包括定点乘法器和定点累加器;所述的定点乘法器计算2个64位定点数的乘法,所述的定点累加器对定点乘法结果进行求和;运算期间,定点乘法器每周期从存储模块或浮-定转换器读入2个数据进行定点乘法计算,定点累加器实时输出定点累加结果;当某一向量乘法计算结束时,定点累加器将累加结果送给定-浮转换器进行转换,并从控制模块接收定点累加器清零信号将内部累加器结果清零,开始准备下一轮向量计笪并O
[0019]所述的存储模块包括系统总线数据接口和内部数据接口 ;系统总线数据接口负责与外部总线或FPGA芯片内的其它设备交换数据;内部数据接口负责与转换模块或运算模块交换数据;
[0020]在计算准备阶段,存储模块与系统总线相连接收待运算矩阵数据;在计算过程中,与控制模块相连接收待转换数据地址信号、转换结果数据地址信号、待运算数据地址信号、运算结果数据地址信号以及运算结果写使能信号,与运算模块的定点乘法器相连提供待运算数据信号,与转换模块的浮-定转换器相连提供待转换数据并存储其转换结果,与转换模块的定-浮转换器相连接收转换后的结果矩阵数据;在计算完成后,与系统总线相连返回运算结果。
[0021]一种基于FPGA的通用矩阵定点乘法器的计算方法,其特点在于,该方法包括如下步骤:
[0022]①空闲状态时,存储模块通过系统总线访问接口接收待运算矩阵数据;
[0023]②控制模块接收系统总线发送的矩阵维数信息以及运算使能信号;
[0024]③控制模块接收到运算使能信号后,根据矩阵的维数信息,将待运算矩阵拆
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1