首页 > 编程知识 正文

c语言中除法运算结果符号,除法器verilog

时间:2023-05-04 00:16:23 阅读:137414 作者:2298

将DSP算法加速到RTL FPGA实现

将从c到RTL的时间缩短4倍

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

将RTL模拟时间缩短到3倍

在该例子中,如果用7 bits除cxdcc现象13,则得到13 bits商、7 bits以上的低latency的除法器,latency只有3个时钟周期。

c源代kqdwx/p #include 'radix2div.h '

dividend_t dividend,//(numerator )

divisor_t divisor,//(denominator )

remainder_t *remainder //

() )。

#pragma AP latency max=3

#pragma AP pipeline

subtract_t sub_out,rem_r; //1位信号

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=dividend 1

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

返回quo;

}

首字母axdds/p #ifndef LOOP_MAX

# define loop _ max 14//quotient _ length 1

#endif

#ifdef BIT_ACCURATE

#include 'ap_cint.h '

typedef uint13 dividend_t;

typedef uint7divisor_t;

typedef uint13quotient_t;

typedef int14remainder_t;

typedef int14 subtract_t; //dividend_t 1 bits signed

typedef uint14 quotient_i_t; //quotient_t 1 bits unsigned

typedef uint6 loop_cnt_t; //2^^Y loop_max

typedef uint1 boolean_t;

#else

typedef intdividend_t;

typedef intshort divisor_t;

typedef intquotient_t;

typedef int boolean_t;

typedef intremainder_t;

typedef int unsigned uint32_t;

typedef int long long subtract_t;

typedefintunsignedlonglongquotient _ I _ t;

typedef int loop_cnt_t;

#endif

C testbench语句axdds/p #include

#包含

#include 'radix2div.h '

//

dividend_t dividend,//(numerator )

divisor_t divisor,//(denominator )

remainder_t *remainder //

);

//

int test _ divider (dividend _ tdividend,

divisor_t divisor

{

remainder_t 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 );

//

}

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