基于以太网控制器的网络端口扩展方法与流程

文档序号:11138470阅读:445来源:国知局
基于以太网控制器的网络端口扩展方法与制造工艺

本发明涉及一种基于以太网控制器的网络端口扩展方法,属于以太网通信技术领域。



背景技术:

由于Ethernet应用的广泛性和技术的先进性,在工业应用中也具有传统现场总线所无法比拟的优越性,正在逐步取代传统的现场总线技术,使其成为当今工业控制首选网络。随着应用复杂性增加,对智能电子设备网络端口的数量也在增加,且往往需要各端口在链路层完全独立。然而就目前主流嵌入式MCU来说,片上的MAC控制器不超过3个,其具有3个或3个以上独立网口的处理器非常少。此外,嵌入式MCU都会为集成的MAC控制器提供专门DMA服务,以改善网络吞吐率,且各厂商都会提供相应的网络驱动程序。因此,网络扩展成为嵌入式应用的必然趋势,而基于MCU原有网络端口扩展网口,无论就硬件环境还是软件环境都具有明显的优势。

目前,网络端口扩展主要有以下两种方法:

(1)基于系统总线扩展独立的网络控制器,系统设计者需根据不同的网络控制器的要求修改网络驱动程序实现网络扩展;

(2)基于网络交换芯片的网络端口扩展,通常将交换芯片的一个端口接入处理器系统的网络接口,然后由交换芯片实现物理端口扩展。

上述两种方案在一定程度上实现的网络端口扩展,但应用场所不同,适用范围窄,存在不同的缺陷,具体如下,(1)要求系统总线的数据吞吐性能好或者具备类似PCI或PCI-E高速端口,布线难度高,驱动程序修改比较大;(2)虽然通过网络端口扩展网络端口,但扩展出来的端口在链路层不独立,虽然对高层应用透明,却不满足要求具备独立MAC地址的应用场所。



技术实现要素:

本发明所要解决的技术问题是克服现有技术的缺陷,提供一种基于以太网控制器的网络端口扩展方法,利用FPGA实现经MCU的原有网络端口扩展多个独立端口,对原有的网络驱动程序仅需简单升级,占用硬件资源开销非常小,简单易实现。

为解决上述技术问题,本发明提供一种基于以太网控制器的网络端口扩展方法,包括硬件电路实现方法和驱动软件实现方法,其实现步骤如下:

步骤1,构建包括多路以太网物理层、网络扩展模块的硬件电路,所述网络扩展模块包括主端口接收逻辑、主端口发送逻辑、多路发送逻辑、单网口的接收逻辑、多路接收DMA等;

步骤2,由所述主端口接收逻辑将来自主机MAC的网络报文进行延迟缓冲同时解析报文中源MAC地址,并选择本地MAC地址和报文源MAC地址一致的扩展网络端口作为该数据报文的目标发送端口;

步骤3,由所述多路发送逻辑将延迟缓冲后的数据报文并行施加在各扩展网络端口,并根据步骤2选择结果置位相应扩展网络端口的发送使能信号TX_EN,实现报文从选中的端口发送;

步骤4,由各扩展网络端口的接收逻辑接收并缓冲本端口的数据报文同时标记端口序号,然后请求多路接收DMA服务;

步骤5,多路接收DMA按轮转调度策略依次查询各扩展网络端口的接收逻辑,并将接收逻辑模块接收到的报文连同其源端口序号一并传送给主端口发送逻辑;

步骤6,主端口发送逻辑将接收DMA的数据转换成以太网物理层的数据格式,同时将报文的源端口序号插入在报文的最后一个字节后发送该报文到主机;

步骤7,在主机侧系统软件中虚拟多个独立的逻辑网络设备,并使这些逻辑网络设备的本地MAC地址和扩展网络端口中配置的本地MAC地址一致,协议栈高层发往逻辑网络设备的数据报由发送驱动程序映射到主机侧用来网络扩展的MAC控制器;

步骤8,将位于主机侧的MAC控制器配置成混杂模式,重设MAC的最大接收帧长,使其比原有方式增加一个字节,以容纳报文中扩展端口序号;

步骤9,主机侧的网口接收驱动程序按常规方法读取来自端口的网络数据,并提取帧校验码前的一个字节作为报文源端口序号,并根据此序号将接收报文提交到步骤7所述对应逻辑网络设备,完成逻辑网络设备的数据接收。

本发明发送报文的目标扩展网络端口选择由网络扩展模块中的多路发送逻辑完成,协议栈输出报文与常规报文一致;而来自扩展网络端口的接收报文则由网络扩展模块进行源端口标记,通过驱动软件实现方法完成目标逻辑网络设备的选择,最终完成逻辑网络设备和对应扩展端口的绑定,整个实现对协议栈高层透明。

当使用支持单时钟模式的以太网物理层接口器件时,多路发送逻辑的数据输出端可直接连接到以太网物理层接口器件;当选用的以太网物理层器件不支持单时钟模式时,采用经过双时钟FIFO连接多路发送逻辑和物以太网物理层接口器件,实现跨时钟域转换。

主机报文发送采用源MAC地址路由策略,由扩展模块中的多路发送逻辑按步骤2选择与主机报文源MAC地址一致的第一个扩展网络端口作为该报文的目标转发端口。

主端口接收逻辑和多路发送逻辑并不缓冲全部报文,仅对接收报文做适当延迟,在解析出报文中源MAC并完成目标端口选择后即行启动转发,多路发送逻辑仅产生一组发送数据流,根据步骤2的目标扩展网络端口选择结果置位相应的网络发送使能信号TX_EN,以此实现数据选择性发送并保证广播发送延迟一致。

各扩展网络端口的接收DMA将接收的数据报文标记上各自源端口序号,由主端口发送逻辑将源端口序号插入到报文数据段的最后一个字节,而主机侧MAC控制器则配置成混杂模式,接收所有报文,而接收驱动程序根据数据报文的最后一字节确定报文的源扩展端口序号,并根据此序号将报文提交给相应的逻辑设备。

本发明步骤7中主机侧系统软件虚拟多个独立的逻辑网络设备的具体方法为,主机侧软件按扩展网络端口的数量创建同等数量的逻辑网络设备,二者编号顺序一致,同时以扩展端口序号为索引建立查找表,以便通过扩展网络端口序号能够找到对应的逻辑网络设备。

本发明所达到的有益效果在于:

本发明所述的经以太网控制器扩展网口的实现方法,通过一路以太网控制器扩展出多个独立的网络控制器,各控制器具有独立的MAC地址,和以往网络交换芯片相比采用源地址路由选择方法和直通延迟转发模式。

本发明具有简单易实现,网络驱动程序改动非常小,可方便模拟多个独立网络控制器,具有以下特点,

1) 系统对网络协议透明,占用硬件资源开销非常小,简单易实现;

3) 网络发送采用多路同时驱动和直通延迟转发模式,广播发送延迟小;

4) 网络转发路径选择基于源地址模式;

5) 扩展端口数据接收和转发包含源端口标记;

6) 各扩展端口之间没有数据通路,在链路层完全独立;

7) 各扩展端口拥有独立的MAC地址,具备独立的MAC控制器的特征。

因此,本发明提供的一种基于以太网控制器的网络端口扩展方法,利用FPGA实现经MCU的原有网络端口扩展多个独立端口,对原有的网络驱动程序仅需简单升级,占用硬件资源开销非常小,简单易实现,具有良好的应用前景。

附图说明

图1是本发明实施例一的硬件框图;

图2是本发明实施例二的硬件框图;

图3是本发明实施例二双时钟FIFO连接网络物理层的示意图。

图4是本发明逻辑网口和扩展网口端到端连接示意图。

具体实施方式

下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

本发明基于以太网控制器的网络端口扩展方法,通过多路以太网物理层和网络扩展模块等硬件电路构成,所述网络扩展模块从主机端口(源端口)接收数据报文,根据报文中的源MAC地址选择转发目标端口,待转发的报文并行施加到各个转发逻辑,并根据前面的源MAC选择结果确定使某个发送逻辑的发送使能信号TX_EN有效实现数据转发。而各个扩展网口的接收逻辑在接受到数据报文之后请求接收DMA数据传送服务,接收DMA通过标记接收报文的来源端口序号并指示后面的主端口发送逻辑,向主机端口发送包含源端口序号的报文(源端口序号添加网络序号到数据段的最后一个字节,即帧校验码的前一个字节),主机网络接收驱动程序通过提取报文中源端口序号实现物理端口和协议栈中逻辑设备的绑定。

本发明的硬件实现方案因使用的网络物理层收发器不同而略有不同,而主机侧网络驱动程序相同,以下分硬件电路和网络驱动软件分述具体实现方法。

实施例一

1.硬件电路

如图1所示的基于以太网控制器的网络端口扩展方法,其硬件实现主要包括以下步骤:

步骤(1),构建包括多路以太网物理层、网络扩展模块等硬件电路,所述网络扩展模块包括主端口接收逻辑、主端口发送逻辑、多路发送逻辑、单网口的接收逻辑、多路接收DMA等组成;

步骤(2),由所述主端口接收逻辑将来自主机MAC的网络报文进行延迟缓冲同时解析报文中源MAC地址,并选择本地MAC地址和报文源MAC地址一致的扩展网络端口作为该数据报文的目标发送端口;

步骤(3),由所述多路发送逻辑将延迟缓冲后的数据报文并行施加在各扩展网络端口,并根据步骤2选择结果置位相应扩展网络端口的发送使能信号TX_EN,实现报文从选中的端口发送;

步骤(4),由各扩展网络端口的接收逻辑接收并缓冲本端口的数据报文同时标记端口序号,然后请求多路接收DMA服务;

步骤(5),多路接收DMA按轮转调度策略依次查询各接收端口,并将各端口接收到的报文及其源端口序号一并传送给主端口发送逻辑;

步骤(6),主端口发送逻辑将接收DMA的数据转换成以太网链路层的数据格式,同时将报文的源端口序号插入在报文的最后一个字节(即帧校验码前一字节)随后发送该报文到主机;

实施例中扩展模块对主机端口报文延迟缓冲和源MAC地址解析同步进行,源MAC地址解析完成后选择本地MAC地址和报文源MAC地址一致的第一个扩展网络端口作为该数据报文的目标发送端口;

发送报文被延迟8个网络时钟,延迟后的数据并行施加到各扩展以太网物理层的发送端,而多路发送逻辑根据源MAC地址选择的结果,将满足条件的物理层发送使能信号TX_EN置有效,以此实现数据选择性发送;

主机端口MAC控制器应该配置成混杂模式,即不执行MAC层的地址过滤,而MAC层的目标MAC地址过滤功能由各扩展端口负责,目标MAC地址不满足接收条件的报文会被各端口直接丢弃。

各扩展端口的接收逻辑模块会将报文先行缓冲并计算帧校验,接收逻辑对满足接收条件的报文创建一个接收描述符,该描述符用来指示接收报文所在缓冲区地址、报文长度及报文端口序号等信息,随后将产生DMA请求,请求多路接收DMA执行数据服务。

所述的多路接收DMA基于轮转调度策略(Round-Robin Schedule),轮询各扩展端口的接收逻辑模块的DMA请求信号,轮询过程中若对应的网口没有新的数据,DMA将继续查询下一端口,对有数据请求端口,DMA先从该端口读取数据描述符,并用该描述符配置DMA的数据传输,传输结束后继续查询下一端口。

所述的多路接收DMA在执行数据请求服务时先检查主端口发送逻辑的发送数据队列剩余空间以便执行输入流量控制,当剩余空间足够时才从扩展端口的接收逻辑中复制数据分组到主端口发送逻辑,然后更新主发送逻辑模块的发送描述符队列,而主端口发送逻辑模块的发送描述符同样包括数据分组的缓冲区地址、分组长度及数据源端口等信息。

所述主端口发送逻辑模块执行接收分组到主机端口的转发,即执行缓冲区数据到MII接口的码流变换,同时完成在数据报文的帧校验前一字节插入源扩展端口序号和帧校验计算功能。

使用支持单时钟模式的物理层(PHY)接口器件,多路发送逻辑模块的数据输出端可直接连接到物理层(PHY)接口器件。

扩展的各个物理端口之间不存在数据通路,完全独立,当扩展网络端口分别位于不同的物理网络时,位于一个网络的端口不会对位于其他网络的端口构成任何影响,满足不同网络间完全隔离的安全要求。

2.网络驱动软件

本发明主机侧网络驱动程序需要构建多个逻辑网络设备,其数量和扩展网络端口一致,各逻辑网络设备的本地MAC地址和扩展网口的MAC地址一致,逻辑网口和扩展网口端到端连接示意如图4所示。驱动程序按下述方法进行修改:

步骤(1),主机侧软件按扩展的物理端口数量创建同等数量的逻辑网络设备,二者编号顺序一致,同时建立查找表,以便通过物理端口序号能够找到对应的逻辑设备,最后将位于主机侧的MAC控制器配置成混杂模式(promiscuous mode,即接收所有的网络分组),重设MAC的最大接收帧长,使其比原有方式增加一个字节,以容纳报文中扩展端口序号;

步骤(2),配置逻辑网络设备的本地Mac(Local Mac)地址,使之与对应的扩展网络端口MAC地址一致;

步骤(3),配置逻辑网络设备的发送服务程序接口,使之绑定到用来扩展端口的对应MCU的网络端口(参照图4),以便逻辑设备在接收到来自协议栈高层的网络分组时能够将这些分组映射到MCU的指定网络端口;

步骤(4),修改MCU侧扩展网络端口所对应的MAC控制器的接收驱动程序,使该程序能够从帧校验码前一个字节中提取数据源端口序号,该序号由网络扩展模块标记并与扩展网络端口一一对应;

步骤(5),对应MCU侧接收驱动程序,根据步骤4获得的序号和步骤1创建的查找表,确定接收数据分组所对应的逻辑设备,并提交报文分组到该逻辑设备;

所述基于以太网控制器的网络端口扩展方法的发送报文分组的目标物理端口选择由扩展模块硬件完成,协议栈输出报文与常规报文一致;而来自物理端口的接收分组则由扩展模块进行源端口标记,由软件完成目标逻辑设备选择,最终完成逻辑设备和对应扩展网络端口的绑定,整个实现对协议栈高层透明。

实施例二

1. 硬件电路

如图2所示,基于以太网控制器的网络端口扩展方法,实现案例二采用通用网络物理层,采用双时钟模式,其硬件实现主要包括以下步骤:

步骤(1),构建包括多路以太网物理层、网络扩展模块等硬件电路,所述网络扩展模块包括主端口接收逻辑、主端口发送逻辑、多路发送逻辑、双时钟FIFO、单网口的接收逻辑、多路接收DMA等组成;

步骤(2),由所述主端口接收逻辑将来自主机MAC控制器的网络报文进行延迟缓冲同时解析报文中源MAC地址,并选择本地MAC地址和报文源MAC地址一致的扩展网络端口作为该数据报文的目标发送端口;

步骤(3),由所述多路发送逻辑将延迟缓冲后的数据报文并行施加在各扩展网络端口的双时钟FIFO的数据输入端口,并根据步骤2选择结果置位相应的发送使能信号TX_EN,允许待发送报文进入双时钟FIFO,经延时后数据报文在FIFO的输出时钟的控制下施加到对应的网络物理层实现报文发送;

步骤(4),由各扩展网络端口的接收逻辑接收并缓冲本端口的数据报文同时标记端口序号,然后请求多路接收DMA服务;

步骤(5),多路接收DMA按轮转调度策略依次查询各接收端口,并将各端口接收到的报文及其源端口序号一并传送给主端口发送逻辑;

步骤(6),主端口发送逻辑将接收DMA的数据转换成以太网物理层的数据格式,同时将报文的源端口序号插入在报文的最后一个字节(即帧校验码前一字节)随后发送该报文到主机;

实施例中扩展模块对主机端口报文延迟缓冲和源MAC地址解析同步进行,源MAC地址解析完成后选择本地MAC地址和报文源MAC地址一致的第一个扩展网络端口作为该数据报文的目标发送端口;

发送报文被延迟8个网络时钟,延迟后的数据并行施加到各扩展以太网物理层的发送端,而多路发送逻辑根据源MAC地址选择的结果,将满足条件的物理层发送使能信号TX_EN置有效,以此实现数据选择性发送;

主机端口MAC控制器应该配置成混杂模式,即不执行MAC层的地址过滤,而MAC层的目标MAC地址过滤功能由各扩展端口负责,目标MAC地址不满足接收条件的报文会被各端口直接丢弃。

各扩展端口的接收逻辑模块会将报文先行缓冲并计算帧校验,接收逻辑对满足接收条件的报文创建一个接收描述符,该描述符用来指示接收报文所在缓冲区地址、报文长度及报文端口序号等信息,随后将产生DMA请求,请求多路接收DMA执行数据服务。

所述的多路接收DMA基于轮转调度策略(Round-Robin Schedule),轮询各扩展端口的接收逻辑模块的DMA请求信号,轮询过程中若对应的网口没有新的数据,DMA将继续查询下一端口,对有数据请求端口,DMA先从该端口读取数据描述符,并用该描述符配置DMA的数据传输,传输结束后继续查询下一端口。

所述的多路接收DMA在执行数据请求服务时先检查主端口发送逻辑的发送数据队列剩余空间以便执行输入流量控制,当剩余空间足够时才从扩展端口的接收逻辑中复制数据分组到主端口发送逻辑,然后更新主发送逻辑模块的发送描述符队列,而主端口发送逻辑模块的发送描述符同样包括数据分组的缓冲区地址、分组长度及数据源端口等信息。

所述主端口发送逻辑模块执行接收分组到主机端口的转发,即执行缓冲区数据到MII接口的码流变换,同时完成在数据报文的帧校验前一字节插入源扩展端口序号和帧校验计算功能。

所述双时钟FIFO连接在多路发送逻辑和PHY之间,多路发送逻辑的输出即为FIFO的输入,其中FIFO和PHY的局部连接如图3所示,写时钟采用RXCLK,而写数据分别为RXD和RXER,双时钟FIFO的读时钟采用TXCLK, 双时钟FIFO的数据输出接对应侧PHY的数据输入,使用FIFO的空信号(fifo_empty)反相之后来控制双时钟FIFO的读请求和PHY的发送使能TXEN,这样则FIFO中包含数据可以控制PHY编码发送。

2. 网络驱动软件

同实施例一中的“网络驱动软件”实现方法。

实施例一和实施例二的主要区别在于,前者采用支持单时钟模式的网络物理层,发送逻辑的数据可以直接连接到物理层,而后者使用双时钟的通用网络物理层,端口发送逻辑和网络物理层之间需要添加双时钟FIFO来实现发送数据的跨时钟域转换;

实施例二的其他功能特征等同于硬件实现案例一,其扩展的各个物理端口之间不存在数据通路,完全独立,当扩展网络端口分别位于不同的物理网络时,位于一个网络的端口不会对位于其他网络的端口构成任何影响,满足不同网络间完全隔离的安全要求。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1