jddydwangxilinxdspspecialist
1Vivado HLS简介
xilinxvivadohigh-level synthesis (HLS )工具可将c、c或SystemC设计规范、算法转换并实现为注册传输级RTL )
将DSP算法快速迁移到RTL FPGA实现
将从c到RTL的时间缩短4倍
将基于c语言的验证时间缩短100倍
将RTL模拟时间缩短到3倍
创建Vivado-HLS项目
2.1打开vivadohlsgui
双击桌面上的Vivado HLS GUI图标,或从“开始所有程序”中选择
Vivado Vivado HLS GUI
打开GUI时,Vivado-HLS welcome界面如下所示:
2.2创建新项目
在欢迎页面中,选择“创建新项目”
2.3添加源文件
指定需要顶层集成的源文件名称,然后添加文件。
本除法器的设计采用移位算法
#include 'radix2div.h '
quotient_t radix2div (
dividend_t dividend,//(numerator )
divisor_t divisor,//(denominator )
remainder_t *remainder //
() )。
#pragma AP latency max=3
#pragma AP pipeline
quotient_i_t quo,y; //1位未使用
subtract_t sub_out,rem_r; //
1 bits信号
boolean_t last_bit,next_bit;
loop_cnt_t i;
///
last_bit=0;
rem_r=0;
if(loop_max32 ) )
quo=0ULL;
else
quo=0;
//
div_booth_label03360for(I=0; i LOOP_MAX; I=I1({
//concurrent blocks
sub_out=rem_r - divisor;
y=dividend1(loop_max-I-2 );
if(y==0) )。
next_bit=0;
else
next_bit=1;
if(sub_out0)//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;
}
} //end for
*remainder=rem_r;
返回quo;
}
2.4添加测试文件
添加测试文件。
#include #include
#include 'radix2div.h '
//
quotient_t radix2div (
dividend_t dividend,//(numerator )
divisor_t divisor,//(denominator )
remainder_t *remainder //
);
//
int test _ divider (dividend _ tdividend,
divisor_t divisor
)
{
quotient_t quotient;
remainder_t remainder;
quotient=radix2div(dividend,divisor,remainder );
frintf(stdout,' dividend=%u,divisor=% u quotient=% uremainder=% un ',
dividend、divisor、quotient、remainder;
frintf(stdout,--------n );
if () quotient==dividend/divisor (remainder==dividend-) divisor*quotient ) ) }{
printf(pass(n ) );
}
else {
printf(fail(n ) );
返回1;
}
}
//
int main ()。
int i,j;
dividend_t max_num;
max_num=0;
j=LOOP_MAX-1;
for(I=0; i j; I=I1({
max_num=max_numpow(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,创建时钟约束并选择设备。
打开包含工程信息的Vivado HLS GUI。
3c验证
在将c/c /system c转换为RTL之前,必须验证c设计并确保其功能正确
单击" Run C Simulation "图标,
4c同步
现在可以对设计进行c集成以生成RTL代码。 集成完成后,GUI将更新集成结果。 包括资源使用、latency等。
为了实现预先请求的3个时钟周期,将latency的directive设定为3。
5全新的5Explore解决方案
项目-新解决方案。
在同一个项目中,可以使用同一组源代码进行不同的solutions尝试。