示例#1
0
文件: gain_stream.cpp 项目: rdpoor/mu
 void GainStream::inspect_aux(int level, std::stringstream *ss) {
   MuStream::inspect_aux(level, ss);
   inspect_indent(level, ss);
   *ss << "gain() = " << gain() << std::endl;
   if (signal_source()) {
     inspect_indent(level, ss); 
     *ss << "signal_source()" << std::endl;
     signal_source()->inspect_aux(level+1, ss);
   }
   if (gain_source()) {
     inspect_indent(level, ss); 
     *ss << "gain_source()" << std::endl;
     gain_source()->inspect_aux(level+1, ss);
   }
 }
示例#2
0
文件: gain_stream.cpp 项目: rdpoor/mu
 GainStream *GainStream::clone() {
   GainStream *c = new GainStream();
   c->set_gain(gain());
   if (signal_source_) c->set_signal_source(signal_source()->clone());
   if (gain_source_) c->set_gain_source(gain_source()->clone());
   return c;
 }
示例#3
0
// main program:
int sc_main (int argc, char *argv[])
{
	sc_core::sc_set_time_resolution(1.0, sc_core::SC_NS);
	sc_core::sc_signal <double> angle;
	ab_signal <electrical, parallel> mains;
	ab_signal <electrical, series> output;

	sc_core::sc_clock pwm("PWM", sc_core::sc_time(0.1, sc_core::SC_MS));

	sc_core::sc_trace_file *f = create_tab_trace_file("TRACES", 5e-6);
	mains.trace(f, "MAINS");
	output.trace(f, "OUTPUT");

	generator <double> signal_source("SOURCE1", sine(10, 100, 0, 1024));
	signal_source(angle);
	source <electrical> supply("GENERATOR1", cfg::across);
	supply.input(angle);
	supply.port(mains);

	mosfet_2p m("M1", 0.75, 2.5);
	m(mains, output, pwm);
	m.port[0] <<= 2 ohm;
	m.port[1] <<= 2 ohm;

	R_load r("R1", 2);
	r.port <<= 2 ohm;
	r(output);
	
	diode_1p d("D1", 0.8, 2);
	d.port <<= 2 ohm;
	d(-output);

	sc_core::sc_start(sc_core::sc_time(10e-3, sc_core::SC_SEC));

	close_tab_trace_file(f);
	return 0;
}