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

📄 demodulator.h

📁 包括RS码的编码,硬(BM)/软(KV)译码,AWGN信道调制解调仿真. 具体采用何种编译码方案和调制解调方式可在Profile.txt文件中指定(内有详细说明). 且扩展性极好,容易向其中加入新的调
💻 H
字号:
#ifndef _DEMODULATOR
#define _DEMODULATOR

#include "channel.H"
#include "BPSK.h"

typedef unsigned char byte;
typedef unsigned int UINT;
//TO DO: unsigned long

typedef int (*DemodFunc)(UINT& sym, const double* r, const AWGN* gauss, void* regs);//解调一个信号矢量,输出一个符号的函数
typedef int (*ReliabFunc)(double* reliab, const double* r, const AWGN* gauss, void* regs);
//根据信号矢量分别给出符号的每个比特的可信度(为0的概率)
typedef void (*InitDemCoreFunc)(void*);//初始化解调器内核(分配资源)
typedef void (*CloseDemCoreFunc)(void*);//关闭解调器内核(释放资源)

/*解调器"接口", 是每种具体的解调器内核模块必需提供的*/
struct DemodCoreInterface {
	InitDemCoreFunc InitDemCore;//初始化解调器内核函数
	CloseDemCoreFunc CloseDemCore;//关闭解调器内核函数
	DemodFunc DemodOneSig;//解调函数
	ReliabFunc GetReliability;//给出比特可信度的函数
	int CoreStructSize;//用于存放解调器用到的各寄存器的结构体所占的字节数(如果不需要则为0)
	int sigDim;//一个符号包含的比特数
	int symWid;//一个信号矢量所包含的信号分量数
};


/*将表征调制器内核的信息依序填入以下表中:*/
enum DemodMethod {
	//作为每种解调方法标识符的枚举名字
	Demod_BPSK
};
static DemodCoreInterface DemodCores[]= {
	/*接口实现, 参照下列顺序:*/
	//{InitFunc, CloseFunc, DemodFunc, GetReliability, CoreSize, signalDim, symbolWidth}
	{NULL, NULL, BPSKDemod, BPSKReliab, 0, 3, 3}
};


struct Demodulator {
	int inW;
	int outW;
	AWGN* gauss;
	byte masko;
	int ib;
	byte* outbuf;
	double* reliabuf;
	//double* symbol;
	//int iSym;
	UINT masktop;
	void* DemCoreRegs;
	DemodFunc DemodOneSig;
	ReliabFunc Reliability;
	InitDemCoreFunc InitDemCore;
	CloseDemCoreFunc CloseDemCore;
};


extern void InitDemodulator(Demodulator& m, DemodMethod method, AWGN* gauss);
//extern int DemodOneComponent(double c, byte*& output, Demodulator& m);
extern int DemodOneSignal(const double* sig, byte*& output, Demodulator& m);
extern int DemodOneSignal(const double* sig, double*& output, Demodulator& m);
extern void ResetDemodulator(Demodulator& m);
extern void CloseDemodulator(Demodulator& m);

#endif

⌨️ 快捷键说明

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