一种实现Powerlink工业实时以太网通讯的IP核的制作方法

文档序号:15846490发布日期:2018-11-07 09:07阅读:505来源:国知局
一种实现Powerlink工业实时以太网通讯的IP核的制作方法
本发明涉及工业现场总线
技术领域
的一种ip核,具体为一种实现powerlink工业实时以太网通讯的ip核。
背景技术
openpowerlink资源包中常使用cpu+fpga组合实现powerlink主站或从站。openpowerlink资源包中公开了一种利用openmac(hub)和openpowerlinkapplicationstack设计实现powerlink主站或从站的方法。图1为现有openpowerlink模型图,openpowerlink协议栈=用户层+会话抽象层+内核层+mac层。除了mac层通过硬件描述语言编程实现并运行于fpga上之外,其余各层均通过计算机高级语言编程实现并运行于上位机cpu上。用户层负责控制,内核层负责通信,两层之间的接口被称作会话抽象层cal(communicationabstractionlayer)。图1的cal是并行通讯。用户层包含事件处理模块、对象字典、网络状态机、时间同步模块、错误处理模块、过程数据对象pdo及服务数据对象sdo。内核层包含事件处理模块、网络状态机、时间同步模块、错误处理模块、过程数据对象pdo、数据链路dll(datalinklayer)状态机、周期驱动、高精度时钟硬件及以太网驱动,其中pdo负责同步事件处理,sdo负责异步事件处理。用户层依据canopen协议在该层中的对象字典中索引,并将用户层端pdo一一映射到内核层端pdo,作为通信必要条件,两层之间的事件处理模块,时间同步模块、错误处理模块等都通过cal层一一对应。位于内核层的dll状态机作为通信核心负责根据当前网络状态决定自身状态以处理powerlink数据帧的收发和数据帧内容的编解码,其中powerlink数据帧由powerlink网口经openhub转发到openmac解析,才输入内核层网络驱动以触发dll状态机跳转。周期驱动依据高精度时钟硬件来定义系统绝对时间供dll状态机和时间同步模块参考。时间同步模块产生中断,用来决定powerlink通信周期,其中分同步阶段、异步阶段和空闲阶段。协议栈通过调整以上三阶段时间来保证powerlink总的通信周期时间固定,以达到实时控制的目的。openpowerlink资源包是一种入门级的实现powerlink工业实时以太网通讯的c语言协议栈,如果利用openpowerlink资源包设计实现powerlink工业实时以太网通讯和进行产品设计,是无法实现以“以太网powerlink通信行规规范”(gb/t27960-2016)规定的技术指标的。其存在如下缺点:信号传输抖动大,传输速率慢,循环周期长,同时需要采用多个芯片,设计复杂,这样就造成了powerlink工业实时以太网通讯响应慢,传输不稳定,通讯成本高等问题。技术实现要素:针对现有技术的不足,本发明提供了一种实现powerlink工业实时以太网通讯的ip核(intellectualpropertycore,知识产权核)。本发明采用以下技术方案实现:一种实现powerlink工业实时以太网通讯的ip核,所述ip核设计为构建在fpga内的powerlink工业实时以太网通讯知识产权核;所述ip核包括powerlink协议栈的内核层和mac层,所述内核层包括中断产生器二、同步数据缓存模块、异步数据缓存模块、控制器二、网络状态机二、数据链路状态机、事件寄存器、软接口;所述控制器二按照powerlink协议完成以下数据组帧:先在所述同步时间内把需要同步处理的数据组成powerlink数据帧一,并将所述powerlink数据帧一发送至所述mac层,后在所述异步时间内把需要异步处理的数据组成powerlink数据帧二,并将所述powerlink数据帧二发送至所述mac层;所述中断产生器二在所述控制器二完成所述数据组帧后,且在当前powerlink周期结束时触发一个用户层的中断产生器一;所述用户层还包括控制器一、对象字典、过程数据对象模块、服务数据对象模块;在所述同步时间内,所述控制器一接收同步传输的powerlink数据帧后按照powerlink协议发出同步应答信息,并发送给所述同步数据缓存模块供所述控制器二读取,所述控制器二按照powerlink协议规定对所述同步应答信息编码成同步应答帧,由所述mac层发送;在所述异步时间内,所述控制器一接收异步传输的powerlink数据帧后,按照powerlink协议发出异步应答信息,并发送给所述异步数据缓存模块供所述控制器二读取,所述控制器二跟powerlink协议规定对所述异步应答信息编码成异步应答帧,由所述mac层发送;所述网络状态机二用于管理powerlink工业实时以太网的通讯状态,主站搜寻到至少一个从站且相应从站反馈应答信息时为网络活跃状态,所述通讯状态在网络活跃状态时,powerlink工业实时以太网被激活;所述数据链路状态机用于定义所述内核层的不同数据处理状态,使所述控制器二在不同的数据处理状态时处理相应的数据;所述事件寄存器用于根据所述网络状态机二和所述数据链路状态机的不同状态,记录相应事件并存储;所述软接口,即会化抽象层cal接口,是一种高速串行、并行通讯接口;所述mac层先接收来自主站的powerlink同步数据触发帧soc后,触发所述中断产生器二产生中断触发信息;所述中断产生器一依据所述中断产生器二的中断触发信号产生中断,所述中断代表一个powerlink周期开始;所述控制器一根据所述中断触发同步数据通道,所述同步数据通道为:所述过程数据对象模块在所述对象字典依据canopen协议的辅助下,建立的与所述同步数据缓存模块之间的通道;所述mac层再接收来自主站的powerlink同步数据,所述控制器二对所述同步数据依照powerlink协议进行解码提取需要同步传输的powerlink数据帧;所述同步数据缓存模块将所述需要同步传输的powerlink数据帧,通过软接口接口依据所述同步数据通道发送至所述过程数据对象模块,供所述控制器一调取;所述mac层之后接收来自主站的powerlink异步数据触发帧soa,所述控制器二根据所述powerlink异步数据触发帧soa触发异步数据通道,所述异步数据通道为:所述服务数据对象模块在所述对象字典依据canopen协议的辅助下,建立的与所述异步数据缓存模块之间的通道;所述mac层再接收来自主站的powerlink异步数据,所述控制器二对所述异步数据依照powerlink协议进行解码提取需要异步传输的powerlink数据帧;所述异步数据缓存模块将所述需要异步传输的powerlink数据帧,通过所述软接口接口依据所述异步数据通道发送至所述服务数据对象模块,供所述控制器一调取。与现有技术相比,本发明的ip核具备以下有益效果:1、ip核被封装成powerlink工业实时以太网通讯协议栈的标准组件,可以根据多样化的应用需求与用户层组合,实现不同的powerlink工业实时以太网通讯的主/从站设备设计方案;2、ip核与应用层同在一个fpga内,实现powerlink工业实时以太网通讯的主/从站设备设计;3、ip核与应用层分别在fpga和微处理器(微控制器)内,实现powerlink工业实时以太网通讯的主/从站设备设计。附图说明图1为现有openpowerlink模型图。图2为本发明实现powerlink工业实时以太网通讯的ip核的功能模块框图。图3为采用图2中ip核与应用层同在一个fpga内的powerlink通讯实现方案图。图4为采用图3方案实现powerlink通讯并具有pcie通讯api接口的主/从站设备的结构示意图。图5为采用图4方案实现的powerlink通讯内部功能模块框图。图6为采用图2中ip核与应用层分别在fpga或微处理器(微控制器)内的powerlink通讯实现方案,并且ip核通过pcie通讯的cal接口与应用层通讯图。图7为采用图6方案实现的powerlink通讯内部功能模块框图。图8为采用图2中ip核的内核层封装成powerlink通讯标准组件——网表文件图。图9为软接口以axi为例,采用图2中ip核的pcie读写过程中数据在fpga内部的走向流程图。图10为采用图2中ip核的软接口接收用户层数据到ip核的状态工作机制即工作流程图。图11为采用图2中ip核的软接口发送ip核数据到用户层的状态工作机制即工作流程图。图12为采用图2中ip核的软接口异步fifo读写控制的状态工作机制即工作流程图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。实施例1本发明的ip核设计为构建在fpga内的powerlink工业实时以太网通讯ip核,所述ip核包括powerlink协议栈的内核层和mac层,所述内核层包括中断产生器二、同步数据缓存模块、异步数据缓存模块、控制器二、网络状态机二、数据链路状态机、事件寄存器、软接口。如图2,为本发明实现powerlink工业实时以太网通讯的ip核的功能模块框图。所述ip核是实现powerlink工业实时以太网通讯的关键部件,是实现powerlink通讯的必要条件,但不是充分条件。应用本发明所述ip核设计powerlink通讯设备,还需要设计用户层,所述用户层包括控制器一、对象字典、中断产生器一、过程数据对象模块、服务数据对象模块、网络状态机一。一、所述ip核各组成部份功能及实现方法。1、所述控制器二按照powerlink协议完成以下数据帧:先在所述同步时间内把需要同步处理的数据组成powerlink数据帧一,并将所述powerlink数据帧一发送至所述mac层,后在所述异步时间内把需要异步处理的数据组成powerlink数据帧二,并将所述powerlink数据帧二发送至所述mac层。2、所述中断产生器二在所述控制器二完成所述数据组帧后,且在当前powerlink周期结束时触发所述中断产生器一。在所述同步时间内,所述控制器一接收同步传输的powerlink数据帧后按照powerlink协议发出同步应答信息,并发送给所述同步数据缓存模块供所述控制器二读取,所述控制器二按照powerlink协议规定对所述同步应答信息编码成同步应答帧,由所述mac层发送;在所述异步时间内,所述控制器一接收异步传输的powerlink数据帧后,按照powerlink协议发出异步应答信息,并发送给所述异步数据缓存模块供所述控制器二读取,所述控制器二跟powerlink协议规定对所述异步应答信息编码成异步应答帧,由所述mac层发送。3、所述网络状态机二用于管理powerlink工业实时以太网的通讯状态,主站搜寻到至少一个从站且相应从站反馈应答信息时为网络活跃状态,所述通讯状态在网络活跃状态时,powerlink工业实时以太网被激活。4、所述数据链路状态机用于定义所述内核层的不同数据处理状态,使所述控制器二在不同的数据处理状态时处理相应的数据。5、所述事件寄存器用于根据所述网络状态机和所述数据链路状态机的不同状态,记录相应事件并存储。6、所述的ip核通过fpga实现时,其功能被封装成一个标准组件——网表文件,这个标准组件具有2个通讯接口,一个是mac层的powerlink网络rj45网口,用于ip核接收/发送powerlink网络数据帧;另一个是软接口,用于ip核与其用户层进行接收/发送数据,接收用户层数据到ip核,发送ip核数据到用户层。7、所述软接口,即会化抽象层cal接口,是一种高速串行、并行通讯接口。所述软接口至少由下列一种接口构成:dpram、片内总线ahb(advancedhigh-performancebus)、片内总线axi、片内总线avalon、片内总线wishbone、pcie。7.1在软接口两端的每两个对接信号都采用消除亚稳态做法的前提下,本发明还为内存读写一共准备了两对握手信号:wr_busy_o、wr_compl_o输出给接收引擎;rd_busy_o、rd_compl_o输出给发送引擎。信号描述如下表所示:表1握手信号列表握手信号名位宽说明wr_busy_o1写忙信号,表示写过程正在进行wr_compl_o1写完成信号rd_busy_o1读忙信号,表示读过程正在进行rd_compl_o1读完成信号7.2、如图10,为采用图2中ip核的软接口接收用户层数据到ip核的状态工作机制(状态工作机制即软件流程图、软件实现方法或状态跳转流程图,以下统称为状态状态工作机制);对状态跳转条件的具体说明如下。s_1:pio_32_rx_rst_state,初始状态,表示接收复位状态。此状态下会检测接收到的tlp包类型,若为s_2所述类型,并且检测到req_len_o信号值为1,则跳转至s_4状态;若接收到的tlp包为s_3所述类型,并且检测到req_len_o信号值为1,则也跳转至s_4状态;若以上条件均不满足,则继续保持在s_1状态。s_2:pio_32_rx_mem_wr32_fmt_type,tlp数据包类型之一,表示32位写存储器状态。若跳转条件req_len_o不满足时,会自动跳转回s_1状态等待。s_3:pio_32_rx_io_wr32_fmt_type,tlp数据包类型之一,表示32位写io状态。若跳转条件req_len_o不满足时,会自动跳转回s_1状态等待。s_4:pio_32_rx_io_mem_wr32_dw1,接收tlp包第一个dw。此状态下若检测到m_axis_rx_tvalid信号和m_axis_rx_tready信号同时有效,则跳转至s_5状态;若以上条件不满足,则继续保持在s_4状态。s_5:pio_32_rx_io_mem_wr32_dw2,接收tlp包第二个dw。此状态下若检测到m_axis_rx_tvalid信号和m_axis_rx_tready信号同时有效,则跳转至s_6状态;若以上条件不满足,则继续保持在s_5状态。s_6:pio_32_rx_io_mem_wr32_dw3,接收tlp包第三个dw。此状态下若检测到wr_busy_i信号有效,并且写完成信号wr_comple_i无效,则跳转至s_8状态;若检测到wr_busy_i信号无效,则跳转至s_7状态;若以上条件均不满足,则继续保持在s_6状态。s_7:pio_32_rx_wr32_write,写状态。此状态下若检测到wr_comple_i信号有效,并且m_axis_rx_ready信号有效,则跳转回s_6状态;若检测到wr_comple_i信号有效,并且m_axis_rx_ready信号无效,则跳转至s_9状态;多检测到wr_comple_i信号无效,则继续保持在s_7状态;若以上条件均不满足,则跳转至s_8状态。s_8:pio_32_rx_wr32_wait,写等待状态。此状态下若检测到wr_busy_i信号继续有效,则继续保持在s_8状态;否则,跳转至s_7状态。s_9:pio_32_rx_wait_state,表示接收等待状态,等待载有有效数据的dw。此状态下若检测到tlp_type为wr,并且wr_busy_i信号无效时,则跳转回s_1状态;若检测到tlp_type为rd,并且compl_done_i信号有效时,则跳转回s_1状态;以上条件均不满足时,则继续保持在s_9状态。7.3、如图11所示,为采用图2中ip核的软接口发送ip核数据到用户层的状态工作机制,对状态跳转条件的具体说明如下。s_10:pio_32_tx_rst_state,初始状态,表示发送复位状态。此状态下若检测到req_compl_q信号有效,并且req_compl_with_data_q信号无效时,表明要发送的tlp包为s_11所述类型,接着状态跳转至s_13;若检测到req_compl_q信号有效,并且req_compl_with_data_q信号有效时,表明要发送的tlp包为s_12所述类型,接着状态跳转至s_13;若以上条件均不满足,则继续保持在s_10状态。s_11:pio_32_cpl_fmt_type,tlp数据包类型之一,由s_10状态选择。s_12:pio_32_cpld_fmt_type,tlp数据包类型之一,由s_10状态选择。s_13:pio_32_tx_cpl_cpld_dw1,发送第一个dw。此状态下若检测到s_axis_tx_tready信号有效,则跳转至s_14状态。若不满足以上条件,则继续保持在s_13状态。s_14:pio_32_tx_cpl_cpld_dw2,发送第二个dw。此状态下若检测到s_axis_tx_tready信号继续有效,并且cpl_w_data信号无效,则跳转至s_17状态;若检测到s_axis_tx_tready信号继续有效,并且cpl_w_data信号也有效,同时rd_busy_i信号也有效,则跳转至s_16状态;若检测到s_axis_tx_tready信号继续有效,并且cpl_w_data信号也有效,但是rd_busy_i信号无效,则跳转至s_15状态;若以上条件均不满足,则继续保持在s_14状态。s_15:pio_32_tx_data_read,读状态。此状态下若检测到读完成信号rd_comple_i有效,则跳转至s_17状态;否则,继续保持在s_15状态。s_16:pio_32_tx_data_wait,读等待状态。此状态下若检测到rd_busy_i信号有效,则跳转至s_15状态;否则,继续保持在s_16状态。s_17:pio_32_tx_cpld_dw3,发送第三个dw。此状态下若检测到s_axis_tx_tready信号有效,并且re_len_i的值等于1或者length_cnt的计数值等于req_len_i,则跳转至s_18状态;若检测到s_axis_tx_tready信号有效,并且re_len_i的值不等于1或者length_cnt的计数值不等于req_len_i,并且rd_busy_i信号无效时,则跳转回s_15状态;若检测到s_axis_tx_tready信号有效,并且re_len_i的值不等于1或者length_cnt的计数值不等于req_len_i,并且rd_busy_i信号有效时,则跳转回s_16状态;若以上条件均不满足,则继续保持在s_17状态。s_18:pio_32_tx_wait_state,表示发送等待状态。此状态下若检测到s_axis_tx_tready信号继续有效,则跳转回s_10状态;否则,继续保持在s_18状态。7.4、如图12所示,为采用图2中ip核的软接口异步fifo读写控制的状态工作机制;对状态跳转条件的具体说明如下。fifo(firstinfirstout)因为拥有数据“先进先出”的特点,在fpga逻辑中被广泛用作数据缓存模块。添加两个异步fifo,分别负责读写powerlink数据,反向来看即写读pcie数据。设定fifo位宽为32,深度为1kb。此时内存读写访问直接在fifo中进行,接收和发送引擎也无需再设置等待状态。这样的处理方式也是可以更方便添加pcie的msi中断,同时为保证数据同步准确性做准备。s_19:state_rst,初始状态,表示读写复位状态。此状态下若检测到读命令rd_cmd有效,则跳转到s_22状态;若检测到写命令有效,并且读fifo不空,即rd_fifo_empty_i信号无效时,则跳转到s_20状态;以上条件都不满足,则继续保持在s_19状态等待。s_20:rd_fifo_wr_plk,读fifo写powerlink状态。此状态下若检测到dw计数器数值dwcnt与req_len_i的值相等时,并且检测到ihostack有效或dwcnt的值为1时,则跳转到s_21状态;以上条件都不满足,则继续保持在s_20状态。s_21:rd_fifo_wr_plk_end,读fifo写powerlink结束状态。此状态下若检测到写命令信号无效,并且检测到ohostwrite信号有效或者ihostack信号有效,则跳转回s_19状态;以上条件都不满足,则继续保持在s_21状态。s_22:wr_fifo_rd_plk,写fifo读powerlink状态。此状态下若检测到dw计数器数值dwcnt与req_len_i的值相等时,并且ihostack信号和ohostread信号同时有效时,则跳转到s_23状态;以上条件都不满足,则继续保持在s_22状态。s_23:wr_fifo_rd_plk_end,写fifo读powerlink结束状态。此状态下若检测到读命令信号rd_cmd无效,则跳转回s_19状态;否则继续保持在s_23状态。8、所述mac层由openmac、openhub、1eee1588协议(图中未画出)构成。对外的物理接口是rj45网口,是本发明所述ip核用于接收/发送powerlink数据帧的物理接口。9、所述mac层接收/发送powerlink数据帧的方法:先接收来自主站的powerlink同步数据触发帧soa后,触发所述中断产生器二产生中断触发信息;所述中断产生器一依据所述中断产生器二的中断触发信号产生中断,所述中断代表一个powerlink周期开始;所述控制器一根据所述中断触发同步数据通道,所述同步数据通道为:所述过程数据对象模块在所述对象字典依据canopen协议的辅助下,建立的与所述同步数据缓存模块之间的通道。9.1、所述mac层再接收来自主站的powerlink同步数据,所述控制器二对所述同步数据依照powerlink协议进行解码提取需要同步传输的powerlink数据帧;所述同步数据缓存模块将所述需要同步传输的powerlink数据帧,通过软接口接口依据所述同步数据通道发送至所述过程数据对象模块,供所述控制器一调取。9.2、所述mac层接收来自主站的powerlink异步数据触发帧soa,所述控制器二根据所述powerlink异步数据触发帧soa触发异步数据通道,所述异步数据通道为:所述服务数据对象模块在所述对象字典依据canopen协议的辅助下,建立的与所述异步数据缓存模块之间的通道。9.3、所述mac层再接收来自主站的powerlink异步数据,所述控制器二对所述异步数据依照powerlink协议进行解码提取需要异步传输的powerlink数据帧;所述异步数据缓存模块将所述需要异步传输的powerlink数据帧,通过所述软接口接口依据所述异步数据通道发送至所述服务数据对象模块,供所述控制器一调取。10、所述的ip核在进行powerlink通讯应用设计时,必须设计用户层,并且用户层通过软接口与本发明所述ip核进行数据的接收/发送。10.1、所述用户层包括控制器一、对象字典、中断产生器一、过程数据对象模块、服务数据对象模块。10.2、所述中断产生器一依据所述中断产生器二的触发产生中断,由此形成中断时序,所述中断时序中相邻两个中断的时间为一个powerlink周期,所述powerlink周期包括同步处理时间、异步处理时间和空闲时间。10.3、所述控制器一接收一个powerlink周期的控制信息集,所述控制信息集控制与所述主站相连的至少一个从站,所述控制信息集包括与所述至少一个从站相对应的至少一个控制信息;所述控制器一在接收所述中断之后,首先在所述同步处理时间内将所述控制信息中的需要同步处理的数据发送至所述过程数据对象模块,在所述异步处理时间内将所述控制信息中需要异步处理的数据发送至所述服务数据对象模块,而在空闲时间内不做处理。10.4、所述对象字典依据canopen协议辅助所述过程数据对象模块建立与所述同步数据缓存模块之间的同步数据通道,辅助所述服务数据对象模块建立与所述异步数据缓存模块之间的异步数据通道。10.5、所述过程数据对象模块通过软接口依据所述同步数据通道将需要同步处理的数据发送至所述同步数据缓存模块,所述服务数据对象模块通过软接口依据所述异步数据通道将需要异步处理的数据发送至所述异步数据缓存模块。11、当软接口采用fpga片内的axi总线——axi_epc接口时。如表2所示为该接口内部参数设置详情。而表3所示,为axi_epc接口信号与powerlink内核连接详情。表2axi_epc接口参数设置列表表3axi_epc接口信号与powerlink内核连接详情epc信号名功能描述连接内核层信号备注prh_addr地址信号ohostaddressprh_addr右移两位,再在高两位补零后接入prh_be字节使能ohostbyteenableprh_rd_n读使能ohostreadprh_wr_n写使能ohostwriteprh_rdy准备信号net_vcc拉高prh_data_i数据输入ihostreaddata32位prh_data_o数据输出ohostwritedata32位prh_cs_n片选信号/不采用12、当软接口采用pcie_to_epl时。powerlink用户层和powerlink内核层通过pcie规范的软接口进行通讯;fpga负责运行powerlink内核层及mac层verilog代码;用户层信息由pc机通过pcie数据帧传输到fpga,被pcie_ep_ctrl模块解码,再由pcie_to_epl接口传递到内核层,再打包成powerlink数据帧由powerlink网口传输给其它powerlink受控节点,最终完成对从站应用的实时控制。pcie_to_epl软接口主要负责连接veriloghdl代码编写的powerlink内核层和pcie_ep_ctrl这个pcie控制器。实施例2请参阅图3,为采用图2中ip核与应用层同在一个fpga内的powerlink通讯实现方案;本实施例用本发明所述的ip核、及用户层在同一个fpga内实现了一款powerlink工业实时以太网通讯的主/从站卡设计;ip核通过软接口接收/发送数据到用户层;ip核通过rj45网口接收/发送数据到powerlink网络;fpga负责运行整个powerlink协议栈,即powerlink用户层和内核层,此种情况下,需要fpga片内有集成的微处理(如arm硬核,或microblaze软核等),片外也需要为cpu配置存储器资源(ddr3)。以xilinxfpga为例,片内软核cpumicroblaze负责运行powerlink用户层代码,并通过axi总线控制整个系统,如ddr3控制器、pcie控制器等。内核层逻辑代码与用户层通过axi_epc接口连接,然后连接mac层及powerlink网口,完成powerlink协议栈的搭建。pcie插槽用于连接pc机,在运动控制应用中,用户通过pc机通过pcie接口下发运动控制命令到axi_pcie,信息在此处得到解码并传送至总线最终到达用户层缓存。控制信息会通过整个搭建好的主站打包发送给其它powerlink从站设备。所述ip核的设计核心为构建在fpga内的powerlink工业实时以太网通讯ip核。ip核的事件寄存器模块依据网络状态机状态和数据链路dll状态机状态定义powerlink通讯中所发生事件并寄存,用以决定上述状态机状态是否跳转,并指导数据收发及编解码模块工作。ip核的数据收发及编解码模块负责接收mac转发过来的powerlink数据帧并且解码然后将重要通讯数据依据网络状态及数据链路状态决定向何处转发。在收到用户层数据后,数据收发及解析模块会依据网络状态及数据链路状态决定将数据插入对应类型powerlink数据帧以完成组帧编码,并向mac转发。用户层依据canopen协议在该层中的对象字典中索引,并将用户层端pdo通过软接口一一映射到ip核内核层的同步数据缓存/异步数据缓存。进一步地,该powerlink工业实时以太网通讯的主/从站卡具有pcie金手指,即实现powerlink工业实时以太网通讯的用户层具有pcie通讯规范的api接口,如图4,为采用图3方案实现powerlink通讯并具有pcie通讯规范的api接口的主/从站设备的结构示意图;进一步地,如图5,为采用图4方案实现的powerlink通讯内部功能模块框图;该方案中软接口通过片内总线axi实现,内核层逻辑代码与用户层通过axi_epc连接,然后连接mac层及powerlink网口,完成powerlink协议栈的搭建。pcie金手指用于连接pc机,在运动控制应用中,用户通过pc机经由pcie接口下发运动控制命令到axi_pcie,信息在此处得到解码并传送至总线最终到达用户层缓存。控制信息会通过整个搭建好的主站打包发送给其它powerlink从站设备。通过设置高速串行差分信号pcie通信规范的api接口,在保证百兆以上高速率传输的同时,又能保证信号的稳定性,提高了通讯速率,缩短了循环周期,从而提高了通讯的实时性。进一步地,本实施例的用户层运行在同一个fpga的硬核cpu或软核cpu上,由高级计算机语言编程实现;本发明的ip核运行在同一个fpga上,由接近机器语言的硬件描述语言编程实现和仿真。进一步地,本实施例的powerlink工业实时以太网通讯的主/从站卡设计包括运行在片内cpu(硬核cpu或软核cpu)上的用户层、软接口、powerlink工业实时以太网通讯ip核;所述用户层包括控制器一、对象字典、中断产生器一、过程数据对象模块、服务数据对象模块;所述ip核包括内核层和mac层,所述内核层包括中断产生器二、同步数据缓存模块、异步数据缓存模块、控制器二。其中,所述主/从站卡设计为主站卡时,所述片内cpu、所述软接口、所述ip核均运行在fpga上,所述主/从站卡满足以下特征。所述中断产生器一依据所述中断产生器二的触发产生中断,由此形成中断时序,所述中断时序中相邻两个中断的时间为一个powerlink周期,所述powerlink周期包括同步处理时间、异步处理时间和空闲时间;所述控制器一接收一个powerlink周期的控制信息集,所述控制信息集控制与所述主站相连的至少一个从站,所述控制信息集包括与所述至少一个从站相对应的至少一个控制信息;所述控制器一在接收所述中断之后,首先在所述同步处理时间内将所述控制信息中的需要同步处理的数据发送至所述过程数据对象模块,在所述异步处理时间内将所述控制信息中需要异步处理的数据发送至所述服务数据对象模块,而在空闲时间内不做处理;所述对象字典依据canopen协议辅助所述过程数据对象模块建立与所述同步数据缓存模块之间的同步数据通道,辅助所述服务数据对象模块建立与所述异步数据缓存模块之间的异步数据通道;所述过程数据对象模块通过软接口依据所述同步数据通道将需要同步处理的数据发送至所述同步数据缓存模块,所述服务数据对象模块通过所述软接口依据所述异步数据通道将需要异步处理的数据发送至所述异步数据缓存模块;所述控制器二按照powerlink协议完成以下数据组帧:先在所述同步时间内把需要同步处理的数据组成powerlink数据帧一,并将所述powerlink数据帧一发送至所述mac层,后在所述异步时间内把需要异步处理的数据组成powerlink数据帧二,并将所述powerlink数据帧二发送至所述mac层;所述中断产生器二在所述控制器二完成所述数据组帧后,且在当前powerlink周期结束时触发所述中断产生器一。其中,在所述同步时间内,所述控制器二按照powerlink协议把从所述mac层接收的数据解帧出同步应答信息,并发送给所述同步数据缓存模块供所述控制器一读取;在所述异步时间内,所述控制器二按照powerlink协议把从所述mac层接收的数据解帧出异步应答信息,并发送给所述异步数据缓存模块供所述控制器一读取。所述用户层还可包括网络状态机,所述内核层还包括数据链路状态机、事件寄存器。所述网络状态机用于管理powerlink工业实时以太网的通讯状态,主站搜寻到至少一个从站且相应从站反馈应答信息时为网络活跃状态,所述通讯状态在网络活跃状态时,powerlink工业实时以太网被激活。所述数据链路状态机用于定义所述内核层的不同数据处理状态,使所述控制器二在不同的数据处理状态时处理相应的数据。所述事件寄存器用于根据所述网络状态机和所述数据链路状态机的不同状态,记录相应事件并存储。设有所述用户层的管理设备和设有所述ip核的主站卡构成主站的核心部件,所述主站在通讯时的通讯方法为:所述管理设备上应用程序的控制信息会依次通过用户层、软接口、内核层、mac层、powerlink网络接口输出到与从站连接的工控设备,实现对所述工控设备的控制。在powerlink通讯轮询阶段,所述从站反馈应答信息给所述主站。所述主站卡与所述管理设备通过pcie接口连接,而与所述从站通过powerlink网络接口连接。所述主/从站卡设计为从站卡时,所述片内cpu、所述软接口、所述ip核也均运行在fpga上,所述主/从站卡满足以下特征。所述mac层先接收来自主站的powerlink同步数据触发帧soc后,触发所述中断产生器二产生中断触发信号;所述中断产生器一依据所述中断产生器二的中断触发信号产生中断,所述中断代表一个powerlink周期开始;所述控制器一根据所述中断触发同步数据通道,所述同步数据通道为:所述过程数据对象模块在所述对象字典依据canopen协议的辅助下,建立的与所述同步数据缓存模块之间的通道。所述mac层再接收来自主站的powerlink同步数据,所述控制器二对所述同步数据依照powerlink协议进行解码提取需要同步传输的powerlink数据帧;所述同步数据缓存模块将所述需要同步传输的powerlink数据帧,通过软接口依据所述同步数据通道发送至所述过程数据对象模块,供所述控制器一调取。所述mac层之后接收来自主站的powerlink异步数据触发帧soa,所述控制器二根据所述powerlink异步数据触发帧soa触发异步数据通道,所述异步数据通道为:所述服务数据对象模块在所述对象字典依据canopen协议的辅助下,建立的与所述异步数据缓存模块之间的通道。所述mac层再接收来自主站的powerlink异步数据,所述控制器二对所述异步数据依照powerlink协议进行解码提取需要异步传输的powerlink数据帧;所述异步数据缓存模块将所述需要异步传输的powerlink数据帧,通过所述软接口依据所述异步数据通道发送至所述服务数据对象模块,供所述控制器一调取。在所述同步时间内,所述控制器一接收同步传输的powerlink数据帧后按照powerlink协议发出同步应答信息,并发送给所述同步数据缓存模块供所述控制器二读取,所述控制器二跟powerlink协议规定对所述同步应答信息编码成同步应答帧,由所述mac层发送;在所述异步时间内,所述控制器一接收异步传输的powerlink数据帧后,按照powerlink协议发出异步应答信息,并发送给所述异步数据缓存模块供所述控制器二读取,所述控制器二跟powerlink协议规定对所述异步应答信息编码成异步应答帧,由所述mac层发送。设有所述用户层的工控设备和设有所述ip核的从站卡构成从站的核心部件,所述从站在通讯时的通讯方法为:主站传递的控制信息会依次通过从站卡的powerlink网络接口、mac层、内核层、软接口、用户层,使工控设备最终按照接收到的控制信息执行指定动作。在powerlink通讯轮询阶段,所述工控设备反馈应答信息给管理设备。所述从站卡与所述主站通过powerlink网络接口连接。特别地,本实施例的软接口采用fpga片内的axi总线——axi_epc接口。axi_epc接口信号与powerlink内核连接详情见表2、表3。进一步地,本实施例采用图2中ip核设计制造的pcie规范的主/从站卡。pcie读写过程中数据在fpga内部的走向:图9,pcie_core、pcie_app包含接收和发送引擎的时序以及存储器访问模块,都通过axi总线交互数据,最终再通过串行差分信号线传递出fpga。pcie通讯可选32/64位数据线,powerlink通讯可选8/16/32位数据线,因此为了便于统一,二者均选择32位数据线。内存访问模块是pcieapp的数据交互核心,数据经过接收引擎解析,判断对内存的读写,然后做出相应动作。读完就把数据和握手信号给出,送给接收和发送引擎;写完就把握手信号发送给接收和发送引擎。写数据经过这里,到达被选择的ram存储,再从指定ram读出数据。如果能把此处的读写信号与表4中的信号按时序正确连接,即可完成pcie到powerlink的读写。表4pio_ep_mem_access_interface信号名位宽(bit)输入/输出(内存)功能rd_addr_i11input读地址rd_be_i4input读字节使能rd_data_o32output读数据wr_addr_i11input写地址wr_be_i8input写字节使能wr_data_i32input写数据wr_en_i1input写使能wr_busy_o1output写忙信号此处缺少读使能信号,表示读使能一直有效,但我们需要一个可控的读使能。因此,rd_en_i被添加为读使能。原本的地址信号位宽不够匹配powerlink寻址位宽,需要增加。由pcie协议可知,tlp包第二个dw的第2到31位都可当做有效地址信号,因此rd_addr_i和wr_add_i被升级为16位,在接收时直接由axi总线传来的m_axis_rx_tdata的第2到15位给出,再加地位两个0。在发送时由于只发送低6位有效地址,因此不需修改。具体如何选择读写地址,由读写使能决定。rd_be_i使用全部数据,wr_be_i使用低四位数据,字节使能的选择也由读写使能决定。单dw(doubleword)读写时,在每4个dw的tlp数据包里读写一个有效dw数据。这样做的好处是,每读写完一个有效dw,就进入等待状态,在下一次读写信号到来时,已是通信状态已经到下一个tlp包了,因此不需要做时钟同步。但这样做会使得数据访问效率低下,并且powerlink数据帧最小为36个字节,最大超过1k。目前这种读写模式显然是不满足大容量数据传输的,因此多dw读写才能满足要求。多dw读写即是在判断出写dw长度之后,重复写有效dw的操作。但此时会带来数据同步的问题,pcie的用户时钟为62.5m,数据访问都是参考这个时钟,而powerlink协议栈的时钟却是50m。若想将二者同步,快时钟必须等待慢时钟。技术上可采用以下两种方法,一是采用握手信号加二级缓存的方式,消除亚稳态;二是采用dc_fifo(异步fifo)缓存tlp数据包的方式将延迟锁定在tlp包与包之间。实施例3请参阅图6,为采用图2中ip核与应用层分别在fpga和微处理器(微控制器)内的powerlink通讯实现方案,并且ip核通过pcie规范的cal接口与应用层通讯。本实施例用本发明所述的ip核、及用户层在分别在fpga和微处理器内实现了一款powerlink工业实时以太网通讯的主/从站卡设计,ip核位于fpga内,用户层位于位处理器内;ip核通过pcie规范的软接口接收/发送数据到用户层;ip核通过rj45网口接收/发送数据到powerlink网络。进一步地,图7为采用图6方案实现的powerlink通讯内部功能模块框图。本实施例设计实现的powerlink主/从站卡中的fpga只负责运行powerlink协议栈内核层及pcie驱动,无需片外存储器。以主站卡为例,如图7所示,虚线部分描述的pc机作为上位机(x86处理器),用来运行运动控制app及powerlink协议栈用户层代码;powerlink用户层和powerlink内核层通过pcie规范的软接口进行通讯;实线部分描述的fpga负责运行powerlink内核层及mac层verilog代码;运动控制信息由pc机通过pcie数据帧传输到fpga,被pcie_ep_ctrl模块解码,再由pcie_to_epl接口传递到内核层,再打包成powerlink数据帧由powerlink网口传输给其它powerlink受控节点(从站),最终完成对从站应用(如伺服驱动器)的实时控制。本实施例所描述的主/从站卡使用基于pcie总线的pcie_to_epl接口作为软接口。pc机的网卡接口通常为pci或pcie接口,本实施例在协议栈基础上添加pcie这类高速串行接口,可以方便此设备与pc机对接,以替代pc机网卡。此处的pcie_to_epl接口主要负责连接veriloghdl代码编写的powerlink内核层和pcie_ep_ctrl这个pcie控制器。特别地,本实施例设计的主/从站卡中,图8为采用图2中ip核的内核层封装成powerlink通讯标准组件——网表文件,其内部包含有数据发送和接收缓冲模块、中断生成模块、定时器模块、主站dll状态机模块、主站nmt状态机模块、mac模块、phy芯片管理模块以及其它寄存器模块。其核心为dll状态机模块和nmt状态机模块。除去需要接到外部网口的信号,其它需要连接到pcie的信号如表5所示。表5new_powerlink_mn_ip_interface信号名位宽(bit)输入/输出(fpga)功能ihostread1inputpowerlink读使能ihostwrite1inputpowerlink写使能ihostbyteenable4input字节使能ihostaddress16inputpowerlink地址信号ohostdata32output输出数据ihostdata32input输入数据ohostwaitrequest1output读、写应答powerlink主站在一个周期内按协议栈规定的方式产生帧序列,并监视从站的反应。进一步地,powerlink从站内核层模块内部包含有数据发送和接收缓冲模块、中断生成模块、定时器模块、从站dll状态机模块、从站nmt状态机模块、mac模块、phy芯片管理模块以及其它寄存器模块。其核心为dll状态机模块和nmt状态机模块。powerlink从站监视一个周期内接收的帧的顺序,并按协议栈规定的方式作出反应。在pcie单dw(doubleword)读写时,在每4个dw的tlp数据包里读写一个有效dw数据。在基于上述基础的pcie多dw读写时,可以采用握手信号加二级缓存的方式以消除亚稳态,还可以采用异步fifo缓存tlp数据包的方式将延迟锁定在tlp包与包之间。以上两种方式都需在数据读写时单独设置读写等待状态作为数据缓存状态。在pcie多dw读写时,采用握手信号加二级缓存的方式以消除亚稳态。并采用异步fifo缓存tlp数据包的方式将延迟锁定在tlp包与包之间。特别地,无论该卡配置成主站还是从站,卡fpga内设置msi_gen模块,msi_gen模块用于向pcie提供中断;在接收powerlink中断时,msi_gen模块将计数周期为1ms的中断提供给pcie,通过异步fifo的缓存,将每个tlp连接起来,使得中断信号不产生干扰。进一步地、msi中断机制:msi中断其实是pcie独有的中断方式,因为在案例2设计实现的主/从站卡方案中,powerlink协议栈内核层和用户层需要通信,而周期控制的方式就是使用中断。针对pcie可在本实施例基础上单独添加msi_gen模块,内部只需对如下信号正确配置即可。表6msi_gen模块信号信号名位宽(bit)输入/输出(msi_gen)备注user_clk1input62.5mhzuser_reset1inputoirq1inputpowerlink中断cfg_interrupt1outputcfg_interrupt_rdy1inputcfg_interrupt_assert1outputcfg_interrupt_di8outputcfg_interrupt_do8inputcfg_interrupt_mmenable3inputcfg_interrupt_msienable1inputmsi中断使能cfg_command16input此处接收powerlink中断,然后在msi_gen中准备了计数周期为1ms的中断提供给pcie,通过异步fifo的缓存,很好地将每个tlp连接起来,使得中断信号不对其干扰。进一步地、xintc中断控制器,案例1设计实现的主/从站卡方案中,pcie不参与powerlink协议栈内部中断处理过程。此时的协议栈中断需交由独立的中断控制器来完成。以xilinx的microblaze内核系统为例,该cpu只能响应单独中断,因此需要添加额外的中断控制器来处理多个中断,该控制器被命名为xintc。该中断控制器的硬件被配置好后,在软件方面需用c语言使能cpu中断。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1