- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于FPGA矩阵尺寸自适应双精度浮点数矩阵乘法器
基于FPGA矩阵尺寸自适应双精度浮点数矩阵乘法器
摘要:设计了一种基于FPGA的矩阵尺寸自适应的高速双精度浮点数矩阵乘法器。采用了基于XihnxISE中双口RAM及浮点数运算IP核,对矩阵元素进行缓存后,在运算的过程中根据矩阵的尺寸进行自适应处理,可支持矩阵尺寸最大32×32的矩阵乘法;同时通过流水线处理,弱化浮点数运算核自身延迟对设计带来的延迟效应。该设计通过基于TEXTIO的仿真对MATLAB产生的数据进行了运算及检验,验证了设计的功能与性能。
关键词:自适应;双精度浮点数;矩阵乘法器;流水线处理
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)14-0085-02
1概述
矩阵乘法在远程通信,网络传输,图像与信号处理等领域中有着广泛的应用。矩阵乘法在这些应用中,不仅需要面对大量的数据,还需要满足高精度与高速度的要求;针对不同的应用场合,被处理的矩阵的尺寸也不同。为了满足矩阵处理高速度高精度,适用于不同尺寸的被处理矩阵的要求,本文介绍了一种基于FPGA的设计,用于处理双精度浮点数矩阵的乘法器,该设计可适用于两个最大尺寸32×32的矩阵相乘,并采用了流水线技术提高运算效率,以满足高速度需求。
IEEE754标准规定了两种浮点格式,32bit单精度浮点数以及64bit双精度浮点数。这两种数据均包括符号位S、阶码E以及尾数M。根据浮点数类型的不同,阶码E和尾数M的位数有所不同。IEEE754标准所规定的双精度浮点数格式如图1所示。
根据IEEE754规定,尾数M隐含了一位数值为1的最高位,双精度浮点数的阶码包含了bias=+1023的偏移量,双精度浮点数的数值可由公式1获得:
2乘法器设计
对于矩阵乘法C=A×B,其中A、B和C分别是M×K、K×N和M×N维矩阵,其计算方法如公式2所示:
矩阵尺寸自适应的高速双精度浮点数矩阵乘法器的结构如图2所示。设计中,根据输入矩阵的矩阵尺寸对两组输入矩阵A、B进行缓存,并判断输出矩阵的尺寸对结果矩阵C进行缓存;利用有限状态机,对初始、缓存矩阵A、缓存矩阵B、计算、完成提示,这5个状态进行控制。图中的信号分别为:
1)时钟输入Clock;
2)重置输入Reset,写入使能输入WriteEnable,输入缓冲器片选输入BufferSel(0),读取结果的使能输入ReadEnable,指示运算完成的输出ReadReadv;
3)输入矩阵尺寸的输入MatrixSizeAy(4,0),MatrixSizeAxBy(4,0),MatrixSizeAxBy(4,0);
4)10位输入地址总线输入WriteAdd(9,0),64位输入数据总线输人WriteData(63,0);
5)10位?出地址总线输入ReadAdd(9,0),64位输入数据总线输出ReadData(63,0)。
2.1矩阵尺寸自适应处理
当外部矩阵尺寸提供给算法后,在初始阶段中,算法对输入矩阵A和B的尺寸进行运算;根据运算结果,依次进人缓存矩阵A阶段,缓存矩阵B阶段,在每个时钟周期对矩阵中单个元素进行缓存,分别需MxK和KxN个时钟周期;当完成缓存后,算法进入计算阶段,在每个时钟周期分别从缓存中读取矩阵A和B的元素并进行计算,当矩阵C中MxN个元素均完成计算并被缓存后,进入完成提示阶段;在完成提示阶段中,FPGA输出ReadReady信号,高电平有效,提示外部设备可以对RAM C中的矩阵c进行数据读取。
2.2双口RAM
根据Xilinx ISE 13.4中的Core Generator可对所需的双口RAM进行配置,对矩阵A、B和C的输入缓存及读取。双口RAM的结构图和时序图分别如图3、4所示。其中clka和clkb为共享同一时钟。
2.3双精度浮点数乘法器,加法器
与双口RAM类似,双精度浮点数的乘法器和加法器通过配置相应的IP CORE实现,其结构框图均可由图5表示。
双精度浮点数加法器的工作时序图如图6所示,加法器需要12个时钟周期方可获得计算结果;乘法器的工作时序图与加法器相同,但需要9个时钟周期方可获得计算结果。需要注意的是,如果输入数据是连续的,那么在相应的处理时钟周期后,其输入结果也为连续输出的,且互不干扰,具有流水线处理能力,该要点为本设计的基础。
2.4计算流水化处理
1)矩阵C中单个元素Ci,j的得出,由公式(2)可知,需要K次乘法,以及K次累加(第一次与0累加);因为加法器与乘法器工作均有时间延迟,在完成单个ci,j的所有计算后再进行下一个ci,j的计算,将会将加法器和乘法器空置的时间最大化,效率最低,无法进行流水线处理;
2)为了避
原创力文档


文档评论(0)