⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tb_phc.cpp

📁 新型的SystemC-AMS语言
💻 CPP
字号:
#include "systemc-ams.h"#include "phc.h"SCA_SDF_MODULE(ref_src) {   sca_sdf_out<double>  out;      double ampl, freq;  // source amplitude and frequency      void sig_proc() {      double vout = 2*M_PI*freq*sc_time_stamp().to_seconds();      vout = ampl*sin(vout);/*      cout << sc_time_stamp() << " Module: " << name()           << " / sim time = " << sc_simulation_time()           << " / time stamp = " << sc_time_stamp().to_seconds()           << " / vout = " << vout           << endl;*/      out.write(vout);   }      SCA_CTOR(ref_src) {} };SCA_SDF_MODULE(vco_src) {   sca_sdf_out<double>  out;      double ampl, freq;  // source amplitude and frequency   double dphi;        // phase shift      void sig_proc() {		const double DPHI_STEP = 157.1e-3*0.05;  // per 1 us*SDF step		double vout = ampl*sin(2*M_PI*freq*sc_time_stamp().to_seconds() + dphi);		dphi += DPHI_STEP; dphi = (dphi > M_PI)? M_PI : dphi;/*      cout << sc_time_stamp() << " Module: " << name()           << " / time stamp = " << sc_time_stamp().to_seconds()           << " / dphi = " << dphi           << " / vout = " << vout           << endl;*/      out.write(vout);   }      SCA_CTOR(vco_src) {      dphi = -M_PI;   }   };SCA_SDF_MODULE(trace) {   sca_sdf_in<double> sin;   ofstream output;   void sig_proc() {      output << sc_time_stamp().to_seconds() << "\t "             << sin.read() << endl;   }   SCA_CTOR(trace) {      output.open(name(), ios::out);   }};int sc_main(int argc, char* argv[]){   sca_sdf_signal<double>  ref, vco, pco;      sc_set_time_resolution(1.0, SC_NS);	phc i_pc("pc");      i_pc.in1(ref);      i_pc.in2(vco);   	i_pc.out(pco);   	i_pc.kpc = 0.66;	ref_src i_ref_src("ref_src");   	i_ref_src.out(ref);   	i_ref_src.out.set_T(sc_time(0.05, SC_US));   	i_ref_src.ampl = 1.0;   	i_ref_src.freq = 1e6;	vco_src i_vco_src("vco_src");   	i_vco_src.out(vco);   	i_vco_src.ampl = 1.0;   	i_vco_src.freq = 1e6;	trace tr_ref("tr_ref"); tr_ref.sin(ref);	trace tr_vco("tr_vco"); tr_vco.sin(vco);	trace tr_pco("tr_pco"); tr_pco.sin(pco);   sc_start(41.0, SC_US);   system("PAUSE");   return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -