- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于FPGA的PROFIBUS
录入:edatop.com 点击:
3.2 波特率检测逻辑
首先应对由数据传输方向检测功能块选择输出的数据进行滤波。不同的波特率分别用相应的时钟对滤波后的数据进行采样,若采到连续16个"1",则说明总线目前处于空闲状态,下一个到来的低电平既是数据字节的起始位,之后即可开始接收数据,在一个字节(8 bits)的数据接收完毕后,即可判断接收到的数据是否为关键字(关键字为PROFIBUS-DP总线协议数据帧的开始定界符SDx)。如果某一波特率连续找到3次关键字,则将其它波特率连续找到关键字的次数清零。并将原来已经确定的波特率位清零。而当该波特率连续找到6次关键字时,则代表找到了新的波特率,此时可将刚找到的波特率确定为当前系统通讯速率,并将相应标志位置1。
3.3 数据交换逻辑
数据传输方向和波特率确定之后,就可以进行电端和光端的数据交换了。当数据传输方向为电端到光端时,电端RS-485收发器处于接收状态,数据由电端经光发送器发送到光端线线路上;当数据传输方向为光端到电端时,在起始位数据"0"发送完毕之后,即可将电端RS-485收发器改为发送状态,在经过10个当前通讯波特率的bit时间后,再将RS-485收发器改为接收状态,并等待接收新的数据。图5所示为数据交换流程图。
4 结束语
该设计的创新点在于其采用FPGA硬件实现光电信号之间的转换,可以自适应波特率变化,并自动检测波特率变化。能支持PROFIBUS-DP协议规定的所有波特率,且转发数据无错包。与一般的RS-485中继设备相比,不但在传输距离和总线的负载能力上有很大提高。而且在抗干扰和通讯的稳定性方面也有突出优势,可用于各种的PROFIBUS-DP总线工业现场。