一种基于FPGA的多路数据低延迟DDR片外访存方法

未命名 08-13 阅读:128 评论:0

一种基于fpga的多路数据低延迟ddr片外访存方法
技术领域
1.本发明属于fpga数据存储领域,具体涉及一种基于fpga的多路数据低延迟ddr片外访存方法。


背景技术:

2.随着大数据时代的到来,对数据存储的需要也越来越高。ddr(double data rate)存储技术是目前应用最广泛的技术之一。ddr存储器的特点是具有高速,高带宽,低功耗等优点。而fpga(field programmable gate array)是一种可编程逻辑器件,可以根据不同的应用需求进行编程,实现不同的功能,具有高速,低功耗,低延迟等优点。
3.在实际应用中,通常在fpga中使用ddr进行片外数据缓存;然而当需要缓存多路数据时,ddr存储器的速度和效率将成为一个问题;因为涉及到多个通道时,每个通道的时钟频率可能都互不相同,这使得保证数据正确和快速缓存变得十分困难。
4.另外在使用ddr对同一地址进行读写操作时,会出现读写冲突导致冲突地址处的数据发生不可预见的变化,虽然可以通过读写优先控制来避免此类问题,但不能完全解决读写冲突导致的数据异常问题;在考虑到数据源的时钟频率,数据读出端的时钟频率以及ddr缓存时钟频率时,需要减少数据传输延时,避免读写冲突导致的竞争。


技术实现要素:

5.本发明针对现有技术的不足,提出一种基于fpga的多路数据低延迟ddr片外访存方法,通过地址片轮转调度方法选择各路数据的缓存区防止读写冲突,通过握手型异步fifo实现数据跨时钟域传输并匹配不同数据位宽,进一步提高数据传输效率;通过仲裁实现多路数据协同访存ddr,避免读写冲突导致的竞争,从而提高访存效率。
6.为了解决上述技术问题,本发明的技术方案为:
7.一种基于fpga的多路数据低延迟ddr片外访存方法,包括以下步骤:
8.s1、写信号有效时根据地址片轮转调度方法选择写入地址和读出地址;
9.s2、通过握手型异步fifo对数据进行跨时钟域处理,拼接数据使得位宽符合ddr最大缓存标准;
10.s3、通过写仲裁将各个通道数据写入地址调度选择的ddr地址空间;
11.s4、读信号有效时更新读出地址为地址调度选择的读出地址;
12.s5、通过读仲裁从地址调度选择的读出地址读出数据;
13.s6、通过握手型异步fifo对数据进行跨时钟域处理,并将缓存数据分解为符合数据接收端位宽的数据。
14.作为优选,所述步骤s1包括以下子步骤:
15.s1-1、通过两级寄存器结构保存数据源的写信号的状态,第一级寄存器保存当前状态,第二级寄存器保存前一状态,当两级寄存器保存的状态不同时,并且第一级寄存器保存的当前状态有效时,输出单周期写请求信号;
16.s1-2、将写使能信号传输给握手型异步fifo;
17.s1-3、每路数据设置多个地址片,通过地址片轮转调度方法选择写入数据的起始地址,读出地址选择上一轮写入数据的起始地址;
18.作为优选,所述地址片轮转调度方法具体过程为:
19.将ddr的地址空间分为多个通道的缓存空间,每个通道的缓存空间分为多个缓冲区,编号1,2,3

地址片,每个通道数据传输时分配不同的地址片,并按照预设规则轮流选择缓存区进行读写操作;
20.具体预设规则为:当分配的地址片写满或者完成一个写周期时,如果未完成数据写入,自动分配下一个地址片,此时读出地址为上一轮写入数据的地址片首地址,当分配到最后一个地址片后,下一个地址片从第一个地址片开始选择,保证地址片的缓存区只有一个线程可以进行读写操作。
21.作为优选,所述步骤s2包括以下子步骤:
22.s2-1、握手型异步fifo接收到写请求信号后,写fifo状态机的状态发生改变,并产生握手信号,等待ddr应答;
23.s2-2、fifo内部检查是否有空闲的存储单元可以存储数据;如果有,当写使能有效时,fifo先将不符合ddr数据位宽的通道数据拼接成ddr最大数据位宽的缓存数据,再将拼接好的数据从写时钟域转移到存储时钟域,存储到写指针所指位置;
24.s2-3、fifo中缓存的数据量达到设置的阈值时,产生写请求信号到写仲裁模块,获取总线的访问权;
25.s2-4、当接收到ddr的写数据请求信号时,从fifo的缓存区读出数据;
26.s2-5、当接收到写仲裁模块的写完成信号时,停止产生写请求,输出加上本次写入数据长度的写入地址,写入数据计数值变更为加上本次写入数据数量后的计数值;
27.s2-6、当写入数据计数值大于写入数据长度时,停止本轮数据传输,等待下一轮数据传输。
28.作为优选,所述步骤s3包括以下子步骤:
29.s3-1、写仲裁模块接收到各个数据源的写请求后,通过轮询方式开始各个通道的写入准备;
30.具体地,写仲裁模块依次检查每个通道,并向其中一个处于可用状态的通道发送特定的写入请求。如果该请求被成功处理,则说明该通道已经完成了一次写入操作;否则,会尝试向下一个处于可用状态的通道发送请求,直到所有通道都被检查完毕;
31.s3-2、当接收到ddr的写完成信号后,根据各个通道的优先权,将写入数据、写入地址和数据长度传输给axi4转接桥;
32.s3-3、axi4转接桥将写入协议转为axi4协议,调用ddr控制模块将写入数据缓存到ddr对应的缓存区中。
33.作为优选,所述步骤s5包括以下子步骤:
34.s5-1、读仲裁模块接收到数据接收端的读请求信号,通过轮询方式开始数据的读出准备;
35.具体地,读仲裁模块依次检查每个通道,并向其中一个处于可用状态的通道发送特定的读出请求。如果该请求被成功处理,则说明该通道已经完成了一次读出操作;否则,
会尝试向下一个处于可用状态的通道发送请求,直到所有通道都被检查完毕;
36.s5-2、当接收到axi4转接桥转换的ddr控制模块的读完成信号后,根据数据接收端的优先级不同,输出地址片轮转调度方法选择的读出地址、读出数据长度和读使能信号给axi4转接桥;
37.s5-3、axi4转接桥将读出协议转为axi4协议,控制ddr控制模块从相应的地址空间中读出数据。
38.作为优选,所述步骤s6包括以下子步骤:
39.s6-1、握手型异步fifo接收到读请求信号后,读fifo状态机的状态发生改变,并产生握手信号,等待ddr应答;
40.s6-2、fifo内部检查是否有空闲的存储单元可以存储数据;如果有,当接收到读有效信号时,fifo先将ddr最大数据位宽的缓存数据分解成符合数据接收端数据位宽的接收数据,再将分解好的数据从写时钟域转移到存储时钟域,存储到写指针所指位置;
41.s6-3、fifo中缓存的数据量小于设置的阈值时,产生读请求信号到读仲裁模块,获取总线的访问权;
42.s6-4、当接收到数据接收端的读使能信号时,从fifo的缓存区读出数据;
43.s6-5、当接收到读仲裁模块的读完成信号时,停止产生读请求,输出加上本次读出数据长度的读出地址,读出数据计数值变更为加上本次读出数据数量后的计数值;
44.s6-6、当读出数据计数值大于读出数据长度时,停止本轮数据读出,等待下一轮数据读出。
45.本发明具有以下的特点和有益效果:
46.本发明基于fpga的多路数据低延迟ddr片外访存方法,使得多路数据能够缓存到ddr中并实时读出,同时降低了数据传输延时,提高了通道速率,避免了读写冲突。
47.本发明应用了地址片轮转调度方法,适用于高速访存,具有实时性、高带宽的特征,合理分配了ddr的容量,降低了多路数据缓存的成本;同时应用了握手型异步fifo,实现对数据的跨时钟域处理,避免数据传输错误,同时匹配数据位宽,极大降低了数据传输过程中的延时,适用于各类时钟域数据传输。
附图说明
48.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
49.图1为本发明实施例的一种基于fpga的多路数据低延迟ddr片外访存方法的流程图。
50.图2为本发明实施例的一种基于fpga的多路数据低延迟ddr片外访存方法法的结构框图。
51.图3为本发明实施例的一种基于fpga的多路数据低延迟ddr片外访存方法法的ddr数据读写地址变换图。
具体实施方式
52.需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
53.在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
54.在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以通过具体情况理解上述术语在本发明中的具体含义。
55.本发明提供了一种基于fpga的多路数据低延迟ddr片外访存方法,如图1-图3所示,包括以下步骤:
56.s1、写信号有效时根据地址片轮转调度方法选择写入地址和读出地址;
57.所述步骤s1包括以下子步骤:
58.s1-1、通过两级寄存器结构保存数据源的写信号的状态,第一级寄存器保存当前状态,第二级寄存器保存前一状态,当两级寄存器保存的状态不同时,并且第一级寄存器保存的当前状态有效时,输出单周期写请求信号;
59.s1-2、将写使能信号传输给握手型异步fifo;
60.s1-3、每路数据设置多个地址片,通过地址片轮转调度方法选择写入数据的起始地址,读出地址选择上一轮写入数据的起始地址;
61.具体的,所述地址片轮转调度方法具体过程为:
62.将ddr的地址空间分为多个通道的缓存空间,每个通道的缓存空间分为多个缓冲区,编号1,2,3

地址片,每个通道数据传输时分配不同的地址片,并按照预设规则轮流选择缓存区进行读写操作;
63.其中,具体预设规则为:当分配的地址片写满或者完成一个写周期时,如果未完成数据写入,自动分配下一个地址片,此时读出地址为上一轮写入数据的地址片首地址,当分配到最后一个地址片后,下一个地址片从第一个地址片开始选择,保证地址片的缓存区只有一个线程可以进行读写操作。
64.s2、通过握手型异步fifo对数据进行跨时钟域处理,拼接数据使得位宽符合ddr最大缓存标准;
65.所述步骤s2包括以下子步骤:
66.s2-1、握手型异步fifo接收到写请求信号后,写fifo状态机的状态发生改变,并产生握手信号,等待ddr应答;
67.s2-2、fifo内部检查是否有空闲的存储单元可以存储数据;如果有,当写使能有效时,fifo先将不符合ddr数据位宽的通道数据拼接成ddr最大数据位宽的缓存数据,再将拼接好的数据从写时钟域转移到存储时钟域,存储到写指针所指位置;
68.s2-3、fifo中缓存的数据量达到设置的阈值时,产生写请求信号到写仲裁模块,获取总线的访问权;
69.s2-4、当接收到ddr的写数据请求信号时,从fifo的缓存区读出数据;
70.s2-5、当接收到写仲裁模块的写完成信号时,停止产生写请求,输出加上本次写入数据长度的写入地址,写入数据计数值变更为加上本次写入数据数量后的计数值;
71.s2-6、当写入数据计数值大于写入数据长度时,停止本轮数据传输,等待下一轮数据传输。
72.s3、通过写仲裁将各个通道数据写入地址调度选择的ddr地址空间;
73.所述步骤s3包括以下子步骤:
74.s3-1、写仲裁模块接收到各个数据源的写请求后,通过轮询方式开始各个通道的写入准备;
75.具体地,写仲裁模块依次检查每个通道,并向其中一个处于可用状态的通道发送特定的写入请求。如果该请求被成功处理,则说明该通道已经完成了一次写入操作;否则,会尝试向下一个处于可用状态的通道发送请求,直到所有通道都被检查完毕;
76.s3-2、当接收到ddr的写完成信号后,根据各个通道的优先权,将写入数据、写入地址和数据长度传输给axi4转接桥;
77.s3-3、axi4转接桥将写入协议转为axi4协议,调用ddr控制模块将写入数据缓存到ddr对应的缓存区中。
78.s4、读信号有效时更新读出地址为地址调度选择的读出地址;
79.s5、通过读仲裁从地址调度选择的读出地址读出数据;
80.所述步骤s5包括以下子步骤:
81.s5-1、读仲裁模块接收到数据接收端的读请求信号,通过轮询方式开始数据的读出准备;
82.具体地,读仲裁模块依次检查每个通道,并向其中一个处于可用状态的通道发送特定的读出请求。如果该请求被成功处理,则说明该通道已经完成了一次读出操作;否则,会尝试向下一个处于可用状态的通道发送请求,直到所有通道都被检查完毕;
83.s5-2、当接收到axi4转接桥转换的ddr控制模块的读完成信号后,根据数据接收端的优先级不同,输出地址片轮转调度方法选择的读出地址、读出数据长度和读使能信号给axi4转接桥;
84.s5-3、axi4转接桥将读出协议转为axi4协议,控制ddr控制模块从相应的地址空间中读出数据。
85.s6、通过握手型异步fifo对数据进行跨时钟域处理,并将缓存数据分解为符合数据接收端位宽的数据;
86.所述步骤s6包括以下子步骤:
87.s6-1、握手型异步fifo接收到读请求信号后,读fifo状态机的状态发生改变,并产生握手信号,等待ddr应答;
88.s6-2、fifo内部检查是否有空闲的存储单元可以存储数据;如果有,当接收到读有效信号时,fifo先将ddr最大数据位宽的缓存数据分解成符合数据接收端数据位宽的接收数据,再将分解好的数据从写时钟域转移到存储时钟域,存储到写指针所指位置;
89.s6-3、fifo中缓存的数据量小于设置的阈值时,产生读请求信号到读仲裁模块,获取总线的访问权;
90.s6-4、当接收到数据接收端的读使能信号时,从fifo的缓存区读出数据;
91.s6-5、当接收到读仲裁模块的读完成信号时,停止产生读请求,输出加上本次读出数据长度的读出地址,读出数据计数值变更为加上本次读出数据数量后的计数值;
92.s6-6、当读出数据计数值大于读出数据长度时,停止本轮数据读出,等待下一轮数据读出。
93.以上结合附图对本发明的实施方式作了详细说明,但本发明不限于所描述的实施方式。对于本领域的技术人员而言,在不脱离本发明原理和精神的情况下,对这些实施方式包括部件进行多种变化、修改、替换和变型,仍落入本发明的保护范围内。

技术特征:
1.一种基于fpga的多路数据低延迟ddr片外访存方法,其特征在于,包括如下步骤:s1、写信号有效时根据地址片轮转调度方法选择写入地址和读出地址;s2、通过fifo对数据进行跨时钟域处理,拼接数据使得位宽符合ddr最大缓存标准,s2-1、fifo接收到写请求信号后,写fifo状态机的状态发生改变,并产生握手信号,等待ddr应答;s2-2、fifo内部检查是否有空闲的存储单元可以存储数据;如果有,当写使能有效时,fifo先将不符合ddr数据位宽的通道数据拼接成ddr最大数据位宽的缓存数据,再将拼接好的数据从写时钟域转移到存储时钟域,存储到写指针所指位置;s2-3、fifo中缓存的数据量达到设置的阈值时,产生写请求信号到写仲裁模块,获取总线的访问权;s2-4、当接收到ddr的写数据请求信号时,从fifo的缓存区读出数据;s2-5、当接收到写仲裁模块的写完成信号时,停止产生写请求,输出加上本次写入数据长度的写入地址,写入数据计数值变更为加上本次写入数据数量后的计数值;s2-6、当写入数据计数值大于写入数据长度时,停止本轮数据传输,等待下一轮数据传输;s3、通过写仲裁将各个通道数据写入地址调度选择的ddr地址空间;s4、读信号有效时更新读出地址为地址调度选择的读出地址;s5、通过读仲裁从地址调度选择的读出地址读出数据;s6、通过fifo对数据进行跨时钟域处理,并将缓存数据分解为符合数据接收端位宽的数据,s6-1、fifo接收到读请求信号后,读fifo状态机的状态发生改变,并产生握手信号,等待ddr应答;s6-2、fifo内部检查是否有空闲的存储单元可以存储数据;如果有,当接收到读有效信号时,fifo先将ddr最大数据位宽的缓存数据分解成符合数据接收端数据位宽的接收数据,再将分解好的数据从写时钟域转移到存储时钟域,存储到写指针所指位置;s6-3、fifo中缓存的数据量小于设置的阈值时,产生读请求信号到读仲裁模块,获取总线的访问权;s6-4、当接收到数据接收端的读使能信号时,从fifo的缓存区读出数据;s6-5、当接收到读仲裁模块的读完成信号时,停止产生读请求,输出加上本次读出数据长度的读出地址,读出数据计数值变更为加上本次读出数据数量后的计数值;s6-6、当读出数据计数值大于读出数据长度时,停止本轮数据读出,等待下一轮数据读出。2.根据权利要求1所述的基于fpga的多路数据低延迟ddr片外访存方法,其特征在于,所述步骤s1包括如下子步骤:s1-1、通过两级寄存器结构保存数据源的写信号的状态,第一级寄存器保存当前状态,第二级寄存器保存前一状态,当两级寄存器保存的状态不同时,并且第一级寄存器保存的当前状态有效时,输出单周期写请求信号;s1-2、将写使能信号传输给fifo;s1-3、每路数据设置多个地址片,通过地址片轮转调度方法选择写入数据的起始地址,
读出地址选择上一轮写入数据的起始地址。3.根据权利要求2所述的基于fpga的多路数据低延迟ddr片外访存方法,其特征在于,所述步骤s1-3中,地址片轮转调度方法为:将ddr的地址空间分为多个通道的缓存空间,每个通道的缓存空间分为多个缓冲区,编号1,2,3

地址片,每个通道数据传输时分配不同的地址片,并按照预设规则轮流选择缓存区进行读写操作。4.根据权利要求3所述的基于fpga的多路数据低延迟ddr片外访存方法,其特征在于,所述步骤1-3中,轮流选择缓存区进行读写操作的预设规则为:当分配的地址片写满或者完成一个写周期时,如果未完成数据写入,自动分配下一个地址片,此时读出地址为上一轮写入数据的地址片首地址,当分配到最后一个地址片后,下一个地址片从第一个地址片开始选择,保证地址片的缓存区只有一个线程可以进行读写操作。5.根据权利要求1所述的基于fpga的多路数据低延迟ddr片外访存方法,其特征在于,所述步骤s3包括如下子步骤:s3-1、写仲裁模块接收到各个数据源的写请求后,通过轮询方式开始各个通道的写入准备;s3-2、当接收到ddr的写完成信号后,根据各个通道的优先权,将写入数据、写入地址和数据长度传输给axi4转接桥;s3-3、axi4转接桥将写入协议转为axi4协议,调用ddr控制模块将写入数据缓存到ddr对应的缓存区中。6.根据权利要求1所述的基于fpga的多路数据低延迟ddr片外访存方法,其特征在于,所述步骤s5包括如下子步骤:s5-1、读仲裁模块接收到数据接收端的读请求信号,通过轮询方式开始数据的读出准备;s5-2、当接收到axi4转接桥转换的ddr控制模块的读完成信号后,根据数据接收端的优先级不同,输出地址片轮转调度方法选择的读出地址、读出数据长度和读使能信号给axi4转接桥;s5-3、axi4转接桥将读出协议转为axi4协议,控制ddr控制模块从相应的地址空间中读出数据。

技术总结
本发明公开了一种基于FPGA的多路数据低延迟DDR片外访存方法,包括以下步骤:S1、写信号有效时根据地址片轮转调度方法选择写入地址和读出地址;S2、通过握手型异步FIFO对数据进行跨时钟域处理,拼接数据使得位宽符合DDR最大缓存标准;S3、通过写仲裁将各个通道数据写入地址调度选择的DDR地址空间;S4、读信号有效时更新读出地址为地址调度选择的读出地址;S5、通过读仲裁从地址调度选择的读出地址读出数据;S6、通过握手型异步FIFO对数据进行跨时钟域处理,并将缓存数据分解为符合数据接收端位宽的数据。该方法通过仲裁实现多路数据协同访存DDR,避免读写冲突导致的竞争,从而提高访存效率。存效率。存效率。


技术研发人员:黄继业 沈祖翔 刘鑫 董哲康 高明裕 杨宇翔
受保护的技术使用者:杭州电子科技大学
技术研发日:2023.05.06
技术公布日:2023/8/9
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐