2 创建一个VivadoHLS工程Xilinx Forums.docx
- 文档编号:29546980
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:15
- 大小:745.73KB
2 创建一个VivadoHLS工程Xilinx Forums.docx
《2 创建一个VivadoHLS工程Xilinx Forums.docx》由会员分享,可在线阅读,更多相关《2 创建一个VivadoHLS工程Xilinx Forums.docx(15页珍藏版)》请在冰豆网上搜索。
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
打开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;//
subtract_tsub_out,rem_r;//
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的尝试。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 创建一个VivadoHLS工程 Xilinx Forums 创建 一个 VivadoHLS 工程
![提示](https://static.bdocx.com/images/bang_tan.gif)