- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于FPGA的PROFIBUS-DP集线器设计
4 帧结束检测
帧结束的检测理论上可以分为码元宽度检测法和穷举法判断波特率两种方法。
4.1 码元宽度检测法
本方法检测的基本思想是找出13个脉冲中长度最小的位宽,该位宽即为码元宽度,因为UART编码和传输的方式使得在一个字节包括11个编码位加上其前后2位共13个位,其中一定有1位码元存在。这个码元的宽度可用nT表示,其中T为时钟周期,n为时钟周期的个数。然后可以检验数据的高电平持续长度,如果这个数据有一段高电平的长度大于16nT,则认为该帧结束。这样设计的依据是:一个帧的最短长度为一个字节,一个字节是由11个码元组成。通常为了保证结束判断准确而需要多取几位,这里将其定为16个码元。同时由于DP协议中规定报文帧中间的各个字符没有空闲静止状态,而且数据通信上要有33个码元的空闲时间来做为同步表示(SYN)。这样,取16个码元长度既能判断出帧的结束,而又不会把下一次通信中的高电平信号误认为是上一个帧的结束。
这种方法的优点是算法简单,不需要解析帧的结构。缺点是检测码元的时钟频率要求较高(为了准确的测量码元的宽度),因而功耗较大。
4.2 穷举法判断波特率
由于DP的数据传输波特率为9.6 kbps~12 Mbps中有限的10种。因此,对于可靠性要求较高的DP传输,可以采用穷举法来检测传输的波特率。穷举法即逐个代入法,方法是先假设一个特定的速率,然后检验SDl/SD2/SD3/SD4的值是否为0X10、0XA2、0X68、0XDC。在实际检测中,若检测到SDl、SD2、SD3、SD4中的任意一个,即认为1次检验完成。这样,连续完成5次便认为传输速率符合该波特率。如果不能解析出相应的数值,则换下一个速率,直到可以解析为止,图2所示是穷举法波特率检测流程图。
该方法的优势是可以准确而且可靠地检测出波特率,从而明确帧的结束位置。但是,缺点是帧结构解析算法比较复杂,同时要占用FPGA比较多的资源。但无论如何,该方法在实际中的应用还是比较多的。
5 实现过程
本文以8路DP—HUB为例,其默认状态为所有通道均处于接收状态。当某一通道有数据传输时,可将接收到的数据按位无差别的发送到其他7个通道。而当检测到帧结束后,则将所有通道转为接收状态,以等待新帧的到来。本模块的功能:一是波特率检测,二是数据转发。由于DP协议为主从通讯方式,因此,从应用层就可以保障不会产生数据碰撞,而DP协议同时也有严格的响应时间要求,因而只能以按位转发的方式进行转发。图3所示是系统状态机转换图。
6 结束语
通过本文的方法可以解决PROFIBUS—DP在应用中出现的故障隔离问题。因此,将线性拓扑结构变为星形或树形结构具有一定的实用价值。
作者:王 鑫 来源:国外电子元器件