#ifndef _BLACKBOX_BT_CPP_
#define _BLACKBOX_BT_CPP_

#include <systemc.h>
#include "Precision.h"
#include "sc_float.h"
#include "BlackBox_BT.h"


void BlackBox_BT::expFUNC_BT()
{
//Definovanie vnútorných premenných
sc_float<E, M> coef[3];
sc_float<E, M> U;
sc_float<E, M> value_Q;
sc_float<E, M> value_D;
bool en_var;
	

//Reset obvodu
	coef[0].write_man(0);
	coef[0].write_exp(0);
	coef[0].write_sign(0);
	coef[1].write_man(0);
	coef[1].write_exp(0);
	coef[1].write_sign(0);
	coef[2].write_man(0);
	coef[2].write_exp(0);
	coef[2].write_sign(0);
	U.write_man(0);
	U.write_exp(0);
	U.write_sign(0);
	value_D.write_man(0);
	value_D.write_exp(0);
	value_D.write_sign(0);
//	outp.write_man(0);
//	outp.write_exp(2<<(E-1) - 1);
//Ukončenie resetu
wait();


while(true)
{
//Načítanie vstupných dát
	coef[0] = coef0_sc_fl.read();
	coef[1] = coef1_sc_fl.read();
	coef[2] = coef2_sc_fl.read();
	U = Uz_sc_fl.read();


//Funkcia pre generáciu aprox. hodnôt exponencionálnej funkcie
	sc_exp_BT(coef, &value_D, &value_Q, U, en.read());


//Zápis výstupných dát na výstup obvodu
	outp.write(value_Q);
} //Ukončenie while cyklu
} //Ukončenie deklarácie modulu

#endif
