基于共享内存机制的fpga硬件抽象层设计方法、系统
技术领域
1.本发明涉及电子装备技术领域,具体地,涉及一种基于共享内存机制的fpga硬件抽象层设计方法、系统,同时提供了一种相应的终端及介质。
背景技术:2.异构嵌入式分布式系统中通常包括fpga、gpp、dsp等异构资源,并且同一个系统的fpga资源的处理器类型、对外通信的物理总线(如pcie、srio、emif等)存在差异。为了保证软件组件在不同fpga上的可移植性,采用mocb硬件抽象层设计技术,通过引入中间层软件屏蔽底层物理接口的差异性。mocb是一个接口规范,并未规定硬件抽象层的实现细节。然而,现有的mocb硬件抽象层设计技术无法满足高实时(时延、抖动、吞吐量等)、高可靠的应用需求,从而导致复杂高实时高可靠系统的软件难以组件化,不能在各个平台之间移植。
技术实现要素:3.本发明针对现有技术中存在的上述不足,提供了一种基于共享内存机制的fpga硬件抽象层设计方法,同时提供了一种相应的终端及介质。
4.根据本发明的一个方面,提供了一种基于共享内存机制的fpga硬件抽象层设计方法,包括:
5.根据应用的需求,配置多个用于软件组件数据输入/输出的mocb端口,对每一个所述mocb端口进行内存空间分配,得到多个内存空间,其中每一个所述内存空间指定一个逻辑地址;
6.对不同物理总线及io接口进行封装,构建驱动适配接口;
7.建立所述mocb端口与所述驱动适配接口之间的数据路由;
8.构建地址映射表和事件映射表;基于所述地址映射表,对每一个所述内存空间的起始地址信息进行转换,并将所述起始地址信息映射至所述逻辑地址;基于所述事件映射表,将软件组件的数据收发事件的事件id与所述逻辑地址相对应;
9.构建优先级仲裁表,根据所述优先级仲裁表中逻辑地址的优先级对所述软件组件的数据收发事件的收发进行仲裁,并将高优先级的逻辑地址所对应的数据通过所述数据路由发送至所述逻辑地址所指定的mocb端口,完成对fpga硬件抽象层的构建。
10.可选地,所述mocb端口包括:发送缓冲区模块、接收缓冲区模块、事件多路复用寄存器模块和流量控制模块;其中:
11.所述发送缓冲区模块,用于暂存来自所述软件组件待发送的数据,并依据先进先出的原则依次进行数据发送;
12.所述接收缓冲区模块,用于暂存需要发送至所述软件组件的数据,并依据先进先出的原则依次将数据发送给所述软件组件;
13.所述事件多路复用寄存器模块,用于存储多个事件,每个事件对应唯一的事件id,每个事件id包括若干个子事件;
14.所述流量控制模块,用于控制所述接收缓冲区模块和所述发送缓冲区模块的流量,当所述发送缓冲区模块和/或所述接收缓冲区模块的剩余空间低于设定的门限值时,触发流量控制信号,停止缓冲区模块接收新数据。
15.可选地,所述驱动适配接口包括:数据通道接口、事件通道接口、射频控制接口及管理通道接口。
16.可选地,所述地址映射表实现所述逻辑地址与所述发送缓冲区模块和所述接收缓冲区模块的内存空间的起始地址之间的映射,包括索引、逻辑地址和起始地址字段;
17.对所述发送缓冲区模块和所述接收缓冲区模块的内存空间分配由所述软件组件确定。
18.可选地,所述事件映射表实现所述事件多路复用寄存器模块与子事件之间的对应,包括:事件id、逻辑地址、偏移量及字节数n字段;
19.所述事件多路复用寄存器模块的每一位对应一个子事件;
20.所述事件多路复用寄存器模块的长度为字节的整数倍;
21.所述事件多路复用寄存器模块的大小由所述事件映射表中的字节数n指定。
22.可选地,所述mocb端口还包括如下任意一个或任意多个模块:
23.流量统计模块,该模块用于统计所述mocb端口接收和发送的实时数据流量;
24.数据校验模块,该模块用于校验所述mocb端口的数据完整性和正确性。
25.可选地,所述软件组件的数据收发,包括如下三个过程:
26.所述软件组件将数据发送至所述mocb端口的发送缓冲区模块;
27.所述mocb端口将所述发送缓冲区模块中的数据发送至物理总线;
28.所述软件组件接收来自其他软件组件并需要通过所述mocb端口进行发送的数据。
29.可选地,所述软件组件将数据发送至所述mocb端口的发送缓冲区模块,包括:
30.所述软件组件启动发送数据时序,通过所述mocb端口传送所述发送缓冲区模块的内存空间的起始地址信息;
31.检测所述发送缓冲区模块的内存空间大小,当所述发送缓冲区模块的内存空间剩余空间大于门限值时,置流量控制信号为无效;否则,置流量控制信号为有效;
32.所述软件组件向所述发送缓冲区模块写入数据包,并在发生写入错误时,将所述发送缓冲区模块的状态置为写入异常状态,用于实时进行写入异常处理;
33.当所述数据包写入完成后,所述发送缓冲区模块的状态立即由空闲状态置为有待发送数据状态;
34.重复上述步骤,直至完成所述软件组件的所有数据发送。
35.可选地,所述mocb端口将所述发送缓冲区模块中的数据发送至物理总线,包括:
36.等待发送数据请求,所述发送缓冲区模块的状态为有待发送数据状态,启动发送数据到物理总线的时序;
37.解析待发送数据的起始地址信息,根据所述地址映射表解析出目标逻辑地址,生成优先级请求信号;
38.根据所述优先级请求信号,判断所述目标逻辑地址所对应的优先级级别,将高优先级的目标逻辑地址信息发送至所述数据路由,并在发生发送错误时,将所述发送缓冲区模块的状态置为发送异常状态,用于实时进行发送异常处理;
39.所述数据路由根据所述优先级信息和所述目标逻辑地址信息生成路由信息,切换所述物理总线的接口到所述mocb端口的发送缓冲区模块之间的开关;
40.将所述mocb端口的发送缓冲区模块中的数据包通过所述驱动适配接口发送至物理总线上;
41.当一个完整的数据包发送完毕后,发送预设的事件信息到目标逻辑地址,通知数据发送完毕;
42.重复上述步骤,当完成对所述发送缓冲区模块中所有待发送数据的发送时,所述发送缓冲区模块的状态置为空闲状态。
43.可选地,所述软件组件接收来自其他软件组件并需要通过所述mocb端口进行发送的数据,包括:
44.当所述软件组件接收到数据到达事件信号,解析对应的逻辑地址及mocb端口的接收缓冲区模块的起始地址信息,并启动响应事件时序;
45.检测所述mocb端口的接收缓冲区模块中是否包含至少一个完整的数据包,如果不是,则进行异常检测,并重新监听到达事件信号;否则,继续下步操作;
46.所述软件组件从端口的所述接收缓冲区模块中读取数据包;
47.检测所述接收缓冲区模块的内存空间大小,当所述接收缓冲区的剩余内存空间大于门限值,则进入读取下一数据包的操作;当接收缓冲区剩余空间小于等于门限值,则置流量控制信号为有效。
48.根据本发明的另一个方面,提供了一种基于共享内存机制的fpga硬件抽象层设计系统,包括:
49.mocb端口模块,该模块用于根据应用的需求,配置多个用于软件组件数据输入/输出的mocb端口,对每一个所述mocb端口进行内存空间分配,得到多个内存空间,其中每一个所述内存空间指定一个逻辑地址;
50.驱动适配接口模块,该模块用于对不同物理总线及io接口进行封装,构建驱动适配接口;
51.路由控制模块,该模块用于实现所述mocb端口与所述驱动适配接口之间的数据路由;
52.地址映射模块,该模块用于构建地址映射表和事件映射表,其中,基于所述地址映射表,对每一个所述内存空间的起始地址信息进行转换,并将所述起始地址信息映射至所述逻辑地址;基于所述事件映射表,将软件组件的数据收发事件的事件id与所述逻辑地址相对应;
53.优先级仲裁模块,该模块用于构建优先级仲裁表,根据所述优先级仲裁表中逻辑地址的优先级对所述软件组件的数据收发事件的收发进行仲裁,并将高优先级的逻辑地址所对应的数据通过所述数据路由发送至所述逻辑地址所指定的mocb端口;
54.异常检测模块,该模块用于对上述的各模块进行异常检测,并将所述异常检测结果通过所述驱动适配接口发送至上层终端;
55.时钟管理模块,该模块用于对上述的各模块进行时钟网络配置。
56.根据本发明的第三个方面,提供了一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时可用于执行上述任一项
所述的方法,或,运行上述任一项所述的系统。
57.根据本发明的第四个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时可用于执行上述任一项所述的方法,或,运行上述任一项所述的系统。
58.由于采用了上述技术方案,本发明与现有技术相比,具有如下至少一项的有益效果:
59.本发明提供的基于共享内存机制的fpga硬件抽象层设计方法、系统,在架构上,通过利用物理并行总线的共享内存机制(通过内存空间之间的地址映射实现),实现数据基于优先级的路由控制及多端口分流的策略,保证数据的实时性。
60.本发明提供的基于共享内存机制的fpga硬件抽象层设计方法,通过增加驱动适配接口,对底层物理接口进行分类及抽象,保证硬件抽象层在不同平台进行移植。
61.本发明提供的基于共享内存机制的fpga硬件抽象层设计方法,通过增加异常检测机制,实现数据发送、接收路径全方位检测,实时检测、分析并上报异常信息,保证数据的可靠性。
附图说明
62.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
63.图1为本发明一实施例中基于共享内存机制的fpga硬件抽象层设计方法的工作流程图。
64.图2为本发明一实施例中基于共享内存机制的fpga硬件抽象层设计系统的原理图。
65.图3为本发明一优选实施例中mocb端口的发送/接收缓冲区的内存空间分配示意图。
66.图4为本发明一优选实施例中mocb端口的事件多路复用寄存器的内存空间分配示意图。
67.图5为本发明一优选实施例中软件组件发送数据到mocb端口发送缓冲区的工作流程图。
68.图6为本发明一优选实施例中软件组件发送数据到mocb端口发送缓冲区过程中的状态示意图。
69.图7为本发明一优选实施例中mocb端口将数据从发送缓冲区发送到物理总线的工作流程图。
70.图8为本发明一优选实施例中mocb端口发送数据到物理总线过程中的状态示意图。
71.图9为本发明一优选实施例中软件组件读取mocb端口接收缓冲区数据的工作流程图。
具体实施方式
72.下面对本发明的实施例作详细说明:本实施例在以本发明技术方案为前提下进行
实施,给出了详细的实施方式和具体的操作过程。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
73.本发明一实施例提供了一种基于共享内存机制的fpga硬件抽象层设计方法,该方法可配于不同的物理总线(如srio-dio、pcie、emif等),为fpga上层的软件组件提供实时、可靠性的传输机制,并且保证软件组件可以在不同fpga处理器之间平滑移植。
74.如图1所示,该实施例提供的基于共享内存机制的fpga硬件抽象层设计方法,可以包括如下步骤:
75.s100,根据应用的需求,配置多个用于软件组件数据输入/输出的mocb端口,对每一个mocb端口进行内存空间分配,得到多个内存空间,其中每一个内存空间指定一个逻辑地址;
76.s200,对不同物理总线及io接口进行封装,构建驱动适配接口;
77.s300,建立mocb端口与驱动适配接口之间的数据路由;
78.s400,构建地址映射表和事件映射表;基于地址映射表,对每一个内存空间的起始地址信息进行转换,并将起始地址信息映射至逻辑地址;基于事件映射表,将软件组件的数据收发事件的事件id与逻辑地址相对应;
79.s500,构建优先级仲裁表,根据优先级仲裁表中逻辑地址的优先级对软件组件的数据收发事件的收发进行仲裁,并将高优先级的逻辑地址所对应的数据通过数据路由发送至逻辑地址所指定的mocb端口,完成对fpga硬件抽象层的构建。
80.在s100的一优选实施例中,mocb端口包括:发送缓冲区模块、接收缓冲区模块、事件多路复用寄存器模块和流量控制模块;其中:
81.发送缓冲区模块,用于暂存来自软件组件待发送的数据,缓冲区可以存放多个数据,空间大小可以设置,并依据先进先出的原则依次进行数据发送;
82.接收缓冲区模块,用于暂存需要发送至软件组件的数据,缓冲区可以存放多个数据,空间大小可以设置,并依据先进先出的原则依次将数据发送给软件组件;
83.事件多路复用寄存器模块,用于存储多个事件,每个事件对应唯一的事件id,每个事件id包括若干个子事件;
84.流量控制模块,用于控制接收缓冲区模块和发送缓冲区模块的流量,当发送缓冲区模块和/或接收缓冲区模块的剩余空间低于设定的门限值时,触发流量控制信号,停止缓冲区模块接收新数据。
85.在s100的一优选实施例中,进一步地,地址映射表实现逻辑地址与发送缓冲区模块和接收缓冲区模块的内存空间的起始地址之间的映射,包括索引、逻辑地址和起始地址字段;
86.对发送缓冲区模块和接收缓冲区模块的内存空间分配由软件组件确定。
87.在s100的一优选实施例中,进一步地,事件映射表实现事件多路复用寄存器模块与子事件之间的对应,包括:事件id、逻辑地址、偏移量及字节数n字段;
88.事件多路复用寄存器模块的每一位对应一个子事件;
89.事件多路复用寄存器模块的长度为字节的整数倍;
90.事件多路复用寄存器模块的大小由事件映射表中的字节数n指定。
91.在s100的一优选实施例中,进一步地,mocb端口还可以包括如下任意一个或任意多个模块:
92.流量统计模块,该模块用于统计mocb端口接收和发送的实时数据流量;
93.数据校验模块,该模块用于校验mocb端口的数据完整性和正确性。在一具体应用实例中,该校验mocb端口的数据完整性和正确性的方法可以采用crc校验方法。
94.在s200的一优选实施例中,驱动适配接口包括:数据通道接口、事件通道接口、射频控制接口及管理通道接口。
95.在该实施例的一优选实施例中,软件组件的数据收发,包括如下三个过程:
96.软件组件将数据发送至mocb端口的发送缓冲区模块;
97.mocb端口将发送缓冲区模块中的数据发送至物理总线;
98.软件组件接收来自其他软件组件并需要通过mocb端口进行发送的数据;
99.进一步地,在一优选实施例中,软件组件将数据发送至mocb端口的发送缓冲区模块,包括:
100.软件组件启动发送数据时序,通过mocb端口传送发送缓冲区模块的内存空间的起始地址信息;
101.检测发送缓冲区模块的内存空间大小,当发送缓冲区模块的内存空间剩余空间大于门限值时,置流量控制信号为无效;否则,置流量控制信号为有效;
102.软件组件向发送缓冲区模块写入数据包,并在发生写入错误时,将发送缓冲区模块的状态置为写入异常状态,用于实时进行写入异常处理;
103.当数据包写入完成后,发送缓冲区模块的状态立即由空闲状态置为有待发送数据状态;
104.重复上述步骤,直至完成软件组件的所有数据发送。
105.进一步地,在一优选实施例中,mocb端口将发送缓冲区模块中的数据发送至物理总线,包括:
106.等待发送数据请求,发送缓冲区模块的状态为有待发送数据状态,启动发送数据到物理总线的时序;
107.解析待发送数据的起始地址信息,根据地址映射表解析出目标逻辑地址,生成优先级请求信号;
108.根据优先级请求信号,判断目标逻辑地址所对应的优先级级别,将高优先级的目标逻辑地址信息发送至数据路由,并在发生发送错误时,将发送缓冲区模块的状态置为发送异常状态,用于实时进行发送异常处理;
109.数据路由根据优先级信息和目标逻辑地址信息生成路由信息,切换物理总线的接口到mocb端口的发送缓冲区模块之间的开关;
110.将mocb端口的发送缓冲区模块中的数据包通过驱动适配接口发送至物理总线上;
111.当一个完整的数据包发送完毕后,发送预设的事件信息(用户定义)到目标逻辑地址,通知数据发送完毕;
112.重复上述步骤,当完成对发送缓冲区模块中所有待发送数据的发送时,发送缓冲区模块的状态置为空闲状态。
113.进一步地,在一优选实施例中,软件组件接收来自其他软件组件并需要通过mocb
端口进行发送的数据,包括:
114.当软件组件接收到数据到达事件信号,解析对应的逻辑地址及mocb端口的接收缓冲区模块的起始地址信息,并启动响应事件时序;
115.检测mocb端口的接收缓冲区模块中是否包含至少一个完整的数据包,如果不是,则进行异常检测,并重新监听到达事件信号;否则,继续下步操作;
116.软件组件从端口的接收缓冲区模块中读取数据包;
117.检测接收缓冲区模块的内存空间大小,当接收缓冲区的剩余内存空间大于门限值,则进入读取下一数据包的操作;当接收缓冲区剩余空间小于等于门限值,则置流量控制信号为有效。
118.本发明一实施例提供了一种基于共享内存机制的fpga硬件抽象层设计系统。
119.如图2所示,该实施例提供的基于共享内存机制的fpga硬件抽象层设计系统,可以包括如下模块:
120.mocb端口模块,该模块用于根据应用的需求,配置多个用于软件组件数据输入/输出的mocb端口,对每一个mocb端口进行内存空间分配,得到多个内存空间,其中每一个内存空间指定一个逻辑地址;
121.驱动适配接口模块,该模块用于对不同物理总线及io接口进行封装,构建驱动适配接口;
122.路由控制模块,该模块用于实现mocb端口与驱动适配接口之间的数据路由;
123.地址映射模块,该模块用于构建地址映射表和事件映射表,其中,基于地址映射表,对每一个内存空间的起始地址信息进行转换,并将起始地址信息映射至逻辑地址;基于事件映射表,将软件组件的数据收发事件的事件id与逻辑地址相对应;
124.优先级仲裁模块,该模块用于构建优先级仲裁表,根据优先级仲裁表中逻辑地址的优先级对软件组件的数据收发事件的收发进行仲裁,并将高优先级的逻辑地址所对应的数据通过数据路由发送至逻辑地址所指定的mocb端口;
125.异常检测模块,该模块用于对上述的各模块进行异常检测,并将异常检测结果通过驱动适配接口发送至上层终端;
126.时钟管理模块,该模块用于对上述的各模块进行时钟网络配置。
127.需要说明的是,本发明提供的方法中的步骤,可以利用系统中对应的模块、装置、单元等予以实现,本领域技术人员可以参照方法的技术方案实现系统的组成,即,方法中的实施例可理解为构建系统的优选例,在此不予赘述。
128.下面结合一具体应用实例和附图,对本发明上述实施例提供的设计方法和设计系统的技术方案进一步说明。
129.fpga硬件抽象层的设计原理框图如2所示。基于图2所示的设计原理,该具体应用实例中的设计系统包括:mocb端口模块、驱动适配接口模块、地址映射模块、优先级仲裁模块、路由控制模块、异常检测模块、时钟管理模块等,其功能描述如下:
130.mocb端口模块:该模块根据应用的需求,可配置多个。每个mocb端口都提供fpga mocb接口,作为软件组件的数据输入输出口。mocb端口中包括发送缓冲区、接收缓冲区、事件多路复用寄存器、流量统计、流量控制、数据校验等子模块,其中流量统计及数据校验模块为可选模块,可根据用户需求进行配置。
131.驱动适配接口模块:该模块是对不同物理总线及io接口的封装,主要包括数据通道接口、事件通道接口、射频控制接口及管理通道接口等四类接口。
132.地址映射模块:该模块的主要完成地址信息的转换,将地址信息映射到数据逻辑地址。
133.优先级仲裁模块:维护优先级仲裁表,根据逻辑地址的优先级实现对数据的收发进行仲裁。并将仲裁的结果发送至路由控制模块。
134.路由控制模块:该模块实现驱动适配接口与mocb端口之间的数据路由,高优先级的逻辑地址优先级路由到逻辑地址所指定的mocb端口。
135.异常检测模块:该模块负责fpga硬件抽象层各个功能模块的异常检测,异常检测结果通过管理通道接口发送出去。
136.时钟管理模块:为fpga硬件抽象层各个功能模块提供时钟网络,根据不同硬件平台及不同时钟源,实现时钟的配置及转换。
137.mocb端口收发缓冲区的内存空间分配如图3所示,每个逻辑地址指向一个内存空间,并且逻辑地址指向的内存空间可以重叠,有软件组件决定内存的分配策略,保证内存空间最大化利用。逻辑地址映射表实现逻辑地址与内存起始地址之间的映射,包括索引、逻辑地址和起始地址字段,该地址映射表由地址映射模块进行维护。
138.mocb端口的事件/子事件多路复用寄存器的内存分配模型如图4所示,每个端口对应一个事件多路复用寄存器,该多路复用寄存器对应唯一的事件id号。事件多路复用寄存器的每一位对应一个子事件。多路复用寄存器的长度必须是字节的整数倍,其大小由事件多路复用寄存器映射表中字节数n指定。事件多路复用寄存器映射表由地址映射模块维护,其包括事件id、逻辑地址、偏移量及字节数n字段。
139.软件组件通过mocb发送数据包括两个过程,首先软件组件将数据发送至端口的发送缓冲区,然后mocb再将数据从端口发送缓冲区的数据发送给物理总线。如图5所示,软件组件将数据发送至端口缓冲区的流程详细描述如下:
140.步骤1:软件组件启动发送数据时序,通过mocb接口传送地址信息。
141.步骤2:流量控制模块检测发送缓冲区的大小。当发送缓冲区剩余空间大于门限值时,置流控信号为无效;否则,置流控信号为有效。
142.步骤3:软件组件向发送缓冲区写入数据包。
143.步骤4:完成一包的数据写入后,立即将发送缓冲区的状态置为有待发送数据状态。
144.步骤5:若软件组件有连续数据发送,则重复1-4步骤。
145.在软件组件将数据发送至端口缓冲区的过程中,mocb的状态变换过程如图6所示的状态机。其状态转换过程描述如下:
146.组件发送数据到发送缓冲区状态:该状态下执行软件组件写入数据到发送缓冲区操作。当发送缓冲区剩余空间低于门限值,则将从该状态转移到发送缓冲区空间不足状态;当写入数据过程中有异常发生,则进行异常处理状态;当无数据待发送,则将转入空闲状态。
147.发送缓冲缓冲区空间不足状态:当缓冲区剩余空间高于门限值,其有待发送数据,将立即转入组件发送数据到缓冲区状态,否则将转入空闲状态。
148.异常处理状态:该状态下执行异常处理操作,如分析错误类型、上报错误码等。完成异常处理后,若有待发送数据,将转入发送数据到发送缓冲区状态,否则进入空闲状态。
149.空闲状态:该状态下不做任何处理操作,当有待发送任务,将立即转入发送数据到发送缓冲区状态。
150.mocb将数据从端口发送缓冲区的数据发送给物理总线的流程如图7所示,具体步骤描述如下:
151.步骤1:等待发送数据请求,发送缓冲区有数据待发送,启动发送数据到物理总线的时序。
152.步骤2:地址映射模块解析待发送数据的地址信号,根据地址映射表解析出目标逻辑地址,生成优先级请求信号发送至优先级仲裁模块。
153.步骤3:优先级仲裁模块根据地址映射模块的请求信号,根据优先级级别判断逻辑地址所对应的优先级,将高优先级的逻辑地址信息发送给路由控制模块。
154.步骤4:路由控制模块根据优先级、逻辑地址等信息生成路由信息,切换物理接口到mocb端口发送缓冲区之间的开关。
155.步骤5:将端口的发送缓冲区数据包通过驱动接口发送到物理总线上。
156.步骤6:当一个完整的数据包发送完毕,则发送事件信息到目标逻辑地址,通知数据发送完毕信号。
157.步骤7:当有端口的发送缓冲区还有待发送数据,重复2-6步骤,否则进入空闲状态。
158.将数据从端口发送缓冲区发送至物理总线的过程中,mocb的状态变换过程如图8所示的状态机。其状态描述如下:
159.发送数据至物理总线状态:该状态下,执行将端口发送缓冲区的数据发送到物理总线(如pcie、srio-dio等)上的操作。当发送流控信号无效时,进入等待发送流控信号状态;当发送过程中出现异常,将进入异常处理状态;当数据发送完毕,将进入空闲状态。
160.等待发送流控信号状态:该状态下等流控信号,不执行任何操作。当流控信号为有效时,将立即进入发送数据至物理总线。
161.异常处理状态:该状态下执行异常处理操作,如分析错误类型、上报错误码等。完成异常处理后,若有待发送数据,将转入发送数据到发送缓冲区状态,否则进入空闲状态。
162.空闲状态:该状态下不做任何处理操作,当有待发送任务,将立即转入发送数据至物理总线状态。
163.软件组件接收数据的流程如图9所示,具体步骤描述如下:
164.步骤1:软件组件接收到数据到达事件信号,地址解析模块解析地址多对应的逻辑地址及端口,并启动响应事件时序。
165.步骤2:流量控制模块检测端口接收缓冲区中的数据是否有一个完整的数据包。如果不存在一个完整的数据包,则进行异常检测,并重新监听事件信号。否则,继续下步操作。
166.步骤3:软件组件从端口的接收缓冲区中读取数据包。
167.步骤4:当接收缓冲区剩余空间大于门限值,则进入读取下一包操作;当接收缓冲区剩余空间小于等于门限值,则将流量控制信号置为有效。
168.本发明一实施例提供了一种终端,包括存储器、处理器及存储在存储器上并可在
处理器上运行的计算机程序,处理器执行程序时可用于执行本发明上述实施例中任一项的方法,或,运行本发明上述实施例中任一项的系统。
169.可选地,存储器,用于存储程序;存储器,可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:ram),如静态随机存取存储器(英文:static random-access memory,缩写:sram),双倍数据率同步动态随机存取存储器(英文:double data rate synchronous dynamic random access memory,缩写:ddr sdram)等;存储器也可以包括非易失性存储器(英文:non-volatile memory),例如快闪存储器(英文:flash memory)。存储器用于存储计算机程序(如实现上述方法的应用程序、功能模块等)、计算机指令等,上述的计算机程序、计算机指令等可以分区存储在一个或多个存储器中。并且上述的计算机程序、计算机指令、数据等可以被处理器调用。
170.上述的计算机程序、计算机指令等可以分区存储在一个或多个存储器中。并且上述的计算机程序、计算机指令、数据等可以被处理器调用。
171.处理器,用于执行存储器存储的计算机程序,以实现上述实施例涉及的方法中的各个步骤。具体可以参见前面方法实施例中的相关描述。
172.处理器和存储器可以是独立结构,也可以是集成在一起的集成结构。当处理器和存储器是独立结构时,存储器、处理器可以通过总线耦合连接。
173.本发明一实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时可用于执行本发明上述实施例中任一项的方法,或,运行本发明上述实施例中任一项的系统。
174.本发明上述实施例提供的基于共享内存机制的fpga硬件抽象层设计方法、系统,在架构上,通过利用物理并行总线的共享内存机制,实现数据基于优先级的路由控制及多端口分流的策略,保证数据的实时性;通过增加驱动适配接口,对底层物理接口进行分类及抽象,保证硬件抽象层在不同平台进行移植;通过增加异常检测机制,实现数据发送、接收路径全方位检测,实时检测、分析并上报异常信息,保证数据的可靠性。
175.需要说明的是:附图中的流程图显示了根据本发明的较优实施例的方法功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,流程图中的每个方框、以及方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
176.本发明上述实施例中未尽事宜均为本领域公知技术。
177.以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。
技术特征:1.一种基于共享内存机制的fpga硬件抽象层设计方法,其特征在于,包括:根据应用的需求,配置多个用于软件组件数据输入/输出的mocb端口,对每一个所述mocb端口进行内存空间分配,得到多个内存空间,其中每一个所述内存空间指定一个逻辑地址;对不同物理总线及io接口进行封装,构建驱动适配接口;建立所述mocb端口与所述驱动适配接口之间的数据路由;构建地址映射表和事件映射表;基于所述地址映射表,对每一个所述内存空间的起始地址信息进行转换,并将所述起始地址信息映射至所述逻辑地址;基于所述事件映射表,将软件组件的数据收发事件的事件id与所述逻辑地址相对应;构建优先级仲裁表,根据所述优先级仲裁表中逻辑地址的优先级对所述软件组件的数据收发事件的收发进行仲裁,并将高优先级的逻辑地址所对应的数据通过所述数据路由发送至所述逻辑地址所指定的mocb端口,完成对fpga硬件抽象层的构建。2.根据权利要求1所述的基于共享内存机制的fpga硬件抽象层设计方法,其特征在于,所述mocb端口包括:发送缓冲区模块、接收缓冲区模块、事件多路复用寄存器模块和流量控制模块;其中:所述发送缓冲区模块,用于暂存来自所述软件组件待发送的数据,并依据先进先出的原则依次进行数据发送;所述接收缓冲区模块,用于暂存需要发送至所述软件组件的数据,并依据先进先出的原则依次将数据发送给所述软件组件;所述事件多路复用寄存器模块,用于存储多个事件,每个事件对应唯一的事件id,每个事件id包括若干个子事件;所述流量控制模块,用于控制所述接收缓冲区模块和所述发送缓冲区模块的流量,当所述发送缓冲区模块和/或所述接收缓冲区模块的剩余空间低于设定的门限值时,触发流量控制信号,停止缓冲区模块接收新数据;和/或所述驱动适配接口包括:数据通道接口、事件通道接口、射频控制接口及管理通道接口。3.根据权利要求2所述的基于共享内存机制的fpga硬件抽象层设计方法,其特征在于,所述地址映射表实现所述逻辑地址与所述发送缓冲区模块和所述接收缓冲区模块的内存空间的起始地址之间的映射,包括索引、逻辑地址和起始地址字段;对所述发送缓冲区模块和所述接收缓冲区模块的内存空间分配由所述软件组件确定。4.根据权利要求2所述的基于共享内存机制的fpga硬件抽象层设计方法,其特征在于,所述事件映射表实现所述事件多路复用寄存器模块与子事件之间的对应,包括:事件id、逻辑地址、偏移量及字节数n字段;所述事件多路复用寄存器模块的每一位对应一个子事件;所述事件多路复用寄存器模块的长度为字节的整数倍;所述事件多路复用寄存器模块的大小由所述事件映射表中的字节数n指定。5.根据权利要求2所述的基于共享内存机制的fpga硬件抽象层设计方法,其特征在于,所述mocb端口还包括如下任意一个或任意多个模块:
流量统计模块,该模块用于统计所述mocb端口接收和发送的实时数据流量;数据校验模块,该模块用于校验所述mocb端口的数据完整性和正确性。6.根据权利要求2-5中任一项所述的基于共享内存机制的fpga硬件抽象层设计方法,其特征在于,所述软件组件的数据收发,包括如下三个过程:所述软件组件将数据发送至所述mocb端口的发送缓冲区模块;所述mocb端口将所述发送缓冲区模块中的数据发送至物理总线;所述软件组件接收来自其他软件组件并需要通过所述mocb端口进行发送的数据。7.根据权利要求6所述的基于共享内存机制的fpga硬件抽象层设计方法,其特征在于,所述软件组件将数据发送至所述mocb端口的发送缓冲区模块,包括:所述软件组件启动发送数据时序,通过所述mocb端口传送所述发送缓冲区模块的内存空间的起始地址信息;检测所述发送缓冲区模块的内存空间大小,当所述发送缓冲区模块的内存空间剩余空间大于门限值时,置流量控制信号为无效;否则,置流量控制信号为有效;所述软件组件向所述发送缓冲区模块写入数据包,并在发生写入错误时,将所述发送缓冲区模块的状态置为写入异常状态,用于实时进行写入异常处理;当所述数据包写入完成后,所述发送缓冲区模块的状态立即由空闲状态置为有待发送数据状态;重复上述步骤,直至完成所述软件组件的所有数据发送。8.根据权利要求6所述的基于共享内存机制的fpga硬件抽象层设计方法,其特征在于,所述mocb端口将所述发送缓冲区模块中的数据发送至物理总线,包括:等待发送数据请求,所述发送缓冲区模块的状态为有待发送数据状态,启动发送数据到物理总线的时序;解析待发送数据的起始地址信息,根据所述地址映射表解析出目标逻辑地址,生成优先级请求信号;根据所述优先级请求信号,判断所述目标逻辑地址所对应的优先级级别,将高优先级的目标逻辑地址信息发送至所述数据路由,并在发生发送错误时,将所述发送缓冲区模块的状态置为发送异常状态,用于实时进行发送异常处理;所述数据路由根据所述优先级信息和所述目标逻辑地址信息生成路由信息,切换所述物理总线的接口到所述mocb端口的发送缓冲区模块之间的开关;将所述mocb端口的发送缓冲区模块中的数据包通过所述驱动适配接口发送至物理总线上;当一个完整的数据包发送完毕后,发送预设定的事件信息到目标逻辑地址,通知数据发送完毕;重复上述步骤,当完成对所述发送缓冲区模块中所有待发送数据的发送时,所述发送缓冲区模块的状态置为空闲状态。9.根据权利要求6所述的基于共享内存机制的fpga硬件抽象层设计方法,其特征在于,所述软件组件接收来自其他软件组件并需要通过所述mocb端口进行发送的数据,包括:当所述软件组件接收到数据到达事件信号,解析对应的逻辑地址及mocb端口的接收缓冲区模块的起始地址信息,并启动响应事件时序;
检测所述mocb端口的接收缓冲区模块中是否包含至少一个完整的数据包,如果不是,则进行异常检测,并重新监听到达事件信号;否则,继续下步操作;所述软件组件从端口的所述接收缓冲区模块中读取数据包;检测所述接收缓冲区模块的内存空间大小,当所述接收缓冲区的剩余内存空间大于门限值,则进入读取下一数据包的操作;当接收缓冲区剩余空间小于等于门限值,则置流量控制信号为有效。10.一种基于共享内存机制的fpga硬件抽象层设计系统,其特征在于,包括:mocb端口模块,该模块用于根据应用的需求,配置多个用于软件组件数据输入/输出的mocb端口,对每一个所述mocb端口进行内存空间分配,得到多个内存空间,其中每一个所述内存空间指定一个逻辑地址;驱动适配接口模块,该模块用于对不同物理总线及io接口进行封装,构建驱动适配接口;路由控制模块,该模块用于实现所述mocb端口与所述驱动适配接口之间的数据路由;地址映射模块,该模块用于构建地址映射表和事件映射表,其中,基于所述地址映射表,对每一个所述内存空间的起始地址信息进行转换,并将所述起始地址信息映射至所述逻辑地址;基于所述事件映射表,将软件组件的数据收发事件的事件id与所述逻辑地址相对应;优先级仲裁模块,该模块用于构建优先级仲裁表,根据所述优先级仲裁表中逻辑地址的优先级对所述软件组件的数据收发事件的收发进行仲裁,并将高优先级的逻辑地址所对应的数据通过所述数据路由发送至所述逻辑地址所指定的mocb端口;异常检测模块,该模块用于对上述的各模块进行异常检测,并将所述异常检测结果通过所述驱动适配接口发送至上层终端;时钟管理模块,该模块用于对上述的各模块进行时钟网络配置。11.一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时可用于执行权利要求1-9中任一项所述的方法,或,运行权利要求10所述的系统。12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时可用于执行权利要求1-9中任一项所述的方法,或,运行权利要求10所述的系统。
技术总结本发明提供了一种基于共享内存机制的FPGA硬件抽象层设计方法及系统,配置多个用于软件组件数据输入/输出的MOCB端口,并进行内存空间分配,得到多个内存空间,每一个内存空间指定一个逻辑地址;对不同物理总线及IO接口进行封装,构建驱动适配接口;构建地址映射表和事件映射表,实现对每一个内存空间的起始地址与逻辑地址的映射和软件组件数据收发事件的事件ID与逻辑地址的对应;构建优先级仲裁表,根据逻辑地址的优先级对事件收发进行仲裁,并将高优先级的逻辑地址所对应的事件通过数据路由发送至逻辑地址所指定的MOCB端口。本发明保证了数据的实时性和可靠性,同时保证了硬件抽象层能够在不同平台进行移植。硬件抽象层能够在不同平台进行移植。硬件抽象层能够在不同平台进行移植。
技术研发人员:常坤 吴二龙 高欣春
受保护的技术使用者:上海介方信息技术有限公司
技术研发日:2022.07.11
技术公布日:2022/11/1