基于CPLD的自适应RS-485异步数据光纤中继器设计

时间:2008-08-14

  RS-485半双工方式用两线双向传送差分信号,具有多点传输、双向通信等优点,在工业应用中得到了广泛应用。但是,它的传输距离仅为1200m,因而在一些远距离传输中受到了制约。而光纤通信具有传输距离远、抗干扰能力强、保密性好等特点,在工业领域中的运用也越来越多。本文设计的中继器基于CPLD的自适应速率光纤中继器,能够很好地解决传输距离问题。

  系统实现方案

  RS-485光纤中继器主要完成的功能是将RS-485数据信号转换为光信号,通过光纤传输到另外一端,同时将另外一端传输过来的光信号转换为RS-485信号。光纤中继器的原理框图如图1所示。系统正常工作时主要有三个状态:a)空闲状态;b)数据从RS-485收发器U1边的总线往RS-485收发器U2边的总线传送(简称“正向传输”);c)数据从RS-485收发器U2边的总线往RS-485收发器U1边的总线传送(简称“反向传输”)。

  <DIV align=center>

  光纤中继器上电或者总线上没有数据传输,RS-485光纤中继器处于空闲状态,U1和U2均处于接收状态。

  当RS-485收发器U1检测到连接其A、B引脚总线上的差分信号有低电平数据正向传输时,RO输入到可编程芯片进行取反,然后变成高电平再变为光信号传输;在另外一端将接收到的光信号变成电信号,输入到可编程芯片将高电平信号直接输出到EN2作为U2的驱动信号,同时将高电平取反后作为DI信号,此时MAX481的A、B脚输出低电平。当RS-485收发器U1正向传输高电平时光模块不发光,对端光中继器EN2为低电平,RS-485收发器MAX481输出为高阻,由于外部的上拉电阻和下拉电阻作用,U2的A引脚为高电平,B引脚为低电平。

  数据反向传输同正向传输一致。

  硬件电路

  此自适应RS-485光纤中继器硬件电路比较简单,可分为接口部分、CPLD部分和光电转换部分。

  接口部分

  接口芯片采用美信(MAXIM)公司生产的RS-485/RS-422半双工收发器MAX481芯片,该芯片具有低功耗、高速率、价格低等优势,其传输速率达2.5Mbit/s,可以满足常用的工业现场应用所需速率。

  MAX481采用8脚SO封装,其外围电路非常简单。在VCC脚接一个10μF和一个0.1μF的电容到地以滤掉电源纹波干扰,另外在A、B引脚间加上匹配电阻。为防止干扰信号误触发RO(接收器输出)产生负跳变,使接收端进入接收状态。详细电路图如图2所示。

  <DIV align=center>

  CPLD部分

  CPLD采用LATTICE公司的M4A5-128/64芯片,该芯片工作电压为+5V,内部有128个宏单元,64个通用I/O管脚。封装形式有100-pin TQFP,100-pin PQFP以及100-ball caBGA,本设计选用的是PQFP封装。其外围电路比较简单,所有VCC引脚接+5V电源,并在靠近引脚的地方接一个0.1μF的电容到地,以滤掉电源纹波干扰。TDI、TCK、TMS、TDO、TRST、ENABLE为ISP在线可编程引脚,一般不作它用。其他通用I/O都可以作为输入、输出引脚,连接MAX481ESA或者光收发模块。

  为了在上电时使系统进入接收状态,需要在CPLD外接一个复位电路,见图3。

  <DIV align=center>

  光电转换部分

  目前市场上有许多低速的TTL驱动光收发模块,可以直接购买使用,这使设计变得更加简单。本设计中采用的是2M光收发模块,可传输直流到2Mbit/s的数据,能满足大多数工业现场应用所需的速率。此部分电路非常简单,在此不再赘述。

  软件设计

  软件部分相对比较简单,由于传输的是低电平,而光模块是高电平发光,所以将MAX481ESA的RO引脚信号取反,然后送给光模块的发射部分;光模块的接收部分接收到光信号后变成电信号,分成两路,一路直接作为MAX481ESA的EN信号,另一路在CPLD中取反后作为MAX481ESA的DI信号。用VHDL编写的程序如下:

  IF RESET='0' THEN --上电复位

  EN='0';

  TX<='0'; --TX光模块发射脚;RX光模块接收脚

  DI<='1';

  ELSE

  EN<=RX;

  TX<=NOT RO; --取反,有低电平数据时发光

  DI<=NOT RX;

  END IF;

  实际应用中发现,数据速率较低时,系统可以正常通信,但当速率过高后就会出现严重误码情况。经过仔细测试分析后得知是EN高电平宽度不够引起的。EN的高电平宽度决定了芯片驱动的时间,并且芯片也有一定的响应时间,为了保证系统的通信正常,需要在原来的基础上将EN的高电平宽度展宽。由于该系统使用了CPLD可编程逻辑芯片,所以不需要外加电路就可以通过CPLD来调整EN的高电平宽度。改进后的VHDL程序如下:

  SIGNAL Q:STD_LOGIC_VECTOR(3 DOWNTO 0);

  begin

  PROCESS(RX,CLK)

  BEGIN

  IF RESET='0' THEN

  Q<="1111";

  EN<='0';

  TX<='0';

  ELSIF RX='1' THEN

  Q<="0000";

  EN<='1';

  TX<=NOT RO;

  DI<=NOT RX;

  ELSIF CLK'EVENT AND CLK='1' THEN

  Q<='1'&Q(3 DOWNTO 1);

  EN<=NOT((NOT RX) AND Q(2) );

  TX<=NOT RO;

  DI<=NOT RX;

  END IF;

  END PROCESS;

  从图4可以看出,EN的高电平宽度已经被扩展了3个时钟(clk)周期,可以根据实际需要设置小于RS-485总线波特率的数据位的时间宽度。如果时间宽度不够,只需修改程序即可。

  <DIV align=center>

  图5显示了速率为625Kbit/s的情况下用示波器在接收端测得的波形。其中(a)图是未改进时测试的波形,可以看出误码十分严重,与发端的波形完全不同;b)图为改进后测试的波形,与发端波形完全一致。由此可见,经过CPLD展宽EN后,解决了RS-485数据速率过高时的误码情况。

<DIV align=center>

  由于本光纤收发器为半双工传输方式,因此在同一时刻正向传输和反向传输不能同时进行,否则将发生冲突。另外,当总线上干扰较大时也可能发生冲突,此时总线上的数据信号是无效的,中继器并不对冲突做出处理。但是当冲突结束后,可由中继器中的可编程逻辑芯片对中继器进行复位,使其能正常工作。

  结束语

  基于CPLD的自适应RS-485异步数据光纤中继器电路比较简单,且体积小、成本低,可应用于多种场合。此外,稍加改进还可以制作成多路RS-485异步数据光纤收发器。实践证明,当传输速率为2Mbit/s时,系统工作稳定正常,误码率仅为10-11。

上一篇:7月家居灯具市场波澜不惊,LED持续升温
下一篇:半导体照明产业缺乏技术

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。