本发明涉及嵌入式系统高速数据传输领域,尤其是srio协议以及数据高速传输。
背景技术:
srio(serialrapidip)作为一种高速通信协议,以其高传输效率、灵活的拓补结构、高稳定性、高实时性和高可靠性等特点,在机载高速数据通信领域中占据着重要地位。
srio协议定义了6种i/o操作,包括读、写、有响应写、流写、原子和维护等,6种i/0操作的数据包格式各有不同,其中写操作使用nwrite包向指定地址写数据,流写操作使用swrite包向指定地址写数据。
nwrite包,由协议规定的nwrite包头和少于1个双字的负载组成,srio接收端可根据nwrite包头中的地址等字段,向指定地址写入负载数据。nwrite包的特点,使其在面向小数据量、操作复杂型应用场合时,更具优势。
swrite包,由协议规定的swrite包头和1到256个双字的负载组成,srio接收端可根据swrite包头中的地址字段,连续向指定地址写入负载数据。nwrite包的特点,使其在面向大数据量、高带宽的应用场合时,更具优势。
doorbell包,由协议规定的doorbell包头和2字节的doorbell信息组成,srio接收端可根据doorbell信息产生不同中断。
随着通信技术的发展,以及嵌入式系统复杂度不断提高,一个srio链路往往需要即传输实时性要求高、数据量小的短消息类数据,又要传输同步性要求高、数据量大的长消息类数据。所以本发明设计了一种基于srio的多通道数据传输控制器。基于srio的多通道数据传输控制器将待发送数据按照srio最小数据包进行分块,并设计了轮询 优先级动态调整的方法,即可以保证短消息类数据传输的实时性,又可以保证大数据量数据传输时各通道之间的同步性。该控制器使用hdl编程语言设计,形成模块化的fpga软核,方便不同产品之间移植应用。
技术实现要素:
为了克服现有技术的不足,本发明提供一种基于srio的多通道数据传输控制器及调整方法,即可以保证短消息类数据传输的实时性,又可以保证大数据量数据传输时各通道之间的同步性。
本发明解决其技术问题所采用的技术方案是:
一种基于srio的多通道数据传输控制器,包括srio复位模块、srio发送请求处理模块、srio数据包处理模块和srio链路控制模块,srio复位模块产生复位信号输入srio链路控制模块,srio发送请求处理模块处理控制器接收到的数据发送请求,并将处理后的请求数据发送到srio数据包处理模块,srio数据包处理模块将接收到待发送数据按照srio链路控制模块要求进行打包,并将打包后的数据传送至srio链路控制模块,srio链路控制模块实现srio链路物理层协议。
所述srio复位模块为srio链路控制模块的产生复位信号,系统上电后srio复位模块处理上电复位等待,并产生srio链路上电复位信号,等待31个时钟周期后,srio链路控制模块进入等待复位状态,当接收到主控的复位指令或者是检测到srio链路失锁时,srio链路控制模块进入链路复位状态,并产生复位信号,31个时钟周期后,完成复位并返回等待复位状态。
所述srio发送请求处理模块处理控制器接收到的数据发送请求,并将处理后的请求数据发送到srio数据包处理模块,系统上电后,发送请求处理模块处于传输请求等待状态,当收到多通道数据传输请求后,发送请求处理模块进入优先级判断,并选择优先级最高的数据通道,待完成优先级删选后,发送请求处理模块进入数据发送状态,并将向srio数据包处理模块发起数据请求并发送数据后进入等待发送完成状态,待数据发送完成后,进入优先级调整状态,待调整完成后回到传输请求等待状态,并判断是否还有未处理的请求,如果有有未处理的请求,则重复处理,直至所有请求处理完成。
所述srio数据包处理模块为将接收到待发送数据按照srio链路控制模块的要求进行打包,并将打包后的数据传送至srio链路控制模块;系统上电后模块srio数据包处理模块处于发送等待状态,当收到发送请求后,srio数据包处理模块进入发送srio数据包头状态,并判断srio传输数据的包类型和请求的格式,当判断请求格式错误后,返回发送等待状态,当判断请求为doorbell包时,发送完数据包头后进入等待srio回复包状态,收到回复包后,进入发送完成状态;当收到的发送请求为其他类型的数据时,模块进入发送srio数据包状态,并开始发送数据,待srio一包数据发送完成后,判断发送的数据包类型,当数据包类型为长消息时,直接进入发送完成状态,当发送数据包为短消息时,则进入等待srio回复包状态,收到回复包后,进入发送完成状态;发送完成状态等待8个时钟周期后,返回到发送等待状态;所述任一状态超时,则直接进入发送完成状态。
所述srio链路控制模块实现srio链路物理层协议,采用ip核进行实现。
本发明还提供一种基于srio的多通道数据传输控制器的调整方法,srio发送请求处理模块中优先级调整步骤为:
对于优先级相同的待传输通道,按robin规则判断优先级,需要robin的通道优先级默认相同,如果通道同时有数据待发送,则按照通道号依次进行发送,当某通道发送一次数据后,其余通道优先级自动加1直至优先级达到最高级别。
本发明的有益效果在于由于本发明将待发送数据按照srio最小数据包进行分块,并设计了轮询 优先级动态调整的方法,即可以保证短消息类数据传输的实时性,又可以保证大数据量数据传输时各通道之间的同步性。该控制器使用hdl编程语言设计,形成模块化的fpga软核,方便不同产品之间移植应用。
附图说明
图1基于srio的多通道数据传输控制器的结构框图。
图2srio复位模块控制流程图。
图3srio发送请求处理流程图。
图4srio优先级动态调整示意图。
图5srio数据包处理流程图。
具体实施方式
下面结合附图和实施例对本发明进一步说明。
一种基于srio的多通道数据传输控制器将待发送数据组成结构如图1所示,分别详细介绍框图中各个模块的具体实现和工作方式。
基于srio的多通道数据传输控制器将待发送数据按照srio最小数据包进行分块,并设计了轮询 优先级动态调整的方法,即可以保证短消息类数据传输的实时性,又可以保证大数据量数据传输时各通道之间的同步性。该控制器使用hdl编程语言设计,形成模块化的fpga软核,方便不同产品之间移植应用。
一种基于srio的多通道数据传输控制器,包括srio复位模块、srio发送请求处理模块、srio数据包处理模块和srio链路控制模块,srio复位模块产生复位信号输入srio链路控制模块,srio发送请求处理模块处理控制器接收到的数据发送请求,并将处理后的请求数据发送到srio数据包处理模块,srio数据包处理模块将接收到待发送数据按照srio链路控制模块要求进行打包,并将打包后的数据传送至srio链路控制模块,srio链路控制模块实现srio链路物理层协议。
1)srio复位模块
srio复位模块为srio链路控制模块的产生复位信号,具体控制流程如图2所示,系统上电后srio复位模块处理上电复位等待,并产生srio链路上电复位信号,等待31个时钟周期后,srio链路控制模块进入等待复位状态,当接收到主控的复位指令或者是检测到srio链路失锁时,srio链路控制模块进入链路复位状态,并产生复位信号,31个时钟周期后,完成复位并返回等待复位状态。
2)srio发送请求处理模块
srio发送请求处理模块处理控制器接收到的数据发送请求,并将处理后的请求数据发送到srio数据包处理模块。具体控制流程如图3所示。上电后,发送请求处理模块处于传输请求等待状态,当收到多通道数据传输请求后,发送请求处理模块进入优先级判断,并选择优先级最高的数据通道,待完成优先级删选后,发送请求处理模块进入数据发送状态,并将向srio数据包处理模块发起数据请求并发送数据后进入等待发送完成状态,待数据发送完成后,进入优先级调整状态,待调整完成后回到传输请求等待状态,并判断是否还有未处理的请求,如果有有未处理的请求,则重复处理,直至所有请求处理完成。
优先级调整的具体方法如图4所示。比如:0~15个通道中,0通道优先级为0,12~15通道优先级为12~15。则1~8通道优先级相同,9~11通道优先级相同且优先级大于1~8通道,则各通道优先级调整过程如图。则对于优先级相同的待传输通道,按robin规则判断优先级,以16个待传输通道为例,优先级最多为0~15。需要robin的通道优先级默认相同,如果这些通道同时有数待发送,则按照通道号发送,当某通道发送一次数据后,其余通道优先级自动加1直至优先级达到最高级别。
按照上述优先级调整规则,实时性要求高、数据量小的短消息类数据将优先级设为最高,则可保证短消息传输的实时性。同步性要求高、数据量大的长消息类多通道数据优先级设置为相同,则通过上述优先级调整规则,能够在保证数据传输速率的基础上保证多通道数据的同步性。
3)srio数据包处理模块
srio数据包处理模块为将接收到待发送数据按照srio链路控制模块的要求进行打包,并将打包后的数据传送至srio链路控制模块。具体控制流程如图5所示。上电后模块srio数据包处理模块处于发送等待状态,当收到发送请求后,srio数据包处理模块进入发送srio数据包头状态,并判断srio传输数据的包类型和请求的格式,当判断请求格式错误后,返回发送等待状态,当判断请求为doorbell包时,发送完数据包头后进入等待srio回复包状态,收到回复包后,进入发送完成状态;当收到的发送请求为其他类型的数据时,模块进入发送srio数据包状态,并开始发送数据,待srio一包数据发送完成后,判断发送的数据包类型,当数据包类型为长消息时,直接进入发送完成状态,当发送数据包为短消息时,则进入等待srio回复包状态,收到回复包后,进入发送完成状态;发送完成状态等待8个时钟周期后,返回到发送等待状态;所述任一状态超时时,则直接进入发送完成状态。
4)srio链路控制模块
srio链路控制模块主要功能实现srio链路物理层协议,适用成熟的商用ip核实现。
最后所应说明的是:以上实施例仅用以说明而非限定本发明的技术方案,不同实例包含模块不同,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解;依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。
1.一种基于srio的多通道数据传输控制器,包括srio复位模块、srio发送请求处理模块、srio数据包处理模块和srio链路控制模块,其特征在于:
srio复位模块产生复位信号输入srio链路控制模块,srio发送请求处理模块处理控制器接收到的数据发送请求,并将处理后的请求数据发送到srio数据包处理模块,srio数据包处理模块将接收到待发送数据按照srio链路控制模块要求进行打包,并将打包后的数据传送至srio链路控制模块,srio链路控制模块实现srio链路物理层协议。
2.根据权利要求1所述的基于srio的多通道数据传输控制器,其特征在于:
所述srio复位模块为srio链路控制模块的产生复位信号,系统上电后srio复位模块处理上电复位等待,并产生srio链路上电复位信号,等待31个时钟周期后,srio链路控制模块进入等待复位状态,当接收到主控的复位指令或者是检测到srio链路失锁时,srio链路控制模块进入链路复位状态,并产生复位信号,31个时钟周期后,完成复位并返回等待复位状态。
3.根据权利要求1所述的基于srio的多通道数据传输控制器,其特征在于:
所述srio发送请求处理模块处理控制器接收到的数据发送请求,并将处理后的请求数据发送到srio数据包处理模块,系统上电后,发送请求处理模块处于传输请求等待状态,当收到多通道数据传输请求后,发送请求处理模块进入优先级判断,并选择优先级最高的数据通道,待完成优先级删选后,发送请求处理模块进入数据发送状态,并将向srio数据包处理模块发起数据请求并发送数据后进入等待发送完成状态,待数据发送完成后,进入优先级调整状态,待调整完成后回到传输请求等待状态,并判断是否还有未处理的请求,如果有有未处理的请求,则重复处理,直至所有请求处理完成。
4.根据权利要求1所述的基于srio的多通道数据传输控制器,其特征在于:
所述srio数据包处理模块为将接收到待发送数据按照srio链路控制模块的要求进行打包,并将打包后的数据传送至srio链路控制模块;系统上电后模块srio数据包处理模块处于发送等待状态,当收到发送请求后,srio数据包处理模块进入发送srio数据包头状态,并判断srio传输数据的包类型和请求的格式,当判断请求格式错误后,返回发送等待状态,当判断请求为doorbell包时,发送完数据包头后进入等待srio回复包状态,收到回复包后,进入发送完成状态;当收到的发送请求为其他类型的数据时,模块进入发送srio数据包状态,并开始发送数据,待srio一包数据发送完成后,判断发送的数据包类型,当数据包类型为长消息时,直接进入发送完成状态,当发送数据包为短消息时,则进入等待srio回复包状态,收到回复包后,进入发送完成状态;发送完成状态等待8个时钟周期后,返回到发送等待状态;所述任一状态超时,则直接进入发送完成状态。
5.根据权利要求1所述的基于srio的多通道数据传输控制器,其特征在于:
所述srio链路控制模块实现srio链路物理层协议,采用ip核进行实现。
6.一种利用权利要求1所述基于srio的多通道数据传输控制器的调整方法,其特征在于包括下述步骤:
srio发送请求处理模块中优先级调整步骤为:
对于优先级相同的待传输通道,按robin规则判断优先级,需要robin的通道优先级默认相同,如果通道同时有数据待发送,则按照通道号依次进行发送,当某通道发送一次数据后,其余通道优先级自动加1直至优先级达到最高级别。
技术总结