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

文档序号:8257891阅读:来源:国知局
加器清零信号和存储器写使能信号,前者将定点累加器内部结果清零,准备开始下一轮向量计算,后者将经过定-浮转换器转换后的累加结果写入存储模块。
[0044]本发明整个计算过程中运算模块一直处于工作状态,数据转换阶段运算模块计算结果矩阵的第一行或第一列数据,乘法计算阶段计算结果矩阵其他数据。两阶段均采用流水线结构,如图(3)所示,吞吐率最高可达1.0,即平均I个时钟周期完成一次乘法累加运算,大大提尚了计算效率。
[0045]本发明通用矩阵定点乘法器的工作频率可高于系统时钟频率,充分发挥FPGA芯片的性能,以获得更高的计算效率。此外,在同一块FPGA芯片内可以实例化任意多个所述通用矩阵定乘法器(视芯片内部逻辑资源而定),实现并行计算,进一步提高计算效率。
【附图说明】
[0046]图1Xilinx的FPGA芯片内部结构示意图;
[0047]图2为基于FPGA的通用矩阵定点乘法器整体内部结构和各模块输入输出信号流向图;
[0048]图3为基于FPGA的通用矩阵定点乘法器计算流水线结构图;
[0049]图4为基于FPGA的通用矩阵定点乘法器运行流程示意图;
[0050]图5为同时使用多个通用矩阵定点乘法器进行并行计算的结构示意图。
【具体实施方式】
[0051]下面结合实施例和附图对本发明作进一步说明,但不应以此限制本发明的保护范围。
[0052]本发明基于FPGA的通用矩阵定点乘法器主要由控制模块、转换模块、运算模块和储存模块四个部分组成,其整体结构和内部信号流向如图2所示。采用Xilinx的VirtexIV(XC4VFX12-10-ffg668)芯片实现了通用矩阵定点乘法器,各模块的具体实现过程是:
[0053]1、控制模块
[0054]本实施例中控制模块由XC4VFX12-10-ffg668芯片内部的LUTs (查找表)和FF (触发器)等数字逻辑电路构成。该电路控制着整个矩阵乘法过程的有序进行,在特定时钟周期产生运算模块和存储模块所需的各种控制信号。
[0055]定点矩阵乘法的过程为:CPU向定点矩阵乘法器发送请求矩阵乘法信号,如果定点矩阵乘法器在空闲状态,通过应答信号通知CPU传送数据,控制模块先将矩阵维数和列数存放在内部寄存器中,接着依次产生整个乘法计算过程中所需的一系列控制信号,包括:待转换数据地址信号、转换结果数据地址信号、待运算数据地址信号、运算结果数据地址信号、定点累加器清零信号和运算结果写使能信号。最后,当计算完成时返回运算结束信号告知CPU计算结束,可以读取结果。
[0056]2、转换模块
[0057]本实施例中转换模块由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可以根据用户的定制完成浮点到定点、定点到浮点之间的转换。在定制处理单元时还需要制定输出延迟、数据率,输出信号的选择等时序和引脚参数。
[0058]本实施例中的转换模块应用两个浮-定转换器和一个定-浮转换器。三个数据转换器具有相同的输入输出接口,两个输入信号分别为时钟信号和待转换数据信号,输出信号为转换结果数据信号。两个浮-定转换器在数据转换阶段负责将浮点数转换成定点数,一个定-浮转换器在整个计算过程中负责将向量相乘的定点数结果转换成浮点数。
[0059]3、运算模块
[0060]本实施例中运算模块仍由XC4VFX12-10-ffg668芯片的DSP48单元构成,包括定点乘法器和定点累加器,用于进行以向量为单位的定点数的乘法和累加操作,并将结果写回存储模块。定点乘法器和累加器的各种控制信号由控制模块产生。
[0061 ] 主要运算过程为:定点乘法器以向量为单位依次从存储模块或直接从转换模块输出端读入定点数据进行计算,乘法计算结果并送入定点累加器,累加器实时输出累加结果。当该向量乘法结束时,控制模块生成累加器清零信号,定点累加器内部数据清零,开始准备下一轮向量运算。整个计算过程采用流水线结构,即除了计算开始的延迟外,每个计算均在单位周期内完成,具体结构如图(3)所示。
[0062]4、存储模块
[0063]本实施例中存储模块由XC4VFX12-10-ffg668芯片的Block-RAM实现。在XilinxFPGA中,块RAM按照列来排列,这样保证了每个CLB单元周围都有比较接近的块RAM用于存储和交换数据。块RAM几乎是FPGA器件中除了逻辑资源之外用的最多的功能块,Xilinx的主流FPGA芯片内部都集成了数量不等的块RAM硬核资源,速度可以达到数百兆赫兹,不会占用额外的CLB资源,而且可以在IP核生成器中灵活地对RAM进行配置,构成单端口 RAM、真正双口 RAM、R0M(在RAM中存入初值)和FIFO等应用模式。本实施例中共应用4个4KB大小的内存模块,分别标号为O、1、2、3,均采用真正双端口模式。双端口模式的存储器有两个独立的读写通道,分别记为A、B。以端口 A为例,进行读操作时WEA为低电平,ADRRA为要读数据的地址;进行写操作时WEA信号为高,DINA为要写入的数据,ADRRA为数据要写入的地址。A、B两个端口支持读写操作的任何组合:两个同时读操作、两个端口同时写操作(不同的地址)或两个不同的时钟下一个端口执行写操作,另一个端口执行读操作。这样每个存储单元就有两个相对独立的读写通道,但值得注意的是这两个通道不可以在同一时刻对同一个地址进行不同的操作。本实施例中存储器0、1的通道A分别与PLB总线接口相连,其余通道与内部数据接口相连。在乘法运算开始之前,由总线数据接口通过存储器0、I的A通道将待运算矩阵的数据写入存储器0、I。计算过程中,该模块与内部数据接口相连,将待运算数据送入转换模块,并将转换后的结果分别存入存储器2、3。运算模块从存储器2、3中读取运算数据并将中间运算结果存入预先设定的存储地址中。矩阵乘法计算的最终结果通过存储器O的B通道写入存储器O中,待乘法运算全部结束,通过存储器O的A通道由总线数据接口将结果全部读出。
[0064]以上模块均采用VLOG语言定制实现。整个通用矩阵定点乘法器的时序操作过程如图4所示:
[0065]以两个15X 15维的矩阵相乘为例(并不仅限于此例),本发明的时序操作过程如下:
[0066](I)复位后通用矩阵定点乘法器处于空闲状态;
[0067](2)通用矩阵定点乘法器等待总线设备将待运算数据写入存储模块;
[0068](3)通用矩阵定点乘法器等待总线设备将矩阵维数信息发送给控制模块,并给出运算使能信号;
[0069](4)控制模块接收到运算使能信号后,根据矩阵的维数信息,将待运算矩阵拆分成多个行向量或列向量的组合,以向量为单位向存储模块提供待转换数据地址信号。
[0070](5)存储模块接收到待转换数据地址信号后,依次将待转换数据交由转换模块进行浮点到定点的转换,转换模块实时地将数据转换结果返回存储模块。在转换的同时,控制模块不断给存储模块发送转换结果数据地址信号和待运算数据地址信号,前者用于对转换结果数据进
...
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1