例说FPGA连载41:DDR控制器集成与读写测试之DDR2 IP核接口描述
特权同学,版权所有
配套例程和更多资料下载链接:
http://pan.baidu.com/s/1c0nf6Qc
如图4.13所示,这是DDR2 IP核与外部接口的功能框图。
图4.13 DDR IP核功能框图
● 图左侧为用户逻辑(User logic),它与DDR2 IP核的接口通常命名为“local_*”;图右侧为FPGA外部的DDR2芯片,它与DDR2 IP核的接口通常命名为“mem_*”。
● DDR2 IP核内部分两个部分,即图示的“ALTMEMPHY”和“存储控制器(Memory Controller)”,正如图中所示,它们各有分工。存储控制器产生DDR2芯片实际读写操作需要的时序;ALTMEMPHY有两部分功能,一个功能是对DDR2做自动校正(Aoto-Calibration),另一个功能是实现DDR2所需的物理接口。
● DDR2的自动校正是在初始化阶段进行的,此时ALTMEMPHY断开用户逻辑和存储控制器之间的接口,ALTMEMPHY产生存储控制器所需的DDR2读写控制,直到校正完成。在初始化过后,ALTMEMPHY将不再需要控制存储控制器,而是一直保持用户逻辑和存储控制器的连通。
● 另外,图中未明确示意,实际上这个DDR2 IP核还包括了一个PLL,用于时钟的管理。
现在我们来看ddr2_controller模块例化的接口。这里可以分为三大类,第一类为系统类接口,主要是一些系统或PLL的复位、时钟等接口;第二类为带“local_*”的接口,是DDR2 IP核与用户逻辑间的接口;第三类为带“mem_*”的接口,是DDR2 IP核与FPGA外部DDR2芯片的接口。
对于第一类接口,功能描述如表4.1所示。
表4.1 DDR2 IP核系统接口列表
信号名 | 方向 | 功能描述 |
global_reset_n | Input | IP核的全局异步复位信号,低电平有效。该信号有效时,将使得ALTMEMPHY(包括PLL)都进入复位状态。 |
pll_ref_clk | Input | PLL的输入参考时钟信号。 |
soft_reset_n | Input | IP核的全局异步复位信号,低电平有效。该信号只能复位ALTMEMPHY,而不能复位PLL。 |
aux_half_rate_clk | Output | phy_clk时钟信号的引出,时钟频率与phy_clk一样,可用于用户逻辑使用。 |
aux_full_rate_clk | Output | phy_clk时钟信号的引出,时钟频率是phy_clk的两倍,可用于用户逻辑使用。 |
reset_request_n | Output | 复位输出,用于指示用户逻辑DDR2 IP核的内部PLL输出locked还未完成。 |
phy_clk | Output | ALTMEMPHY产生供用户逻辑使用的半速率时钟信号。所有输入和输出到ALTMEMPHY的用户逻辑接口信号,都与此时钟同步。 |
reset_phy_clk_n | Output | 与phy_clock时钟域相关的复位信号,低电平有效。可用此时钟复位所有DDR IP核和用户逻辑接口相关的信号。 |
注:方向是相对DDR2 IP核而言的。
对于第二类带“local_*”的用户逻辑接口,功能描述如表4.2所示。
表4.2 DDR2 IP核本地接口列表
信号名 | 方向 | 功能描述 |
local_address[22:0] | Input | 本地逻辑对DDR2 IP核的数据读出或写入地址。 |
local_write_req | Input | 本地逻辑对DDR2 IP核的数据写入请求信号,高电平有效。 |
local_read_req | Input | 本地逻辑对DDR2 IP核的数据读出请求信号,高电平有效。 |
local_burstbegin | Input | 本地逻辑对DDR2 IP核的数据突发传输起始标志信号。多个数据传输时,该信号在 local_write_req或local_read_req信号拉高的第一个时钟周期时保持高电平,用于指示传输的起始。 |
local_wdata[63:0] | Input | 本地逻辑写入到DDR IP核的数据总线信号,每次写入4个16bit数据。 |
local_be[7:0] | Input | 读写数据字节使能标志信号。Local_be的每个位对应local_wdata或local_rdata的8bit数据是否有效。 |
local_size[2:0] | Input | 突发传输的有效数据数量,即传输多少个local_wdata或local_rdata数据。 |
local_ready | Ouput | DDR2 IP核输出的当前读写请求已经被接收的指示信号,高电平有效。 |
local_rdata[63:0] | Output | DDR IP核输出的本地逻辑读出数据总线信号,每次读出4个16bit数据。 |
local_rdata_valid | Output | local_rdata数据总线输出有效信号,高电平有效。 |
local_refresh_ack | Input | 本地逻辑输入到DDR IP核的刷新请求信号。 |
local_init_done | Output | ALTMEMPHY完成DDR存储控制器的自动校准操作,拉高该信号。该信号可以作为用户逻辑的复位信号。 |
注:方向是相对DDR2 IP核而言的。
第三类是带“mem_*”的DDR2芯片接口,前面已经给出基本的功能描述,这里不再赘述。DDR2的在我们设计中例化的接口映射代码如下所示。
////////////////////////////////////////////////////
//DDR2 controller and phy
- 基于FPGA的片上系统的无线保密通信终端(02-16)
- 基于Virtex-5 FPGA设计Gbps无线通信基站(05-12)
- 基于FPGA的DVI/HDMI接口实现(05-13)
- 基于ARM的嵌入式系统中从串配置FPGA的实现(06-09)
- 采用EEPROM对大容量FPGA芯片数据实现串行加载(03-18)
- 赛灵思:可编程逻辑不仅已是大势所趋,而且势不可挡(07-24)