Skip to content

Instantly share code, notes, and snippets.

@rahulbhadani
Created September 12, 2022 22:57
Show Gist options
  • Save rahulbhadani/6aa9c6aea52b65dab315545d032b11d6 to your computer and use it in GitHub Desktop.
Save rahulbhadani/6aa9c6aea52b65dab315545d032b11d6 to your computer and use it in GitHub Desktop.
Fifth-order low-pass filter
#include "fifth_order.h"
#include "data_sources.h"
#include <cstdlib>
#include <cstring>
int sc_main(int argc, char **argv)
{
double amplitude, frequency;
if(argc < 3)
{
cout <<" In sufficient input params. \n usage: ./sim <amplitude> <frequency>" << endl;
exit(0);
}
vector<sca_signal<double>> sig_in(2);
vector<sca_signal<double>> sig_out(3);
amplitude = strtod(argv[1], NULL);
frequency = strtod(argv[2], NULL);
/* Declare filter modules */
first_order f1("First");
second_order f2_1("Second-1");
f2_1.set_coeffs(1.0, 1.0, 4.3E-3, 7.0E-6);
second_order f2_2("Second-2");
f2_2.set_coeffs(1.0, 1.0, 1.6E-3, 7.0E-6);
sin_source sine("Sine");
sine.out(sig_in.at(0));
sine.amplitude = amplitude;
sine.frequency = frequency;
f1.sig_in(sig_in.at(0));
f1.sig_out(sig_out.at(0));
f2_1.sig_in(sig_out.at(0));
f2_1.sig_out(sig_out.at(1));
f2_2.sig_in(sig_out.at(1));
f2_2.sig_out(sig_out.at(2));
//tracing
sca_trace_file* atf = sca_create_tabular_trace_file("Fifth-order");
sca_trace(atf, sig_in.at(0), "Input");
sca_trace(atf, sig_out.at(2), "Output");
cout << "Simulation started..." << endl;
sc_start(100.0, SC_MS);
sc_stop();
cout << "Simulation finished." << endl;
sca_close_tabular_trace_file(atf);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment