CN103391149A - 一种用于etc车载单元的fmo解码方法 - Google Patents
一种用于etc车载单元的fmo解码方法 Download PDFInfo
- Publication number
- CN103391149A CN103391149A CN2012101423644A CN201210142364A CN103391149A CN 103391149 A CN103391149 A CN 103391149A CN 2012101423644 A CN2012101423644 A CN 2012101423644A CN 201210142364 A CN201210142364 A CN 201210142364A CN 103391149 A CN103391149 A CN 103391149A
- Authority
- CN
- China
- Prior art keywords
- steps
- data
- fmo
- jump
- jumps
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提供了一种用于ETC车载单元的FMO解码方法。该方法使用检测跳沿和定点采样相结合的方式,进行FMO解码,利用定点采样前等待时间对数据进行处理。每位数据前用检测跳沿方法来实现位同步,避免位速率不准引起的累积误差。数据后半部分使用采样法,在采样前对前一位数据进行处理,充分利用了单片机资源。本方法所使用汇编指令均为常用指令,可移植性高;时间复杂度低有利于在性能较差的单片机上实现。本方法实时解码性能稳定可靠,符合目前ETC车载单元的市场需求。
Description
技术领域
本发明是智能交通不停车收费***中车载单元解析收到的FMO编码的软件解码方法。
背景技术
ETC***是目前国际上主要研究和推广的自动电子收费***,适用于高速公路以及交通繁忙的桥梁隧道环境下的车辆收费解决方案。车载单元(OBU,On-Board Unit)是ETC***的标准配件,用于安装在车辆的前挡风玻璃上,当车辆通过ETC车道时,OBU与路侧单元(RSU,Roadside Unit)等设备通讯,不需停车即可完成ETC收费。从而提高汽车通行速度,有效解决交通堵塞问题。这种收费***其收费通道的通行能力是人工收费通道的5到10倍。
国标GB/T20851.1中规定用于ETC***的数据编码方式为FMO编码。每帧数据使用0x7E作为头尾。为区别数据和帧头帧尾,数据发送过程中使用透明传输,即发送数据时,每发送5个1之后***1个0,使得传输的数据不可能出现0x7E的情况。为了使接收设备能够进行数据同步,帧头0x7E前还应该加入16个1、16个0的前导码。
现有的FMO软件解码方法主要分为2种:
第一种是定点检测电平的方法,通过两次采样电平的比较,来分析该位数据。这种方法的优点是单片机可以在两次采样时间之间进行数据处理,数据处理时间较为充裕,所以对单片机数据处理速度要求不高。但是这种方法的缺点也很明显,这种定点采样的方法对于位速率不精确的FMO波形来说,每一次采样都会产生采样点偏差。当数据较长的时候,产生的累积误差可能导致采样点偏离到错误的电平处,致使数据采样错误,最终使得解码结果错误。如图1所示,当数据位速率变慢的时候,最后一次采样电平就出现了错误。
第二种是检测电平翻转(即检测跳沿)的方法,使用一个计数器,在每次电平发生变化的时候判断该计数器的值,根据该值和半位数据宽度值比较的结果,分析判断该位数据。这种方法由于采用了跳沿检测的方法,相当于每一位起始都会对数据进行同步,所以不会由于位速率不精确而产生累积误差。这种方法的缺点是检测电平翻转前单片机需要一直对管脚电平做判断,浪费单片机资源,而且对单片机的速度要求较高,否则,数据还未处理完成时电平翻转会导致解码错误。如图2所示,虚线为开始检测跳沿的时间。由于t2时间内一直在检测跳沿,所以数据处理必须在t1时间内完成。易知t1<T/2,其中T为一位 数据周期。所以这种方法对单片机数据处理性能要求很高,显然不符合目前ETC市场的要求。
发明内容
为了避免传统两种解码方法的缺陷,本发明使用检测跳沿和定点采样相结合的方式,如图3所示。
在每一位数据前对跳沿进行检测,起到位同步作用,避免了位速率不精确而产生累积误差。
在后半位数据的某位置(可根据波形的实际情况调整,以增加解码兼容性)进行电平采样。采样完成之后,将采样结果保存,即图3中t1所示时间中进行的工作。之后接着检测跳沿,检测到跳沿之后,根据之前保存的采样结果和跳沿关系来判断数据,并进行透明传输的去0处理及数据保存工作,即图3中t2所示时间中进行的工作,易知t2<T-t1,其中T为一位数据周期,t1与单片机速度有关。在ETC下行链路256kbps标准位速率与单片机主时钟12MHz的速度下,t1=3*T/48。
通过对指令顺序的调整,使得数据处理时间最小化,以降低对单片机速度的要求。
本发明提供了一种用于ETC车载单元的FMO解码方法,其特征在于:步骤A,持续检测电平翻转,当检测到电平翻转时,转到下一步骤;
步骤B,等待时间,直到采样点到来时,进行采样;
步骤C,根据电平翻转的高低关系以及采样电平的高低确定本位数据值;
步骤D,将所述本位数据值存入一位数据暂存寄存器R1,返回步骤A继续处理。
根据上述任一方法,其特征在于:在非首次执行的步骤A之后,步骤B之前,还包括:对R1中存储的上一位数据进行判断、处理和存储。
根据上述任一方法,其特征在于,在首次执行步骤A之前还包括:
步骤A0,对收到连续“1”的个数计数器R2、收到数据位计数器R3进行初始化;
在非首次执行的步骤A之后,步骤B之前,还包括:
步骤A1,判断R1中存储的上一位数值,若是1则跳到步骤A2,若是0,则跳到步骤A3;
步骤A2,将收到连续“1”的个数计数器R2的计数累加1,根据R2判断是否连续收到6个1,若是则表示收到帧尾,解码结束;否则,跳到A4继续处理;
步骤A3,根据R2判断是否收到连续5个1,若是则表示需要去0处理,跳到步骤B;否则,初始化R2,跳到步骤A4继续处理;
步骤A4,将字节数据存储寄存器R4中的数据向高位移1位,将R1中的数值存入R4的最低位,将收到数据位计数器R3的计数累加1,转到下一步骤处理;
步骤A5,跳到步骤B。
根据上述任一方法,其特征在于,所述步骤A4之后,A5之前还包括:
步骤A41,根据R3判断是否收满了整个字节的8位数据,是则将R4中的数据保存到缓冲区,初始化R3,跳到步骤A5,否则直接跳到步骤A5。
根据上述任一方法,其特征在于:每次在步骤A中检测到电平翻转时,对数据进行同步。
根据上述任一方法,其特征在于:在步骤A中持续检测电平翻转时,设置有超时机制,如果超时仍未检测到电平翻转则报错退出。
根据上述任一方法,其特征在于所述步骤B中采样点之前的等待时间可以设置,以适应不同占空比以及不同位速率的FMO波形。
附图说明
图1为定点采样法解码及其缺陷示意图。
图2为检测跳沿法解码及其缺陷示意图。
图3为本方法解码示意图。
图4、5为本方法流程图。
具体实施方式
下面着重对数据部分的解码进行说明。由于前导码以及帧头0x7E波形固定,可以通过一些简单的方法识别,使用本方法也只需在细节上做一些调整便可判断,故下面不再赘述。
为了方便描述,对使用的一些计数器或寄存器进行一下定义:
R1:一位数据暂存寄存器,用于保存接收到的一位数据;
R2:收到连续“1”的个数计数器,用于去“0”处理和检测帧头帧尾;
R3:收到数据位计数器,用于判断是否收完整个字节的8位数据;
R4:字节数据存储寄存器,用于存储整个字节数据。
对于上述定义,若计数器初始化为非零值时,则计数器累加1为对其当前值减1;若初始化为零值时,则计数器累加1为对其当前值加1.
首先,由于采样前时间是对前一位数据进行的处理,第一位数据前没有数据,需要对 第一位数据进行特殊处理。具体处理如下:
0.对寄存器进行初始化,R2赋值为6,R3赋值为8;
1.判断初始管脚电平,若为高电平,跳转到2,若为低电平跳转到6;
2.检测首次高-低跳沿;
判断管脚电平是否为低电平,如果为低电平,跳转到3,否则一直循环本步骤,根据实际情况,可加入超时机制;
3.等待时间后检测采样;
等待若干时间,直到采样点,进行采样,判断采样电平,若为高电平,跳转到4,若为低电平跳转到5;
4.高-低跳沿加上高采样值,表示本位数据前低后高,说明数据为0,将0保存至R1,跳转到10;
5.高-低跳沿加上高采样值,表示本位数据前低后低,说明数据为1将1保存至R1,跳转到18;
6.检测首次低-高跳沿;
判断管脚电平是否为高电平,如果为高电平,跳转到7,否则一直循环本步骤;
7.等待时间后检测采样;
等待若干时间,直到采样点,进行采样,判断采样电平,若为高电平,跳转到8,若为低电平跳转到9;
8.低-高跳沿加上高采样,表示本位数据前高后高,说明数据为1,将1保存至R1,跳转到10;
9.低-高跳沿加上低采样,表示本位数据前高后低,说明数据为0,将0保存至R1,跳转到18;
然后进入一般解码程序,程序流程图见图4、5,说明如下:
10.检测高-低跳沿;
判断管脚电平是否为低电平,如果为低电平,跳转到11,否则一直循环本步骤;
11.判断上一个数据是否为1,根据结果分别到12和15处理;
(判断R1中保存的数据,若为1,跳转到12,若为0跳转到15)
12.若为1,将收到连续“1”的个数计数器R2的计数累加1,即R2减1,则进行帧尾判断,判断是否收到连续6个1,如果不是则13后续处理,如果已收到连续6个1,则表明收到尾帧跳到26结束处理;
(R2减1,判断R2是否为0,如果不为0,跳转到13,否则跳转到26)
13.若非连续6个1,则将R4向高位移1位,将上一位收到的1保存到R4的最低位,R3累计又收到一位数据并判断是否收完整个字节,如果已收完则到14处理整个字节,否则跳到3处理下一位;
(将R4进行右移操作,然后将R4最低位置1,R3减1,判断R3是否为0,如果为0,跳转到14,不为0,跳转到3)
14.若收完整个字节,将R4保存到缓冲区并重置位数计数器R3,跳到3处理下一位;
(将R4保存到接收缓冲区中,R3恢复为8,跳转到3)
15.如果上一位是0,则判断是否需要去0处理,判断R2是否已收到5个连续1,如果是,则上一位收到的0是为了打断连续1,在5个连1后***的0,不处理这个0,跳到3处理下一位;如果不是5个连续1之后的0,则跳到16继续处理这一位0;
(判断R2是否为1,如果为1,跳转到3,如果不为1,跳转到16)
16.由于接收到0,中断了连续1的接收,重置连续1计数器R2,将R4向高位移1位,将上一位收到的0保存到R4的最低位,R3累计又收到一位数据并判断是否收完整个字节,若已收完跳到17处理整个字节,否则跳到3处理下一位;
(R2恢复为6,将R4进行右移操作,然后将R4最低位置0,R3减1,判断R3是否为0,如果为0,跳转到17,不为0,跳转到3)
17.若收完整个字节,将R4保存到缓冲区并重置位数计数器R3,跳到3处理下一位;
(将R4保存到接受缓冲区中,R3恢复为8,跳转到3)
18.检测低-高跳沿;
判断管脚电平是否为高电平,如果为高电平,跳转到19,否则一直循环本步骤;
19.判断上一个数据是否为1;判断上一个数据是否为1,根据结果分别到20和23处理;
(判断R1中保存的数据,若为1,跳转到20,若为0跳转到23)
20.若为1,将收到连续“1”的个数计数器R2的计数累加1,即R2减1,则进行帧尾判断,判断是否收到连续6个1,如果不是则21后续处理,如果已收到连续6个1,则表明收到尾帧跳到26结束处理;
(R2减1,判断R2是否为0,如果不为0,跳转到21,否则跳转到26)
21.若非连续6个1,则将R4向高位移1位,将上一位收到的1保存到R4的最低位,R3累计又收到一位数据并判断是否收完整个字节,如果已收完则到22处理整个字节,否 则跳到7处理下一位;
(将R4进行右移操作,然后将R4最低位置1,R3减1,判断R3是否为0,如果为0,跳转到22,不为0,跳转到7)
22.若收完整个字节,将R4保存到缓冲区并重置位数计数器R3,跳到7处理下一位;
(将R4保存到接收缓冲区中,R3恢复为8,跳转到7)
23.如果上一位是0,则判断是否需要去0处理,判断R2是否已收到5个连续1,如果是,则上一位收到的0是为了打断连续1,在5个连1后***的0,不处理这个0,跳到7处理下一位;如果不是5个连续1之后的0,则跳到24继续处理这一位0;
(判断R2是否为1,如果为1,跳转到7,如果不为1,跳转到24)
24.由于接收到0,中断了连续1的接收,重置连续1计数器R2,将R4向高位移1位,将上一位收到的0保存到R4的最低位,R3累计又收到一位数据并判断是否收完整个字节,若已收完跳到25处理整个字节,否则跳到7处理下一位;
(R2恢复为6,将R4进行右移操作,然后将R4最低位置0,R3减1,判断R3是否为0,如果为0,跳转到25,不为0,跳转到7)
25.若收完整个字节,将R4保存到缓冲区并重置位数计数器R3,跳到7处理下一位;
(将R4保存到接受缓冲区中,R3恢复为8,跳转到7)
26.除了帧头帧尾0x7E不可能出现连续6个1,接收到连续6个1,即为帧尾,解码结束。
Claims (7)
1.一种用于ETC车载单元的FMO解码方法,其特征在于:
步骤A,持续检测电平翻转,当检测到电平翻转时,转到下一步骤;
步骤B,等待时间,直到采样点到来时,进行采样;
步骤C,根据电平翻转的高低关系以及采样电平的高低确定本位数据值;
步骤D,将所述本位数据值存入一位数据暂存寄存器R1,返回步骤A继续处理。
2.根据权利要求1所述的方法,其特征在于:在非首次执行的步骤A之后,步骤B之前,还包括:对R1中存储的上一位数据进行判断、处理和存储。
3.根据权利要求1所述的方法,其特征在于,在首次执行步骤A之前还包括:
步骤A0,对收到连续“1”的个数计数器R2、收到数据位计数器R3进行初始化;
在非首次执行的步骤A之后,步骤B之前,还包括:
步骤A1,判断R1中存储的上一位数值,若是1则跳到步骤A2,若是0,则跳到步骤A3;
步骤A2,将收到连续“1”的个数计数器R2的计数累加1,根据R2判断是否连续收到6个1,若是则表示收到帧尾,解码结束;否则,跳到A4继续处理;
步骤A3,根据R2判断是否收到连续5个1,若是则表示需要去0处理,跳到步骤B;否则,初始化R2,跳到步骤A4继续处理;
步骤A4,将字节数据存储寄存器R4中的数据向高位移1位,将R1中的数值存入R4的最低位,将收到数据位计数器R3的计数累加1,转到下一步骤处理;
步骤A5,跳到步骤B。
4.根据权利要求3所述的方法,其特征在于,所述步骤A4之后,A5之前还包括:
步骤A41,根据R3判断是否收满了整个字节的8位数据,是则将R4中的数据保存到缓冲区,初始化R3,跳到步骤A5,否则直接跳到步骤A5。
5.根据权利要求1-4之一所述的方法,其特征在于:每次在步骤A中检测到电平翻转时,对数据进行同步。
6.根据权利要求1-4之一所述的方法,其特征在于:在步骤A中持续检测电平翻转时,设置有超时机制,如果超时仍未检测到电平翻转则报错退出。
7.根据权利要求1-4之一所述的方法,其特征在于所述步骤B中采样点之前的等待时间可以设置,以适应不同占空比以及不同位速率的FMO波形。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012101423644A CN103391149A (zh) | 2012-05-09 | 2012-05-09 | 一种用于etc车载单元的fmo解码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012101423644A CN103391149A (zh) | 2012-05-09 | 2012-05-09 | 一种用于etc车载单元的fmo解码方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103391149A true CN103391149A (zh) | 2013-11-13 |
Family
ID=49535318
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012101423644A Pending CN103391149A (zh) | 2012-05-09 | 2012-05-09 | 一种用于etc车载单元的fmo解码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103391149A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105811990A (zh) * | 2014-12-31 | 2016-07-27 | 航天信息股份有限公司 | Fm0编码的解码方法、装置及电子不停车收费*** |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1959741A (zh) * | 2005-11-04 | 2007-05-09 | 中国电子科技集团公司第五十研究所 | 具有编解码能力的通信终端模块及其收发数据的方法 |
-
2012
- 2012-05-09 CN CN2012101423644A patent/CN103391149A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1959741A (zh) * | 2005-11-04 | 2007-05-09 | 中国电子科技集团公司第五十研究所 | 具有编解码能力的通信终端模块及其收发数据的方法 |
Non-Patent Citations (1)
Title |
---|
山宝银等,: "《ETC电子标签的FM0编解码设计与实现》", 《微计算机信息》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105811990A (zh) * | 2014-12-31 | 2016-07-27 | 航天信息股份有限公司 | Fm0编码的解码方法、装置及电子不停车收费*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105703885A (zh) | 基于曼彻斯特码的解析方法及装置 | |
CN103995764A (zh) | 一种具有串行总线协议连续触发功能的逻辑分析仪 | |
CN103618588A (zh) | 一种自动波特率检测方法及检测模块 | |
CN110910629B (zh) | 基于单片机的红外遥控信号解码方法、***及计量装置 | |
CN102722690B (zh) | 磁卡解码方法 | |
CN106569047A (zh) | 一种车载can总线的分析装置及方法 | |
CN105184875A (zh) | 复杂路径下的费率计算与拆分***及方法 | |
CN101321015A (zh) | 全数字化的脉冲位置调制信号接收机 | |
US10528499B2 (en) | On-board unit and method for improving performance of transmitting and receiving thereof | |
CN105610545A (zh) | 一种基于fpga的ft3自适应解码***及方法 | |
CN102546084A (zh) | 异步串行通信数据接收时的抗干扰纠错采样***和方法 | |
CN102222211B (zh) | 一种磁卡解码方法及磁卡读取装置 | |
CN103177479B (zh) | 一种路侧设备和路侧设备中的数据处理方法 | |
CN203574663U (zh) | 一种自动波特率检测模块 | |
CN103391149A (zh) | 一种用于etc车载单元的fmo解码方法 | |
CN114384354A (zh) | 硬件实现的串行通讯高动态范围波特率识别方法及电路 | |
CN106921463A (zh) | 一种抗干扰解码方法及*** | |
CN104270155A (zh) | 一种曼彻斯特码流接收抗干扰比特解析方法 | |
CN101764669A (zh) | 数据接收过程中的crc码校验方法 | |
CN208768080U (zh) | 一种bmc码自适应解码*** | |
CN106341107B (zh) | 脉冲调制信号校准方法及装置 | |
CN114253879B (zh) | 一种基于软件模拟的多通道串口通信方法及*** | |
CN105653489A (zh) | Mil_std_1553总线分析与触发方法 | |
CN102668392B (zh) | 无线通信***、发送装置、接收装置、接收方法、及发送方法 | |
CN101394703B (zh) | 一种时钟恢复***和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20131113 |
|
RJ01 | Rejection of invention patent application after publication |