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

📄 modulator.h

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

#include "BPSK.h"

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

typedef int (*ModulateFunc)(double*, UINT sym, void*);//调制一个符号,输出一个信号矢量的函数
typedef void (*InitModCoreFunc)(void*);//初始化调制器内核(分配资源)
typedef void (*CloseModCoreFunc)(void*);//关闭调制器内核(释放资源)

/*调制器"接口", 是每种具体的调制器内核模块必需提供的*/
struct ModuCoreInterface {
	InitModCoreFunc InitModCore;//初始化调制器内核函数
	CloseModCoreFunc CloseModCore;//关闭调制器内核函数
	ModulateFunc ModulateOneSym;//调制函数
	int ModCoreSize;//用于存放调制器用到的各寄存器的结构体所占的字节数(如果不需要则为0)
	int symWid;//一个符号包含的比特数
	int sigDim;//一个信号矢量所包含的信号分量数
};

/*将表征调制器内核的信息依序填入以下表中:*/
enum ModMethod {
	//作为每种调制方法标识符的枚举名字
	Mod_BPSK
};
static ModuCoreInterface ModuCores[]= {
	/*接口实现, 参照下列顺序:*/
	/*:{InitFunc, CloseFunc, ModulateFunc, ModCoreSize, symbolWidth, signalDimension}*/
	{NULL, NULL, BPSKModulate, 0, 3, 3}
};


struct Modulator {
	int inW;//输入符号所包含的比特数
	int outW;//输出信号矢量所包含的信号分量数
	UINT maskSym;//表示符号寄存器当前比特位置的掩码
	UINT masktop;//符号寄存器的最高位掩码(最高位为1,其余为0)
	UINT symbol;//将输入比特流存储以构成一个符号的寄存器
	double* outbuf;//输出信号矢量的缓存
	void* ModCoreRegs;//指向存放调制器内核所需寄存器的结构体的指针
	ModulateFunc ModulateOneSym;//调制函数
	InitModCoreFunc InitModCore;//初始化调制器内核函数
	CloseModCoreFunc CloseModCore;//关闭调制器内核函数
};

extern void InitModulator(Modulator& m, ModMethod method);
extern int ModulateOneByte(byte b, double*& output, Modulator& m);
extern void ResetModulator(Modulator& m);
extern void CloseModulator(Modulator& m);


#endif

⌨️ 快捷键说明

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