学习vivadoHLS第6章例程中文版答案.docx

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
学习vivado第6章Lab1——设计分析概述从C,C++或者SystemC用一般的设计方法来创建的RTL实现包括以下任务:?综合设计?查看最初实现的结果?应用优化指令提高性能你可以重复上述步骤直到要求的性能已经达到。随后,你可以重新设计,以提高资源使用率。这个过程关键部分是对结果的分析。教程解释了如何使用报告和用户分析视图来分析设计和决定优化的应用。教程由一个lab练习组成:? 体现了HLS交互分析功能? 带你经历一个设计从最初的实施,通过六个步骤,并多次优化,产生最终优化设计的过程在整个教程中证明在一个项目中执行这些步骤使您可以轻松地比较不同的解决方案的能力Lab1综合和分析DCT设计,使用从设计分析的见解来进行优化,并判断该最优化的效果。教程设计描述从xilinx 网站下载教程设计文件,在教程设计中查看信息。教程所用的设计文件在教程目录vivado_HLS_Tutorial\Design_Analysis用在Lab练习中的设计样本是2-D DCT函数。为了突出设计分析功能,您的目标是让这个设计在100或更小的间隔内操作。设计应该能够在每100时钟 周期内处理新设定的输入数据。Lab1:设计优化这个练习解释了用户分析界面视角的基本操作,还有你如何用这个界面来驱动设计优化。重要:在教程中的图片和命令假设教程数据路径vivado_HLS_Tutorial被解压放置在c:\vivado_HLS_Tutorial中。如果教程数据目录解压缩到不同的位置,或者在Linux系统上,调整一些路径名引用到的位置您选择放置Vivado_HLS_Tutorial目录。步骤1:创建并打开工程1.打开Vivado HLS 命令提示符a.在windows系统中,采用StartAll ProgramsXilinx Design ToolsVivado2014.2Vivado HLSVivado HLS 2014.2 Command Prompt,如下图b.在linux系统下,打开新的shell,2. 用命令提示符窗口,如图107,从lab1中将目录切换到设计分析教程。3. 执行TCL并建立vivado HLS Project,采用的是vivado_hls –f run_hls.tcl 如图107所示4. 当vivado HLS 完成,在用户界面里打开工程。用vivado_hls –p dct_prj 命令打开,如图108步骤2:查看源代码并创建最初的设计1. 双击原文件夹中的dct.cpp文件,打开原文件代码并查看。本例使用的DCT函数。图109示出了该代码的概述。?在图109的左边显示了代码的层次?dct顶层函数有三个子函数:read_data、dct_2d、write_data.?函数dct_2d有一个子函数dct_1d?图109的中间展示了在每个函数中的循环?在图109的右边展示了数据是如何通过函数和循环被处理的?执行read_data函数,数据通过循环RD_Loop_Row处理,RD_Loop_Row有一个子循环RD_Loop_Col.?在read_data函数完成后,dct_2d函数执行。?在函数dct_2d中,Row_DCT_Loop处理数据,Row_DCT_Loop里面嵌套了两个循环:DCT_output_loop和DCT_inner_loop?DCT_inner_loop调用函数dct_1d等等,直到函数write_data处理数据2. 在工具栏中点击Run C Synthesis来把设计综合成RTL级步骤3:用综合报告查看性能当综合完成后,综合报告会自动打开,见图110在报告的部分展示了性能图110突出了下列信息:?满足8ns的时钟频率?顶层设计花费3959个时钟周期用来写所有的输出?在3960个时钟周期后你可以采用新的输入,在输出数据已经完成后的一个时钟。这立即显示,设计不是流水线,但这一事实也注意到报告中:类型设置为none,而不是流水线。?顶层有一个实例,其中有3668等待时间和启动时间间隔。这个模块也不是流水线,占大多数的时钟周期。?注意read_data函数和write_data函数没有被作为顶层的实例所注意到。图111展示了,在综合过程中,这个模块被自动内联起来。(层次被删除)高层次综合必须自动内联小的函数为了提高结果的质量。你可以通过添加内联指令与-off选项的功能,防止这种情况。?在read_data和write_data函数中的循环,因在顶层中实现,因作为在顶层函数中的循环被报告。?每个循环有144时钟周期的延迟。(因为循环不是流水线,没有启动间隔。)?用RD_Loop_Col作为一个例子,你可以看到为什么循环延迟了144个周期?子循环RD_Loop_Col有两个周期的延迟,在每次循环间隔中(循环等待时间)和8个tr

文档评论(0)

502992 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档