cpp
#include "ap_fixed.h"
typedef ap_fixed<10,8> DTYPE;
typedef ap_fixed<16,2> CTYPE;
void multiAdd(CTYPE c0,CTYPE c1,CTYPE c2,CTYPE c3,DTYPE x0,DTYPE x1,DTYPE x2,DTYPE x3,DTYPE *y);
cpp
#include "multiadd.h"
void multiAdd(CTYPE c0,CTYPE c1,CTYPE c2,CTYPE c3,DTYPE x0,DTYPE x1,DTYPE x2,DTYPE x3,DTYPE *y)
{
*y = c0*x0+c1*x1+c2*x2+c3*x3;
}
cpp
#include "multiadd.h"
#include "stdio.h"
#include "stdlib.h"
int main()
{
CTYPE c0=0.1,c1=0.2,c2=0.3,c3=0.4;
DTYPE x0=100,x1=100,x2=100,x3=100;
DTYPE y;
int yy,i,fail = 0;
for(i = 0;i<10;i++)
{
multiAdd(c0,c1,c2,c3,x0,x1,x2,x3,&y);
yy = y;
printf("%d\n",yy);
if(abs(yy-(100+i))>1)
{
fail = 1;
}
x0++;x1++;x2++;x3++;
}
return fail;
}
其中,multiadd.h是数据类型重定义的头文件,可以自己确定数据精度;
multiadd.cpp是顶层函数实现的cpp文件;
multiadd_tb.cpp是testbench文件.