Created
September 12, 2022 22:57
-
-
Save rahulbhadani/6aa9c6aea52b65dab315545d032b11d6 to your computer and use it in GitHub Desktop.
Fifth-order low-pass filter
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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