一种基于fpga的可扩展的多端口ddr3控制器

文档序号:1270912 发布日期:2020-08-25 浏览:7次 >En<

阅读说明:本技术 一种基于fpga的可扩展的多端口ddr3控制器 (Extensible multiport DDR3 controller based on FPGA ) 是由 夏明敏 李正刚 朱天雄 于 2020-04-27 设计创作,主要内容包括:本发明涉及通讯技术领域,尤其涉及一种基于FPGA的可扩展的多端口DDR3控制器,包括仲裁模块、读写空间大小管理模块、DDR3 IP核控制模块和FIFO接口控制模块,所述仲裁模块、读写空间大小管理模块、DDR3 IP核控制模块和FIFO接口控制模块依次电连接;所述仲裁模块用于根据读写空间大小管理模块提供的读写剩余可用地址空间大小、各端口所对应的FIFO容量阈值和各端口按实际需求排列的优先级信息来综合仲裁管理各端口的读写请求。本发明具有标准FIFO读写接口形式、端口数量可配置、单次读写大小可配置、各端口地址空间大小总量可配置以及控制器内部提供各端口读写优先级仲裁。(The invention relates to the technical field of communication, in particular to an extensible multi-port DDR3 controller based on an FPGA (field programmable gate array), which comprises an arbitration module, a read-write space size management module, a DDR3IP (Internet protocol) core control module and an FIFO (first in first out) interface control module, wherein the arbitration module, the read-write space size management module, the DDR3IP core control module and the FIFO interface control module are electrically connected in sequence; the arbitration module is used for comprehensively arbitrating and managing the read-write requests of the ports according to the size of the read-write residual available address space provided by the read-write space size management module, the FIFO capacity threshold corresponding to each port and the priority information arranged by each port according to actual requirements. The invention has the advantages of standard FIFO read-write interface form, configurable port number, configurable single read-write size, configurable total address space size of each port and arbitration of read-write priority of each port provided in the controller.)

一种基于FPGA的可扩展的多端口DDR3控制器

技术领域

本发明涉及通讯技术领域,尤其涉及一种基于FPGA的可扩展的多端口DDR3控制器。

背景技术

随着半导体存储器技术的飞速发展,其中DDR3内存颗粒具有大容量、高读写速率、运行稳定等优点,因此DDR3存储器在计算机、电子通信等领域得到了广泛应用。FPGA现场可编程门阵列具有超大逻辑门资源,可同时处理多路复杂数据流,且可以实现多种复杂的算法,因此在通信,图像处理等领域得到广泛应用。

市场上最新的kintex-7系列FPGA的DDR3硬核资源接口实现了DDR3PHY的物理层连接,但其硬核IP只给用户提供了单个读写接口,包括读写地址输入app_addr、读写控制命令app_cmd、命令使能app_en、写数据app_wdf_data、写使能app_wdf_wren、写结束app_wdf_end、读数据app_rd_data、读使能app_wdf_wren、读结束app_rd_data_end、读有效app_rd_data_valid、读写准备app_rdy等。由于此接口方式只能进行一个端口数据流的读写操作且较为复杂,因此无法满足在需要同时处理多路高速复杂数据流缓存的多端口应用需求。为此,我们提出一种基于FPGA的可扩展的多端口DDR3控制器。

发明内容

基于背景技术存在的技术问题,本发明提出了一种基于FPGA的可扩展的多端口DDR3控制器,具有读写操作更加便捷,让DDR3的使用效率更高的特点,解决了现有技术无法满足同时处理多路高速复杂数据流缓存的多端口应用需求的问题。

本发明提供如下技术方案:一种基于FPGA的可扩展的多端口DDR3控制器,包括仲裁模块、读写空间大小管理模块、DDR3 IP核控制模块和FIFO接口控制模块,所述仲裁模块、读写空间大小管理模块、DDR3 IP核控制模块和FIFO接口控制模块依次电连接;

所述仲裁模块用于根据读写空间大小管理模块提供的读写剩余可用地址空间大小、各端口所对应的FIFO容量阈值和各端口按实际需求排列的优先级信息来综合仲裁管理各端口的读写请求;

所述读写空间大小管理模块用于管理每个端口读写过程,根据全局配置的单次读写大小和各端口地址空间大小总量,对每个端口每次的读写流程进行地址统计和管理后,计算更新每一次读写后当前的读写剩余可用地址空间大小;

所述DDR3 IP核控制模块用于控制IP核的Burst读写时序过程,所述FIFO接口控制模块用于控制各端口的FIFO读写时序过程。

优选的,还包括信号接口逻辑控制模块,所述信号接口逻辑控制模块用于根据端口扩展需求配置端口数量,所述DDR3 IP核控制模块和FIFO接口控制模块还用于发送和接收信号接口逻辑控制模块数据。

优选的,所述仲裁模块根据设计需求排列各通道的读写优先级,然后读取读写空间大小管理模块计算反馈上来的各端口所对应的读写剩余可用地址空间大小;对于写入数据,判断若该剩余可用写地址空间大小大于等于全局配置的单次读写大小且写入数据流侧FIFO可读预空标志为0,则对应端口此次的写数据请求仲裁通过;对于读出数据,判断若该剩余可用读地址空间大小大于等于全局配置的单次读写大小且读出数据流侧FIFO可写预满标志0,则对应端口此次的读数据请求仲裁通过。

优选的,所述读写空间大小管理模块,对写数据请求仲裁通过的端口,在写数据的过程中累加统计写数据量,当写数据量达到该端口所配置地址空间大小总量时,累加统计的写数据量清零并将写溢出标志位取反;对读数据请求仲裁通过的端口,在读数据的过程中累加统计读数据量,当读数据量达到该端口所配置地址空间大小总量时,累加统计的读数据量清零并将读溢出标志位取反。

优选的,同一个端口的写溢出标志位与读溢出标志位包括四种逻辑关系:写溢出标志位逻辑0与读溢出标志位逻辑0、写溢出标志位逻辑0与读溢出标志位逻辑1、写溢出标志位逻辑1与读溢出标志位逻辑0、写溢出标志位逻辑1与读溢出标志位逻辑1,所述读写空间大小管理模块针对以上四种逻辑关系分别计算得到端口读写剩余可用地址空间大小。

优选的,所述FIFO接口控制模块的FIFO信号接口中用户写入的数据信号为:

端口N数据写请求fifochN_wrreq_ddr3;

端口N写数据fifochN_data_ddr3;

端口N写预满标志fifochN_prog_full_ddr3;

其中N是指通道号,即端口编号。

优选的,所述FIFO接口控制模块的FIFO信号接口中用户读出的数据信号为:

端口N数据读请求fifochN_rdreq_ddr3;

端口N读数据fifochN_q_ddr3;

端口N读预空标志fifochN_prog_empty_ddr3;

其中N是指通道号,即端口编号。

优选的,所述FIFO接口控制模块中写数据流侧FIFO的prog_full预满的阈值计算是由FIFO depth值减去1.5倍用户单次写数据流大小等于阈值,所述FIFO接口控制模块中写数据流侧FIFO的prog_empty预空的阈值计算由单次读写大小减去1等于阈值。

优选的,所述FIFO接口控制模块中读数据流侧FIFO的prog_full预满的阈值计算是由FIFO depth值减去1.5倍用户单次读数据流大小等于阈值,所述FIFO接口控制模块中读数据流侧FIFO的prog_empty预空的阈值计算是由单次读数据流大小减去1等于阈值。

优选的,将所述读写空间大小管理模块替换为信号接口逻辑控制模块,所述信号接口逻辑控制模块用于根据端口扩展需求配置端口数量,所述DDR3IP核控制模块和FIFO接口控制模块还用于发送和接收信号接口逻辑控制模块数据。

本发明提供了一种基于FPGA的可扩展的多端口DDR3控制器,用户可根据实际使用需求配置数据流通道数量,且读写接口采用标准FIFO接口形式,让读写操作更加便捷,同时隔离了不同时钟域数据读写,避免亚稳态的产生。

用户可根据实际写入数据流逻辑和读出数据流逻辑来综合匹配数据流的写入带宽和读出带宽,让DDR3的使用效率更高。用户可根据各端口实际数据流缓存大小需求来设定访问地址空间的大小,节约了DDR3的内存空间。

用户在使用该控制器时,无需关心DDR3的读写情况以及内部的读写带宽问题,只需要根据FIFO接口的prog_full和prog_empty来确定当前是否可写入数据或是否可读出数据。

附图说明

图1是一种基于FPGA的可扩展的多端口DDR3控制器结构图;

图2是FIFO信号接口图;

图3是核心模块之间的信号关系图;

图4是读写数据流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供一种技术方案:

实施例一:

一种基于FPGA的可扩展的多端口DDR3控制器,包括仲裁模块、读写空间大小管理模块、DDR3 IP核控制模块和FIFO接口控制模块,仲裁模块、读写空间大小管理模块、DDR3IP核控制模块和FIFO接口控制模块依次电连接;

仲裁模块用于根据读写空间大小管理模块提供的读写剩余可用地址空间大小、各端口所对应的FIFO容量阈值和各端口按实际需求排列的优先级信息来综合仲裁管理各端口的读写请求;

读写空间大小管理模块用于管理每个端口读写过程,根据全局配置的单次读写大小和各端口地址空间大小总量,对每个端口每次的读写流程进行地址统计和管理后,计算更新每一次读写后当前的读写剩余可用地址空间大小;

DDR3 IP核控制模块用于控制IP核的Burst读写时序过程,FIFO接口控制模块用于控制各端口的FIFO读写时序过程。

在本发明中仲裁模块,根据设计需求排列各通道的读写优先级,然后读取读写空间大小管理模块计算反馈上来的各端口所对应的读写剩余可用地址空间大小。对于写入数据,判断若该剩余可用写地址空间大小大于等于全局配置的单次读写大小且写入数据流侧FIFO可读预空标志为0,则对应端口此次的写数据请求仲裁通过;对于读出数据,判断若该剩余可用读地址空间大小大于等于全局配置的单次读写大小且读出数据流侧FIFO可写预满标志0,则对应端口此次的读数据请求仲裁通过。

在本发明中读写空间大小管理模块,对写数据请求仲裁通过的端口,在写数据的过程中累加统计写数据量,当写数据量达到该端口所配置地址空间大小总量时,累加统计的写数据量清零并将写溢出标志位取反;对读数据请求仲裁通过的端口,在读数据的过程中累加统计读数据量,当读数据量达到该端口所配置地址空间大小总量时,累加统计的读数据量清零并将读溢出标志位取反;同一个端口的写溢出标志位与读溢出标志位会有四种逻辑关系,即写溢出标志位逻辑0与读溢出标志位逻辑0、写溢出标志位逻辑0与读溢出标志位逻辑1、写溢出标志位逻辑1与读溢出标志位逻辑0、写溢出标志位逻辑1与读溢出标志位逻辑1。针对以上四种逻辑关系分别计算得到端口读写剩余可用地址空间大小。

用户写入数据接口信号:

端口一数据写请求fifoch1_wrreq_ddr3;

端口一写数据fifoch1_data_ddr3;

端口一写预满标志fifoch1_prog_full_ddr3;

端口二数据写请求fifoch2_wrreq_ddr3;

端口二写数据fifoch2_data_ddr3;

端口二写预满标志fifoch2_prog_full_ddr3;

端口三数据写请求fifoch3_wrreq_ddr3;

端口三写数据fifoch3_data_ddr3;

端口三写预满标志fifoch3_prog_full_ddr3;

端口四数据写请求fifoch4_wrreq_ddr3;

端口四写数据fifoch4_data_ddr3;

端口四写预满标志fifoch4_prog_full_ddr3;

......

端口N数据写请求fifochN_wrreq_ddr3;

端口N写数据fifochN_data_ddr3;

端口N写预满标志fifochN_prog_full_ddr3。

用户读出数据接口信号:

端口一数据读请求fifoch1_rdreq_ddr3;

端口一读数据fifoch1_q_ddr3;

端口一读预空标志fifoch1_prog_empty_ddr3;

端口二数据读请求fifoch2_rdreq_ddr3;

端口二读数据fifoch2_q_ddr3;

端口二读预空标志fifoch2_prog_empty_ddr3;

端口三数据读请求fifoch3_rdreq_ddr3;

端口三读数据fifoch3_q_ddr3;

端口三读预空标志fifoch3_prog_empty_ddr3;

端口四数据读请求fifoch4_rdreq_ddr3;

端口四读数据fifoch4_q_ddr3;

端口四读预空标志fifoch4_prog_empty_ddr3;

......

端口N数据读请求fifochN_rdreq_ddr3;

端口N读数据fifochN_q_ddr3;

端口N读预空标志fifochN_prog_empty_ddr3;

以上描述的接口信号皆为用户可用信号。

如图1所示,写数据流侧FIFO的prog_full预满的阈值设定需根据当前端口用户单次写数据流大小来计算,即FIFO depth值减去阈值等于1.5倍用户单次写数据流大小;写数据流侧FIFO的prog_empty预空的阈值设定需根据单次读写大小来计算,即单次读写大小减去1等于阈值。读数据流侧FIFO的prog_full预满的阈值设定需根据单次读写大小来计算,即FIFO depth值减去阈值等于1.5倍单次读写大小;读数据流侧FIFO的prog_empty预空的阈值设定需根据当前端口用户单次读数据流大小来计算,即用户单次读数据流大小减去1等于阈值。

如图3和图4所示,当用户写数据时判断写数据流侧FIFO的prog_full,当prog_full=0时写入数据否则等待,此时当前写入端口的FIFO内的数据等待DDR3的写请求来调用。当chN_prog_empty=0且chN_can_wr_burst_cycle>=单次读写大小时(chN_can_wr_burst_cycle代表当前的写剩余可用地址空间大小),仲裁模块判断当前执行DDR3写请求过程(STATE_WRITE),即从FIFO中读出数据写入对应DDR3存储空间中。此时当前端口对应的DDR3存储空间中的数据等待读数据流侧FIFO的读出,当chN_prog_full=0且chN_can_rd_burst_cycle>=单次读写大小时(chN_can_rd_burst_cycle代表当前的读剩余可用地址空间大小),仲裁模块判断当前执行DDR3读请求过程(STATE_READ),即从DDR3中读出数据并往读数据流侧FIFO中写入数据直到chN_prog_full=1时停止,此时FIFO内的数据等待用户来读取当前端口数据。当用户读数据时判断读数据流侧FIFO的prog_empty,当prog_empty=0时读出数据否则等待。

当state=STATE_WRITE(写请求过程)且chN_wr_flag=1时,读写空间大小管理模块对写数据量进行累计统计,得到当前写地址指针(WR_POINT)和写溢出标志位(WR_OVERFLOW);当state=STATE_READ且chN_rd_flag=1时,读写空间大小管理模块对读数据量进行累计统计,得到当前读地址指针(RD_POINT)和读溢出标志位(RD_OVERFLOW)。根据端口地址空间大小总量、WR_POINT、RD_POINT、WR_OVERFLOW和RD_OVERFLOW,同时综合如下四种可能情况:WR_OVERFLOW=0&&RD_OVERFLOW=0、WR_OVERFLOW=0&&RD_OVERFLOW=1、WR_OVERFLOW=1&&RD_OVERFLOW=0和WR_OVERFLOW=1&&RD_OVERFLOW=1,计算得到chN_can_wr_burst_cycle和chN_can_rd_burst_cycle。

本技术方案单次读写大小可配置:用户可根据实际写入数据流逻辑和读出数据流逻辑来综合匹配数据流的写入带宽和读出带宽,让DDR3的使用效率更高。

各端口地址空间大小总量可配置:用户可根据各端口实际数据流缓存大小需求来设定访问地址空间的大小,节约了DDR3的内存空间。

用户在使用该控制器时,无需关心DDR3的读写情况以及内部的读写带宽问题,只需要根据FIFO接口的prog_full和prog_empty来确定当前是否可写入数据或是否可读出数据。

实施例二:

相比实施例一的区别技术如下:

将读写空间大小管理模块替换为信号接口逻辑控制模块,信号接口逻辑控制模块用于根据端口扩展需求配置端口数量,DDR3 IP核控制模块和FIFO接口控制模块还用于发送和接收信号接口逻辑控制模块数据。配置端口数量和单次读写大小,其中端口数量决定了信号接口逻辑控制模块例化读写FIFO的数量,FIFO解决了数据缓存和跨时钟域的数据传输问题。

本技术方案的端口数量可配置:用户可根据实际使用需求配置数据流通道数量,且读写接口采用标准FIFO接口形式,让读写操作更加便捷,同时隔离了不同时钟域数据读写,避免亚稳态的产生。

实施例三:

相比实施例一的区别技术如下:

在实施例一的基础上增加了信号接口逻辑控制模块,信号接口逻辑控制模块用于根据端口扩展需求配置端口数量,DDR3 IP核控制模块和FIFO接口控制模块还用于发送和接收信号接口逻辑控制模块数据。配置端口数量和单次读写大小,其中端口数量决定了信号接口逻辑控制模块例化读写FIFO的数量,FIFO解决了数据缓存和跨时钟域的数据传输问题。

本技术方案提供了一种端口数量可根据需求任意扩展的DDR3控制器接口,具有标准FIFO读写接口形式、端口数量可配置、单次读写大小可配置、各端口地址空间大小总量可配置以及控制器内部提供各端口读写优先级仲裁。

在本发明各个实施例中的各功能模块可以集成在相同处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在相同模块中。

以上,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

11页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种多核存储器一致性的方法、系统、设备及可读介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!