基于FPGA的多路开关量和模拟量实时光纤远传系统的设计与实现

时间:2022-09-23 04:51:01

基于FPGA的多路开关量和模拟量实时光纤远传系统的设计与实现

【摘要】本设计是基于fpga硬件平台进行多路开关量和模拟量实时光纤远传系统设计实现了32路开关量和8路模拟量通过光纤,以100Mbps的速度进行双全工传输的功能,该系统具有实时性、抗干扰性、灵活性等特点。

【关键词】FPGA;光纤传输;编解码;开关量;模拟量

1.引言

目前,随着工业系统的不断扩大,多路的开关量和模拟量需要远传的需求越来越大,并且对实时性和抗干扰性要求也越来越高。如果采用单片机或ARM实现多路传输功能,都有路数少,不能实时传输等缺点。而FPGA的I/O引脚数量大,处理效率高,能够满足多路开关量和模拟量实时的传输,并且在FPGA中实现编解码效率非常高,所以本系统采用基于FPGA进行设计。本系统采用ACTEL Proasic3系列FPGA芯片,以Libero IDE为软件开发环境对系统平台进行控制和处理。

2.光纤远传系统硬件平台的设计

2.1 光纤远传系统硬件平台的总体构架

该光纤远传系统硬件平台分为模拟量采集、模拟量输出、开关量采集、开关量输出和通信控制传输五个部分。

本系统的基本构架:将32路9~24V的开关量信号通过开关量采集模块转换成5VTTL电平输出到通信控制传输模块;8路0~10V模拟量信号通过模拟量采集模块进行采集,通过SPI总线输出到通信控制传输模块。通信控制传输模块由ACTEL Proasic3的FPGA芯片作为控制处理器,将接收到的开关量数据和模拟数据进行编码通过光纤的方式进行传输,同时,通信控制传输模块也可以将接收到的数据信息进行解码,将解码完成的开关量通过开关量输出模块进行输出,模拟量通过SPI总线发送到模拟量输出模块中进行输出。系统硬件平台总体构架图如图1所示。

图1 系统硬件平台总体构架图

2.2 模拟量采集和输出硬件构架

模拟量采集模块是基于AD7792为核心进行设计的,AD7792集成了片内低噪声仪表放大器,16为分辨率,均方根噪声为40nV,并且具有SPI、QSPI、MICROWIRE串行接口,适合应用于低功耗、低噪声的环境[1]。在模拟量采集模块中,采用ADR441ARMZ作为AD7792的电压基准;采用ADG5409作为控制前端4路模拟量输入的时序。

模拟量采集模块完成了8路0~10V电压信号或者0~20mA电流信号的采集,并通过SPI总线将采集到的结果发送到FPGA中,其中采集的顺序由FPGA控制。AD7792周围电路如图2所示。

模拟量输出模块式基于AD5412为核心进行设计的,AD5412是低成本、精密、完全集成、12位数模转换器(DAC),内置可编程电流源和可编程电压输出,设计用于满足工业过程控制应用的需要。其输出可通过编程设置为电流0mA至20mA、0mA至24mA和电压0V至10V、±5V或±10V输出范围,具有SPI、QSPI、MICROWIRE串行接口[2]。

模拟量输出模块完成了8路0~10V电压信号或者0~20mA电流信号的输出。AD5412周围电路如图3所示。

2.3 开关量采集和输出硬件构架

开关量采集模块采用TLP521光耦隔离模块,TLP521使前端与负载完全隔离,目的在于增加安全性,减小电路干扰,减化电路设计。本模块用于对9~24V的开关量信号输入可进行隔离输出5VTTL电压,直接将输出的开关电压信号输入到FPGA上,其原理如图4所示。

开关量输出模块设计主要采用了ULN2803芯片和24V继电器。ULN2803是是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。本模块将FPGA输出的5VTTL电平开关信号通过ULN2803驱动24V继电器,最终将24V开关信号对外输出。其原理如图5所示。

2.4 通信传输控制硬件构架

通信传输控制模块是基于ACTEL Proasic3的FPGA芯片为核心设计的。通过SPI总线,采用连续读写方式和中值滤波,分别对模拟量采集模块和模拟量输出模块控制;通过对I/O引脚进行防抖动处理的读取和输出,分别对开关量采集模块和开关量输出模块控制;通过采用LVPECL差分信号转换为光纤信号传输方式,两个通信传输控制模块进行双全工通信,通过组包、解码和编码方式,将采集到的模拟量和开关量的信息进行传输和接收。

3.光纤远传系统软件平台的设计

光纤远传系统软件平台主要采用了8B/10B完美编解码、(2,2,3)卷积码编码、Viterbi最大似然估计硬解码算法处理,主要提高了系统的抗干扰性,其设计流程图如图6所示。

3.1 8B/10B编解码

在光纤传输协议的终端采用给了8B/10B编解码,主要是由于8B/10B编码保证了1和0的相对平衡组合,而与数据值无关,简化了时钟恢复,降低了接收机成本。编码提供的其它位还促进了误码检测。8B/10B编码提供了构建串行通信使用的一套基础数据和控制字符[3]。其主要功能如下:

(1)转换密度:保证数据流中有足够的信号转换。采用8B/10B编码方法,数据流中连续的“1”或连续的“0”不超过5个,使接收端锁相环(PLL)能正常工作,避免接收端时钟漂移或同步丢失而引起数据丢失。

(2)DC补偿:在高速的数据传输线路中,一般采用差分信号,需要直流分量尽量小,而8B/10B有DC补偿功能,即链路中不会随着时间推移而出现DC偏移。

(3)检错:8B/10B编码采用冗余方式,将8位的数据和一些特殊字符按照特定的规则编码成10位的数据,根据这些规则,能检测出传输过程中发生错误的信息。

(4)特殊字符:8B/10B编码规定了一些特殊字符,可用作帧同步字符和其他的分隔符或控制字符。

3.2 卷积码和Viterbi译码

本设计采用了卷积编码和Viterbi译码,在通信方面上极大的提高了可靠性和稳定性。

卷积码将k个信息比特编成n个比特,但k和n通常很小,特别适合以串行形式进行传输,时延小。实现方式是与前m个前相关状态的冲击响应做卷积计算。

若以(n,k,m)来描述卷积码,其中k为每次输入到卷积编码器的bit数,n为每个k元组码字对应的卷积码输出n元组码字,m为编码存储度,也就是卷积编码器的k元组的级数,称m+1= K为编码约束度m称为约束长度。卷积码将k元组输入码元编成n元组输出码元,但k和n通常很小,特别适合以串行形式进行传输,时延小。与分组码不同,卷积码编码生成的n元组元不仅与当前输入的k元组有关,还与前面m-1个输入的k元组有关,编码过程中互相关联的码元个数为n*m。卷积码的纠错性能随m的增加而增大,而差错率随N的增加而指数下降。本设计采用(2,2,3)卷积码[3]。

Viterbi译码是一种对无记忆信道卷积码进行译码的算法。它充分发挥了卷积码的特点,因而自Viterbi算法提出以来,无论在理论上还是在实践上都得到了极其迅速的发展,并广泛的应用于各种数据传输系统,特别是无线通信和卫星通信系统中。本设计选择似然概率函数的对数作为似然函数,硬判决的最大似然译码实际上是寻找与接收序列Hamming距离最小的编码序列。

4.光纤远传系统的验证

多路开关远传模块可实现全双工同步、异步实时传输32路开关量、8路模拟量,速度为100M/bit,开关量响应时间最大为2us,通过加入高斯噪声,同步误码率为0.00013%,纠码率为0.00005%,异步误码率为0.017%,纠码率为0.02%,信道冗余度为0.25。AD模块和DA模块实现了工业隔离本安的8路AD转换和8路DA转换功能,可实现0-10V电压和0-20MA电流的传输,电压精度大于0.1%,电流精度大于0.01%,更新速度为9ms。

5.结论

本系统是基于FPGA对8路模拟信号和32路开关信号进行传输和控制,具有很好的灵活性、高精度、实时性和抗干扰性,并且电路全部符合本安要求,在工业系统中可以得到很好的应用。

参考文献

[1]Analog.AD7792_7793.pdf.2009-4.

[2]Analog.AD5412_5413.pdf.2007-3.

[3]http:///documents/5192650-0.pdf.2004-1.

[4]张立军等.数字通信(第四版)[M].北京:电子工业出版社,2003:1-345.

作者简介:高波(1968―),男,山西太原人,工程师,主要从事煤矿自动化控制与通讯的研究工作。

上一篇:基于RFID技术的固定资产查询系统的设计与实现 下一篇:电子政务云平台的构建