基于fpga和ddr3 sdram的可配置图像数据缓存系统

文档序号:1708677 发布日期:2019-12-13 浏览:9次 >En<

阅读说明:本技术 基于fpga和ddr3 sdram的可配置图像数据缓存系统 (configurable image data caching system based on FPGA and DDR3SDRAM ) 是由 黄宏敏 熊晓明 胡恩 张明森 于 2019-07-23 设计创作,主要内容包括:本发明公开了一种基于FPGA和DDR3SDRAM的可配置图像数据缓存系统,包括外部存储模块、存储控制模块、第一缓存模块、第二缓存模块以及缓存控制模块,视频图像数据和时钟信号从缓存控制模块写入到第一缓存模块进行第一级缓存;存储控制模块再控制从第一缓存模块读取数据储存到外部存储模块;然后存储控制模块控制从外部存储模块读出储存的数据,写入到第二缓存模块进行第二级缓存;接着,缓存控制模块控制从第二缓存模块读取出数据到缓存控制模块,缓存控制模块将图像数据进行调整并产生对应的读有效信号,将这些配置数据输出给外界。本发明可以缓存更大的数据传输,达到数据传输的实时性、稳定性的效果;封装后的系统只有少许的端口,配置更加便捷。(The invention discloses a configurable image data caching system based on FPGA and DDR3SDRAM, which comprises an external storage module, a storage control module, a first caching module, a second caching module and a caching control module, wherein video image data and a clock signal are written into the first caching module from the caching control module to perform first-level caching; the storage control module controls the data read from the first cache module to be stored in the external storage module; then the storage control module controls the data read out from the external storage module and writes the data into the second cache module for second-level caching; and then, the cache control module controls the data read from the second cache module to the cache control module, adjusts the image data and generates corresponding effective reading signals, and outputs the configuration data to the outside. The invention can buffer larger data transmission, and achieves the effects of real-time performance and stability of data transmission; the packaged system has only a few ports, and the configuration is more convenient.)

基于FPGA和DDR3 SDRAM的可配置图像数据缓存系统

技术领域

本发明涉及数据存储和图像传输技术领域,具体涉及一种基于FPGA和DDR3 SDRAM的可配置图像数据缓存系统。

背景技术

目前,视频图像技术的发展越来越快,图像的分辨率也随之越来越高,高帧频图像的使用也越来越频繁,为了达到实时的效果,我们需要对采集的数据进行缓存,而且它们需要的缓存容量也越来越大。所以对对高分辨率、高帧频图像数据进行高速、大容量、实时处理的要求越来越高。特别是在数据缓存的技术上,在占用宝贵的内存情况下,数据缓存提供了可以快速访问数据,加快了响应速度。但是缓存太小会导致额外的没有益处的开销,缓存过大可能会导致数据的溢出。所以,选择合适的缓存数据大小也是很重要的。

对高速、实时视频数据采集与缓存的需求,现在已经出现了各种各样的DDR(Double Data Rate,即双倍速率)缓存方案,双倍速率存取即为数据在工作时钟的上升沿和下降沿都会进行采样,有效地提升了存储速率。DDR3 SDRAM(Synchronous DynamicRandom Access Memory,下面简称DDR3)成为当前最常用的高效的方案,较DDR和DDR2在容量、速率和兼容性方面有很大提高,而且DDR3具有高带宽、高可靠性、低功耗和低成本的特点。由于DDR3引脚过多,使用起来过于繁琐,而且DDR不能直接像FIFO(First Input FirstOutput)那样对外界设置的读写操作来完成对采集的数据的缓存,需要自己设置读写操作控制模块控制DDR的数据缓存,这样将大大增加开发的时间和成本。已有的方案由于数据传输速率慢、操作复杂、开发周期长及可移植性差等等缺点,满足不了高分辨率、高帧频的视频实时的需求。而且,已有的方案只能针对一类的数据进行缓存,可配置性差。

发明内容

本发明的目的是提供基于一种FPGA和DDR3 SDRAM的可配置图像数据缓存系统,以克服现有技术中存在的数据传输速率慢、操作复杂、开发周期长、可配置性差等缺陷。

为了实现上述任务,本发明采用以下技术方案:

基于FPGA和DDR3 SDRAM的可配置图像数据缓存系统,包括外部存储模块、存储控制模块、第一缓存模块、第二缓存模块以及缓存控制模块,其中:

所述的外部存储模块用于存储图像数据;

所述的存储控制模块用于接收外界发送来的图像数据、时钟信号、写使能信号,并利用第一缓存模块、外部存储模块、第二缓存模块进行数据的缓存;

所述的第一缓存模块用于对图像数据进行一级缓存;

所述的第二缓存模块用于对图像数据进行二级缓存;

所述的缓存控制模块用于从第二缓存模块中读取二级缓存的数据并经调整后输出给外界;

所述的系统的工作过程包括:

存储控制模块从外界接收图像数据、时钟信号和写使能信号并将这些数据进行调整后写入到第一缓存模块;第一缓存模块对写入存储控制模块的数据进行一级缓存;在外部存储模块准备好之后,存储控制模块从第一缓存模块中读取数据并存储到外部存储模块中;

外界需要读取图像数据时,存储控制模块首先从外部存储模块读取存储的数据,并将数据写入到第二缓存模块中进行二级缓存;当缓存控制模块接收到外界的读使能信号和时钟信号时,缓存控制模块从第二缓存模块中读取数据,并将数据中的图像数据进行调整并产生与其对应的读有效信号,将调整后的图像数据和读有效信号输出给外界。

进一步地,所述的存储控制模块从外界接收图像数据、时钟信号和写使能信号并将这些数据进行调整,包括:

根据第一缓存模块的写入数据位宽,对连续的图像数据进行拼接,使拼接后的图像数据的位宽与第一缓存模块的写入数据位宽相同;与此同时,对时钟信号进行同样数据位宽的调整;其中,写使能信号控制着存储控制模块对数据处理的开始。

进一步地,所述的当缓存控制模块接收到外界的读使能信号和时钟信号时,缓存控制模块从第二缓存模块中读取数据,包括:

外界输入读使能信号和时钟信号给缓存控制模块,缓存控制模块编写读取第二缓存模块中数据的使能命令以及时钟信号,控制从第二缓存模块中读取数据到缓存控制模块中;

对从第二缓存模块中读取的数据进行拆分调整为所需的位宽,在输出调整后的图像数据的同时产生与其对应的读有效信号。

进一步地,所述的外部存储模块采用DDR3 SDRAM,第一缓存模块、第二缓存模块均采用异步FIFO。

本发明具有以下技术特点:

1.本方案综合了DDR3和FIFO的优点,1GB的DDR3缓存容量,加上1600MT/s传输速度,可以缓存更大的数据传输,达到数据传输的实时性、稳定性的效果;加入FIFO可以通过识别外界设置的读写使能来完成对数据的缓存。

2.由于DDR3引脚过多,使用起来过于繁琐,所以本方案将其与FIFO模块、FIFO控制模块等封装起来,避免需要去研究使用DDR3众多的引脚;封装后的系统只有少许的端口,配置更加便捷,且是可配置的,使得适合的场合更多,可以配置想要的缓存数据大小。

附图说明

图1为本发明系统的结构框图;

图2为DDR3控制器结构图;

图3为异步FIFO的结构图;

图4为FPGA设计流程图;

图5为本发明系统封装后端口的示意图。

具体实施方式

如图1所示,本发明公开了基于FPGA和DDR3 SDRAM的可配置图像数据缓存系统,该系统建立在FPGA平台上,包括外部存储模块、存储控制模块、第一缓存模块、第二缓存模块以及缓存控制模块,其中:

外部存储模块用于存储图像数据。

本实施例中,外部存储模块采用DDR3 SDRAM,DDR3具有高带宽、高可靠性、低功耗和低成本的特点,其由8颗128MB颗粒组成,内存为1GB。每颗存储颗粒的数据位宽是8bit,8颗放在一起组成了数据位宽是64bit的存储条,再加上设置其突发长度为8,所以每次读写的数据位宽可以达到512bit,很大程度上提高了DDR3的读写效率。DDR3可在800MHz的接口频率工作,传输速度可达1 600MT/s。本专利使用DDR3作为外部存储模块,相比RAM(RandomAccess Memory)、FIIFO等模块的缓存,缓存容量得到了很大的提升。如图2所示,由于DDR3的引脚过多,如果每个方案都要去研究它的引脚,将会耗费大量时间和精力,所以减少这些时间和精力也是本方案的另一个目的。外部存储模块的数据的读写都是由存储控制模块控制完成,外部存储模块缓存经过存储控制模块写入的数据,同时存储控制模块又控制读出缓存的数据。

所述的存储控制模块用于接收外界发送来的图像数据、时钟信号、写使能信号,并利用第一缓存模块、外部存储模块、第二缓存模块进行数据的缓存。

存储控制模块作为连接片上数据到外部存储模块的桥梁,产生读写外部存储模块的命令与储存数据的地址。存储控制模块(DDR3控制器)利用Xilinx官方的MIG IP核(Memory Interface Generator),内部端口结构图如图2所示。只需要根据MIG核用户接口协议编写用户逻辑,根据自己的需求产生读写命令、地址、数据信息。外部存储模块的读写命令是由存储控制模块控制产生,存储控制模块编写状态机完成所有的功能。当外部存储模块初始化成功后,存储控制模块的状态机会编写DDR3读写数据控制命令。当外部存储模块写入数据时,存储控制模块控制从第一缓存模块读出端读出数据写入到外部存储模块进行缓存;当外部存储模块读出数据时,存储控制模块读出外部存储模块中缓存的数据,然后传输到第二缓存模块。

所述的第一缓存模块用于对图像数据进行一级缓存。

第一缓存模块WR_FIFO采用Xilinx FPGA的异步FIFO(如图3所示)标准IP来实现。由于第一缓存模块的引脚过多,而本方案不需要太多的引脚,只需要其中的一部分,因此对其进行选择设置。由于本方案采用的DDR3读写数据的位宽为512bit,所以本方案采用了异步FIFO作为第一缓存模块来转换连接数据。如果WR_FIFO需要读出512bit数据传输到外部存储模块,那么必须写入大于或等于64bit的数据,所以写入WR_FIFO的数据设置为64bit,读数据位宽设置为512bit,数据深度设置为512。WR_FIFO模块会从缓存控制模块得到64bit写入数据和时钟控制信号,经过WR_FIFO短暂缓存后,当外部存储模块准备好(初始化完成)后,存储控制模块控制从WR_FIFO读出端读出512bit的数据写入到外部存储模块进行缓存。WR_FIFO的复位信号和外部存储模块用户时钟相同,即高电平复位,低电平工作,它的写时钟由存储控制模块控制,读时钟和外部存储模块的用户时钟相同;它的读使能由存储控制模块控制,第一缓存模块内部剩余储存容量由其内置计数器提供。

所述的第二缓存模块用于对图像数据进行二级缓存。

第二缓存模块RD_FIFO的工作原理与第一缓存模块类似,均采用异步FIFO;因为本实施例中外部存储模块读出数据位宽为512bit,所以RD_FIFO的写数据位宽也设置为对应的512bit。RD_FIFO写入512bit数据时,读出数据的位宽大于或等于64bit,所以RD_FIFO的读出数据位宽设置为64bit,而数据深度设置为512。RD_FIFO写时钟和外部存储模块的用户时钟相同,同理它的写使能也由存储控制模块控制,读时钟由缓存控制模块控制,当存储控制模块状态机跳转到读时,将RD_FIFO的写使能拉高。RD_FIFO会缓存数据写入的512bit,然后缓存控制模块控制从RD_FIFO读出64bit的数据,然后根据外部的需要,设置不同的数据位宽参数,将64bit的数据转化为所需要的位宽数据,读出到外部处理。同时,读出数据对应的时钟信号也会做出对应的调整以适应读出数据。

所述的缓存控制模块用于从第二缓存模块中读取二级缓存的数据并经调整后输出给外界。

缓存控制模块作为数据的写入与读出模块,它接收外界的数据写入,再将写入的数据进行调整,它通过编写状态机完成需要的功能。当缓存控制模块接收图像数据的写入,就会将图像数据转化为64bit的数据,例如写入的图像像素数据为16bit或24bit的数据等等,在缓存控制模块就将几个连续的数据通过转化和拼接的方式组成64bit的数据。同时由于多个数据拼接后,为了避免数据传输的混乱,它们的时钟信号也要随着做出相应变化,我们在缓存控制模块调整时钟信号对应重组的64bit数据。最后将重组后的图像数据和及其对应的时钟信号同时传输给WR_FIFO模块。当缓存控制模块读出图像数据时,将产生读出数据信号控制从RD_FIFO模块读出64bit的图像数据到缓存控制模块,再经过数据拆分、重组等操作得到所需的不同位宽的数据,最后读写到外界。同时,缓存控制模块也对读出时钟进行对应的调整。为了适应不同位宽的图像数据的写入和读出,本方案在封装后会设置数据位宽参数可调,可以通过设置数据位宽参数来适应图像数据的写入和读出,例如需要写入16bit或24bit的图像数据,我们就可以调节参数来实现。

在上述技术方案的基础上,如图5所示,本发明的基于FPGA和DDR3SDRAM的可配置图像数据缓存系统工作过程为:

步骤1,存储控制模块从外界接收图像数据、时钟信号和写使能信号并将这些数据进行调整后写入到第一缓存模块。

该步骤中,缓存控制模块会接收外界传输来的图像数据input_data、写时钟信号wr_clk和写使能信号wr_en,但写入的图像数据可能有着不同的位宽,例如RGB24数据的位宽为24bit,RGB565的位宽为16bit,还有RGB555、RGB32等等,所以需要对它们进行调整以适合第一缓存模块WR_FIFO写入数据的位宽。

本方案中,由于需要可配置,所以可以设置需要的数据位宽,达到写入数据的要求。由于本实施例中WR_FIFO的写入数据位宽为64bit,而外界写入的图像数据达不到这么大,所以将几个连续的图像数据进行拼接,形成64bit的数据,同时写入WR_FIFO时钟也需要进行相应倍数的调整。例如外界写入24bit的图像数据,首先将其转化为32bit的数据,再将相邻的两个图像数据拼接成64bit,同时写数据时钟扩大为原来的两倍。写使能信号wr_en控制着缓存控制模块对图像数据的处理的开始。缓存控制模块写命令控制重组后的数据、时钟信号和使能信号传输到WR_FIFO,控制在WR_FIFO缓存,以便后期的异步时钟读数据操作。同时,满信号full=1会提醒外界,此时WR_FIFO写满了,停止往缓存系统写入数据;空信号empty=1表示缓存系统可以写入数据。

步骤2,第一缓存模块对写入存储控制模块的数据进行一级缓存;在外部存储模块准备好之后,存储控制模块从第一缓存模块中读取数据并存储到外部存储模块中。

第一缓存模块WR_FIFO将对缓存控制模块写入的数据进行缓存,为了适合外部存储模块写入512bit数据,WR_FIFO模块使用的是异步FIFO,本方案直接调用Xilinx FPGA已有的FIFO IP模块,设置写入数据位宽为64bit、读出数据位宽为512bit。当外部存储模块初始化完成后,开始接收写入数据,存储控制模块产生读WR_FIFO数据的命令,读出的数据直接储存到外部存储模块中。存储控制模块作为连接第一缓存模块和外部存储模块的桥梁有着至关重要的作用,控制着外部存储模块的数据的读写。当WR_FIFO模块写入的数据量达到读出的要求,WR_FIFO会产生可读信号给存储控制模块,存储控制模块状态机会产生读WR_FIFO的使能信号和读时钟信号,从而控制从WR_FIFO读出数据。而且,外部存储模块写数据的时钟信号和WR_FIFO的读数据的时钟信号是相同的频率。

步骤3,外界需要读取图像数据时,存储控制模块首先从外部存储模块读取存储的数据,并将数据写入到第二缓存模块中进行二级缓存。

第二缓存模块RD_FIFO使用的也是异步FIFO,直接调用Xilinx FPGA已有的FIFOIP模块,设置写入数据位宽为512bit、读出数据位宽为64bit。外部存储模块储存数据之后给存储控制模块一个可读信号,存储控制模块将产生读外部存储模块的使能信号和读时钟信号,同时产生写入RD_FIFO的使能信号,读出的数据为512bit,直接写入到RD_FIFO进行缓存。缓存在RD_FIFO等待缓存控制模块对其进行读操作。外部存储模块读数据的时钟信号和RD_FIFO的写数据的时钟信号是相同的频率。

步骤4,当缓存控制模块接收到外界的读使能信号和时钟信号时,缓存控制模块从第二缓存模块中读取数据,并将数据中的图像数据进行调整并产生与其对应的读有效信号,将调整后的图像数据和读有效信号输出给外界。

数据缓存到第二缓存模块中之后,当外界输入读使能信号rd_en、时钟信号rd_clk,缓存控制模块编写读第二缓存模块RD_FIFO数据的使能命令和时钟信号,控制从RD_FIFO缓存模块读取出数据到缓存控制模块。

因为本实施例中设置RD_FIFO的读出数据的位宽为64bit,缓存控制模块将从RD_FIFO读出64bit的数据。由于后期的数据处理需要的数据位宽不同,所以需要对度读出的64bit数据进行拆分调整,转化为所需要的位宽。缓存控制模块对RD_FIFO读出的图像数据调整需要对应步骤1写入WR_FIFO模块的图像数据调整,例如步骤1写入WR_FIFO的64bit由两个24bit的图像数据转化成32bit后拼接组成的,所以RD_FIFO读出的64bit图像数据也会对应着两个图像数据,根据需求对它们进行拆分或重组。读RD_FIFO的时钟信号和写WR_FIFO的时钟信号是相同的频率。缓存控制模块输出调整后的图像数据的同时也会产生与调整后的数据对应的读有效信号rd_valid,图像数据与读有效信号一同输出到外界。如果缓存系统为空时,empty输出为1。

综上所述,视频图像数据和时钟信号从缓存控制模块写入到WR_FIFO模块进行第一级缓存;存储控制模块再控制从WR_FIFO模块读取数据储存到外部存储模块;然后存储控制模块控制从外部存储模块读出储存的数据,写入到RD_FIFO进行第二级缓存;接着,缓存控制模块控制从RD_FIFO缓存模块读取出数据到缓存控制模块,缓存控制模块将图像数据进行调整并产生对应的读有效信号,将这些配置数据输出给外界。

以上的实现都是基于FPGA采用vivado、ise等硬件平台工具进行设计,FPGA设计流程如图4所示。本方案使用硬件平台工具将以上的功能模块全部封装起来,成为一个大容量的缓存系统。由于采用的是1GB的DDR3芯片,所以封装后的系统的容量达到1GB比普通的FIFO、RAM等等的内存更大,可以缓存更高的分辨率、帧频的视频数据。在封装模块中进行参数设计,封装后的模块可以根据自己需要进行设置参数,达到可配置的效果。输出端口如图5所示。没有了繁琐的端口,极大缩小了开发的工作量。

11页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:安全系统单芯片及其操作方法

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类