完整版学习VivadoHLS例程中文版_第1页
完整版学习VivadoHLS例程中文版_第2页
完整版学习VivadoHLS例程中文版_第3页
完整版学习VivadoHLS例程中文版_第4页
完整版学习VivadoHLS例程中文版_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学习Vivado第4章labl接口综合 概述接口综合是将 RTL接口添加到C设计的过程。另外还把物理接口添加到RTL设计中,接口综合包括了相关联的I/O协议,容许数据通过接口传输并自动与内部优化的逻辑同步。本教程由4实验练习组成涵盖的主要功能和接口综合。?Lab1:查看函数的返回和块级协议?Lab2:理解默认端口的I/O协议,并学会怎么选择I/O协议?Lab3:查看一下数组端口实现,可以进行分区。?Lab4:为设计创建一个优化的实现并添加AXI4接口教程设计描述从xilinx网站下载教程的设计文件,参考信息中获取教程设计。本教程使用教程目录中的设计文件Vivado_HLS_Tutorial I

2、nterface_Synthesis 。关于实验?使用前两个实验室在本教程中的示例的设计很简单,这有助于将焦点保持在接口。?最后两个实验练习使用多通道累加器。?本教程介绍如何实现采用高层次综合实现I/O端口和协议。?在实验4中,创建一个在Lab3中使用最优实现的设计接口综合lab1 :块级I/O协议概述这个实验解释了什么是块级I/O协议,并控制它们重点:在本教程中的图片和命令假定了教程数据目录Vivado_HLS_Tutorial 被解压并放置在 c:vivado_HLS_Tutorial如果教程数据路径解压到不同的位置,或者在linux系统上,调整路径名称指向你选择放置Vivado_HLS_

3、Tutorial目录位置。步骤1:创建并打开工程1.打开Vivado HLS命令提示符a.在 windows 系统中,采用 StartAll ProgramsXilinx Design ToolsVivado2014.2Vivado HLSVivado HLS 2014.2 Command Prompt ,如下图b.在linux系统下,打开新的 shell,J Add Oedgirt To&ls at Uninmll 2QL4.23n 4a 2014,2 Tel Shrll Vhnd0 葡Syttem GM刎.6 HLS31 g.do 州Comm. j Mv&do H LS /2.用命令提示符

4、窗口,如图 55,把接口综合教程的路径变为lab1C :Uivado_HL5_Tute-r idl cd Intrface,SyntheiCAUivaJo.HL5_Tuto-riolMritwrfo_5ynth*aiticci Lttb1C ;Ui*ciOrHL$_Tutori) 1%总白b1炉也do hv -f run hB. telFigure S5: Setup -the tutorial Project.执行 TCL并建立 vivado HLS Project,采用的是 vivado_hls f run_hls.tcl 如图 55 所示.当vivado HLS完成,在用户界面里打开工程

5、。用vivado_hls -p vivado_hls -p adders_prj命令打开,如图 56di (LIC-1G1 Chcekod in fcaturd HLSGnerdtih9 16+20+30=60 zo+je+Heisa M+wser 之。 W*W*69=1W s&+6e+?e=iB9 p+占与, 1 SIM-1 Ci done uiith。#rrar$ 1 ILIC-191 Cbockod in fvdturv (HU)C:Uivedo HLS TutorialInterface- Suritheai&iflb1 uivado his -p Adders prjFigure 痴

6、 Initial Project for lnlcrfa Synthis Ub 1步骤2:创建和查看默认的块级I/O协议.在源文件夹中双击 adders.c,打开源代码,并查看如图 57tdc Protocol Signah图59的波形图,表现了块级I/O信号的行为?设计直到ap_start设置为逻辑1才开始启动。?通过设置端口 ap_idle为低,表明设计不再空闲?展示了五个事务,首先 3个输入值(10, 20,和30)被各自用在端口 in1,in2和in3.?输出信号ap_ready变为高表明设计准备好在下个时钟下接受新输入。?输出信号ap_done表明设计结束,输出端口ap_return

7、的值是有效(首先输出值60,是三个输入的和)?因为ap_start保持高电平,下一次事务开始于下一个时钟周期。注意:在RTL的协同仿真,所有的设计和端口输入控制信号始终处于启用状态。例如,在图59的信号ap_start始终是高的。在第二个事务,观察 ap_return端口,在这个端口上第一个输出的值是70,直到ap_done信号为高电平这个结果才有效。步骤3:改变块级I/O协议默认的块级I/O协议是ap_ctrl_hs协议(控制握手协议),在这一步中,您可以创建新的解决方案和改变这个协议。.从工具栏或者工程菜单选择新解决方案(New Solution)来创建一个新的解决方案。.保持所有新解决方

8、案对话框所有设定,这些设定都是默认的,点击完成.在信息窗口中选择 C源代码标签(或如果C源代码关闭重新打开).激活指令选项卡(Directives tab),选择顶层函数,如图 60所示* n L HL5 IN (FRF ACE7 nr nl * in?* HIS rT FRF ACE api_Run C Synthesis来综合设计。在源文件中添加的指令改变的源文件。图 62所示源文件名为*adders.c。这个标记表明文件已经更改,但没有保存。10.点击YES来接受对源文件的更改。Figure 63: Interface summary for ap_ctrl_none当报告打开时,接口概

9、述出现,如图 63当接口协议ap_ctrl_none被采用时,没有块级接口协议被添加到设计中。仅有诸如clock、reset和data端口。注意,也没有ap_done信号,consumer模块接U来自ap_return的数据,当数据有效时,ap_return端口现在不能表 明另外,RTL协同仿真的功能需要一个块级I/O协议,为了自动协同仿真安排测试平台和RTL设计。任何试图用RTL协同仿真的结果在下面的错误信息中,停止RTL协同仿真(理解上有误差)E SIM-345 Cosim only supports the following ap_ctrl_none designs: combinat

10、ional designs; (2) pipelined designwith task interval of 1; (3) designs with array streaming or hls_stream ports.E SIM-4 * C/RTL co-simulation finished: FAIL *退出vivado HLS GUI返回命令提示框学习Vivado第4章lab2接口 I/O 协议概述这个实验解释了怎么指定具体的端口I/O协议。.在labl中用Vivado HLS命令提示符,更改为 lab2目录,如图64.键入 vivado_hls -f run_hls.tcl 来

11、创建新的 Vivado HLS工程VWado HLS Command Promptn 回01 HLA18 On plAtfor* 的uorsian 6 J”gl HLSISHLS Tel shallm Fri Jar 25-0866 231 fora*r ,dune事mTfxajncAUHT1 hlLi-1G) Current diretcrij C/l*b11 i崔Bribing up Uiveda MLS CUI .一C : MJjuado_HLS_Tu tor ialIn terf$ynth#siaJabL C : XUivado_HLS_Tu tor ialIrttfrrfSynthe

12、sis labl cd -C : Uiwadg_HL5_Tij tcrial! n t_$ynthG.i s cd lab2t fUiumdQ_WL5_Tutor工亨lkInt3Fl:mcp-5yntl_KiVlbWqiM dircctivc.tcl螟 a-dtf-ers jc csyntf?. rp t 米;j rnvrniInterface-SummaryDirBitsProtocolSource ObjectC Typeap.dkin1ap-CtrLtisadders_roreturn valueap_rstin1ap_cirLhsaddersjomum valueap_5tartin1

13、ap_ctrl_hsaddersjoreturn valueout1本rCeddersjoreturn valueapjdleOUT1apetrl.hsadd&_ioreturn valueOUI13p_cirl_saddeioreturn valueiniin32ap-vldiniscalartnVapjldin1ap_vldiniscalarM2in32ap_ackm2scalarm2p_3ckout1ap_*kM2括 outl i 一in32pointe-rm_outl_i_ap_vtdin1即一版in.omljxiirterm_outl_i_ap_ackout1而injJElposte

14、rin_outl_oout32ap_hsin_DutlpointermutLoap.vid0U11in.ouilpoineri nout l_c_a p_ ackin1apjwpointerFigure 68: Interface summary for Lab 2?设计有时钟和复位?默认块级协议信号是存在的?端口 in1被以数据端口而实现,并伴随输入有效信号? 数据在in1端口上,仅读。当端口 in1_ap_vld为有效高?端口 in2被综合为数据端口,并与输出响应信号相关联? 当端口 in2被读时,端口 in2_ap_ack将被置高? inout_i定义为inout1参数的输入部分,与输入

15、有效端口inout1_i_ap_val相关联,并且输出响应端口inout1_i_ap_ack? inout1参数输出部分定义为inout_o,与输出有效端口inout1_o_ap_val相关联,并输入响应端口 inout1_o_ap_ack.10.退出vivado HLS GUI并且返回命令提示口学习Vivado第4章lab3 实现数组的 RTL接口概述这个练习说明了在函数中的数组参数,你可以实现不同种类的RTL端口步骤1 :创建和打开工程.在先前的lab中用Vivado HLS命令提示符,更改为 lab3目录.键入 vivado_hls -f run_hls.tcl 来创建新的 Vivado

16、 HLS工程.键入 vivado_hls -p array_io_prj 来打开 vivado HLS 用户界面工程.打开源代码如图69在C源代码中的注释说明了输入数组中的数据是如何有序作为一个通道result.golden.dat的输入和输出数据。此设计具有一个输入数组和一个输出数组。和通道是怎么被计算的。理解设计,您还可以查看试验平台和文件与 甲甲年中N申事申中印印呼中事中申尊甲.卡罕事卡串 中甲本军中餐率 率事巾,中串.申 申平申耳中*印事* 早审甲干事率年审 申尊卑申亨串申尊申耳申申*率率/ 16 群include array_io.h 17/ Tlie data comes in o

17、rganized in a single array.*9 - The first sample for the first channel (CHAN jQ / - Then the first sample for the 2nd channel etc. il / The chnnel are accumulated independently 52 E.For 3 channels:方 Array Order ;1234567&9etc. 16etc.;4 / Sanple Order;AQ CeDO Eg FG CG H0Al BlC2etc- 42C匚.iS/; Output Or

18、der:匚GD0 Eg F0 60 HOB0+B1C3+C2etc. A0+A1+A2etc.j/void array_io (dout_t 4_台11 din_t W_M) i8int i, rem;汨3日/ Store accumulated data51static dacc_taccCHAMNELS;i3/ Accumulateeach channel2For_Loop; for(i=0j iNjd+)55 -reni=jJeGHANNEL5i56aren - accre(n + d_iij= acerem;iS 加 TfbFigure 69: C Code for Interface

19、 Synthesis Lab 3步骤2:综合函数参数数组为RAM端口在这一步中,查看数组端口是怎么综合成RAM端口的。.综合设计,当报告打开时查看接口简介。接口简介表明了在 C源代码中的数组参数是怎么综合成默认的RAM端口的。?设计有时钟,复位和默认的块级I/O协议ap_ctrl_hs (注意在报告中的时钟)? d_o参数已经综合成 RAM端口(I/O协议ap_memory)?数据端口(d_o_d0)?地址端口(d_o_address0)?芯片使能控制端口 (d_o_ce0)和写使能端口(do_we0)? d_i参数已经被综合成类似 RAM接口,但有输入数据端口 (d_i_q0)没有写使能端口

20、,因为接口仅读数据。在这两种情况下,数据端宽度是在C源代码中的数据值的宽度(在这种情况下的16位整数),并且地址端口的宽度已被自动调整大小匹配到的地址必须被存取的次数(5位的为32个地址)。=J flFTriyjo.csynth.rptIIInterfaceSummaryDir固丹ProtocolSource ObjectCT/peap-dkin1array joreturn valueap.rstin1array_ioreturn valuein1array_igretum valueap.doneout1ap.ctri.hsarray joreturn valueap.idiecut1ap

21、.an_ri5arrajoreium valueap.readydut1ap_ctf1_hiarrayjdreturn valuecut5叽 memoryd_oarrdyd_o_teOout1ap_mennDryaruyd_o_weOout1ap_mernofyd_0arrayd_o_dOcut16ap_merrioryd_odj_address d_o% HLS INTERFACE apjifo pond_o 海dj% HLSRESOURCE 时点彘=打 cortRAMJPBRAM II accj 二 Fftr_Lcop她 H4LS UNROLLFigu re 73: Directives

22、Summary for Lab 2 Solution!7.综合设计当报告在信息窗口中打开时,接口摘要如图74?设计有标准的时钟、复位、和块级 I/O端口?数组参数d_o已经综合成16位宽数据接口的FIFO接口(d_o_din),并且有相关联的输出写 (d_o_write)和输入FIFO,H(d_o_full)端口?参数d_i已经实现为双端口RAM接口J *rray_/o_yn Ift.; Interface-SummaryRTL附出SrB阳PTMXOlSaurfc ObjectC Ty2_nkinIap_CVl_hs审仃冲心间urn vdlueapjstin1ap.clrt.hsafrjyjo

23、return valueiip_tartin1ap.ctri.hsarray,ioreturn uls配必neUE1iPJCtrUsarray.io值Turn wiueapjdieMtIap_CTfl53吼WTum 心ig1ap_E一附#rrary_nacnifD 府 luedjJLdinovt16ap.fiiad.cpointerdqW5欣1apjitadgpoirefd.o.wrrteOCE1Jp.tffCdjopoolerd_i_addriOoutEjp_rrt*mbF/d_iarrayMt1ap_memojydjan”d.i.qOin16肛 rrwrnocydj那d iaddfslS叩

24、.memorydJexit1犯 rnemtxydjarraydJ.qlin16ap_rnamar/djarray月9ME 74:Editor 冲tcifying RAM根据使用的双端口 RAM接口,设计能接受两倍于原始设计输入数据的速率。但采用单端口FIFO接口的输出数据速率和先前的一样。步骤4 :分区 RAM和FIFO阵列接口在这步中,您可以学习到分区数组接口如何划分为任意接口数量.从工具栏中选择New Solution或者从工程菜单来创建新的解决方案.设置默认,点击 Finish.保证C源代码在信息窗口中可见.在指令标签中,选择 d_o并右击打开 Directives Editor对话框a

25、.在指令标签对话框上部激活指令下拉菜单,并选择 ARRAY_PARTITIONb.点击类型下拉菜单,并选择块,为了将分布式数组综合成块c.在Factor对话框中,输入4值d.指令编辑如图7 5所示,点击OKViv3do HL5 Directive EditorType TOC o 1-5 h z Direcdve: |ARRAV_PARTTnONDestinationSource FikwjDirective FileOption wariabl? .required: d_o bpe (optional);blockfacto r(opiional)!4dimensian (optiondl

26、j; 1HelpCartelOKFigure 75; Dirfrctives Editor for Pirtifionirkg Amy d_o现在,输入数组分为两大块(不是4个).在指令标签中,选择d_i并重复前面的步骤,但这次分区端口factor用2指令标签展示了现在应用在设计中的指令SE Outline U Direaive口卡 array Jo% HLS ARRA_PARTTnOM partibon wariabled_o Nock 1aaors4 dim* 辆 HLS INTERFACE ap_fi+o ported_0d 物 HIS ARRAY.PARTlTIOft vanable-

27、dj block factor_2 dim = l 骊 HLS RESOURCE variable=djctw=RAM_2R_BRAM 用】are:* F_LjOOP% HLS UNROLL iFigure 76: Directives Summary for Lab 2Soluticn36 .综合设计当报告在信息窗口中打开,接口摘要如图7 7显示?设计有标准的时钟、复位、和块级 I/O端口?数组参数d_o已经综合成四个分离的FIFO接口RAM接口,确认分区因?参数d_i已经实现为两个分离 RAM接口,每一个都是用双端口,(如果你看到4个分离 素d_i是2,而不是4)。3JiSMREfRTL

28、PorteDir Bits Protocol Scarce Object C Tjrpemp.ElKin1ap_triwliKarraV-& Etum wAu-e匹gtin1array.ia FEturnPLjtirtin1.dHJisiirrwif。 rrturnmjt1*p_trl_hirrtwivMueMJt1 WjrtrLMjrrJO- JfbmvMWJp.readyout1 MJjCtHjKjrr_i&d_o_0_dftoutip,Mod,ojOpointsd_c,0_fiJi.ninttoirtcf日.njtt.itfHltfwt149gpQirrtwdja.l.dnout 16邨

29、户。d.0jpoincd_owl Jiilm1衅?_N%4_q_J婚 Ms*djo/jwMeout1jipjifadjo.Xpointe*d.0.Qg$C mC4mt”d.LOjceOout1ap.Ed01ydjntw.dj.O.qOin 16 ap.inewrydj.Oanjyd_0_M3d 喳 *1 out 4 ip.nwroryaJUmyout1 ip.m*TTcryti_i 口1rH=dj-O-fllih 16 ap.memoryd_ij&raydj_l_ldre5rfJ out4 ap.mcrnQiyd.i.1dXljceO5HI ap,rntrnoryd,i_l-arrayd.i.

30、l.qO1ihIQ 营 pjrnerniQryd.i.lsmyd-LLXdreisI mil4 pLmrmo 甲dJJ.Mtjjd_k_l_itlmi 由立#副2伸d_Lliff蚪(J_i_Ul楠 16 ip_memoryd_l_lkrayFigure 77: Interface Report for Partitiond InterFaces如果输入端口 d_i被划分为四个,仅需要为每个端口分配单端口RAM接口。因为输出端口只能一次输出四个值,次读8个输入,没有什么好处。在本教程中对数组的最后一步是完全分割的阵列。步骤5 :全分区数组接口这一步向您展示了如何分割数组接口为单独的端口.从工具栏

31、中选择 New Solution或者从工程菜单来创建新的解决方案.设置默认,点击 Finish。包才从solutions拷贝现存的指令.保证C源代码在信息窗口中可见.在指令标签中,为 d_o选择已存在的分区指令 5 .右击,并选择 Modify DirectiveOutline Directive j_Jw array_io9 dj1H HI S ARRAY PARTTTION ArMt)le=(i_OcompletefiCXQ-r- (ljiTi=l 怖*z Modify Directive -j oX Remo/e DirectiveHL5 ARRAY_PARTTTION partitio

32、n variabledj complete dimflHLS RESOURCE variable=dj core = RAM.2PERAM*11 actFor_Locp% H15 UNROLLFigure 7d: Modifying th Dirctrvv ford口.在指令编辑对话框中a.激活Type下拉菜单,改变分区格式为 Completeb.在因素(Factor)对话框中,你可以删除4,或保留。这个因素对这种分区类型没有作用。C.指令编辑如图7 9,点击OKVivado HLS Dirertive EdrtorTypeOirtive; ARRAY/ARTfHOMJesti rationS

33、ource FileQ Directive FileOptionsvan able (r*q 3足d):d jdtype (optional);completefactor optional):dimension (optional 1HelpCdncelOFigure 设 Qiretthret H3r %,Partition ing Array d e.在指令标签中,选择 d_i并重复前面的步骤,完成对 d_i的全分区或者,您可以删除d_i指定资源的指令。如果阵列被划分为单独的元素,指定了一个内存资源的资源指令将被忽略。指令标签展示了应用在设计中的指令al Outlify 2 Dirdjve

34、 曰口金dJ core=RAM_2P_BRAM 41 ace. 干 FocLoop 嗨 HLS UNROLLFigure 瑜 Direarves 5urnmary for Lab 2 5olvticn3.综合设计.当报告在信息窗口中打开,查看接口摘要,注意以下:?设计有标准的时钟、复位、和块级 I/O端口?数组参数d_o已经综合成3 2个分离的FIFO接口?用3 2个分离的表口对参数 d_i的已经,因为为输入默认接没有I/O协议。他们有I/O协议ap_none尽管该教程的焦点在专门的I/O装口上,在这一点上是值得研究四种解决方案在性能上的差异。.从工具栏里选择比较报告,或从工程菜单中打开方案的

35、比较.在Solution Selection Dialog框中,为四种解决方案中每种添加选择方案框如图81.点击OKFigure Bl: Compare All Sclutiani fof Lab 3打开解决方案的比较报告(图82),它表明solution4,为每个阵列元素试用了唯一的端口,比以前的解决方案快得多。内部逻辑可以尽可能快的获得数据,只要它需要访问数据。(这里是因为端口的访问没有性能瓶颈。)Performance EstimMw-Timing (ns)ClocksolMtionl a IM。应scjIuvohS wluiicn4Targei4,0C4,(X140049Estirra

36、t eti 2393.453.45-Latency (clock cycles)345Lattnc/Intervalnnax min maxsolutionl SQlutian? jQlutioniL2933111293311130341213034125。山2233Figure 睦 Prfrmiince Comparbcns for All Lab 3 So加tiom鼠标滑轮往下滑查看比较报告(图83),并注意与更多的I / O端口解决方案(解决方案 2, 3和4),允许更多的并行处理但也用相当多的资源莒 compare reportsUtil izAtion Etirnate*utionl

37、solution2SQlutiQUJsdutiopl00o|0DSP4BEc000FF10412 3B122011MLUT96L261118S1025Figure 83; Resource Cam parisons for All Lab 3 Solutions在接下来的练习中,用端口和资源之间的最佳平衡,您将实现同样的设计。除了实现这个优化,接下来的练习中展示了如何把AXI4接口添加到设计中。.退出Vivado HLS界面并返回到命令提示符。学习Vivado第4章lab4实现 AXI4接口概述这个练习说明了在I/O端口中指定AXI4总线接口,这个练习除了增加 AXI4接口外还展示了如何创建

38、一个用接口和逻辑指令一起优化的设计。步骤1:创建和打开工程.在先前的lab中用Vivado HLS令提示符,更改为lab4目录.键入 vivado_hls -f run_hls.tcl 来创建新的 Vivado HLSX程.键入 vivado_hls -p axi_interfaces_prj 来打开 vivado HLS用户界面工程.打开源代码如图84此设计用的是和Lab3 一样的源代码,并在设计重命名 axi_interfacesMi interfdcesh 54 /Sample 。/dE:N)R(3【0 DO E8 FQ G& M0 AlPlC2ttc .A?/=SS /Output 0

39、rdr :知EG0 DO EO F。G0 M3 Aj0*A1翻*Bl0+(2et/ Store accumuldted data TOC o 1-5 h z dm”,3“匚HAHHF1 G); 62_63/ AcUBU】ate 9chnnel1For LoopJ for&5renUUHANMELSitihacc J = ACC( I4 | tt i 1 j;d oi J = Mt re;6&)6) 79*FiguF 84; Source ed!。for Lab 4步骤2:创建采用AXI4流接口的一个优化设计在这种设计最佳性能实现中,每个通道的数据将进行并行处理,每个通道以专用硬件实现。理解的关

40、键是如何最好地执行这种优化,是要认识到在输入和输出数组中的通道让他们自己成为循环分区。循环分区是Vivado HLS用户指南中有全面的解释(UG902,但基本上意味着每个数组元素,又存储在不同分区中。)在本练习中,您指定的数组参数,以实现为AXI4流接口。如果该数组被划分成多个通道,你可以通过在并行设计中为每个端口元素实现相同的流接口。最后,如果在I / O端口被配置为提供和利用通道数据时,for循环的局部展开可以为每个通道确保专 用硬件处理。首先,分区阵列:1:保证C源代码在信息窗口中打开2:在指令标签中,选择d_o并右击打开指令编辑对话框。a.选择上部Directives中的下拉菜单,并选

41、择 ARRAY_PARTITIONb.点击Type的下拉菜单,并指定为cyclic分区c.在Factor对话框中,输入8,创建8个分区(这个结果在8个端口中)d.在指令编辑对话框中填充如图85,点击OKVrvado HtS Directive Editor TOC o 1-5 h z Type DitecUve. ARRAPARTITIONOestinaflonSource FileQ Direttive FieOptions variable (required: d_o tyM (opiiondl);小)七factor (optional):8dimension (cpiional): 1

42、HelpCancelOKigure 65: Dirrctivrs tdrtQr for Cydk Partitioning3:在指令标签中,选择d_o并右击打开Directives Ed让or对话框a.激活上部Directives下拉菜单,选择INTERFACEb.点击Mode下拉菜单,指定axis接口c.点击OK4:在指令标签中,选择d_i并重复上述步骤2和步骤3。a.应用cyclic分区并且Factor为8b.应用axis接口5:下一步,对for循环进行局部展开和流水线操作。a.在指令标签中,选择 For_Loop并且右击打开Directives Editor对话框b.激活上部的Direc

43、tives下拉菜单,选择UNROLL.选择因素8 (factor 8)部分展开for循环,这等同于重写C代码以每一次循环迭代中执行 8个循 环体的复制(其中,新的循环仅在总执行用于四次迭代,而不是 32)。.点击OKc.在指令标签中,选择 For_l00P并右击打开Directives Edtor对话框。.激活上部的Directives下拉菜单,并选择 PIPELINE.保持间隔空白,让他默认为1. 选择 enable loop rewinding (使能重复循环). 点击OK当设计顶层是循环,你可以用选择流水线重复,这个通知vivado HLS在RTL实现中,这个循环连续运 行(与功能和功能

44、重新启动周期没有结束)。在执行了上述步骤,指令标签如图 86。检查保证所有的选择都正确的应用。如果没有,双击指令重新打开 Directives Editor臣 Outline LJ Direciive d_o% HLS INTEHfACE axis portsd_o9b HLS AJRRAV PARTinOhJ partftiori variabk = d o cyclk factor=8 dim = 1* djHLS INTEKFACE axis pofl=dj% HLS ARRAY_PA!nTION vaQt?lE = dcyciic faacrsB dim= 1 Hl KCFor_loo

45、p% H15 UNROLL fanor= 8% HLS PIPELINE reuvindFigure 8G: Directive tab for Lab 4 Solutionl.综合设计当报告在信息窗口中打开,确认 d_i和d_o被8个独立的AXI4流接口实现.在设计中的性能部分,确认每个时钟周期对 for循环的处理样本(间隔1)以3延迟,并且设计有 比实验3解决方案2, 3,或4使用的资源更小(图83)。阵列接口和部分for循环展开的循环分区允许执行该 C代码在硬件上实现八个单独的通道。步骤3:实现AXI4-Lite接口 在这个练习中,您可以把块级I/O协议端口组成简单的AXI4 Lite接

46、口,AXI4 Lite接口容许这些块级控 制信号被控制,由CPU访问1:从工具栏中选择New Solution或者从工程(project menu)菜单来创建新的解决方案2:设置默认,点击Finish,包才5从solution1种复制存在的指令3:保证C源代码在信息窗口中可见4:在指令选项卡中,选择顶层函数 axi_interface并且右击打开Directives Ed让or对话框。a.在对话框上部激活 Directives下来菜单,并选择INTERFACEb.激活mode下拉菜单,并选择s_axilite.这指定了与函数返回(块级I / O端口)被实现为一个AXI4Lite 接口相关联的端口。由于默认模式方函数的返回是ap_hs,这里需要指定该I / O协议。c.点击OK指令标签显不如图87跟 Outline 芹 Dmccu此 J * erfacw购 HLS INTERFACE tie ports returndq聃 HLSrNTERFACE 日力5 part=d_o眄 HLSARRAY.PARUTION partition variatle=d_o cyclk fador=Sdimsl“dj* HLS INTERFACE axis. port=d_i/ HLS ARRAY.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论