下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
XilinxVivadoHLS中Floating-Point(浮点)设计介绍编码风格与技巧尽管通常Fixed-Point(定点)比Floating-Point(浮点)算法的FPGA实现要更快,且面积更高效,但往往有时也需要Floating-Point来实现。这是因为Fixed-Point有限的数据动态范围,需要深入的分析来决定整个设计中间数据位宽变化的pattern,为了达到优化的QoR,并且要引入很多不同类型的Fixed-Point中间变量。而Floating-Point具有更大的数据动态范围,从而在很多算法中只需要一种数据类型的优势。XilinxVivadoHLS工具支持C/C++IEEE-54标准单精度及双精度浮点数据类型,可以比较容易,快速地将C/C++Floating-Point算法转成RTL代码。与此同时,为了达到用户期望的FPGA资源与性能,当使用VivadoHLSdirectives时需要注意C/C++编码风格与技巧相结合。编码风格1.1单双精度浮点数学函数#includefloatexample(floatvar){returnlog(var);//双精度自然对数}在C设计中,这个例子,VviadoHLS生成的RTL实现将输入转换成双精度浮点,并基于双精度浮点计算自然对数,然后将双精度浮点输出转换成单精度浮点。#includefloatexample(floatvar){returnlogf(var);//单精度自然对数}在C设计中,logf才是单精度自然对数,这个例子VviadoHLS生成的RTL实现将基于单精度浮点计算自然对数,而且没有输入输出单双精度的互转。1.2浮点运算优化我们先来看一个例子,三个从代数上看起来差不多的写法,但其在VivadoHLS中综合出来的是三个完全不一样的结果。voidexample(float*m0,float*m1,float*m2,floatvar){*m0=0.2*var;//双精度浮点乘法,单双精度类型转换*m1=0.2f*var;//单精度浮点乘法*m2=var/20.0f;//单精度浮点除法}VivadoHLS将日m0,m1,m2综合成不同的RTL实现。因为0.2是一个不能精确表征的双精度数字,所以m0运算会被VivadoHLS综合成一个双精度浮点乘法,并且将var转换成双精度,然后将双精度乘法输出m0转换成单精度。特别注意,如果希望VivadoHLS综合出单精度常熟,需要在常数后面加f,如0.2f。这样m1综合成一个单精度乘法的输出。同理,m2将被VivadoHLS综合成单精度除法的输出。我们来看另外一个例子。voidexample(float*m0,float*m1,floatvar){*m0=0.2f*5.0f*var;//*m0=var;常数乘法被优化掉*m1=0.2f*var*5.0f;//两个双精度浮点乘法}再来看另一个例子。voidexample(float*m0,float*m1,floatvar){*m0=0.5*var;//*m1=var/2;//}m0运算会被VivadoHLS综合成一个双精度浮点乘法,并且将var转换成双精度,然后将双精度乘法输出m0转换成单精度。m1运算会被VivadoHLS综合成简单的右移运算。所以如果用户希望实现对var除以2,就写成m1这种表达式,而不是m0的表达式。并行度与资源复用由于浮点运算相比整型,定点运算耗用更可观的资源。VivadoHLS会尽量用更有效的资源来实现浮点运算,当数据的相关性及约束许可的情况下,在VivadoHLS中,会尽量复用一些浮点运算单元。为了说明这个,我们看一个简单的四个浮点加法例子,VivadoHLS复用一个浮点加法器来串行实现四个浮点加法。voidexample(float*r,floata,floatb,floatc,floatd){*r=a+b+c+d;}有时设计需要更高的throughput及更低的latency。这时就需要提高设计的并行度。以下面例子来说明,在VivadoHLS就需要对for循环loop加pipeline与unroll的directives。同时需要通过设置a,b,r0为FIFO,并对其重排以提高I/O带宽两倍。这样VivadoHLS就会综合出两个浮点加法来并行实现,这是因为每个加法器计算是完全独立的。voidexample(floatr0[32],floata[32],floatb[32]){#pragmaHLSinterfaceap_fifoport=a,b,r0#pragmaHLSarray_reshapecyclicfactor=2variable=a,b,r0for(inti=0;i《32;i++){#pragmaHLSpipeline#pragmaHLSunrollfactor=2r0[i]=a[i]+b[i];}}然而,如果更多复杂的运算,或许会导致不独立的浮点运算,在这种情况下,VivadoHLS不能重新排列这些运算的顺序,这样会导致更低的,不是所期望的复用。下面举例来说明如何提高带有反馈浮点运算的性能。这个例子的累加会导致recurrence,并且通常浮点加法的latency大于一个时钟周期,加的pipelinedirective并不能达到一个时钟周期完成一次累加的throughput。floatexample(floatx[32]
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 停车场实施方案及流程(2篇)
- 商圈整体策划方案(2篇)
- 中医护理方案年度计划(2篇)
- 农产品品牌营销策划方案(2篇)
- 巴黎旅游行业市场前景及投资研究报告-培训课件外文版2024.5凯旋门巴黎圣母院
- 奥地利生物燃料行业市场前景及投资研究报告-培训课件外文版2024.5
- A股投资策略分析报告-结合预期和趋势视角的宏观定价交易模式
- 2024-2034年中国超声波口罩机行业发展监测及投资方向研究报告
- 2024-2034年中国证件照相机行业市场深度分析及发展前景预测报告
- 2024-2034年中国螺旋钢管行业市场发展现状及投资方向研究报告
- 国标法兰尺寸对照表
- 职业与妇女健康
- 第五版-FMEA-新版FMEA【第五版】
- 关于学校家庭社会协同育人的研究开题报告
- 智慧农业大数据信息化平台建设和运营整体解决方案
- DB3302T 1123-2021全域旅游服务中心等级划分要求
- 2023年软件评测师(软考)核心考点题库300题(含详解)
- 民间文学儿童文学
- 水利水电工程危险源辨识与风险评价一览表
- 某油库改造工程施工设计方案
- 醇基液体燃料的危险、有害因素识别表
评论
0/150
提交评论