本发明涉及核电站fpga仿真测试领域,特别是指一种基于fpga的协议转换装置。此转换装置面向高可靠性的工业通信的应用,实现了以太网信息的快速稳定地传递和协议转换功能。
背景技术:
在工业控制场合,为了在不同通信总线间数据的传输,需要进行通信总线变换,而以太网变换到can(控制器局域网络)2.0b就是其中的一种类型,如图1所示。目前设计此类通信转接装置时,大都采用单片机或微处理器实现,如论文《一种以太网-can转换电路设计与实现》郭建洲、中国电子科技集团中介绍了用c8051f040单片机实现了单路以太网对单路can的转换功能,如图2所示。单片机或处理器实现的转换装置,存在外围电路多、处理速度慢等问题,在要求快速稳定响应时间的工业应用场合不能满足要求。
市场中也有以太网转can装置的产品,实现方式有单路以太网对单路can和单路以太网对多路can,这些设计无法满足工业应用中挂载大量(>100个)高通讯量(单设备带宽>60khz)的can设备,需要多条can链路灵活配置。用转换器加交换机的方式可实现类似的功能,如图3所示。但此方案存在网络电缆多、网络响应时间慢且不稳定的问题,无法满足核电站dcs系统通信应用中对于通信的高可靠性和高稳定性的要求。
汇总而论,现有技术中存在的以下问题:
1、基于mcu(单片机)或处理器技术实现的转换器外围电路复杂;
2、现有转换器中can总线数量固定,不易扩展;
3、基于存储转发方式实现的以太网交换机网口间转发延迟时间长,通信的响应时间较长,且时间的稳定性不好。
技术实现要素:
本发明的目的就是针对上述现有技术的状况,提出了一种基于fpga的协议转换装置,解决1、基于mcu(单片机)或处理器技术实现的转换器外围电路复杂的问题;2.现有转换器中can总线数量固定,不易扩展的问题;3.基于存储转发方式实现的以太网交换机网口间转发延迟时间长,通信的响应时间较长,且时间的稳定性不好的问题。
本发明的目的是通过以下技术方案来实现的:一种基于fpga的协议转换装置,连接在以太网与can控制器之间,包括hub模块、rmii模块、mpu_to_io模块、io_to_mpu模块和crc模块;
所述hub模块用于实现上位机mpu的报文转发;所述hub模块包括物理接口和逻辑接口,所述物理接口与以太网的phy芯片相连,所述逻辑接口与rmii模块进行数据交互;
所述rmii模块用于给所述mpu_to_io模块和crc模块传输上位机mpu的报文数据,接收所述io_to_mpu模块的应答数据,实现2b/8b的串并转换;
所述mpu_to_io模块用于对来自上位机mpu的所有报文进行crc解码,解码错误后丢弃,解码成功后把报文中针对每个i/o板卡下发的输出数据和其它各种指令(版本、校准、复位等)分类放到对应的槽位进行缓存,再按照iobus-1和iobus-2协议的要求将缓存报文发送给i/o板卡;
所述io_to_mpu模块用于监视can控制器的状态,并在1个通信周期内提取来自i/o板卡的数据,解析并分类缓存,对解析缓存后的来自上位机mpu的报文指令进行应答;
所述crc模块用于对来自所述rmii模块传输的上位机mpu的报文数据进行校验,将结果反馈给mpu_to_io模块;对应答给上位机mpu的数据进行crc校验值计算,将计算结果反馈给io_to_mpu模块。
进一步地,还包括sja_ctrl模块,所述sja_ctrl模块接收所述mpu_to_io模块的缓存报文,并向所述io_to_mpu模块发送应答给上位机mpu的数据。
进一步地,还包括设置在所述mpu_to_io模块与所述io_to_mpu模块之间的time_id模块,提取mpu_to_io模块对时指令中的时间信息更新于本地时钟并计时;在io_to_mpu模块应答上位机mpu时提取最新的时钟信息时间。
进一步地,还包括phy_rst模块,用于对以太网phy芯片的复位进行控制。
进一步地,还包括light_ct模块,用于对指示灯的状态进行控制。
一种基于fpga的协议转换方法,包括以下步骤:
1)通过hub模块转发上位机mpu的报文;
2)所述mpu_to_io模块对上位机mpu的报文数据进行crc解码,解码错误后丢弃,解码成功后把报文中针对每个i/o板卡下发的输出数据和其它各种指令(版本、校准、复位等)分类放到对应的槽位进行缓存;
3)按照iobus-1和iobus-2协议的要求将缓存报文发送给i/o板卡;
4)通过所述io_to_mpu模块监视can控制器的状态,在1个通信周期内提取来自i/o板卡的数据,解析并分类缓存,并对解析缓存的来自上位机mpu的报文指令进行应答;
5)通过所述crc模块对来自上位机mpu的报文数据进行校验,将结果反馈给mpu_to_io模块;对应答给上位机mpu的数据进行crc校验值计算,将计算结果反馈给io_to_mpu模块。
进一步地,步骤2)还包括通过所述time_id模块,提取mpu_to_io模块对时指令中的时间信息更新于本地时钟并计时。
进一步地,步骤4)还包括通过所述time_id模块,提取在io_to_mpu模块应答上位机mpu时最新的时钟信息时间。
本发明所述的转换装置具有以下功能和性能:
1)识别本管理域的从站数据,并把数据分拆到can设备;
2)管理从站i/o板卡,整合并缓存数据,通过以太网发送到上位机mpu;
3)以太网通信协议响应时间(从收到指令至回复完成的时间),小于500us;
4)单装置实现4路100mhz以太网口的通信功能,便于扩展应用;
5)单个装置中的以太网口间的转发延迟时间小于100ns。
本发明的有益效果是:
1、电路设计简单,功耗低,可靠性高;
2、支持can链路自由扩展,组网方式灵活;
3、基于fpga实现,程序并行执行,保证以太网传输延迟100ns以内,装置对协议的最大响应时间在500us以内,且响应时间具有其它方案没有的高稳定性特定。
本发明用fpga替代了常规设计中的处理器,在单片fpga中实现多个mac芯片的功能。多路100m以太网口,可以实现设备间的级联,并实现多个外围设备对以太网口的访问,可支持多种网络拓扑。实现对can总线上从站设备的上下行通信和管理功能。
附图说明
图1为现有技术的通信转接单元示意图
图2为现有技术的mcu实现ethernet和can的转换示意图
图3为现有技术的交换机方式实现can总线扩展示意图
图4为本发明一种基于fpga的协议转换装置的平台架构图;
图5为本发明一种基于fpga的协议转换装置的功能实现框图
图6为本发明一种基于fpga的协议转换装置的fpga内部逻辑模块架构图
图7为本发明一种基于fpga的协议转换装置的rmii接收时序图
图8为本发明一种基于fpga的协议转换装置的can总线读取时序图
图9为本发明一种基于fpga的协议转换装置的can总线写入时序图
图10为本发明一种基于fpga的协议转换装置在一个控制系统中实现的示意图
具体实施方式
下面结合附图对本发明一种基于fpga的协议转换装置做进一步描述:该实施例仅用于说明本发明而不用于限制本发明的范围,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
fpga(field-programmablegatearray),即现场可编程门阵列,它是在pal、gal、cpld等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(asic)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。以硬件描述语言(verilog或vhdl)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至fpga上进行测试,是现代ic设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如and、or、xor、not)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的fpga里面,这些可编辑的元件里也包含记忆元件例如触发器(flip-flop)或者其他更加完整的记忆块。
系统设计师可以根据需要通过可编辑的连接把fpga内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品fpga的逻辑块和连接可以按照设计者而改变,所以fpga可以完成所需要的逻辑功能。
fpga一般来说比asic(专用集成电路)的速度要慢,实现同样的功能比asic电路面积要大。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的fpga。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的fpga上完成的,然后将设计转移到一个类似于asic的芯片上。另外一种方法是用cpld(complexprogrammablelogicdevice,复杂可编程逻辑器件)。
可以说,fpga芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
fpga是由存放在片内ram中的程序来设置其工作状态的,因此,工作时需要对片内的ram进行编程。用户可以根据不同的配置模式,采用不同的编程方式。
加电时,fpga芯片将eprom中数据读入片内编程ram中,配置完成后,fpga进入工作状态。掉电后,fpga恢复成白片,内部逻辑关系消失,因此,fpga能够反复使用。fpga的编程无须专用的fpga编程器,只须用通用的eprom、prom编程器即可。当需要修改fpga功能时,只需换一片eprom即可。这样,同一片fpga,不同的编程数据,可以产生不同的电路功能。因此,fpga的使用非常灵活。
本发明用fpga替代了常规设计中的处理器,在单片fpga中实现多个mac芯片的功能。多路100m以太网口,可以实现设备间的级联,并实现多个外围设备对以太网口的访问,可支持多种网络拓扑。
hub为多网口转发器实现网口数据的转发功能。
rmii是简化媒体接口,是fpga与以太网phy间的控制和数据接口。
mpu是主控制板卡的缩写,mainprocessunit,为控制站的算法运算和控制单元。
i/o板卡是一系列实现特定信号类型的板卡或模块,如模拟量输入4-20ma,数字量输出继电器触点输出等。
crc是循环冗余校验码,本文实现的是crc-32校验
sja_ctrl是fpga实现与sja1000can控制器芯片的接口。
phy芯片指以太网phy芯片,实现以太网的物理层协议。
如图4所示是基于fpga的协议转换装置实现的通信非冗余的平台架构图,2个上位机mpu下接数个本发明的以太网/can装置,每个以太网/can装置又下接数个can设备(i/o板卡),每个can设备独立运行。其中以太网/can是指本发明的协议转换装置,单个装置中的以太网口间的转发延迟时间小于100ns。
本装置具有以下功能和性能:
1)识别本管理域的从站数据,并把数据分拆到can口;
2)管理从站i/o板卡,整合并缓存数据,通过以太网发送到上位机mpu;
3)以太网通信协议响应时间(从收到指令至回复完成的时间),小于500us;
4)单装置实现4路fpga中hub与phy连接的100mhz以太网口的通信功能,便于扩展应用;
本发明实现方案功能框图如图5所示,在图中,和底板连接器连接的2路以太网在应用中连接2个上位机mpu,前面板的2路以太网连接用于网络的扩充。
fpga转换装置内部逻辑模块如图6所示,逻辑内部共分10个一级模块,实现的功能如下表所示:
表格1以太网/can装置fpga逻辑模块分解
如图6所示,该fpga转换装置连接在以太网与can控制器之间,包括hub模块、rmii模块、mpu_to_io模块、io_to_mpu模块和crc模块;
所述hub模块用于实现上位机mpu的报文转发;所述hub模块包括物理接口和逻辑接口,所述物理接口与以太网的phy芯片相连,所述逻辑接口与rmii模块进行数据交互;所述rmii模块用于给所述mpu_to_io模块和crc模块传输上位机mpu的报文数据,接收所述io_to_mpu模块的应答数据,实现2b/8b的串并转换;所述mpu_to_io模块用于对来自上位机mpu的所有报文进行解析,并将解析后发自本地的有效报文信息分类缓存与管理,解码错误后丢弃,解码成功后把报文中针对每个i/o板卡下发的输出数据和其它各种指令(版本、校准、复位等)分类放到对应的槽位,再按照iobus-1和iobus-2协议的要求将缓存报文发送给i/o板卡;其它各种指令是指版本、校准、复位等指令。
所述io_to_mpu模块用于监视can控制器的状态,在1个io通信周期内提取来自i/o板卡的数据,解析并分类缓存,对上位机mpu的报文指令进行应答;所述crc模块用于对来自所述rmii模块传输的上位机mpu的报文数据进行校验,将结果反馈给mpu_to_io模块;对应答给上位机mpu的数据进行crc校验值计算,将计算结果反馈给io_to_mpu模块。
进一步的,还包括sja_ctrl模块,所述sja_ctrl模块接收所述mpu_to_io模块的缓存报文,并向所述io_to_mpu模块发送应答给上位机mpu的数据。
进一步地,还包括设置在所述mpu_to_io模块与所述io_to_mpu模块之间的time_id模块,提取mpu_to_io模块对时指令中的时间信息更新于本地时钟并计时;在io_to_mpu模块应答上位机mpu时提取最新的时钟信息时间。
进一步地,还包括phy_rst模块,用于对以太网phy芯片的复位进行控制。
进一步地,还包括light_ct模块,用于对指示灯的状态进行控制。
如图7所示的rmii接收时序图,100m网口的时序设计中,需要支持100mbps全双工rmii以太网接口,满足rmii接口时序。i_clk_50m为芯片外部输入的50mhz全局时钟,i_rxdv和im_rxdata分别是来自hub接口模块的数据有效标识和数据,给mpu_to_io模块的输出信号有o_mac_start、o_d_flag、o_d_sync、om_data,分别表示起始信号、数据有效标识、数据有效同步信号和串并转换数据。
如图8、图9所示的can总线读取时序图和can总线写入时序图,can芯片sja1000时序(sja1000即指can控制器芯片):需要支持1mbpscan2.0intel模式接口。can协议采用扩展模式,i_clk_16m是经pll锁相环分频后的内部时钟,o_sja_rd_val和o_sja_wr_val分别使can控制器为读状态和写状态,o_sja_ale、o_sja_cs_n和o_sja_rden_n为分别为can控制的地址锁存、片选信号和读使能信号,om_sja_bus_data为写can控制器数据,iom_sja_data为can控制器返回的数据。
图10中的ecc(ethernettocancard)通信板卡ecc通信a、b就是本发明的协议转换装置在一个控制系统中实现。上图中主控mpu和通信都是冗余设计,冗余的mpu交叉连接两路冗余的ecc通信模块ecc通信a、b,后续扩展的ecc通信模块串接入系统中形成级联的架构,在离散系统的布置中这个架构可以大量减少通信线缆的长度,而且本发明的ecc的设计保证了多级级联(<7)的情况下的最大通信延迟时间在400us之内。由于不同机箱间的通信采用了以太网的物理层所以通信距离可达到普通以太网的标准。i/o板卡就是挂载到can网上的设备。
ecc模块ecc通信a、b接收来自mpu的数据,经内部hub模块转发给其他节点以及本地逻辑,模块内部的rmii_intf模块(rmii模块的一个子模块)将rmii接口数据进行串并转换,交给mpu_to_io模块进行解析,mpu_to_io模块将收到的数据按照以太网通信协议要求进行解析分类,将通过检验的数据放入内部fifo。can_ctrl模块控制can网的通信周期,每25ms读一次fifo,将mpu下发的数据读出交给can_intf,转换为can总线时序发送给io。
rmii_intf模块:rmii模块的一个子模块。
fifo:表示先进先出,是数据存储的一种方式。
can_ctrl:sja_ctrl中的一个定时触发信号。
can_intf:can数据处理模块,属于saj_ctrl的一部分。
当数据发送给i/o板卡后,can_ctrl控制can_intf,监测i/o板卡上报数据,将上报数据写入io_to_mpu模块进行缓存。io_to_mpu模块按照can协议,将上传数据进行整理,分类。在mpu主控要求回复时,将io_to_mpu模块缓存数据发送给rmii_intf,转为rmii时序发送给mpu。