首页 > 编程知识 正文

除法器verilog,vivado除法器ip核

时间:2023-05-04 20:16:12 阅读:137416 作者:2698

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尝试。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。