📄 boucle_fix.cc
字号:
// boucle_fix.cc// Pierre Bomel - LESTER/UBS - janvier 2005// Formation chez France Telecom R&D#include <systemc.h>#include "gen.h"#include "sense.h"#include "dac.h"#include "adc.h"#include "pack.h"#include "unpack.h"#include "fft_fix.h"#include "log2.h"// parametersint const points = NP; // number of pointsint const log2points = LOG2NP; // log2(points)int const sine_waves = NS; // number of mixed sine wavesint const sampling_period_ns = 10; // sampling period expressed in nanosecondsint const nf = NB; // number of bits of the fractional part// don't modify below this line !int const sampling_length = points * sampling_period_ns * 2; // simulation lengthint const ni = log2points+2; // number of bits of the integer partint const wl = ni + nf; // sc_fixed<wl ... >int const iwl = ni; // sc_fixed<wl, iwl, ...>typedef sc_fixed<wl, iwl> WORD; // fixed data typeint sc_main(int argc, char * argv[]){ cout << "Points = " << points << endl; cout << "Log2p = " << log2points << endl; cout << "Waves = " << sine_waves << endl; cout << "Bits = " << ni << "+" << nf << endl; gen <double, points, sine_waves, sampling_period_ns> GEN("gen"); sense <double, 0> SENSE0("sense0"); adc <double, wl, iwl> ADC("adc"); pack <WORD, points> PACK("pack"); fft_fix<wl, iwl, points, log2points, false, false> FFT("fft"); fft_fix<wl, iwl, points, log2points, true, false> IFFT("ifft"); unpack <WORD, points, sampling_period_ns> UNPACK("unpack"); dac <double, wl, iwl> DAC("dac"); sense <double, 1> SENSE1("sense1"); sc_signal<double> real_in, imag_in; sc_signal<WORD> sreal_in, simag_in; sc_signal<WORD> sreals_in[points], simags_in[points]; sc_signal<WORD> freals[points], fimags[points]; sc_signal<WORD> sreals_out[points], simags_out[points]; sc_signal<WORD> sreal_out, simag_out; sc_signal<double> real_out, imag_out; GEN.real(real_in); GEN.imag(imag_in); SENSE0.real(real_in); SENSE0.imag(imag_in); ADC.real_in(real_in); ADC.imag_in(imag_in); ADC.real_out(sreal_in); ADC.imag_out(simag_in); PACK.real(sreal_in); PACK.imag(simag_in); for(int i = 0; i < points; i++){ PACK.reals[i](sreals_in[i]); PACK.imags[i](simags_in[i]); FFT.sreals[i](sreals_in[i]); FFT.simags[i](simags_in[i]); FFT.freals[i](freals[i]); FFT.fimags[i](fimags[i]); IFFT.sreals[i](freals[i]); IFFT.simags[i](fimags[i]); IFFT.freals[i](sreals_out[i]); IFFT.fimags[i](simags_out[i]); UNPACK.reals[i](sreals_out[i]); UNPACK.imags[i](simags_out[i]); } UNPACK.real(sreal_out); UNPACK.imag(simag_out); DAC.real_in(sreal_out); DAC.imag_in(simag_out); DAC.real_out(real_out); DAC.imag_out(imag_out); SENSE1.real(real_out); SENSE1.imag(imag_out); sc_start(sampling_length, SC_NS); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -