本发明涉及大容量ccd图像数据存取技术领域,特别是涉及一种突发模式的sdram存取控制系统及控制方法。
背景技术:
目前,在大容量ccd图像数据存取技术领域中,对于存储芯片同步动态随机存储器(synchronousdynamicrandomaccessmemory,sdram)的写操作、读操作以及刷新操作非常复杂繁琐,容易发生数据传输存储错误,进而影响整个ccd图像质量。
技术实现要素:
基于此,有必要针对现有的大容量ccd图像数据存取技术存在的问题,提供一种突发模式的sdram存取控制系统及控制方法。
为解决上述问题,本发明采取如下的技术方案:
一种突发模式的sdram存取控制系统,该系统包括sdram写入控制模块、sdram主控模块、sdram芯片、sdram读出控制模块和sdram刷新控制模块;
sdram写入控制模块接收数据源传来的数据,并将接收的数据传输给sdram主控模块,sdram主控模块将数据存储于sdram芯片;
当数据目的地需要获取数据时,sdram读出控制模块通过sdram主控模块读取sdram芯片中的数据,并将读取的数据传输给数据目的地;
sdram刷新控制模块通过sdram主控模块对sdram芯片进行刷新。
相应地,本发明还提出一种突发模式的sdram存取控制方法,该方法包括以下步骤:
步骤一:sdram主控模块不间断监测sdram刷新控制模块是否发来刷新请求,若是,则sdram刷新控制模块通过sdram主控模块对sdram芯片进行刷新,否则执行步骤二;
步骤二:sdram主控模块不间断监测写入缓存控制子模块是否发来写数据请求和读出缓存控制子模块是否发来读取数据请求,若监测到写入缓存控制子模块和读出缓存控制子模块中的任意一个发来请求,则执行步骤三,否则返回步骤一;
步骤三:若sdram主控模块仅监测到写入缓存控制子模块发来写数据请求,则执行步骤四;若sdram主控模块监测到读出缓存控制子模块发来读取数据请求,则执行步骤五;
步骤四:写入缓存控制子模块将数据源传来的数据进行拼接并缓存于第一缓存子模块,再将填充数据缓存于第一缓存子模块,第一缓存子模块将缓存的数据和填充数据以整页突发模式写入sdram芯片中;
步骤五:读出缓存控制子模块将数据以整页突发模式从sdram芯片中读出,再将有效数据缓存于第二缓存子模块,第二缓存子模块将缓存有效数据输出至数据目的地。
与现有技术相比,本发明具有以下有益效果:
本发明对每种操作采用模块化处理,使得程序易于维护修改,实现了大容量ccd图像数据存储芯片sdram高可靠性和高效率的控制方式,大幅度提升了系统的性能。
附图说明
图1为本发明一种突发模式的sdram存取控制系统的结构示意图;
图2为ccd_4720探测器的通信协议示意图;
图3为本发明一种突发模式的sdram存取控制方法的流程示意图。
具体实施方式
下面将结合附图及较佳实施例对本发明的技术方案进行详细描述。
在其中一个实施例中,如图1所示,本发明公开一种突发模式的sdram存取控制系统,该系统包括sdram写入控制模块1、sdram主控模块2、sdram芯片3、sdram读出控制模块4和sdram刷新控制模块5。
具体地,sdram写入控制模块1接收数据源6传来的数据,数据源6考可以选用e2v公司的ccd_4720探测器,该ccd探测器采用四线制输出方式,即帧同步信号、行同步信号、时钟信号以及ccd图像数据,如图2所示,时钟信号采用40兆赫兹的频率,像素是1034行×1072列,视频采集芯片选用ad9814,ad9814数据位宽为14bit,为了操作方便在ad9814数据前面补充两位零,使其输出位宽为16bit;sdram写入控制模块1将接收的数据传输给sdram主控模块2,sdram主控模块2将数据存储于sdram芯片3,sdram芯片3可以选用3d_plus公司的3dsd1g32vs2141;
当数据目的地7需要获取数据时,sdram读出控制模块4通过sdram主控模块2读取sdram芯片3中的数据,并且sdram读出控制模块4将读取的数据传输给数据目的地7,数据目的地7可以为图像显示系统等。
sdram刷新控制模块5通过sdram主控模块2对sdram芯片3进行刷新操作。
本实施例所提出的一种突发模式的sdram存取控制系统对每种操作采用模块化处理,使得程序易于维护修改,实现了大容量ccd图像数据存储芯片sdram高可靠性和高效率的控制方式,大幅度提升了系统的性能。
进一步地,本实施例一种突发模式的sdram存取控制系统中的sdram写入控制模块1包括写入缓存控制子模块1-1和第一缓存子模块1-2,其中第一缓存子模块1-2可以选用32bit×1024的fifo存储器。当数据源6拍摄完成后,数据源6将数据传输给写入缓存控制子模块1-1,写入缓存控制子模块1-1接收数据源6传来的数据并向sdram主控模块2发出写数据请求,当写入缓存控制子模块1-1接收到sdram主控模块2反馈的写数据允许信号后,写入缓存控制子模块1-1将接收的数据缓存到第一缓存子模块1-2,第一缓存子模块1-2通过sdram主控模块2将数据存储于sdram芯片3。对大容量ccd图像数据存储芯片sdram的写操作,本实施例采用询问-应答的方式,防止程序出现时序错误。
进一步地,本实施例一种突发模式的sdram存取控制系统中的sdram读出控制模块4包括读出缓存控制子模块4-1和第二缓存子模块4-2,其中第二缓存子模块4-2可以选用16bit×2048的fifo存储器。读出缓存控制子模块4-1向sdram主控模块2发出读取数据请求,当读出缓存控制子模块4-1接收到sdram主控模块2反馈的读取数据允许信号后,读出缓存控制子模块4-1通过sdram主控模块2读取sdram芯片3中的数据,并且读出缓存控制子模块4-1将读取的数据缓存到第二缓存子模块4-2,第二缓存子模块4-2将数据输出至数据目的地7。对大容量ccd图像数据存储芯片sdram的读操作,本实施例采用询问-应答的方式,防止程序出现时序错误。
进一步地,sdram刷新控制模块5向sdram主控模块2发出刷新sdram芯片3的请求,当sdram刷新控制模块5接收到sdram主控模块2反馈的刷新允许信号后,sdram刷新控制模块5通过sdram主控模块2对sdram芯片3进行刷新。对大容量ccd图像数据存储芯片sdram的刷新操作,本实施例采用询问-应答的方式,防止程序出现时序错误。
进一步地,sdram写入控制模块1、sdram主控模块2、sdram读出控制模块4和sdram刷新控制模块5均在下位机实现,下位机可以选用xilinx公司的xqr2v3000。
在另一个实施例中,如图3所示,本发明公开一种基于上述突发模式的sdram存取控制系统的控制方法,该方法包括以下步骤:
步骤一:sdram主控模块2不间断监测sdram刷新控制模块5是否发来刷新请求,若是,则sdram刷新控制模块5通过sdram主控模块2对sdram芯片3进行刷新,否则执行步骤二;
步骤二:sdram主控模块2不间断监测写入缓存控制子模块1-1是否发来写数据请求和读出缓存控制子模块4-1是否发来读取数据请求,若监测到写入缓存控制子模块1-1和读出缓存控制子模块4-1中的任意一个发来请求,则执行步骤三,否则返回步骤一;
步骤三:若sdram主控模块2仅监测到写入缓存控制子模块1-1发来写数据请求,则执行步骤四;若sdram主控模块2监测到读出缓存控制子模块4-1发来读取数据请求,则执行步骤五;
步骤四:写入缓存控制子模块1-1将数据源6传来的数据进行拼接并缓存于第一缓存子模块1-2,再将填充数据缓存于第一缓存子模块1-2,第一缓存子模块1-2将缓存的数据和填充数据以整页突发模式写入sdram芯片3;
步骤五:读出缓存控制子模块4-1将数据以整页突发模式从sdram芯片3中读出,再将有效数据缓存于第二缓存子模块4-2,第二缓存子模块4-2将缓存有效数据输出至数据目的地7。
具体地,在本实施例中的步骤一中,sdram主控模块2不间断监测sdram刷新控制模块5是否发来刷新请求,如果监测到sdram刷新控制模块5发来刷新请求,那么sdram刷新控制模块5通过sdram主控模块2对sdram芯片3进行刷新,否则执行步骤二。
当数据源6(如ccd_4720探测器)拍摄完成后,数据源6将图像数据逐行发送给写入缓存控制子模块1-1,此时,写入缓存控制子模块1-1会向sdram主控模块2发送写数据请求。
当数据目的地7需要图像数据时,读出缓存控制子模块4-1会向sdram主控模块2发送读取数据请求。
在步骤二中,sdram主控模块2不间断监测写入缓存控制子模块1-1是否发来写数据请求和读出缓存控制子模块4-1是否发来读取数据请求,若监测到写入缓存控制子模块1-1和读出缓存控制子模块4-1中的任意一个发来请求,则执行步骤三;如果sdram主控模块2没有监测到写入缓存控制子模块1-1发来写数据请求和读出缓存控制子模块4-1发来读取数据请求,那么返回步骤一。
在步骤三中,如果sdram主控模块2仅监测到写入缓存控制子模块1-1发来的写数据请求,而没有监测到读出缓存控制子模块4-1发来读取数据请求,那么执行步骤四,即写入缓存控制子模块1-1将数据源6传来的数据进行拼接并缓存于第一缓存子模块1-2,写入缓存控制子模块1-1再将填充数据缓存于第一缓存子模块1-2,第一缓存子模块1-2将缓存的数据和填充数据以整页突发模式写入sdram芯片3。下面仅以数据源6为ccd_4720探测器为例进行说明:写入缓存控制子模块1-1将数据源6的视频采集芯片ad9814输出的16bit信号拼接为32bit并缓存于第一缓存子模块1-2,当ccd_4720探测器一行1072个像素都缓存于第一缓存子模块1-2后,写入缓存控制子模块1-1将488个32bit零值(即填充数据)缓存于第一缓存子模块1-2,第一缓存子模块1-2再将缓存的数据和填充数据以整页突发模式写入sdram芯片3的一行1024个32bit存储单元中,重复执行步骤一到步骤四,可将ccd_4720探测器拍摄的整幅图像1034行*1072列存储于sdram芯片3中。
如果sdram主控模块2仅监测到读出缓存控制子模块4-1发来的读取数据请求或者sdram主控模块2同时监测到写入缓存控制子模块1-1发来的写数据请求和读出缓存控制子模块4-1发来的读取数据请求,那么执行步骤五,即读出缓存控制子模块4-1将数据以整页突发模式从sdram芯片3中读出,再将有效数据缓存于第二缓存子模块4-2,第二缓存子模块4-2将缓存有效数据输出至数据目的地7。下面也仅以数据源6为ccd_4720探测器为例进行说明:读出缓存控制子模块4-1将数据以整页突发模式从sdram芯片3中读出来,然后读出缓存控制子模块4-1再将536个32bit的ccd_4720探测器有效数据变成1072个16bit数据缓存于第二缓存子模块4-2,最后第二缓存子模块4-2将1072个16bit的ccd_4720探测器一行图像数据输出给数据目的地7,重复执行步骤一、步骤二、步骤三和步骤五,可将ccd_4720探测器拍摄的整幅图像1034行×1072列从sdram芯片3中读取出来,并传输给数据目的地7。
进一步地,如图3所示,在步骤一中,当sdram主控模块2监测到sdram刷新控制模块5发来的刷新请求为系统空闲刷新请求时,sdram刷新控制模块5通过sdram主控模块2对sdram芯片3进行单次刷新,刷新后,sdram主控模块2继续不间断监测sdram刷新控制模块5是否发来刷新请求。
进一步地,如图3所示,在步骤一中,当sdram主控模块2监测到sdram刷新控制模块5发来的刷新请求为非系统空闲刷新请求时,sdram刷新控制模块5通过sdram主控模块2对sdram芯片3进行1024次刷新,刷新后,sdram主控模块2继续不间断监测sdram刷新控制模块5是否发来刷新请求。
本发明对大容量ccd图像数据存储芯片sdram的各种操作,比如写操作、读操作以及刷新等,采用询问-应答的方式,防止程序出现时序错误,同时,对每种操作采用的模块化处理,使得程序易于维护修改,实现了大容量ccd图像数据存储芯片sdram高可靠性和高效率的控制方式,大幅度提升了系统的性能。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。