本发明涉及数字信息传输领域,特别是一种基于脉宽等长机制的fsk解调方法。
背景技术:
fsk(frequency-shiftkeying,频移键控)是利用载波频率变化来传递数字信息的一种数字调制技术。具有实现容易,抗噪声与抗衰减的性能好等特点。在电力载波通讯中到了广泛的应用。如民用智能电表抄表系统,电网中远动信息收发,矿井系统中的遥测遥控传输等。
fsk最常用的方法是将二进制数1和0,分别调制为f1与f2两个频率不同的双频fsk系统。被调制的频率相对电网频率高出许多。fsk系统中,“调制”相对简单,“解调”比较复杂。
fsk信号的解调方式有模拟解调方式与数字解调方式。模拟解调方式中,有参考差分fsk解调和全差分fsk解调。参考差分fsk解调是将fsk载波信号控制偏置电流对电容充电,根据电容上充电电压与参考电压通过比较器判决数据是1还是0。全差分fsk解调是利用不同偏置电流对不同的电容进行充电,根据电容上充电电压差值的大小通过比较器判决数据是1还是0。模拟解调电路容易漂移,是其主要缺点。数字解调方式通常有过零点检测、正交相乘等,过零点检测解调方式适用于非常低速率的应用,通讯速率较低。正交相乘解调方式较为复杂的乘法器以与高阶数字滤波器,成本较高,电路也较复杂。另外fsk解调电路还可以采用锁相环pll的方式实现,包括模拟pll和数字pll。这类解调电路同样有诸多缺点,功耗较大,电路复杂,成本较高。
随着智能电网概念的普及,“智能”电器越来越多。智能电器的首要特点是可通讯。因fsk通讯方式无需增设额外的通讯线路,逐成为智能电器可通讯之首选。且智能电网、智能电器相互之间的通讯速率往往较低。
现有的fsk调制与解调方式有多种方法,其中解调方式有相干解调方式和非相干解调等方式,但多不限定对“0”与“1”的调制宽度。这给以高速单片机或dsp为主要控制器件的智能电器的fsk通讯,带了极大的不便,或增加了电路的复杂性,或降低了解码的成功率。
技术实现要素:
针对现有技术中存在的问题,本发明的目的在于提供一种成本低、大幅度简化了fsk的“硬件调制发送耦合”电路、避免了数字解调电路的复杂性,克服了模拟解调电路时漂的影响、同时提高了解调的快速性、具有极高的抗干扰能力的基于脉宽等长机制的fsk解调方法。
为了达到上述目的,本发明采用以下技术方案。
一种基于脉宽等长机制的fsk解调方法,步骤包括:
1)设置码元个体脉冲最大宽度限定值,设置一桢,即一个字节的最小宽度时限、最大宽度时限,之后执行步骤2);
2)设置下降沿捕获中断开启,设置并清空二个数据缓冲区,设置指向第一数据缓冲区的指针为数据缓冲区首地址,清零累加时间数据,之后执行步骤3);
3)下降沿捕获中断后,将捕获时间数据保存至指针指向的地址,指针加一,并累加时间数据,之后执行步骤4);
4)当本次捕获时间数据大于个体脉冲最大宽度限定值,则执行步骤2),否则执行步骤5);
5)当累加时间数据在一桢最小宽度时限与最大宽度时限之间,则建立完成接收一桢标志so,否则等待下一次中断,之后执行步骤6);
6)主程序检测so标志,当so=1时,将第一数据缓冲区里的数据,转移到二数据缓冲区,并清空第一数据缓冲区,之后执行步骤7);
7)主程序对第二数据缓冲区以逐个t为单位进行计算,设置解码字节ud=00h,解码次数=8,设置指针指向从第二数据缓冲区首地址a0,之后执行步骤8);
8)累加指针地址里的时间数据,直到等于大于t,此时的地址记号为a1,之后执行步骤9);
9)在a0到a1地址中,设符合“0”码元时限的个数n,符合“1”码元时限的个数m,当n≥m,则解码结果为“0”;否则,解码结果为“1”,将解码结果赋值ud的最高位后,ud循环右移一位,指针地址+1记号为a0,累加器清零,之后执行步骤10);
10)当解码次数减1不为零时,返回步骤8,当解码次数减1为零时,完成一桢解码。
采用上述技术方案后,本发明具有以下有益效果:
1、为了大幅度降低成本,在低速fsk通讯场合,常采用高速单片机、dsp为核心元件进行调制与解调,可大幅度简化fsk调制发送电路与fsk信号接收电路。
2、调制方,高速单片机或dsp,采用定时中断、查表等方式,对待调制字节采用t0脉冲n个数或t1脉冲m个数或不同的组合形式进行调制,直接通过端口发送,从而大幅度简化了fsk的“硬件调制发送耦合”电路。
3、接收方,高速单片机或dsp,采用边沿捕获、外部触发中断等方式,直接获取码元宽度时间值及个数。fsk信号由程序进行解调还原,从而避免了数字解调电路的复杂性,克服了模拟解调电路时漂的影响。
4、fsk信号解调还原,依据脉宽等长机制,查找总宽度内最接近标称值的码元序列,在该序列中,只要有1个码元与标称值的码元相吻合,即可解调出二进制位值,从而大大降低了解调的复杂性,同时提高了解调的快速性。
5、本方法具有极高的抗干扰能力。
6、作为智能电器的主控制器,高速单片机或dsp在完成主要监控任务的同时,可兼顾fsk的调制与解调任务,大幅度降低总体成本。
综上所述,本发明基于脉宽等长机制的的fsk调制与解调方法,调制方法简单,解调可靠性高,抗干扰能力强,快速性好,可广泛使用于智能电器等多种场合。
附图说明
图1是本发明基于脉宽等长机制的fsk调制方法原理图。
图2是本发明基于脉宽等长机制的fsk调制方法的流程图。
图3是本发明基于脉宽等长机制的fsk解调方法的流程图。
图4是本发明基于脉宽等长机制的fsk调制方法抗干扰原理图解之一。
图5是本发明基于脉宽等长机制的fsk调制方法抗干扰原理图解之二。
具体实施方式
下面根据说明书附图和具体实施例对本发明作进一步的解释。
如图1所示,对“0”进行调制,采用的码元宽度t0=11.25us,码元个数n=9,调制频率f0约等于88.88khz,总的调制时间t等于101.25us;对“1”进行调制,采用的码元宽度t0=10.125us,码元个数m=10,调制频率f0约等于98.76khz,总的调制时间t等于101.25us。调制中心频率约为93.56khz。fsk有效数据速率可达9.8kbit/s。
一种基于脉宽等长机制的fsk调制方法,步骤包括:
1、定时器初始化
1)取出一个待调制发送的字节,设置“字节循环次数a”为8位(次);
2)判断待调制发送字节的最低位,当最低位为“0”时,设置定时器中断“位循环次数b”为9次,定时中断常数为11.25us;当最低位为“1”时,设置定时器中断“位循环次数b”为10次,定时中断常数为10.125us;
3)开放定时器中断,输出端口置高电平,启动定时器定时。
2、定时中断(如图2所示)
1)将输出端口取反,之后执行步骤2);
2)位循环次数b减去1后判断是否为零,如果不为零执行步骤3);如果为零,建立ob标志,执行步骤4);
3)重置定时常数,退出中断;
4)字节循环次数a减去1后判断是否为零,如果不为零执行步骤5);如果为零执行步骤6);
5)待调制的字节右移1位,之后执行步骤7);
6)ov=1,建立调制字节发送完成标志,供主程序查询。
7)判断最高位是否为1,如果不是1执行步骤8);是1执行步骤9);
8)设置位循环次数b=9,定时器时间常数t=11.25us,之后执行步骤10);
9)设置位循环次数b=10,定时器时间常数t=10.125us,之后执行步骤10);
10)退出中断。
一种基于脉宽等长机制的fsk解调方法,步骤包括:
1、数据捕获
1)设置下降沿捕获中断开启,设置向数据指针指向第一数据缓冲区的首地址,开启一个定时器,清零累加时间数据;
2)下降沿捕获中断后捕获定时器的当前时间值数据,减去上次的捕获数据得到本次捕获的真值,保存至第一数据缓冲区,数据指针加1,捕获时间累加和加上本次捕获的真值。
3)判断捕获时间累加和,是否大于等于一个字节的时间宽度(如101.25us×8位)。小于时,等待下一次捕获中断,执行步骤2);大于时,清零捕获时间累加和,建立完成接收一桢标志so并进行数据备份。
2、数据备份
将第一数据缓冲区里的数据,备份至第二数据缓冲区,同时清空第一数据缓冲区。
3、数据解调(如图3所示,针对第二数据缓冲区)
1)解调初始化包括:设置解码次数q=8,默认解码字节ud=00,指针指向数组首地址a0,时间数据累加和t清零,设置码元“0”的宽度值,设置码元“1”的宽度值,设置位宽度时间值t=101.25us,之后执行步骤2);
2)逐个累加指针地址里的时间数据,直到等于大于t,此时的指针地址记号为a1,之后执行步骤3);
3)令第二数据指针指向地址a0,在a0到a1地址段中,对码元个体时间值进行计算准备,之后执行步骤4);
4)计算码元“0”的个数n,之后执行步骤5);
5)计算码元“1”的个数m,之后执行步骤6);
6)判断n是否大于等于m,大于等于是,执行步骤8);否则执行步骤7);
7)解码结果为“1”,置位解码字节最高位,之后执行步骤8);
8)解码字节左移1位,之后执行步骤9);
9)将解码次数q减去1后判断是否为零。如果不为零,执行步骤10);如果为零,执行步骤11);
10)时间数据累加和t清零,数据指针地址更新a1为a0,执行步骤2);
11)完成一桢解码,解码结束。
如图4所示,尽管码元个数不变,但码元个体宽度时间值受到了严重干扰。在一个等长调制脉t0(t0=t)的宽度内,只要码元p1或p2符合标称值宽度,即可解调出“0”;在一个等长调制脉t1(t1=t)的宽度内,只要码元p1符合标称值宽度,即可解调出“1”。
如图5所示,码元个体宽度时间值受到严重干扰,码元个数也方式了变化。但在t0(t0=t),的宽度内,码元p1及p4符合“0”要求,故计数值n=2;码元p5符合“1”要求,故计数值m=1。因n大于m,可解调出“0”。在t1(t1=t),的宽度内,码元p1及p4符合“1”要求,故计数值m=2;码元p5符合“0”要求,故计数值n=1。因n小于m,可解调出“1”。