#ifndef _MODSUB_H_
#define _MODSUB_H_

/*
Ein Modulares Hardwaremodul in SystemC, welches die modulare Subtraktion zweier Zahlen realisieren soll.
*/

#include <systemc.h>

SC_MODULE(ModSubModule){

	/// Eingänge

	// Erster Operand
	sc_in<sc_biguint<160> > x;

	// Zweiter Operand
	sc_in<sc_biguint<160> > y;

	// Modulo Wert
	sc_in<sc_biguint<160> > m;

	// Berechnung ausführen
	sc_in<bool> en;

	// clock
	sc_in<bool> clk;


	/// Ausgänge

	// Berechneter Wert
	sc_out<sc_biguint<160> > out;

	// Berechnung abgeschlossen
	sc_out<bool> done;

	// Simulation processes
	void exe();

	int mode;
	SC_HAS_PROCESS(ModSubModule);
	ModSubModule(sc_module_name name, int mode): sc_module(name){
		this->mode = mode;
		SC_THREAD(exe);
		sensitive << clk;
	}
};

#endif
