论文部分内容阅读
[摘 要]根据SUBSET-036标准,对应答器报文译码算法、流程进行研究, 并通过FPGA进行算法实现和验证,通过与报文原始信息进行比较,验证了FPGA实现的正确性。FPGA中应答器译码算法的实现对编程器、应答器传输模块的研究和开发具有很好的指导意义。
[关键词]应答器 译码算法 FPGA实现
中图分类号:U284.48 文献标识码:A 文章编号:1009-914X(2014)36-0350-01
1 概述
应答器是一种能向车载子系统发送报文信息的点式传输设备,它既可以传送固定信息,也可以连接轨旁电子单元传送可变信息。由于应答器具有高可靠性的数据传输能力和大容量的信息传输速度,因此作为车-地通信方式在列车控制系统中得到广泛的应用。
为保证应答器报文能安全可靠的在车-地之间传输,欧洲信号(EUROSIG)协会制定了一种适用于应答器报文的编解码策略FFFS。
利用FFFS编码策略得到的每个报文是循环码中的一个码字,它可以防止随机错误和突发错误对报文的干扰。应答器的报文格式有长报文(1023位)和短报文(341位)两种,其位数设置如表1所示。
2 译码流程
应答器译码具体流程研究分析如下:
(1)取一个长度为n+r的窗,用来接收连续的比特流。(长报文r=77,短报文r=121。如果窗已经移动超过7500bits,r=n)。
(2)判断奇偶校验是否满足,如果不满足,移窗,回到步骤(1);
(3)r位额外bits(窗的右边r位)是否和开始的r位(窗的左边)一致?如果不一致,移窗,回到步骤(1);
(4)利用同步算法找到报文的开始位置(bn-1),如果是不可能的值,移窗,返回步骤(1);
(5)对报文进行字母表条件检测,如果存在非法字,移窗,返回步骤(1);
(6)反转比特b109=1?如果是,反转报文的所有bits;
(7)检查控制比特的另外两个bits:b108和b107,如果它们不是分别等于0和1,接收机应当宣布这组消息是“unknown telegram format”;
(8)进行10-to-11-bit反转换;
(9)解扰;
(10)输出用户数据bits和反转bit(b109)。
其中,前五个步骤属于译码数据的校验和有效性检查过程,其作用是为了防止随机干扰和突变干扰,还可以防止传输过程中的位滑动和位插入,并以此来保证数据的正确接收。出于没有错误的考虑,译码接收器需要一定数目的额外数据位。对于不同格式的报文,所取额外数据位是不同的,长报文为77,短报文为121。而当窗口移动超过7500位的时候,其额外位的长度要等于报文的长度,这样做的目的是为了每个应答器通道对未检出错误的概率设置一个固定的上限。然后需要将接收到的长度为n的报文看成一个多项式,并看其能否能够被75位奇偶校验位g(x)整除,以此作为译码处理的奇偶校验,其中g(x)的表示方式对于不同格式的报文是不同的。在进行数据有效性分析的时候,需要将报文以11位为单位长度进行分組,对于每组中的报文,根据10-11位变换表来检查其是否为有效数字,如果不是,则需要重新取窗和数据校验。
当所有的11位字都是有效位的时候,报文就可以认为是安全的。接下来要进行控制位的检验,这里需要检查反转位b109以及其他两个控制位b108和b107,并完成译码报文的10-11的反转换。而对于报文的解扰,需要利用32位线性反馈移位寄存器。解扰后,输出用户数据位和反转位的原始状态值,完成译码过程。
3 译码的FPGA实现
FPGA器件的可编程性,可以使译码电路的实现更简明,设计更灵活,还可以保证系统的小型化和集成化。因此应答器报文译码算法完全可以选用FPGA器件来实现。
应答器译码算法的FPGA实现结构框图如图1所示。从图1可以看出,输入的译码报文数据,每8位输入FIFO中存储。由于报文数据共有1023位(短报文341位),额外数据位为77(短报文121),所以定义输入FIFO的深度为138(短报文58),宽度为8位。而最后读入FIFO的8位数据块如果不足8位则以0填充,这些填充的0不会影响译码的过程。当信号从0变为1后经过138(短报文58)个时钟周期后,输入端FIFO置满,FIFO中存储的8位数据依次输出,然后给出一个START脉冲,表示译码工作开始。
译码策略的FPGA具体实现分为以下模块设计:数据输入模块、数据校验模块、数据有效性分析模块、数据译码模块和数据输出模块。下面进行简要陈述:
在FPGA单元模块设计中先利用移位寄存器和异或电路实现译码报文的奇偶校验以及额外位和起始位判断过程,这里的异或电路采用的是模2加法电路。如果报文满足奇偶校验和额外位相符校验,并且起始位已判知,每11位一个码字进行输出,然后直接调用ROM中存储的合法字母表,判断译码报文是否满足有效性。如果满足,则可认为报文是安全的。
接下来要进行包括反转位在内的控制位校验,这里只要利用逻辑电路器件2输入与门就可以实现0、1的判断及电码的反转。然后再利用ROM中存储的11-10变换表来完成译码报文的10-11位的反转换工作。
报文的解扰过程需要利用32为线性反馈移位寄存器。经过解扰之后再根据相关公式和电路的处理就可以得到整个译码报文的有效格式。
得到译码数据后,要将其以每8位输入到输出端FIFO中存储,其深度长报文为104,短报文为27。当输出端FIFO中数据存储满后,就可以把FIFO中存储的数据输出。
4 译码的FPGA实现
上述译码过程都利用Verilog HDL硬件描述语言编写代码来实现,并在Xilinx软件环境中进行编译、综合、布局布线和仿真,最后下载到Xilinx公司的Spartan3E系统FPGA器件XC3S500E作为目标芯片。
针对不同格式的报文,利用Xilinx软件环境将所涉及的程序代码进行了编译、综合和时序仿真。通过将仿真结果与报文原始信息进行比较,比较结果一致,从而验证了译码算法FPGA实现的正确性。
5 结论
本文介绍了针对SUBSET-036应答器报文译码算法的研究及FPGA实现,并通过对VerilogHDL硬件描述语言编写的代码进行验证,确保译码算法FPGA实现的正确性。对编程器、应答器传输模块的研究和开发具有很好的指导意义。
参考文献
[1] SUBSET-036.FFFIS for Eurobalise.2012,4.
[2] 樊昌信,张甫翊,徐炳祥,等.通信原理[M].北京:国防工业出版社,2001.
[3] 夏雨闻,甘伟.Verilog HDL入门[M].北京:北京航空航天大学出版 社,2010.
[关键词]应答器 译码算法 FPGA实现
中图分类号:U284.48 文献标识码:A 文章编号:1009-914X(2014)36-0350-01
1 概述
应答器是一种能向车载子系统发送报文信息的点式传输设备,它既可以传送固定信息,也可以连接轨旁电子单元传送可变信息。由于应答器具有高可靠性的数据传输能力和大容量的信息传输速度,因此作为车-地通信方式在列车控制系统中得到广泛的应用。
为保证应答器报文能安全可靠的在车-地之间传输,欧洲信号(EUROSIG)协会制定了一种适用于应答器报文的编解码策略FFFS。
利用FFFS编码策略得到的每个报文是循环码中的一个码字,它可以防止随机错误和突发错误对报文的干扰。应答器的报文格式有长报文(1023位)和短报文(341位)两种,其位数设置如表1所示。
2 译码流程
应答器译码具体流程研究分析如下:
(1)取一个长度为n+r的窗,用来接收连续的比特流。(长报文r=77,短报文r=121。如果窗已经移动超过7500bits,r=n)。
(2)判断奇偶校验是否满足,如果不满足,移窗,回到步骤(1);
(3)r位额外bits(窗的右边r位)是否和开始的r位(窗的左边)一致?如果不一致,移窗,回到步骤(1);
(4)利用同步算法找到报文的开始位置(bn-1),如果是不可能的值,移窗,返回步骤(1);
(5)对报文进行字母表条件检测,如果存在非法字,移窗,返回步骤(1);
(6)反转比特b109=1?如果是,反转报文的所有bits;
(7)检查控制比特的另外两个bits:b108和b107,如果它们不是分别等于0和1,接收机应当宣布这组消息是“unknown telegram format”;
(8)进行10-to-11-bit反转换;
(9)解扰;
(10)输出用户数据bits和反转bit(b109)。
其中,前五个步骤属于译码数据的校验和有效性检查过程,其作用是为了防止随机干扰和突变干扰,还可以防止传输过程中的位滑动和位插入,并以此来保证数据的正确接收。出于没有错误的考虑,译码接收器需要一定数目的额外数据位。对于不同格式的报文,所取额外数据位是不同的,长报文为77,短报文为121。而当窗口移动超过7500位的时候,其额外位的长度要等于报文的长度,这样做的目的是为了每个应答器通道对未检出错误的概率设置一个固定的上限。然后需要将接收到的长度为n的报文看成一个多项式,并看其能否能够被75位奇偶校验位g(x)整除,以此作为译码处理的奇偶校验,其中g(x)的表示方式对于不同格式的报文是不同的。在进行数据有效性分析的时候,需要将报文以11位为单位长度进行分組,对于每组中的报文,根据10-11位变换表来检查其是否为有效数字,如果不是,则需要重新取窗和数据校验。
当所有的11位字都是有效位的时候,报文就可以认为是安全的。接下来要进行控制位的检验,这里需要检查反转位b109以及其他两个控制位b108和b107,并完成译码报文的10-11的反转换。而对于报文的解扰,需要利用32位线性反馈移位寄存器。解扰后,输出用户数据位和反转位的原始状态值,完成译码过程。
3 译码的FPGA实现
FPGA器件的可编程性,可以使译码电路的实现更简明,设计更灵活,还可以保证系统的小型化和集成化。因此应答器报文译码算法完全可以选用FPGA器件来实现。
应答器译码算法的FPGA实现结构框图如图1所示。从图1可以看出,输入的译码报文数据,每8位输入FIFO中存储。由于报文数据共有1023位(短报文341位),额外数据位为77(短报文121),所以定义输入FIFO的深度为138(短报文58),宽度为8位。而最后读入FIFO的8位数据块如果不足8位则以0填充,这些填充的0不会影响译码的过程。当信号从0变为1后经过138(短报文58)个时钟周期后,输入端FIFO置满,FIFO中存储的8位数据依次输出,然后给出一个START脉冲,表示译码工作开始。
译码策略的FPGA具体实现分为以下模块设计:数据输入模块、数据校验模块、数据有效性分析模块、数据译码模块和数据输出模块。下面进行简要陈述:
在FPGA单元模块设计中先利用移位寄存器和异或电路实现译码报文的奇偶校验以及额外位和起始位判断过程,这里的异或电路采用的是模2加法电路。如果报文满足奇偶校验和额外位相符校验,并且起始位已判知,每11位一个码字进行输出,然后直接调用ROM中存储的合法字母表,判断译码报文是否满足有效性。如果满足,则可认为报文是安全的。
接下来要进行包括反转位在内的控制位校验,这里只要利用逻辑电路器件2输入与门就可以实现0、1的判断及电码的反转。然后再利用ROM中存储的11-10变换表来完成译码报文的10-11位的反转换工作。
报文的解扰过程需要利用32为线性反馈移位寄存器。经过解扰之后再根据相关公式和电路的处理就可以得到整个译码报文的有效格式。
得到译码数据后,要将其以每8位输入到输出端FIFO中存储,其深度长报文为104,短报文为27。当输出端FIFO中数据存储满后,就可以把FIFO中存储的数据输出。
4 译码的FPGA实现
上述译码过程都利用Verilog HDL硬件描述语言编写代码来实现,并在Xilinx软件环境中进行编译、综合、布局布线和仿真,最后下载到Xilinx公司的Spartan3E系统FPGA器件XC3S500E作为目标芯片。
针对不同格式的报文,利用Xilinx软件环境将所涉及的程序代码进行了编译、综合和时序仿真。通过将仿真结果与报文原始信息进行比较,比较结果一致,从而验证了译码算法FPGA实现的正确性。
5 结论
本文介绍了针对SUBSET-036应答器报文译码算法的研究及FPGA实现,并通过对VerilogHDL硬件描述语言编写的代码进行验证,确保译码算法FPGA实现的正确性。对编程器、应答器传输模块的研究和开发具有很好的指导意义。
参考文献
[1] SUBSET-036.FFFIS for Eurobalise.2012,4.
[2] 樊昌信,张甫翊,徐炳祥,等.通信原理[M].北京:国防工业出版社,2001.
[3] 夏雨闻,甘伟.Verilog HDL入门[M].北京:北京航空航天大学出版 社,2010.