一种基于FPGA片上RAM模拟实现DDR3突发的控制器以及方法与流程

文档序号:17630356发布日期:2019-05-11 00:04阅读:938来源:国知局
一种基于FPGA片上RAM模拟实现DDR3突发的控制器以及方法与流程

本发明涉及fpga系统中模拟ddr3sram存储器的方法,特别涉及一种使用fpga片上ram模拟实现ddr3突发的控制方法。



背景技术:

ddr3sdram存储器即双倍数据速率同步动态随机存取存储器,以下简称ddr3存储器。由于其有更快的传输速率,更大的容量以及更低的电源功耗等优势,因此ddr3存储器在计算机、电子通信等领域得到了广泛应用。fpga现场可编程门阵列,由于其具有高速的并行能力,在通信,图像处理等领域得到广泛应用,因为可处理的数据量大且复杂,fpga常和ddr3存储器结合使用。但由于ddr3存储器的集成度高,它内部控制也相应复杂,在上电工作时,它首先要进行初始化操作,而初始化的时间很长,特别体现在基于fpga系统平台仿真时,最少需要大概10分钟左右的初始化时间,而这个时间对于工程师在调试仿真使用了ddr3存储器的一些功能模块时是不能容忍的。如果是全流程调试仿真还能够接受,但是在进行一些单一的算法功能仿真验证时如果用到ddr3,这个时间是不能接受的。此外,对于ddr3存储器的初学者来说也是如此,因为他们只是使用它进行一些简单的读写,而在仿真时却需要等待至少10分钟时间。因此,在使用到ddr3的基本功能,同时减少ddr3在仿真时的初始化时间很有必要。



技术实现要素:

针对ddr3初始化时间过长的问题技术问题,本发明提出一种基于fpga片上ram模拟实现ddr3突发的控制器及方法。

在一个实施例中,本发明提出了一种基于fpga片上ram模拟实现ddr3功能的控制器,其特征在于,所述fpga包括单端口sp_ram(1),sp_ramip核(2)、ddr3读写状态控制模块(3)、写数据缓存(4)和读数据缓存(5);其中,所述sp_ramip核(2)对所述单端口sp_ram(1)进行调用和控制,所述sp_ramip核(2)与所述ddr3读写状态控制模块(3)交互数据,所述ddr3读写状态控制模块(3)分别与写数据缓存(4)和读数据缓存(5)连接;

其中,所述控制器将外部连续输入的8个数据(7)进行拼接形成一个合成数据(8);将所述合成数据(8)写入sp_ram(1)的一个开始地址中;例化所述sp_ramip核(2),所述sp_ramip核(2)利用所述ddr3读写状态控制模块(3)的控制信号控制sp_ram(1)的数据读写状态,采用ddr3的读写控制时序对sp_ram(1)进行数据读写控制。

根据本发明的控制器,优选的,在例化所述sp_ramip核(2)时,

sp_ramip核(2)各接口信号与ddr3migip核各接口信号的对应关系如下:

时钟信号clka与用户时钟信号ui_clk对应,写使能信号wea与用户层读写控制信号app_cmd对应,地址信号addra与用户层地址信号app_addr对应,输入数据dina与用户层写入数据app_wdf_dat对应,输出数据douta与用户层读取数据app_rd_dat对应;

sp_ramip核(2)的接口信号包括:clka信号、wea信号、addra信号、输入数据dina和输出数据douta;

ddr3migip核的接口信号包括:用户时钟信号ui_clk、用户层读写控制信号app_cmd、用户层地址信号app_addr、用户层写入数据app_wdf_dat和用户层读取数据app_rd_dat对应。

根据本发明的控制器,优选的,在例化所述sp_ramip核(2)时,

在单端口sp_ram(1)为idle闲置状态时,时钟信号clka为用户时钟信号ui_clk,sp_ramip核(2)的使能信号ena、写使能信号wea、地址信号addra、输入数据dina均为0。

根据本发明的控制器,优选的,在例化所述sp_ramip(2)核时,在单端口sp_ram(1)为数据写入状态(15)时,sp_ramip核(2)的使能信号ena为ddr3migip核的各用户层信号的逻辑与结果,即ena=app_rdy&app_wdf_rdy&app_en&app_wdf_wren,写使能信号wea为写使能有效。

根据本发明的控制器,优选的,在例化所述sp_ramip核(2)时,在单端口sp_ram(1)为读取状态(16)时,sp_ramip核(2)各接口信号与ddr3migip核各接口信号对应关系如下:

sp_ramip核(2)的使能信号ena为ddr3migip核的用户层信号的逻辑与结果,即ena=app_rdy&app_en,写使能信号wea为写使能信号有效。

根据本发明的控制器,优选的,所述写数据缓存(4)对单端口sp_ram(1)的写入数据(4)进行缓存,读数据缓存(5)对单端口sp_ram(1)的读取数据进行缓存。

在又一实施例中,本发明提出了一种基于fpga片上ram模拟实现ddr3功能的控制方法,其特征在于,所述fpga包括单端口sp_ram(1)、sp_ramip核(2)、ddr3读写状态控制模块(3)、写数据缓存(4)和读数据缓存(5);其中,所述sp_ramip核(2)对所述单端口sp_ram(1)进行调用和控制,所述sp_ramip核(2)与所述ddr3读写状态控制模块(3)交互数据,所述ddr3读写状态控制模块(3)分别与写数据缓存(4)和读数据缓存(5)连接;所述方法包括:

步骤1),将外部连续输入的8个数据(7)进行拼接形成一个合成数据(8);

步骤2),将所述合成数据(8)写入所述单端口sp_ram(1)的一个开始地址中;

步骤3),例化所述sp_ramip核(2),所述sp_ramip核(2)利用读写状态控制模块(3)的控制信号控制sp_ram(1)的数据读写状态,利用ddr3的读写控制时序对sp_ram(1)的数据读写进行控制。

根据本发明的方法,优选的,所述步骤3)中,在例化所述sp_ramip核(2)时,

sp_ramip核(2)各接口信号与ddr3migip核各接口信号对应关系如下:

时钟信号clka与用户时钟信号ui_clk对应,写使能信号wea与用户层读写控制信号app_cmd对应,地址信号addra与用户层地址信号app_addr对应,输入数据dina与用户层写入数据app_wdf_dat对应,输出数据douta与用户层读取数据app_rd_dat对应;

sp_ramip核(2)的接口信号包括:clka信号、wea信号、addra信号、输入数据dina和输出数据douta;

ddr3migip核的接口信号包括:用户时钟信号ui_clk、用户层读写控制信号app_cmd、用户层地址信号app_addr、用户层写入数据app_wdf_dat和用户层读取数据app_rd_dat对应。

根据本发明的方法,优选的,所述步骤3)中,在例化所述sp_ramip核(2)时,

在例化所述sp_ramip核(2)时,

在单端口sp_ram(1)为idle闲置状态时,时钟信号clka为用户时钟信号ui_clk,sp_ramip核(2)的使能信号ena、写使能信号wea、地址信号addra、输入数据dina均为0;

在例化所述sp_ramip(2)核时,

在单端口sp_ram(1)为数据写入状态(15)时,sp_ramip核(2)的使能信号ena为ddr3migip核的各用户层各信号的逻辑与结果,即ena=app_rdy&app_wdf_rdy&app_en&app_wdf_wren,写使能信号wea为写使能有效;

在例化所述sp_ramip核(2)时,

在单端口sp_ram(1)为为读取状态(16)时,sp_ramip核(2)各接口信号与ddr3migip核各接口信号对应关系如下:

sp_ramip核(2)的使能信号ena为ddr3migip核的用户层信号的逻辑与结果,即ena=app_rdy&app_en,写使能信号wea为写使能信号有效。

根据本发明的方法,优选的,所述写数据缓存(4)对单端口sp_ram(1)的写入数据(4)进行缓存,读数据缓存(5)对单端口sp_ram(1)的读取数据进行缓存。

本发明的技术方案使用fpga片上单端口ram存储器sp_ram模拟实现ddr3的突发功能,这样在仿真有ddr3的功能模块时就可以使用本发明的模拟ddr3功能的控制器和控制方法来进行仿真,从而减少到几乎没有任何初始化时间,在仿真时直接可以观察我们调用ddr3该模块的功能正确与否,减少了等待时间,提高了工程师的工作效率。

附图说明

图1是使用单端口ram模拟实现ddr3的控制器结构图;

图2是本控制器中用来模拟ddr的数据处理方法;

图3是本控制器中模拟实现ddr3的地址和数据对应关系;

图4是ddr3mig核和用户模块的接口交互图;

图5是单端口ram_ip核和用户模块的接口交互图;

图6是ddr3核接口信号和sp_ram核接口信号在读写状态的对应情况图。

具体实施方式

以下结合附图对本发明的具体实施方式做出详细说明。

本发明中,使用单端口ram(sp_ram)存储器模拟实现ddr3存储器的控制器的总体结构图如下图1所示,这里利用sp_ram存储器1来代替ddr3存储器,sp_ram存储器1被封装在fpga芯片6上。

本实施例中,使用xilinx官方封装的ip核sp_ram核2来实现对sp_ram存储器1的调用控制,只需要编写ddr3读写状态控制机模块3就可实现对数据的读写。这里,使用ddr3读写状态控制模块3而不是sp_ram读写控制模块的原因是sp_ram存储器1的读写是按照ddr3的读写时序来进行控制的。这样加强了本发明ddr3模拟控制器的可移植性。

此外,为了适应跨时钟域的情况,本实施例还增加了写数据fifo模块4和读数据fifo模块5来实现数据的缓存,以实现跨时钟域的数据传输。

图1是本控制器的总体结构图,下面将结合附图进一步说明:如何实现ddr3的突发功能,以及如何使用ddr3的读写时序来实现对本发明模拟控制器的控制。

首先,结合附图2和图3对如何实现ddr3的突发功能进行说明。目前的ddr3存储器都是采用8位地址的突发模式,即给出一个初始地址m,就可实现对加上该地址后的连续8位地址中的数据进行读写。本模拟控制器中,为了实现这一突发功能,首先对外部输入数据进行如图2的数据处理,即,将从外部连续输入的8个数据7进行拼接,拼接成一个数据8之后再写到sp_ram存储器1中。图3显示了本模拟控制器中地址和数据的对应关系,图3中框10表示了本模拟控制器实现的地址和数据的对应关系,例如,在开始地址0中存储了一组数据{data_in_0,data_in_1,data_in_2,…,data_in_7},即把图2中拼接后的数据8存到sp_ram存储器1一个地址中,而不是图3中框11显示的分别存到8个地址。总的来说就是,将外部输入的数据7中的每8个数据拼接成一个数据8,然后将拼接后的数据8写到sp_ram存储器1的开始地址中。这样,在需要读取的时候,只需要产生相应的开始地址,就可以读出数据。

以下说明如何利用ddr3的读写时序来实现对本发明模拟控制器中数据的读写。首先,从图4可知,通过调用ddr3migip核,只需要控制几个输入接口信号12就可实现对ddr3进行读写控制。

图4是ddr3migip核和用户控制模块的接口交互连接示意图,图5显示的是调用sp_ramip核模块和用户控制模块的接口信号,对比图4和图5可以发现两者需要控制的信号类似。而图6则显示了ddr3migip核的接口信号和sp_ramip核的接口信号在读写时的对应情况。

下面对xilinx平台上ddr3migip核的接口信号进行解释:

ui_clk用户时钟:这个时钟频率的大小和phytocontrollerclockratio有关,当选择为2:1模式是,那么用户层的ui_clk就是clockperiod的一半。用户时钟很关键,它为用户读写地址,用户读写命令,用户读写使能(mig的用户层)提供了一个时域。

在用户层的接口中有如下接口信号:

控制线;

app_cmd--读写操作;

app_en--读写使能。

数据线

app_wdf_wren--标记写入的数据有效;

app_wdf_data--要写入的数据;

app_wdf_end--帧尾标志,因为是突发写操作,用此信号标记是各个完整的突发数据;

app_rd_data--读出来的数据;

app_rd_data_valid--读出来的数据有效位;

app_rd_data_end--标记着一个突发数据的到来。

地址线

app_addr--写或读的地址。

反馈信号线

app_rdy--核准备好信号;

app_wdf_rdy--核准备接受数据的信号。

在编写本模拟控制器的ddr3读写状态机时,首先应完全按照ddr3migip核的接口信号(即图4所示的信号)来编写读写时序模块,时序的状态跳转如图6所示。在idle闲置状态时,在ddr3读写状态控制机模块3中需要控制的信号12都为0,此时sp_ram的各个接口信号如13所示,也都为0。即,在fpga为idle状态时,sp_ram各接口的控制信号如下:时钟信号clka为用户时钟ui_clk,使能信号ena为0,写使能信号wea为0,地址信号addra为0,输入数据dina为0。

当图6中转换条件14满足时,就跳转到write状态,此时信号12和sp_ram各个接口信号如图6中的标记15所示,时钟信号clka为用户时钟ui_clk,使能信号ena为用户层信号的逻辑与结果,即ena=app_rdy&app_wdf_rdy&app_en&app_wdf_wren,写使能信号wea为用户层的写入信号app_cmd=write,即写使能信号有效,地址信号addra为用户层地址信号app_addr,输入数据dina为用户层写入数据app_wdf_dat,输出数据douta为用户层读取数据app_rd_dat。

而当进入到读状态时,此时信号12和sp_ram各个接口信号如标记16所示,时钟信号clka为用户时钟ui_clk,使能信号ena为用户层使能信号app_rdy&app_en,写使能信号wea为用户层的写入信号app_cmd=write,即写使能信号有效,地址信号addra为用户层地址信号app_addr,输入数据dina为用户层写入数据app_wdf_dat,输出数据douta为用户层读取数据app_rd_dat。

可见,除了在读写状态时的ena信号连接不一样,fpga的ddr3migip核与spramip核其它的信号连接都一样,因此为了实现利用ddr3的读写时序来进行读写模拟器的操作,先把图6中标记15和标记16进行合并,即只改变ena信号即可,把标记15和标记16中的ena信号进行或操作,其它的不变,然后在例化sp_ramip核时,按照合并后的信号进行连接,即可实现模拟控制器的读写操作。

即,在例化所述sp_ramip核时,在fpga为idle状态时,sp_ram各接口的控制信号如下:时钟信号clka为用户时钟ui_clk,使能信号ena为0,写使能信号wea为0,地址信号addra为0,输入数据dina为0。

在例化所述sp_ramip核时,在fpga为数据写入状态(15)时,所述sp_ram各接口的控制信号为:时钟信号clka为用户时钟ui_clk,使能信号ena为用户层信号的逻辑与结果,即ena=app_rdy&app_wdf_rdy&app_en&app_wdf_wren,写使能信号wea为用户层的写入信号app_cmd=write,即写使能信号有效,地址信号addra为用户层地址信号app_addr,输入数据dina为用户层写入数据app_wdf_dat,输出数据douta为用户层读取数据app_rd_dat。

在例化所述sp_ramip核时,在fpga为读取状态(16)时,所述sp_ram的各接口的控制信号为:时钟信号clka为用户时钟ui_clk,使能信号ena为用户层信号的逻辑与结果,即ena=app_rdy&app_en,写使能信号wea为用户层的写入信号app_cmd=write,即写使能信号有效,地址信号addra为用户层地址信号app_addr,输入数据dina为用户层写入数据app_wdf_dat,输出数据douta为用户层读取数据app_rd_dat。

通过选用xilinx公司旗下的kintex-7系列fpga芯片,并在ise开发环境中进行了工程建立,然后调用modelsim仿真软件做了测试,本模拟控制器在仿真时可以实现ddr3数据的突发功能。

本发明充分利用了sp_ram的功能特点——即通过单端口进行读写操作——这点和ddr3很相似,都同时只能进行读或者写操作,并且通过图4和图5可知,他们各自的ip核操作接口信号都很相近,因此选择sp_ram作为替代ddr3的选择。然后利用verilog编程语言,可以对输入数据进行拼接。因为ddr3的突发长度是8,所以这里将每8位数据进行拼接,然后将拼接得到的数据存储在每个地址信号的起始地址中,从而模拟实现了ddr3的读写突发。本发明模拟控制器的读写时序完全按照ddr3的读写时序来控制,因此增加了本模拟控制器的可移植性,即在进行ddr3功能模块的仿真时,使用本模拟控制器仿真,减少了仿真时间,然后在进行上板调试时,则使用真正的ddr3存储器,提高了工程效率。

所述基于fpga片上ram模拟实现ddr3功能的控制器及方法如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施方式方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,所述计算机程序在被处理器执行时,可实现上述各个方法实施方式的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

在本发明所提供的几个具体实施方式中,应该理解到,所揭露的硬件和方法,可以通过其它的方式实现。例如,以上所描述的计算机装置实施方式仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

另外,在本发明各个实施例中的各功能模块可以集成在相同处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在相同模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。

对于本领域技术人员而言,显然本发明实施例不限于上述示范性实施例的细节,而且在不背离本发明实施例的精神或基本特征的情况下,能够以其他的具体形式实现本发明实施例。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明实施例的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明实施例内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统、装置或终端权利要求中陈述的多个单元、模块或装置也可以由同一个单元、模块或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

最后应说明的是,以上实施方式仅用以说明本发明实施例的技术方案而非限制,尽管参照以上较佳实施方式对本发明实施例进行了详细说明,本领域的普通技术人员应当理解,可以对本发明实施例的技术方案进行修改或等同替换都不应脱离本发明实施例的技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1