发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种以太网数据帧输出方法及***,确保得到准确的以太网数据帧。
本发明提供一种以太网数据帧输出方法,其包括:
处理器接收调试主机下发的输出指令并转发给FPGA;或者,处理器和FPGA分别保存预设指令;
FPGA响应所述输出指令或者所述预设指令,从帧头开始捕获并缓存FPGA处理的至少一个以太网数据帧;
处理器下发上报信号;
FPGA响应所述上报信号,将存有每个以太网数据帧的存储区域中的缓存数据上报CPU总线后,再存入下一个捕获的以太网数据帧;
处理器将上报的所述缓存数据发送给所述调试主机。
在上述技术方案的基础上,所述从帧头开始捕获并缓存FPGA 处理的至少一个以太网数据帧包括:
根据复位控制信号、所述上报信号、帧数据接口的帧接口信号以及所述存储区域中当前读或写地址,建立状态机并生成读或写控制有效信号,状态机包括复位状态和捕获上报状态;
在所述捕获上报状态下,生成所述写控制有效信号时,开始捕获并缓存所述以太网数据帧;生成所述读控制有效信号时,开始上报所述缓存数据。
在上述技术方案的基础上,所述捕获上报状态包括依序转换的待捕获、捕获中、待上报和上报中状态,其中,在捕获中状态下生成所述写控制有效信号;在待上报和上报中状态下生成所述读控制有效信号。
在上述技术方案的基础上,所述方法还包括:
在所述复位状态下,响应所述上报信号,生成并上报复位码型;
未生成所述读控制有效信号时,响应所述上报信号,生成并上报不完整读、未采样到帧、未采样到全帧或者未采样到全部帧码型。
在上述技术方案的基础上,所述开始捕获并缓存所述以太网数据帧包括:
根据所述帧接口信号生成帧数据无效、帧尾错位或者无效帧尾码型,并存入所述存储区域。
在上述技术方案的基础上,所述开始捕获并缓存所述以太网数据帧包括:
当所述帧数据接口的数据位宽小于所述CPU总线的数据位宽时,对所述帧数据接口输出数据进行串并转换后写入所述存储区域;
所述开始上报所述缓存数据包括:
当所述帧数据接口的数据位宽大于所述CPU总线的数据位宽时,从所述存储区域中读取所述缓存数据并经过并串转换后上报。
在上述技术方案的基础上,所述开始捕获并缓存所述以太网数据帧包括:
将所述帧数据接口输出的小端序的数据按字节转换为大端序的数据并缓存;
所述开始上报所述缓存数据还包括:
当所述帧数据接口的数据位宽大于所述CPU总线的数据位宽时,从所述存储区域中读取所述缓存数据并经过逆序转换后上报。
本发明还提供一种以太网数据帧输出***,设于网络设备中,网络设备包括处理器和FPGA,所述***包括设于所述处理器中的处理模块以及设于FPGA中的采集模块;
所述处理模块用于接收调试主机下发的输出指令或者保存预设指令;向所述采集模块下发所述输出指令和上报信号;还用于将所述采集模块上报的缓存数据发送给所述调试主机;
所述采集模块用于响应所述输出指令或者保存所述预设指令,从帧头开始捕获并缓存FPGA处理的至少一个以太网数据帧;还用于响应所述上报信号,将存有每个以太网数据帧的存储区域中的缓存数据上报CPU总线后,再存入下一个捕获的以太网数据帧。
在上述技术方案的基础上,所述采集模块包括控制单元、存储单元和至少一个执行单元,每个所述执行单元包括捕获上报单元;
所述控制单元用于接收所述输出指令或者保存所述预设指令,为每个所述执行单元分配所述存储单元中的一个存储区域;还用于通知所述执行单元响应所述输出指令和上报信号或者执行所述预设指令;
所述执行单元用于根据所述复位控制信号、所述上报信号、帧数据接口的帧接口信号和所述存储区域中当前读或写地址,建立状态机并生成读或写控制有效信号,状态机包括复位状态和捕获上报状态;
所述捕获上报单元用于在所述捕获上报状态下,生成所述写控制有效信号时,开始捕获并缓存所述以太网数据帧;生成所述读控制有效信号时,开始上报所述缓存数据。
在上述技术方案的基础上,所述捕获上报状态包括依序转换的待捕获、捕获中、待上报和上报中状态,其中,在捕获中状态下生成所述写控制有效信号;在待上报和上报中状态下生成所述读控制有效信号。
在上述技术方案的基础上,当所述采集模块包括一个所述执行单元时,所述控制单元还用于产生所述存储区域中当前读或写地址,并发给所述状态机;
当所述采集模块包括两个以上所述执行单元时,每个所述执行单元均还包括地址映射单元;所述控制单元还用于通知所述地址映射单元所述存储区域;所述地址映射单元用于产生所述存储区域中当前读或写地址,并发给所述控制单元和所述状态机。
在上述技术方案的基础上,所述捕获上报单元还用于当所述写控制信号为有效时,根据所述帧接口信号生成帧数据无效、帧尾错位或者无效帧尾码型,并存入所述存储区域。
在上述技术方案的基础上,所述捕获上报单元还用于在所述复位状态下,响应所述上报信号,生成并上报复位码型;未生成所述读控制有效信号时,响应所述上报信号,生成并上报不完整读、未采样到帧、未采样到全帧或未采样到全部帧码型。
在上述技术方案的基础上,每个所述执行单元均还包括转换单元;
所述转换单元用于当所述帧数据接口的数据位宽小于所述CPU 总线的数据位宽时,对所述帧数据接口输出数据进行串并转换后发给所述捕获上报单元;还用于将所述帧数据接口输出的小端序的数据按字节转换为大端序的数据;
所述采集模块还用于当所述帧数据接口的数据位宽大于所述 CPU总线的数据位宽时,从所述存储区域中读取所述缓存数据并经过并串转换和逆序转换后上报。
与现有技术相比,本发明实施例通过处理器接收调试主机下发的输出指令并转发给FPGA;或者,处理器和FPGA分别保存预设指令; FPGA响应输出指令或者预设指令,从帧头开始捕获并缓存FPGA处理的至少一个以太网数据帧;处理器下发上报信号;FPGA响应上报信号,将存有每个以太网数据帧的存储区域中的缓存数据上报CPU 总线后,再存入下一个捕获的以太网数据帧;处理器将上报的缓存数据发送给调试主机,确保得到准确的以太网数据帧。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述。
本发明实施例提供一种以太网数据帧输出方法,用于将网络设备中FPGA处理的至少一个以太网数据帧上报给调试主机,其中,网络设备还包括处理器,处理器包括CPU,FPGA处理的以太网数据帧可以是测试帧,也可以是网络设备实际传输业务的以太网数据帧。
参见图1所示,以太网数据帧输出方法包括:
S1处理器接收调试主机下发的输出指令并转发给FPGA;或者,处理器和FPGA分别保存预设指令。
S2FPGA响应输出指令或者预设指令,从帧头开始捕获并缓存FPGA处理的至少一个以太网数据帧。
S3处理器下发上报信号。
S4FPGA响应上报信号,将存有每个以太网数据帧的存储区域中的缓存数据上报CPU总线后,再存入下一个捕获的以太网数据帧。
S5处理器将上报的缓存数据发送给调试主机。
网络设备的处理器执行步骤S1、S3和S5。
在步骤S1中,输出指令可以包括需要上报的以太网数据帧的信息,例如待上报的以太网数据帧的总数量,可以是1个或多个以太网数据帧。
输出指令也可以仅仅是通知处理器和FPGA上报预定数量的以太网数据帧,该预定数量可以包括在FPGA中预先保存的预设指令中,预设指令请参见其他实施例的说明。FPGA预先保存以太网数据帧的预定数量,无需调试主机和处理器下发该预定数量,这样更加简化命令。
在步骤S1中,处理器仅向FPGA下发一次输出指令,以指示 FPGA上报指定数量的以太网数据帧,而不需要对每个以太网数据帧分别下发输出指令以控制捕获时间,从而减少处理器下发命令的数量,简化上报过程中的命令处理,有利于提高上报效率。
在步骤S3中,处理器向FPGA下发上报信号,以通知FPGA将缓存数据上报到CPU总线。
具体的,处理器可以根据待上报的以太网数据帧的总数量以及 FPGA已经上报的以太网数据帧的数量,来确定发送上报信号的次数。上报信号在输出指令之后发出,输出指令与上报信号之间以及相邻的两个上报信号之间可以具有预定的时间间隔。
在步骤S5中,处理器可以通过安全外壳协议(Secure Shell,SSH)、远程登录(Telecommunications Network,Telnet)协议、以太网接口或者串口将缓存数据发送给调试主机,不作限定。
步骤S3到S5的执行过程可以是以下的一种实施方式,或者其他方式,不作限定:
从步骤S3到S4执行一次,FPGA上报完成指定数量的以太网数据帧,则处理器执行步骤S5,结束。
从步骤S3到S4执行二次或者二次以上,FPGA上报完成指定数量的以太网数据帧,处理器执行步骤S5,结束。
从步骤S3到S5执行二次或者二次以上,当处理器完成输出指定数量的以太网数据帧后,结束。
本发明实施例通过处理器接收调试主机下发的输出指令并转发给FPGA;或者,处理器和FPGA分别保存预设指令;FPGA响应输出指令或者预设指令,从帧头开始捕获并缓存FPGA处理的至少一个以太网数据帧;处理器下发上报信号;FPGA响应上报信号,将存有每个以太网数据帧的存储区域中的缓存数据上报CPU总线后,再存入下一个捕获的以太网数据帧;处理器将上报的缓存数据发送给调试主机,确保得到准确的以太网数据帧。
参见图2所示,在一个实施例中,以太网数据帧输出方法包括:
S100处理器接收调试主机下发的输出指令。
S110处理器将调试主机下发的输出指令转发给FPGA。
S120FPGA接收输出指令。
S130对FPGA处理的以太网数据帧进行分批处理或者并行处理。
每批处理均从帧头开始捕获并缓存至少一个以太网数据帧。并行处理从帧头开始捕获并缓存每个以太网数据帧。
S140处理器向FPGA下发上报信号。
S150FPGA响应上报信号,将缓存数据上报到CPU总线。
S160处理器将上报的缓存数据发送给调试主机。
处理器执行步骤S100、S110、S140和S160。
FPGA执行步骤S120、S130和S150,其中,每批处理均从帧头开始捕获并缓存至少一个以太网数据帧,然后响应处理器下发的上报信号,将缓存数据上报到CPU总线后,再执行下一批处理。
具体的,每批处理的以太网数据帧的数量可以是1个、2个或者 2个以上。当每批处理的以太网数据帧的数量为2个或者2个以上时,在每批处理中,可以通过并行方式同时捕获并缓存所有以太网数据帧,也可以通过逐个捕获并缓存每个以太网数据帧,不作限定。
在一些特定场景下,需要上报按照时间顺序连续的多个以太网数据帧,由于FPGA捕获和上报的时间速率不同步,通过分批处理,等待捕获并缓存完所有帧,才允许从第一帧到最后一帧的完整上报,即在最后一帧捕获完成前不允许上报第一帧,从而保证所有上报的以太网数据帧按照时间顺序连续。
对于并行处理的每个以太网数据帧,从帧头开始捕获并缓存,然后响应上报信号,上报缓存数据到CPU总线后,再处理下一个以太网数据帧。
具体的,当待上报的以太网数据帧的总数量为2个或者2个以上时,可以通过并行方式同时捕获并缓存多个以太网数据帧,与上述分批处理不同的是:在捕获完第一帧后允许第一帧的上报,即第一帧的上报可以与第二帧的捕获同时进行,相互独立进行,这种方式不能保证所有帧按照时间顺序连续,但无需等待足够多的帧,故更常用。
在步骤S150中,上报完毕后,FPGA还可以清除已上报的以太网数据帧,以存储之后捕获的以太网数据帧。
具体的,步骤S130到S150全部执行完后,处理器最后执行步骤 S160。或者,步骤S130到S150与步骤S160同步进行,不作限定。
具体的,CPU总线一般包括时钟、片选、地址、写数据、读数据以及读/写使能等控制信号线。每次读写命令一般持续若干拍。处理器中的CPU驱动控制信号线向FPGA写入命令或者从FPGA读取数据。CPU通过驱动时钟、片选、地址、写数据和写使能,向FPGA 写入输出指令;CPU驱动时钟、片选、地址和读使能以下发上报信号,FPGA控制读数据以读取缓存数据并上报到CPU总线。
本发明实施例处理器和FPGA接收并响应调试主机下发的输出指令,对以太网数据帧进行分批处理或者并行处理;其中,在每批处理中,FPGA从帧头开始捕获并缓存至少一个以太网数据帧,然后响应处理器下发的上报信号,将缓存数据上报到CPU总线后,再执行下一批处理;对于并行处理的每个以太网数据帧,FPGA从帧头开始捕获并缓存,然后响应上报信号,上报缓存数据到CPU总线后,再处理下一个以太网数据帧;处理器将上报的缓存数据发送给调试主机,从而避免以太网数据帧的捕获和上报时间不同步的问题,简化上报过程中的命令处理,有利于提高上报效率,确保得到准确的以太网数据帧。
在其他实施方式中,步骤S110中的输出指令也可以包括循环输出信息以及每次循环中待输出的以太网数据帧的总数量,循环输出信息包括循环次数或者循环结束条件。在执行步骤S160之后,以太网数据帧输出方法还包括:
S170判断是否完成循环次数或者达到循环结束条件,若是,结束;若否,返回步骤S130。
本发明实施例可以在设计调测阶段对FPGA的以太网数据帧处理功能进行测试验证,也可以内置在FPGA正式版本内,可以在线调试,无需断电,能在工程上不破坏现场测量FPGA内帧接口信号,可用于工程上进行故障定位。
在本发明的另一个实施例中,参见图3所示,以太网数据帧输出方法包括:
S200处理器保存第一预设指令。
S210FPGA保存第二预设指令。
具体的,第一预设指令和第二预设指令均包括一次输出的以太网数据帧的预定数量,第一预设指令和第二预设指令可以相同,也可以不同。
具体的,第一预设指令和第二预设指令均是在代码中预先定义后烧录到硬件中。
处理器根据第一预设指令,在FPGA启动或者复位后,在延时一段时间后,向FPGA下发上报信号,通知FPGA上报预定数量的以太网数据帧。FPGA直接根据第二预设指令,无需处理器下发输出指令,在FPGA启动或者复位后上报预定数量的以太网数据帧。
S220FPGA接收启动信号或者复位恢复信号。
在FPGA启动或者复位后,接收启动信号或者复位恢复信号,复位恢复信号可以是CPU下发的,也可以是由网络设备上硬件触发的。
S230FPGA对以太网数据帧进行分批处理或者并行处理。
每批处理均从帧头开始捕获并缓存至少一个以太网数据帧。并行处理从帧头开始捕获并缓存每个以太网数据帧。
S240处理器向FPGA下发上报信号。
S250FPGA响应上报信号,将缓存数据上报到CPU总线。
S260处理器将上报的缓存数据发送给调试主机。
步骤S230到S260与步骤S130到S160基本相同,此处不再赘述。在下文中对步骤S130到S160的具体说明也适用于步骤S230到 S260。
在其他实施方式中,步骤S200和S210中的第一预设指令和第二预设指令还可以包括循环输出信息以及每次循环中待输出的以太网数据帧的总数量,循环输出信息包括循环次数或者循环结束条件。在执行步骤S260之后,以太网数据帧输出方法还包括:
S270判断是否完成循环次数或者达到循环结束条件,若是,结束;若否,返回步骤S230。
在其他实施方式中,也可以不执行步骤S220。
本发明实施例可以在设计调测阶段对FPGA的以太网数据帧处理功能进行验证,也可以内置在FPGA正式版本内,可以在线调试,无需断电,能在工程上不破坏现场测量FPGA内帧接口信号,可用于工程上进行故障定位。
在一种可选的实施方式中,上述步骤S130还可以包括:
S131为每个以太网数据帧分配一个存储区域。
具体的,在分批处理或者并行处理需要捕获多个帧的情况下,可以按照帧接口输出帧的时间先后顺序分配存储区域。
对帧接口输出的帧进行标记,第一个到的帧记为1,第二个到的记为2,第N个帧记为N,第N+1个帧又记为1,第N+2个帧记为2,如此循环。
将所有地址空间均分为N个存储区域,为标记为1的帧分配第1 个存储区域,标记为N的帧分配第N个存储区域。
这样标记为1的帧在N个帧周期中是最靠前的,所分配的地址空间也是最靠前的第1个。标记为N的帧在N个帧周期中是最靠后的,所分配的地址空间也是最靠后的第N个。
通过分配一个存储区域,捕获特定长度的以太网数据帧,若捕获的以太网数据帧帧长度不及该长度则补全,超出截断。
S132根据复位控制信号、帧数据接口的帧接口信号和当前读或写的存储区域的地址,建立状态机并生成读或写控制有效信号,其中,状态机包括复位状态和捕获上报状态。
具体的,帧数据接口用于输出FPGA处理的以太网数据帧,即以太网数据帧在FPGA内部的接口。帧接口信号通常包括:帧头信号、帧尾信号、帧数据有效信号、帧数据信号以及帧尾字节掩码信号,其中,当帧数据接口的速率升级,通常数据位宽增大,帧数据接口时钟频率升高。
参见图4A所示,状态机包括复位状态和捕获上报状态。FPGA 进行复位时,复位控制信号有效。复位控制信号具有最高优先级,只要复位控制信号有效,就进入到复位状态;接收到复位恢复信号时,复位控制信号无效,才能进入捕获上报状态。
具体的,对于每个以太网数据帧可以建立对应的状态机。
S133在捕获上报状态下,生成写控制有效信号时,开始捕获并缓存以太网数据帧。
进一步的,上述步骤S150还可以包括:
S151在捕获上报状态下,生成读控制有效信号时,开始上报缓存数据。
具体的,在捕获上报状态下,首先生成写控制有效信号,捕获帧头信号有效,捕获并缓存以太网数据帧,从存储区域的头地址开始依次写入,直到存储区域的当前写地址达到存储区域的末地址。然后根据收到的上报信号,生成读控制有效信号,从存储区域的头地址开始依序读取缓存数据,直到当前读地址达到存储区域的末地址。
本发明实施例通过上述状态机以及读或写控制有效信号,实现防呆设计,即在生成读控制有效信号时,进行上报,保证读取到完整的、前后一致的以太网数据帧,对无效的读操作和数据更新则自动屏蔽。
进一步的,捕获上报状态中包括依序转换的4个状态:从待捕获状态开始,到捕获中状态、待上报状态、最后到上报中状态结束后,又进入待捕获状态,不断循环。在捕获中状态下生成写控制有效信号;在待上报和上报中状态下生成读控制有效信号。
参见图4B所示,状态机包括复位状态以及依序转换的待捕获、捕获中、待上报和上报中状态。
A.只要复位控制信号rst有效,则rst==1’b1,就进入复位状态 (state=reset)。若状态发生变迁(state_trs)的条件:rst取消,rst==1’ b0有效,转换为待捕获状态(state=precap)。
B.在待捕获状态(state=precap),若状态发生变迁(state_trs)条件:捕获帧头信号(|fs_i[div_par-1:0])有效,转为捕获中状态 (state=caping)。
C.在捕获中状态(state=caping),若状态发生变迁(state_trs)条件,当前写的存储区域的地址(adr_w)已经填充到存储区域的末地址(ending_adr)生效,即adr_w==ending_adr,转为待上报状态(state= prerd)。
D.在待上报状态(state=prerd),状态发生变迁(state_trs)的条件:存储区域的头地址(sop_adr)的读出动作,即:
(re_bmu&(adr_bmu[single_adrwidth-1:0]==sop_adr))生效,状态转为上报中(state=rding)。
E.在上报中状态(state=rding),状态发生变迁(state_trs)的条件:存储区域的末地址的读出动作,即:
(re_bmu&(adr_bmu[single_adrwidth-1:0]==ending_adr))生效,状态转为待捕获(state=precap)。
其中,re_bmu为上报读有效,adr_bmu为上报读地址, single_adrwidth为每个以太网数据帧上报占用地址位宽。
在一种可选的实施方式中,上述步骤S133可以包括:
S1331当帧数据接口的数据位宽小于CPU总线的数据位宽时,对帧数据接口输出数据进行串并转换后写入存储区域。
上述步骤S151还可以包括:
S1511当帧数据接口的数据位宽大于CPU总线的数据位宽时,从存储区域中读取缓存数据并经过并串转换后上报。
帧接口的数据位宽小于CPU总线的数据位宽时,可以在存储时进行串并转换。将连续几拍的帧数据拼凑成一个CPU总线的数据位宽的数据。这样通过CPU总线上报时,每个地址上报的数据中不会有无效数据,上报数据的每个字节对应着帧数据的每个字节。
帧接口的数据位宽大于CPU总线的数据位宽时,可以在上报时进行并串转换。将存储区域中每个地址的帧数据,分次上报到CPU 总线中,保证帧数据的每个字节都上报了。
本发明实施例在CPU总线的数据位宽和帧接口的数据位宽不相等的情况下,对帧数据接口输出的数据进行串并转换,或者在上报时进行并串转换,实现阅读直观,并得到准确的数据。
在一种可选的实施方式中,上述步骤S133还可以包括:
S1332将帧数据接口输出的小端序的数据按字节转换为大端序的数据,并写入存储区域。
上述步骤S151还可以包括:
S1512当帧数据接口的数据位宽大于CPU总线的数据位宽时,从存储区域中读取缓存数据并经过逆序转换后上报。
在S1332的实现方式中,可以提供一个预设字节序(byteorder) 参数值,当其为1和0时,分别表示大端序和小端序,若输入的以太网数据帧是小端序,就转换成大端序,否则无需转换,实现按照自然阅读顺序呈现帧数据。
FPGA通过CPU总线上报时,在CPU总线的数据位宽和帧接口的数据位宽不相等的情况下,如果将帧内容原样存储、原样上报,导致阅读不直观或者得到的数据不准确。
本发明实施例在帧数据接口输出小端序的数据的情况下,按字节转换为大端序的数据并写入存储区域,并且当帧数据接口的数据位宽大于CPU总线的数据位宽时,从存储区域中读取缓存数据并经过逆序转换后上报,得到阅读直观且准确的数据。
在一种可选的实施方式中,上述步骤S133还可以包括:
S1333根据帧接口信号生成帧数据无效、帧尾错位或者无效帧尾码型,并存入存储区域。
帧接口信号通常包括:帧头信号、帧尾信号、帧数据有效信号、帧数据信号以及帧尾字节掩码信号。帧数据有效信号标识着一帧的开始到结束。
在捕获中状态(state=caping),捕获从帧头信号有效开始,帧头存入存储区域的头地址,缓存数据依次存入存储区域,直到填充完分配的存储区域,捕获结束。
在捕获中状态,若帧数据有效信号变为无效,则生成帧数据无效码型,写入存储区域的当前写地址;若帧尾信号有效而帧数据有效信号无效,则生成无效帧尾码型,写入存储区域的当前写地址;若帧尾信号比帧数据有效信号晚一拍,则生成帧尾错位码型,写入存储区域的当前写地址。
如果一帧捕获完毕,当前写地址还没有达到存储区域的末地址,则继续写入帧数据无效码型,直到存储区域的末地址。
上述步骤S151还可以包括:
S1513在复位状态下,响应上报信号,生成并上报复位码型;未生成读控制有效信号时,响应上报信号,生成并上报不完整读、未采样到帧、未采样到全帧或者未采样到全部帧码型。
具体的,在复位状态(state=reset),若收到上报信号,FPGA判断上报信号是否从存储区域中帧头所在的地址开始读,若是,则输出复位码型;否则,判定为上报缓存数据发生错误,输出不完整读码型。
在待捕获状态(state=precap)和捕获中状态(state=caping),若收到上报信号,FPGA判断上报信号是否从存储区域中帧头所在的地址开始读,若是,则分别输出未采样到帧和未采样到全帧码型;否则,判定为上报缓存数据发生错误,输出不完整读码型。
在待上报状态(state=prerd)中,若收到上报信号,FPGA判断上报信号是否从存储区域中帧头所在的地址开始读以及若在分批模式下从第一个执行单元帧头所在地址开始读,若否,则判定为上报缓存数据发生错误,输出不完整读码型;若是,还需判断是否在并行模式下或者在分批模式下且所有执行单元都完成了捕获,若是,则输出采样到的帧数据,若否,则输出未采样到全部帧码型。
在上报中状态(state=rding)中,若收到上报信号,FPGA判断是否在并行模式下或者分批模式下且从第一个执行单元的帧头地址开始读的,若否,则输出不完整读码型,若是,则再检查是否在并行模式下或者在分批模式下且完成了所有执行单元的帧捕获,若否,则输出未捕获全部帧码型,若是,则输出存储器的读数据。
在分批处理时,需要等待捕获并缓存完该批次所有帧,才允许从第一帧到最后一帧的完整上报,对于捕获并缓存完的以太网数据帧,这些以太网数据帧的状态机处于上报中状态,则生成未采样到全部帧码型。对于该批次处于捕获中状态的以太网数据帧,则生成未采样到全帧码型。对于待捕获状态的以太网数据帧,生成未采样到帧码型。
在并行处理时,对于捕获并缓存完的以太网数据帧,这些以太网数据帧的状态机处于上报中状态,则上报缓存数据;对于尚未捕获并缓存完的以太网数据帧,这些以太网数据帧的状态机不处于上报中状态,则根据上述说明输出相应的码型。
每种码型的值不做限定,可能的实现方式包括:
1)使用参数预设值,每个上报地址都读出同一个固定值。比如以32位上报总线为例,prerd=32’h edededed,caping=32’h cacacaca, 或者prerd=“prer”(ASCII码,每个占用1字节),caping=“cing”。
2)使用预设值,但每个上报地址都读出不同值。可用于使用 ASCII码型表达长句子。例如复位状态时,复位码型根据读地址不断重复“system is reseting..”(20个ASCII码,若32位上报总线,共占用5个地址)。
3)使用配置端口,每种码型的值可由调试主机下配置命令更改、定义。包括每个上报地址都读出同一个值和读出不同值两种情况。
所***型的值不一定都采用同样的实现方式,比如帧数据无效码型通常都会是第一种,因为要表达以字节为单位的帧尾无效字节掩码。
现有技术中,当没有输出以太网数据帧的数据时,有时是因为 FPGA在复位状态,有时是因为一直没有收到新的以太网数据帧,有时是上报操作和捕获操作的动作冲突导致,有时是错误的读操作,比如从帧的中间开始读出等等。若这些不同的异常及状态不经区分,都用全0(存储器初值,无需处理)这一种读出数值,技术人员无法区分,难以对FPGA的帧处理进行准确诊断。而若通过各种异常状态和异常计数提供该信息,但意味着得读更多地址,对诊断工具进行诊断,大大降低了易用性,限制了应用范围。
本发明实施例通过输出上述码型,表示复位状态、未采样到帧、未采样到全帧、未采样到全部帧、错误读操作状态,以及表示帧起始、数据有效和帧尾信号之间的时序关系。只需要进行一次操作,读同一段地址,即可获知帧内容、帧接口时序、捕获上报的运行状态、以及帧接口的异常状态,上报信息更加丰富,进一步提高诊断的准确性和可靠性。
本发明实施例还提供一种以太网数据帧的上报***,用于实现上述实施例以太网数据帧输出方法,将网络设备中FPGA处理的至少一个以太网数据帧上报给调试主机,以太网数据帧的上报***包括设于处理器中的处理模块以及设于FPGA中的采集模块。
具体的,处理器包括CPU,处理模块可以设于CPU中,或者,处理器包括CPU和处理模块。
图5所示是本发明实施例以太网数据帧的上报***的应用示意图,其中,FPGA中设有至少一个帧处理单元,帧处理单元可以通过多选器输出处理后的以太网数据帧,多选器与采集模块之间通过帧数据接口相连,或者,多选器可选接入帧过滤器,帧过滤器用于过滤以太网数据帧。
处理模块用于接收调试主机下发的输出指令或者保存预设指令;向采集模块下发输出指令和上报信号;还用于将采集模块上报的缓存数据发送给调试主机。
采集模块用于响应输出指令或者保存预设指令,从帧头开始捕获并缓存FPGA处理的至少一个以太网数据帧;还用于响应上报信号,将存有每个以太网数据帧的存储区域中的缓存数据上报CPU总线后,再存入下一个捕获的以太网数据帧。
具体的,采集模块用于对FPGA处理的以太网数据帧进行分批处理或者并行处理,其中,在每批处理中,采集模块均从帧头开始捕获并缓存至少一个以太网数据帧,然后响应上报信号,将缓存数据上报到CPU总线后,再执行下一批处理;对于并行处理的每个以太网数据帧,采集模块从帧头开始捕获并缓存,然后响应上报信号上报缓存数据到CPU总线后,再处理下一个以太网数据帧。
参见图6所示,在一种可选的实施方式中,采集模块包括控制单元、存储单元和一个执行单元,每个执行单元包括捕获上报单元。
控制单元用于接收输出指令或者保存预设指令,为每个执行单元分配存储单元中的一个存储区域,以及产生存储区域中当前读或写地址,并发给状态机;还用于通知执行单元响应输出指令和上报信号或者执行预设指令。
执行单元用于根据复位控制信号、上报信号、帧数据接口的帧接口信号和存储区域中当前读或写地址,建立状态机并生成读或写控制有效信号,状态机包括复位状态和捕获上报状态。
捕获上报单元用于在捕获上报状态下,生成写控制有效信号时,开始捕获并缓存以太网数据帧;生成读控制有效信号时,开始上报缓存数据。
进一步的,捕获上报状态包括依序转换的待捕获、捕获中、待上报和上报中状态,其中,在捕获中状态下生成写控制有效信号;在待上报和上报中状态下生成读控制有效信号。
进一步的,捕获上报单元还用于当写控制信号为有效时,根据帧接口信号生成帧数据无效、帧尾错位或者无效帧尾码型,并存入存储区域。
进一步的,捕获上报单元还用于在复位状态下,响应上报信号,生成并上报复位码型;未生成读控制有效信号时,响应上报信号,生成并上报不完整读、未采样到帧、未采样到全帧或未采样到全部帧码型。
进一步的,每个执行单元均还包括转换单元。
转换单元用于当帧数据接口的数据位宽小于CPU总线的数据位宽时,对帧数据接口输出数据进行串并转换后发给捕获上报单元;还用于将帧数据接口输出的小端序的数据按字节转换为大端序的数据。
采集模块还用于当帧数据接口的数据位宽大于CPU总线的数据位宽时,从存储区域中读取缓存数据并经过并串转换和逆序转换后上报。
参见图7所示,在一种可选的实施方式中,采集模块包括控制单元、存储单元和N个执行单元,N为正整数,N≥2。每个执行单元包括捕获上报单元和地址映射单元。
控制单元用于接收输出指令或者保存预设指令,为每个执行单元分配存储单元中的一个存储区域;还用于通知执行单元响应输出指令和上报信号或者执行预设指令。
具体的,在分批处理或者并行处理需要捕获多个帧的情况下,可以按照帧接口输出帧的时间先后顺序分配存储区域。
对帧接口输出的帧进行标记,第一个到的帧记为1,第二个到的记为2,第N个帧记为N,第N+1个帧又记为1,第N+2个帧记为2,如此循环。标记为1的帧分配第1个执行单元,标记为N的帧分配第N个执行单元。
将所有地址空间均分为N个存储区域,为第1个执行单元分配第1个存储区域,为第N个执行单元分配第N个存储区域。
这样标记为1的帧在N个帧周期中是最靠前的,所分配的地址空间也是最靠前的第1个。标记为N的帧在N个帧周期中是最靠后的,所分配的地址空间也是最靠后的第N个。
执行单元用于根据复位控制信号、上报信号、帧数据接口的帧接口信号和存储区域中当前读或写地址,建立状态机并生成读或写控制有效信号,状态机包括复位状态和捕获上报状态。
捕获上报单元用于在捕获上报状态下,生成写控制有效信号时,开始捕获并缓存以太网数据帧;生成读控制有效信号时,开始上报缓存数据。
控制单元还用于通知地址映射单元存储区域;地址映射单元用于产生存储区域中当前读或写地址,并发给控制单元和状态机。
进一步的,捕获上报状态包括依序转换的待捕获、捕获中、待上报和上报中状态,其中,在捕获中状态下生成写控制有效信号;在待上报和上报中状态下生成读控制有效信号。
进一步的,捕获上报单元还用于当写控制信号为有效时,根据帧接口信号生成帧数据无效、帧尾错位或者无效帧尾码型,并存入存储区域。
进一步的,捕获上报单元还用于在复位状态下,响应上报信号,生成并上报复位码型;未生成读控制有效信号时,响应上报信号,生成并上报不完整读、未采样到帧、未采样到全帧或未采样到全部帧码型。
进一步的,每个执行单元均还包括转换单元。
转换单元用于当帧数据接口的数据位宽小于CPU总线的数据位宽时,对帧数据接口输出数据进行串并转换后发给捕获上报单元;还用于将帧数据接口输出的小端序的数据按字节转换为大端序的数据。
采集模块还用于当帧数据接口的数据位宽大于CPU总线的数据位宽时,从存储区域中读取缓存数据并经过并串转换和逆序转换后上报。
以下以图7为例进行说明。
转换单元:用于根据帧数据字节位序类型、帧数据接口的数据位宽、FPGA上报数据位宽等参数,变换帧数据字节位序,若帧数据接口的数据位宽<FPGA上报数据位宽,进行串并变化后存储。FPGA 上报数据位宽=CPU总线的数据位宽。
捕获上报单元:用于根据状态机输出的不同状态、FPGA的复位初始态和捕获上报状态和帧数据接口的帧接口信号,产生相应的码型,输出帧数据到存储单元,并将码型和/或缓存数据上报到CPU总线。
地址映射单元:用于根据帧数据接口的数据位宽、FPGA上报数据位宽、捕获帧长位宽、捕获总地址位宽参数,分配每个帧头的地址、每个帧的地址范围、总地址范围、每个帧最大捕获长度和捕获帧数。分配每个捕获上报单元对应的帧,产生捕获的数据当前写地址,分配当前上报地址对应的捕获上报单元和对应的捕获上报单元上报地址。
状态机:用于根据帧数据接口输入的帧头、帧尾、比较当前捕获长度及每个帧最大捕获长度、比较读地址及当前帧头地址、当前帧地址范围,以及当前状态,产生复位、待捕获、捕获中、待上报和上报中状态,产生写、读控制有效信号。
存储单元:生成写控制有效信号时,根据帧头信号和帧尾信号,接收包括重排的帧数据和码型的缓存数据,依次写入地址映射单元输出的当前写地址中;否则,忽略帧接口信号。生成读控制有效信号时,通过控制单元接收地址映射单元输出的当前读地址,将存储单元相应地址中的缓存数据读出来到捕获上报单元,否则,由捕获上报单元输出码型。
控制单元:用于接收输出指令或者保存预设指令,进行参数计算,为每个执行单元分配存储单元中的一个存储区域;还用于通知执行单元响应输出指令和上报信号或者执行预设指令。
其中,控制单元根据帧数据接口的数据位宽、FPGA上报数据位宽、捕获帧长位宽、捕获总地址位宽等参数,分配每个帧头的地址、每个帧的地址范围、总地址范围和每个帧最大捕获长度。
本发明实施例无需通过FPGA的千兆媒体独立(Gigabit Media IndependentInterface,GMII)、串行千兆媒体独立(Serial Gigabit Media Independent Interface,SGMII)和小型可插拔光收发模块(SmallForm Factor Pluggable Module,XFP)等高速接口、仪表或其他专用工具、额外的硬件管脚连接,只需基础必备又简单可靠的CPU访问接即可使用。因为对复杂的接口、流通道调试无依赖,无需昂贵稀缺的仪表,不用搭建复杂的测试环境,减少了对设备的结构设计、热设计的需求,大大提高了诊断的易用性、可用性;各模块都可以并行开发推进开发进度;与其他芯片的流处理功能隔离,便于问题定位。
本发明实施例可内置在FPGA正式版本内,可以在线调试,无需断电,能在工程上不破坏现场测量FPGA内帧接口信号,可用于在工程上故障定位。
本发明实施例使用自然阅读顺序呈现数据,帧头位置确定,结果直观。不需要软件调试环境为此功能特别编写适配驱动,降低应用门槛,具有高适应性。只需要进行一次操作,读同一段地址,即可获知帧内容、帧接口时序、捕获上报的运行状态,以及帧接口的异常状态,自动读清,信息丰富而操作简单。自动适应了多种帧接口及读写接口的位宽,调用模块的设计很方便。
本发明实施例应用、使用都简单易上手,结果直观,无需技术经验都可使用,可广泛在网络设备的设计和实际工程中。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。