效果如图,其中方波为基带信号,原始信号为2FSK经过一路带通滤波器后的理想输出结果。
程序对原始信号的绝对值信号进行包络提取。可以看到提取出的包络信号与方波信号相差无几。

代码如下:
//信号条件:10khz为码元"1"的载波,所以设置基带信号频率为2400B/S<2500B/S=10K/4
//因为10K/2400=4.1666,取越5个载波周期对应一个码元
//假设v为一个电容的电压
//因为我的ADC采样频率为140KHz,所以每个载波周期对应14个ADC值,因此v的最大值取14+1即可,最大值不应大于14x5=70。
#define V_MAX 15
u8 v=0,j=0;
u8 i=50000;
while (j<=i)
{
if (ABS[1,j]>0.5)//假设绝对值信号最大值为1,当前值大于最大值的一半
v=V_MAX ;//电容充能至最大值
else
{
if((v-1)>0)//防止减成负数
v=v-1;//相当于电容电压衰减
else
v=0;//电容能量衰减完后电压持续为0
}
if (v>V_MAX/2 )//电压大于阈值
old_res[1,j]=1;//为逻辑真
else
old_res[1,j]=0;//为逻辑假
j=j+1;
}
可以看出阈值的设置相当重要,建议对输入的信号求平均值,以平均值作为阈值进行后续处理。
V_MAX的选取:
V_MAX=15:

V_MAX=100:

稳定起见,后续建议进行斜率检测以删除突变数据,或者用MCU的定时器以基带信号频率来采样获得的包络检波信号。
文章介绍了对2FSK经过带通滤波后的理想输出进行包络提取的过程,强调了ADC采样频率、载波周期与码元速率的关系,以及阈值设置和V_MAX选择对结果稳定性的影响。建议使用平均值作为阈值并进行斜率检测以优化处理。
5117

被折叠的 条评论
为什么被折叠?



