vivado HLS c平台文件输入测试实例

以下代码为vivado HLS 在进行testbench测试的时候,利用文件读取的方式获取激励的方法

 

-----------------------------------代码-------------------------------------------------------------------------

//---------------------------------------------ScalarMult.h--------------------------------------------------

#include

 

#define W 18

#define N 4

#define _NO_SYNTH_

 

#ifndef _NO_SYNTH_

typedef int data_t;

typedef int prod_t;

#else

typedef ap_int data_t;

typedef ap_int<2*W> prod_t;

#endif

 

prod_t ScalarMult(data_t A, data_t B);

 

//----------------------------------------tb_ScalarMult.cpp--------------------------------------------------

#include

#include

#include

#include "ReadFileVec.h"

#include "WriteFileVec.h"

#include "PrintResult.h"

#include "ScalarMult.h"

 

using namespace std;

 

int main()

{

data_t A[N] = {0};

data_t B[N] = {0};

prod_t prod[N] = {0};

int i = 0;

int ErrCnt = 0;

char *fa = "mat_a.txt";

char *fb = "mat_b.txt";

char *fp = "mat_p.txt";

char *fanew = "mat_anew.txt";

ReadFileVec (fa, A);

ReadFileVec (fb, B);

for(i=0; i

{

cout << "current value of A\t" << A[i] << '\n';

cout << "current value of B\t" << B[i] << '\n';

prod[i] = ScalarMult(A[i], B[i]);

cout << "current value of P\t" << prod[i] << '\n';

}

WriteFileVec (fp, prod);

ErrCnt = system("diff -w mat_p.txt refp.txt");

cout << setw(40) << setfill('-') << '-' <<'\n';

cout << ErrCnt; //PrintResult(ErrCnt);

return 0;

}

 

//----------------------------------------ScalarMult.cpp------------------------------------------------

#include "ScalarMult.h"

prod_t ScalarMult(data_t A, data_t B)

{

prod_t prod;

prod = A * B;

return prod;

}

 

//--------------------------------------ReadFileVec.h----------------------------------------------------

#include

#include

 

using std::cerr;

using std::cout;

using std::setw;

using std::setfill;

using std::ifstream;

template

void ReadFileVec(char *fp, Tm OutBuf[N])

{

int i;

int j;

Tv val;

ifstream fp_strmi(fp);

if(!fp_strmi.is_open())

{

cerr << "Error!\nThe file is not able to open!\n";

}

else 

{

for(i=0; i

{

fp_strmi >> val;

OutBuf[i] = Tm(val);

}

}

fp_strmi.close();

cout << setw(60) << setfill('-') << '-' << '\n';

cout << "Read file successful!\n";

cout << setw(60) << setfill('-') << '-' << '\n';

}

 

//-----------------------------------WriteFileVec.h-----------------------------------------------------------

#include

#include

using std::cout;

using std::cerr;

using std::ofstream;

using std::setw;

using std::setfill;

template

void WriteFileVec(char *fp, Tm InBuf[N])

{

int i;

int j;

ofstream fp_strmo(fp);

if(!fp_strmo.is_open())

{

cerr << "Error!\nThe file is not able to open!\n";

}

else 

{

for(i=0; i

{

fp_strmo << InBuf[i] << '\n';

}

}

fp_strmo.close();

cout << setw(60) << setfill('-') << '-' << '\n';

cout << "Data has been successfully stored to target file!\n";

cout << setw(60) << setfill('-') << '-' << '\n';

}

 

 

 

你可能感兴趣的:(FPGA开发)