最近公司承接了一个车载视频拼接的项目,该项目利用到了LVDS高速接口和DDR3接口,摄像头采集的视频图像数据须要先存入DDR3中然后与通过LVDS传输的主机视频数据进行拼接输出,终极在屏幕上显示画中画的效果。在调试DDR3的过程中,我有一些利用心得,特分享给大家。
在之前的文章中我已经先容过Lattice DDR3的IP核天生利用方法,以及接口旗子暗记。大概有许多人不是很明白,明明有DDR3的IP核,为什么还要添加这么一个接口模块,添加了这么一个接口模块紧张是用来做什么,须要它设计哪些旗子暗记?

要想办理这些疑问,我们就须要先搞清楚DDR3 IP核究竟是用来做什么的。首先我们先明白这样一个观点:DDR3是一个FPGA片外的一个设备,就像我们用FPGA掌握led灯的亮灭一样,我们通过引脚将FPGA与led灯连接起来,并且引脚旗子暗记是用工程中设置的输入输出来掌握。也便是说,虽然一个工程中有许多个模块,每个模块间又有各种各样的输入输出,但是这些旗子暗记都只是在FPGA内部,由FPGA产生并掌握的内部旗子暗记,工程真正的输入输出是FPGA外部器件通过引脚连接通报的旗子暗记。若我们利用FPGA掌握外设接口事情,最最少须要有一个输入时钟(由FPGA外部晶振产生)以及与外设相连的输出旗子暗记(有的情形下没有异步复位输入也是可以事情的),那么这个时钟以及输出旗子暗记便是FPGA的I/O口。同样的,在我们调试DDR3的过程中,我们须要的I/O便是时钟以及复位旗子暗记,还有便是与DDR3硬件的连接处I/O口。我们先来看一下数据手册上DDR3 IP核掌握框图,如下所示。
图1 DDR3掌握框图
图中用红线标记起来的地方便是FPGA与外部DDR3通过引脚连接的接口旗子暗记,如果我们通过FPGA内部产生数据并将其送入DDR3中后读出,便是通过这些引脚来传输旗子暗记的。我们利用SDRAM进行存储,是直接掌握这些输出旗子暗记如CAS、RAS、CKE等掌握SDRAM读写以及其他各操作的,如下图便是SDRAM的输出掌握旗子暗记,通过FPGA内部设计CS、RAS、CAS、WE这些旗子暗记,可以让SDRAM实现对应的操作。比如我们设计一个SDRAM读操作,那么我们就须要设计CS、RAS、CAS、WE分别为0、1、0、1,SDRAM通过引脚吸收到这些旗子暗记,便会产生对应的操作,即打开一个新的列地址并开始一个新的突发读操作。
图2 SDRAM输出掌握指令
与设计SDRAM接口不同的是,我们在利用DDR3时,是不须要我们亲自设计这些输出旗子暗记, 由于我们调用的DDR3 IP核已经帮我们内部封装好了这些指令,我们须要设计的是输入IP核的那部分接口旗子暗记,来见告IP核我们想让DDR3进行事情的模式以及须要DDR3进行的操作。在设计这个接口模块的时候,我们须要设计的便是图1左侧接口的那部分旗子暗记,各旗子暗记的功能以及时序在数据手册上有详细的解释(在我前面的文章中也有详细的先容),这须要我们一边对照着数据手册一边进行设计,详细的设计方法我将会在接下来的文章中连续先容。
明德扬(MDY)除了承接项目外,还可为客户供应FPGA芯片、电源芯片、AD芯片等元器件,可找我们理解。






