2 创建一个VivadoHLS工程Xilinx Forums.docx

上传人:b****8 文档编号:29546980 上传时间:2023-07-24 格式:DOCX 页数:15 大小:745.73KB
下载 相关 举报
2 创建一个VivadoHLS工程Xilinx Forums.docx_第1页
第1页 / 共15页
2 创建一个VivadoHLS工程Xilinx Forums.docx_第2页
第2页 / 共15页
2 创建一个VivadoHLS工程Xilinx Forums.docx_第3页
第3页 / 共15页
2 创建一个VivadoHLS工程Xilinx Forums.docx_第4页
第4页 / 共15页
2 创建一个VivadoHLS工程Xilinx Forums.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

2 创建一个VivadoHLS工程Xilinx Forums.docx

《2 创建一个VivadoHLS工程Xilinx Forums.docx》由会员分享,可在线阅读,更多相关《2 创建一个VivadoHLS工程Xilinx Forums.docx(15页珍藏版)》请在冰豆网上搜索。

2 创建一个VivadoHLS工程Xilinx Forums.docx

2创建一个VivadoHLS工程XilinxForums

用Vivado-HLS实现低latency除法器

GeorgeWang–XilinxDSPSpecialist

TableofContents

1VivadoHLS简介3

2创建一个Vivado-HLS工程4

2.1打开VivadoHLSGUI4

2.2创建新工程5

2.3添加源文件6

2.4添加测试文件8

2.5创建solution10

3CValidation12

4CSynthesis13

5Explore不同新的Solution15

1VivadoHLS简介

XilinxVivadoHigh-LevelSynthesis(HLS)工具将C,C++,或者SystemC设计规范,算法转成RegisterTransferLevel(RTL)实现,可综合到XilinxFPGA。

将DSP算法快速转到RTLFPGA实现

将C至RTL时间缩短4倍

基于C语言的验证时间缩短100倍

RTL仿真时间缩短3倍

 

2创建一个Vivado-HLS工程

2.1打开VivadoHLSGUI

双击桌面上VivadoHLSGUI图标,或从Start>AllPrograms>

Vivado>VivadoHLSGUI

打开GUI之后,Vivado-HLSwelcome界面如下所示:

2.2创建新工程

在WelcomePage,选择CreateNewProject

 

2.3添加源文件

指定顶层需要综合的源文件名,并添加文件.

本除法器设计采用移位算法

#include"radix2div.h"

quotient_tradix2div(

dividend_tdividend,//(numerator)

divisor_tdivisor,//(denominator)

remainder_t*remainder//

){

#pragmaAPlatencymax=3

#pragmaAPpipeline

quotient_i_tquo,y;//+1bitsunsigned

subtract_tsub_out,rem_r;//+1bitssigned

boolean_tlast_bit,next_bit;

loop_cnt_ti;

///////////////////////////////////////////////

last_bit=0;

rem_r=0;

if(LOOP_MAX>32)

quo=0ULL;

else

quo=0;

//////////////////////////////////////////////////

div_booth_label0:

for(i=0;i

//concurrentblocks

sub_out=rem_r-divisor;

y=dividend&1<<(LOOP_MAX-i-2);

if(y==0)

next_bit=0;

else

next_bit=1;

if(sub_out<0){//remainder-denominatorisnegative

quo=quo<<1;

if(i!

=LOOP_MAX-1){

rem_r=rem_r<<1;

rem_r=rem_r|next_bit;

}

}

else{//remainder-denominatorispositive

quo=quo<<1;

quo=quo|1;

if(i!

=LOOP_MAX-1){

rem_r=sub_out<<1;

rem_r=rem_r|next_bit;

}

else

rem_r=sub_out;

}

}//endfor

*remainder=rem_r;

returnquo;

}

 

2.4添加测试文件

添加测试文件.

#include

#include

#include"radix2div.h"

//////////////////////////////////////////////////////////////////////////////

quotient_tradix2div(

dividend_tdividend,//(numerator)

divisor_tdivisor,//(denominator)

remainder_t*remainder//

);

//////////////////////////////////////////////////////////////////////////////

inttest_divider(dividend_tdividend,

divisor_tdivisor

{

quotient_tquotient;

remainder_tremainder;

quotient=radix2div(dividend,divisor,&remainder);

fprintf(stdout,">>>>>>>>>dividend=%u,divisor=%uquotient=%uremainder=%u\n",

dividend,divisor,quotient,remainder);

fprintf(stdout,">>>>>>>>>--------------------\n");

if((quotient==dividend/divisor)&&(remainder==dividend-(divisor*quotient))){

printf("PASS\n");

}

else{

printf("FAIL\n");

return1;

}

}

//////////////////////////////////////////////////////////////////////////////

intmain(){

inti,j;

dividend_tmax_num;

max_num=0;

j=LOOP_MAX-1;

for(i=0;i

max_num=max_num+pow(2,i);

}

//////////////////////////////////////////////////////////////////////////////

test_divider(max_num,1);

test_divider(2,pow(2,9)-1);

test_divider(max_num,pow(2,9)-1);

test_divider(8,1);

test_divider(99,10);

//////////////////////////////////////////////////////////////////////////////

}

2.5创建solution

创建solution,时钟约束,并选器件.

 

打开包括工程信息VivadoHLSGUI.

 

3CValidation

在将c/c++/systemc转换成RTL之前,必须先验证C设计,确保其功能是正确的

点击“RunCSimulation”图标,

 

4CSynthesis

现在可以对设计做C综合,生成RTL代码.当综合完成,,GUI更新综合结果.包括资源使用,latency等。

 

为了达到了预先要求为3个时钟周期,将latency的directive设置为3。

5Explore不同新的Solution

project->newsolution。

在同一个工程里面,可以使用同一套源代码,进行不同solutions的尝试。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 工作总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1