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

📄 boucle_fix.cc

📁 用systemC制作的快速付立叶变换
💻 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 + -