当前位置:文档之家› RS485高速数据传输协议的设计与实现

RS485高速数据传输协议的设计与实现

ISSN 1000-0054CN 11-2223/N 清华大学学报(自然科学版)J T singh ua Un iv (Sci &Tech ),2008年第48卷第8期2008,V o l.48,N o.8w 22http://qhx bw.chinajo RS 485高速数据传输协议的设计与实现耿立中, 王 鹏, 马 骋, 贾惠波(清华大学精密仪器与机械学系,精密测试技术及仪器国家重点实验室,北京100084)收稿日期:2008-01-03作者简介:耿立中(1985—),男(汉),山东,博士研究生。

通讯联系人:贾惠波,教授,E-mail:jiah b@tsingh 摘 要:为实现远距离的高速基带信号传输,该文设计了一种以RS 485标准为物理层基础,在现场可编程门阵列(F PG A )平台上实现的数据传输协议。

该协议利用串行信号的跳变沿作为高速时钟检测的起点实现位同步,可以有效地解决信号码间干扰问题;利用8B /10B 编码实现帧同步,可以保证位同步的准确性和帧同步控制字符的可靠性。

该文利用F PG A 平台对协议进行了实验测试,测试结果表明该协议可以实现220m 距离上的14.5M b /s 的有效数据传输,为长距离的高速数据传输提供了可靠的实现方法。

关键词:传输协议;R S485总线;现场可编程门阵列(FP GA )中图分类号:T N 913.8文献标识码:A文章编号:1000-0054(2008)08-1311-04Design and implement of RS485high speed data communications protocolG ENG Lizhong ,WANG Peng ,MA Cheng ,JIA Hu ibo (S tate K ey Laboratory of Precision Measurement Technology &Instruments ,Department of Precision Instruments and Mechanology ,Tsinghua Univers ity ,Beijing 100084,China )Abstract :Th is paper des crib es a RS485commun ication s protocol for high -speed baseb and commu nications.T he inter symb ol inter feren ce (ISI)is reduced by an efficient bit s ynch ronization signal detection schem e.Samplin g begins at th e begin ning of the inpu t signals to get ex act digital r esu lts.T he frame synchronization us es 8B/10B coding an d guaran tees bit syn chroniz ation.T he protocol w as implemented on a field programmable gate array (FPGA)w ith test res ults indicating that th e protocol achieves 14.5M b /s along a 220meters line.Key words :com munication protocol;RS485bus ;fieldprogrammable gate array (FPGA)RS485作为一种串行通信的接口,具有传输距离长、速度较高、电平兼容性好、使用灵活方便、成本低廉和可靠度高等优点,在智能管理[1]、在线控制[2]、地质勘探[3-4]等许多领域都有着广泛的应用[5]。

目前Pro fibus -DP 、Arcnet 和CAN 等总线标准的物理层均是RS 485规范,这些总线标准不能同时保证长距离(200m 以上)和高的传输速度,其中性能较好的Profibus 只能在100m 距离上实现12M b /s 的数据传输[6-7]。

由于RS485传输为基带信号传输,没有单独的时钟线,所以时钟提取成为整个高速数据传输协议的关键。

现有的串行数据时钟提取技术中,同步方式复杂度较高[8],异步方式中通用异步收发器(U ART )[9]以字为传输协议的基本单元,一般不适应太高的速率,传输效率也较低。

本文以RS 485标准为物理层基础,在现场可编程门阵列(FPGA)平台上设计并实现了一种基于特殊的时钟提取方法的传输协议,可以用于串行数据的高速远距离传输。

该协议利用串行信号的跳变沿作为高速时钟检测的起点实现位同步,有效地解决信号码间干扰问题;采用8B/10B 编码实现帧同步,保证位同步的准确性和帧同步控制字符的可靠性。

1 协议描述1.1 位同步设计本设计的位同步方法是以波特率的10倍频时钟作为检测时钟,信号的上升沿和下降沿作为位同步采样的起点。

建立2个采样寄存器R H 、R L ,当高频时钟检测到输入信号为高电平时,开始对检测时钟计数,并存入寄存器R H ,同时将R L 置零,当R H 为5时产生第一个采样点,而后每隔10个时钟周期产生采样点,采得的数字信号为“1”;相应的当高频时钟检测到输入信号为低电平的时候,开始对时钟计数,并存入寄存器R L ,同时将R H 置零,当R L 为5时产生第一个采样点,而后每隔10个时钟周期产生采样点,采得的数字信号为“0”。

图1 信号跳变沿作为检测起点的位同步示意图 由于检测时钟和数据信号的发送时钟并不同源,必然会有误差,假设认为判断信号的第1个下降沿没有误差,第1个采样点相对起始位中间位置有t 的偏差;由于积累,第2个采样点相对H2中间位置则会有3t的偏差;同理第3个采样点会有5t的误差。

当误差积累到超过5个检测时钟的宽度时,误码就产生了。

为了避免误码的产生,计算产生误码的临界条件。

假定检测时钟和数据信号发送时钟的精度均为1×10-4,由于发送时钟频率为检测时钟的10倍,那么检测时钟相对于数据信号(假定传输中未失真)的误差在1.1×10-3之内,则出现误码的高电平或低电平的最小长度为l s=5t d1.1×10-3.(1)其中t d为检测时钟的时钟周期。

也就是说传输基带信号含有450个以上连续的“0”或者“1”时会出现误码,采用此协议的传输必须游程受限在(0,450)之间。

RS485传输是基带信号通过双绞线传输的,占空比容易发生变化,产生码间干扰,尤其是在传输距离比较长的时候。

这种基于信号跳变进行检测起始的位同步设计方法对这种问题有一定的解决能力。

信号在连续长“1”之间的短“0”很容易受到码间干扰影响变短,但本文的位同步设计只需要5个高频时钟的有效检测就可以读到该数据位,也就是短“0”的长度在原始信号长度的一半以上就可以保证得到正确数据。

1.2 帧同步的设计帧同步是在位同步的基础上识别出包含有效数字信息帧的起止时刻,从而得到有效的数据信息[10]。

本设计采用了插入式帧同步的方法,利用特定的帧头和帧尾表示数据帧的起始位置。

由于位同步中对信号是游程受限的,所以采用了8B/10B编码为基础对数据帧进行设计。

帧结构如图2所示。

图2 数据传输链路帧结构帧头采用8B/10B编码中的K28.5字符“010*******”,帧尾采用K28.1字符“1001111100”,这两组控制字在8B/10B编码中是独一无二的,任何数据位的组合都不可能产生这两组字符,可以有效地避免帧同步的假同步现象。

控制位1个字节也属于8B/10B编码的控制字符,当数据帧被读入主控FPGA时帧尾是被抛掉的,可以利用该控制位来表示有效数据的结束。

FCS为CRC-32校验,用来校验数据帧的正确与否。

如图3所示,串行数据经过移位寄存器变为并行信号后进入帧头帧尾判决器进行判决,判决的阈值可以进行调控以避免漏同步的现象出现。

由于错误数据帧对上位用户机是无意义的,必须出错重传,而在同一传输信道中,帧头出错的概率和数据位出错的概率是大体相同的,所以本协议将阈值置为0,即数据与帧头或帧尾数据完全一致时方认定检测到帧头或帧尾,并发送控制信号到数据解码模块。

并行信号经过数据解码后得到原始用户数据,并对其进行CRC校验,如果数据验证正确,则可将用户数据输出给上位用户机。

基于8B/10B码的帧同步设计,在实现帧同步的同时,保证了位同步的准确性,使得通信链路中不会随着时间推移而出现DC偏移。

8B/10B码冗余的编码方式提供了特殊字符作为帧控制字符。

CRC校验用以检测传输过程中的错误。

图3 帧同步检测结构示意图2 基于FPGA系统的协议实现传输协议是基于Altera公司的Quar tus7.2开发环境利用超高速集成电路硬件描述语言(VHDL)1312清华大学学报(自然科学版)2008,48(8)设计。

如图4所示,data -code -send 模块为数据的编码和发送模块,利用2M Hz 和20MHz 的时钟驱动,产生19.07M b/s 左右的码流,在端口sel -out 输出,端口framenum (31..0)为发送的总帧数。

模块dat 485-fifo -recv 利用200M Hz 高速时钟对串行信号sel -in 进行位同步,得到串行数据,经过串并转换和帧同步得到有效帧数据,再经过8B /10B 的解码得到数据,逻辑状态控制时钟为20M Hz,端口recv -8b (7..0)为收到的解码数据,端口right -num (31..0)为收到的正确帧数,端口err -num (31..0)为收到的出错帧数。

传输协议逻辑占用了2413个逻辑单元,并利用Altera 公司提供的Log iclock 技术对传输协议进行了优化和锁定,使逻辑的时序要求可以满足225M Hz ,保证了程序的稳定性。

而后,对传输协议逻辑进行了仿真,得到仿真结果,见图5。

图4 传输协议FPGA 顶层结构图图5 基于FPGA 的传输协议仿真结果 send -8b 为发送端编码前的链路数据帧,send -10b 为发送端编码后的链路帧,从仿真结果中可以看到,编码过程有2个2M Hz 时钟周期的延迟,8B 数据“BC ”对应的10B 数据“17C ”(10B 数据“0B9”是8B 数据“00”的编码)。

sel -out 为编码后的数据并串转换后的串行信号。

r ecv -10b 是接收端经过位同步后收到的未解码数据,位同步需要的延时为1.5个2M Hz 时钟周期,recv -8b 为接收端收到的解码后数据,解码过程由帧同步时钟frame -clk 驱动,基本为实时过程。

相关主题