发明内容
本发明的目的是寻求一种用于无线遥控接收芯片的自适应解码方法,这种可以覆盖全频率范围且无须调整自身工作频率的、识别地址可以兼容两态/三态编码的、地址码可以灵活更改的、对环境影响及噪声干扰影响适应性强的、具有低功耗并具有低成本优势的硬件自适应解码算法。
为了实现上述目的,本发明提出一种自适应解码算法,这个算法采样接收到的信号,利用简单直观的寄存器操作实现信号码元数据化处理所必须的数学运算,避免了繁复的硬件乘除法器结构,能够实现对两态/三态地址编码的自动识别处理,并且算法本身对于噪声干扰以及信号误差的处理效果都十分理想。
,用于无线遥控接收芯片的自适应解码方法包括:
a、接收采样:无线遥控定码编码信号是以数据帧的形式传输的,对于每一次接收输入信号数据帧时,在检测到输入信号的高低电平的上升/下降沿后,利用采样时钟,分别对输入信号的高电平及码宽进行采样计数,并将相应的采样值保存起来;
b、确定基准值:对采样后的数值进行比对分析,根据同步码高低电平的比例关系,对采样数据进行计算,将同步码的高电平采样值作为本次接收的输入信号数据帧码元数值化的基准值,保存至基准值寄存器中;
c、确定误差及冗余:在确立基准值后,按照设定的误差比例,计算出本次接收数据帧时的码元误差范围,并且采用前后接收数据或者前后同步码比对的冗余算法,再加上本算法对于每次接收的输入信号数据帧都更新基准值,这样,对于系统规范定义之内的噪声及误差范围,准确处理接收信号;所述误差比例为基准值的±12.5%;
d、码元数据数值化:在得到基准值,并且计算好误差范围后,将本次输入信号数据帧码元的高电平及码宽的采样值,分别与基准值进行比对,确定比例关系,依照定义的码元固定的占空比关系将接收的码元数据数值化;
e、输入信号的自适应:对于每一次接收的输入信号数据帧,都重新确定基准值,并且,在对码元的数值化处理时,都只是按照高低电平的占空比关系确定具体数值,实现对不同频率及码宽输入信号的自适应识别。
在码元数值化过程中,根据码元宽度与基准单位数据的宽度比,采用寄存器移位操作。
在输入信号的自适应过程中,对于每次接收的输入信号数据帧,基准值都进行更新,并且采用前后输入信号数据帧数值或前后同步码比对的冗余算法。在接收到同步码后,将同步码高电平的采样计数值作为本次接收的码元基准值,并且在每次接收到新的编码数据的同步码时都对基准值进行更新;由于每个码元的占空比是固定的,因此只要对各码元的占空比进行计算,就能够识别各码元,将其数据化。
各码元的数值化采用如下方法计算:
将同步码的高电平采样计数值作为基准值C0,位宽定义与整个码元采样数值相匹配;
如果码元高电平=C0,且码宽为C1=(C0<<5),则本码元为同步码;
如果码元高电平=C0,且码宽为C2=C0<<2),则本码元为数据“0”码;
如果码元码宽-码元高电平=C0,且码宽为C3=(C0<<2),则本码元为数据“1”码。
在对误差比例进行处理时,
首先将误差的允许范围规定在±12.5%;
定义一个寄存器D0,其宽度设置为与发射频率最低时计数数据相匹配;
设基准值C0的位数为n,定义基准误差为E0,位数为n-3,
则:E0=(C0>>3);
数据码元范围即为:D0={(C0-E0),2’b00}到D1={(C0+E0),2’b11};
同步码包含误差后范围为:D2={(C0-E0),5’b00000}到
D3={(C0+E0),5’b11111}。
在输入信号的自适应处理时,在发射端编码发射频率不同时,计算出不同的基准值;同时,码元的数据化处理都只是与其高低电平的占空比相关,不受其频率的影响,因此,信号的接收、处理覆盖了无线遥控发射信号的全频率范围,实现自适应解码。
无线遥控定码编码信号包括两态及三态地址的编码,由于两态及三态地址的编码的同步码、数据码元的占空比关系是一致的,只有数据码元的位数不同,因此,在以基准值为参照的基础上得出码元数值后,再按照位数关系自动区分两态及三态地址的编码信号。
在应用系统中,如图1所示,无线遥控信号经过天线及接收放大电路,传送至本自适应解码硬件算法电路(解码器)中,经过数据处理,将解码后的数据传递给系统的输出控制模块,最终完成应用系统的功能。本自适应解码硬件算法电路即处在这样一个数据的中间处理的位置。
本自适应解码硬件算法电路,如图2所示,由A(电平触发检测)、B(采样计数器)、C(基准值/码宽计算)、D(噪声误差控制)、E(同步码鉴别)、F(数据码鉴别)、G(自适应数值化处理)、H(两态/三态码鉴别)、I(输出寄存器)等功能模块组成。
本自适应解码硬件算法电路,当有无线遥控信号输入时,功能模块A(电平触发检测)侦测到输入信号高低电平的上升/下降沿,继而触发功能模块B(采样计数器),开始分别对接收到的信号的高电平及码宽进行采样计数,采样计数得到的数值由功能模块C(基准值/码宽计算)进行计算,得出本次接收数据判断使用的基准值,以及计算得出本次接收数据的码元宽度,再经过功能模块D(噪声误差控制)的误差冗余处理,将基准值以及本次接收数据的码元宽度送至功能模块E(同步码鉴别)及功能模块F(数据码鉴别),分别计算判断得出同步码、数据码,再将这些经过处理的同步码、数据码送到功能模块G(自适应数值化处理)中,进行数值化计算,得出本次接收数据的数值化结果,最后,还需要经过功能模块H(两态/三态码鉴别)进行两态/三态编码识别,这样就完成了对本次接收数据的自适应解码处理,从而可以将最终的解码数据送至功能模块I(输出寄存器)中,为其他电路的数据处理做好准备。
无线遥控信号都是以数据帧的形式(如图3所示)进行传递的,信号每一个完整的高低电平变化周期即为一个数据码元。每个数据帧都是由同步码(Csyn)及数据码(D1~D23)组成的,其中,两态/三态编码的数据帧格式是相同的,只是数据码的数据码元位数不同。对于两态/三态编码,它们的同步码定义也是相同的,当一个数据码元的高电平与低电平的占空比为1∶31(如图中所示高低电平宽度比为TH∶31TH),这个码元即为同步码;对于两态编码,逻辑数据“1”表示为信号的高低电平比为3∶1(如图中所示3TL∶TL),逻辑数据“0”表示为信号的高低电平比为1∶3(如图中所示TH∶3TH);对于三态编码,逻辑数据“1”是由两个连续的高低电平比为3∶1(如图中所示3TL∶TL)的数据码元组成的,逻辑数据“0”是由两个连续的高低电平比为1∶3(如图中所示TH∶3TH)的数据码元组成的,另外,三态编码还有一个逻辑数据“f”,表示即非“0”又非“1”的第三态,其由连续的一个高低电平为1∶3(如图中所示TH∶3TH)的数据码元及一个高低电平为3∶1(如图中所示3TL∶TL)的数据码元组成。图3中的采样时钟在本自适应解码硬件方法中,即为系统的工作时钟(如图2中“系统时钟CLK”)。
具体实施方式
a、接收采样:无线遥控定码编码信号是以数据帧的形式传输的,对于每一次接收输入信号数据帧时,在检测到输入信号的高低电平的上升/下降沿后,利用采样时钟,分别对输入信号的高电平及码宽进行采样计数,并将相应的采样值保存起来;
b、确定基准值:对采样后的数值进行比对分析,根据同步码高低电平的比例关系,对采样数据进行计算,将同步码的高电平采样值作为本次接收的输入信号数据帧码元数值化的基准值,保存至基准值寄存器中;
c、确定误差及冗余:在确立基准值后,按照设定的误差比例,计算出本次接收数据帧时的码元误差范围,并且采用前后接收数据或者前后同步码比对的冗余算法,再加上本算法对于每次接收的输入信号数据帧都更新基准值,这样,对于系统规范定义之内的噪声及误差范围,准确处理接收信号;所述误差比例为基准值的±12.5%;
d、码元数据数值化:在得到基准值,并且计算好误差范围后,将本次输入信号数据帧码元的高电平及码宽的采样值,分别与基准值进行比对,确定比例关系,依照定义的码元固定的占空比关系将接收的码元数据数值化;
e、输入信号的自适应:对于每一次接收的输入信号数据帧,都重新确定基准值,并且,在对码元的数值化处理时,都只是按照高低电平的占空比关系确定具体数值,实现对不同频率及码宽输入信号的自适应识别。
在码元数值化过程中,根据码元宽度与基准单位数据的宽度比,采用寄存器移位操作。
在输入信号的自适应过程中,对于每次接收的输入信号数据帧,基准值都进行更新,并且采用前后输入信号数据帧数值或前后同步码比对的冗余算法。在接收到同步码后,将同步码高电平的采样计数值作为本次接收的码元基准值,并且在每次接收到新的编码数据的同步码时都对基准值进行更新;由于每个码元的占空比是固定的,因此只要对各码元的占空比进行计算,就能够识别各码元,将其数据化。
各码元的数值化采用如下方法计算:
将同步码的高电平采样计数值作为基准值C0,位宽定义与整个码元采样数值相匹配;
如果码元高电平=C0,且码宽为C1=(C0<<5),则本码元为同步码;
如果码元高电平=C0,且码宽为C2=C0<<2),则本码元为数据“0”码;
如果码元码宽-码元高电平=C0,且码宽为C3=(C0<<2),则本码元为数据“1”码。
在对误差比例进行处理时,
首先将误差的允许范围规定在±12.5%;
定义一个寄存器D0,其宽度设置为与发射频率最低时计数数据相匹配;
设基准值C0的位数为n,定义基准误差为E0,位数为n-3,
则:E0=(C0>>3);
数据码元范围即为:D0={(C0-E0),2’b00}到D1={(C0+E0),2’b11};
同步码包含误差后范围为:D2={(C0-E0),5’b00000}到
D3={(C0+E0),5’b11111}。
在输入信号的自适应处理时,在发射端编码发射频率不同时,计算出不同的基准值;同时,码元的数据化处理都只是与其高低电平的占空比相关,不受其频率的影响,因此,信号的接收、处理覆盖了无线遥控发射信号的全频率范围,实现自适应解码。
无线遥控定码编码信号包括两态及三态地址的编码,由于两态及三态地址的编码的同步码、数据码元的占空比关系是一致的,只有数据码元的位数不同,因此,在以基准值为参照的基础上得出码元数值后,再按照位数关系自动区分两态及三态地址的编码信号。
下面,就本发明结合硬件模块结构(如图2),按照输入信号处理流程进行原理性的阐述:
本自适应解码硬件算法电路在应用系统中,所处的位置如图1所示,其算法硬件模块结构框图如图2所示;
当有无线遥控信号输入时,功能模块A(电平触发检测)侦测到输入信号的上升/下降沿,继而触发功能模块B(采样计数器),分别对接收到的有效单位码元(如图3所示的同步码、“0”码、“1”码)的高电平及码宽进行采样计数,将相应的采样计数值依次记录下来;
如图3所示,同步码的高电平和码宽的比例关系为1∶32,数据“0”码的高电平和码宽的比例为1∶4,数据“1”码的高电平和码宽的比例为3∶4;而32是2的5次方,4是2的2次方,因此,可以根据这样的数学关系依据一个基准值来计算各码元;
在本次接收数据过程中,将功能模块B(采样计数器)的采样值按照上述输入信号数据帧中各码元的的比例关系,确定出同步码的高电平,并以此高电平的采样值作为本次接收的码元计算的基准值,在下次接收数据时,基准值再依照当次接收的同步码的高电平采样值重新确定。在确定基准值的同时,对接收的各码元的宽度也进行记录;
在信号接收的过程中,总是会存在着各种各样的干扰噪声,对于噪声的处理有很多种方法,但是,对于本自适应算法,由于每次接收数据帧时都更新基准值,即对每次接收数据时的同步码都重新记录采样计数值,并且对于接收数据采用前后信号帧或同步码比对的冗余算法,这样就能避免误码率,有效地消除了噪声干扰对信号判断计算的影响。
信号的传输通路中,各种因素也会导致信号误差的产生,使得信号与标准定义具有一定的误差。在本自适应解码硬件算法电路中,针对误差因素,采用了一个简单而高效的方法,电路既简单又有实效(下列表达式采用Verilog语言描述,后同):
在这里,将同步码的高电平采样计数值作为基准值C0(其寄存器位宽定义与整个码元采样数值相匹配);
a)首先将误差的允许范围规定在12.5%,这是一个比较合适的值,同时对于硬件电路来讲也即为数据右移3位的结果
b)定义一个寄存器D0,其宽度设置为与发射频率最低时计数数据相匹配
c)设基准值C0的位数为n,定义基准误差为E0,位数为n-3,则:
E0=(C0>>3)
d)数据码元范围即为:D0={(C0-E0),2’b00}到D1={(C0+E0),2’b11}
e)同步码包含误差后范围为:D2={(C0-E0),5’b00000}到
D3={(C0+E0),5’b11111}
如此处理之后,在发射端全频率范围内,并且在规范定义之内的噪声及误差范围内,本自适应解码硬件算法电路都能良好地处理接收信号,为之后的码元数值化提供准确可靠的数据。
由于在接收数据帧中的每个码元的占空比是固定的,因此只要对各码元的占空比依照本次接收数据的基准值进行计算,就能够识别各码元,区分同步码及数据码,得出输入信号数据帧的码元性质、位数长度等信息;
如前所述,同步码、数据“0”码、数据“1”码的高电平与其码元宽度都有一个固定比例关系,并且这个比例关系都是以2的倍数关系存在的,因此以基准值作为参考数据,按照二进制的移位运算,即可反映出这个比例关系。所以,各码元的数值化可以采用如下方法计算:
在这里,将同步码的高电平采样计数值作为基准值C0(其寄存器位宽定义与整个码元采样数值相匹配);
如果码元高电平=C0,且码宽为C1=(C0<<5),则本码元为同步码;
如果码元高电平=C0,且码宽为C2=(C0<<2),则本码元为数据“0”码;
如果码元码宽-码元高电平=C0,且码宽为C3=(C0<<2),则本码元为数据“1”码;
由于基准值在每次接收到新的数据帧的步码时都被更新,因此,在发射端编码发射频率不同时,基准值也是不同的;同时,码元的数据化处理都只是与其高低电平的占空比关系相关,不受其频率的影响,因此,只要设计好采样频率,保证在发射信号频率全范围内安全采样,就能使得信号的接收、处理覆盖发射信号频率全范围,并且受自身工作频率的影响也最小,这样就达到了自适应解码的目的。
无线遥控定码编码信号定义有两态地址码,也有三态地址码,其编码定义如图3所示,两态地址编码通过一个高低电平宽度比为1∶3的码元来表示数据“0”,高低电平卡比为3∶1的码元表示数据“1”;而三态地址编码则通过两个连续的高低电平宽度比为1∶3的码元来表示数据“0”,两个连续的高低电平宽度比为3∶1的码元来表示数据“1”,另外,一个高低电平宽度比为1∶3的码元加一个高低电平宽度比为3∶1的码元组合表示数据“f”,两态和三态编码的同步码都是一样的,即高低电平宽度比为1∶31。由于本算法只按照码元的占空比来对信号进行数值化,因此,对于两态/三态地址编码,本算法都是先计算出基准采样值,然后再对同一帧码元进行数值化解码,解码后可得出码元的位数,依照两态/三态编码数据位数定义的差异,就能够分辨出两态和三态地址编码了,并且主频无须根据发射端发射频率的变化而更改,完全实现自适应。