altera-ddr2 sdram ip核参数设置及读写时序

altera-ddr2 sdram ip核参数设置及读写时序


2024年1月12日发(作者:)

1、Uniphy 整体框图:

2、存储控制器连接图

PHY的时钟与复位信号

1、 pll_ref_clk:PLL参考时钟输入。

2、 global_reset_n:全局复位信号,对PLL和PHY里的所有逻辑单元进行复位。

3、 soft_reset_n:软复位信号,对phy复位,不对PLL复位。当soft_reset_n为低时,输出的afi_reset_n信号也为低。

3、 各个模块间的接口信号

3、1控制器与用户接口间使用的Avalon相关信号线:

下表是本地接口信号,在altera例化的IP核里,本地用户接口使用的是avalon总线

➢ Local_addr:指的是用户接口端的地址线,位宽计算方法如下:

1) 当只使用1pcs 外部存储器时:

位宽=bank位宽+行位宽+列位宽-1;

2)当使用多片片外存储器时:

位宽=芯片位宽+bank位宽+行位宽+列位宽-1;

计算位宽时减1 是因为用户数据接口宽度是memory侧数据宽度的两倍(memory侧是在时钟的上升和下降沿都收发数据,而用户侧只在时钟的上升沿收发数据,假如用户读写数据的时钟频率与memory侧的数据频率相同,那么,在时钟上升沿来时,用户侧发送的数据位宽应是memory侧数据位宽的两倍)。

➢ local_be:字节使能信号(用于向控制器写数据时),与memory侧的DM(data

mask )信号作用一样,比如,当想使local_data的某8位数据无效,将local_be的对应位置0即可。

➢ local_burstbegin:本地突发开始信号,当avalon总线开始突发读写时,将此信号置位‘1’。(使用条件:本地接口是avalon总线,且memory侧的突发长度大于2)

➢ local_size:本地突发长度,即连续读或写的local_data个数。长度不能超过ddr ip核里配置的maximum avalon- mm burst length的长度。

➢ local_wdata:本地写数据。

➢ local_write_req:写请求信号。只有当local_ready信号为高时,才能发起写请求。

➢ local_rdata: 本地读数据。

➢ local_read_req:读请求信号。只有当local_ready信号为高时,才能发起读请求。

➢ local_rdata_valid:本地读数据有效标志,当其为高时,表示此时local_rdata 数据有效。

➢ local_ready:为‘1’时表示此时控制器可以接受读写请求信号。

➢ local_refresh_req:刷新控制器请求信号。

➢ local_refresh_ack:刷新请求确认标志,表示一次刷新完成标志。

➢ local_init_done:本地初始化memory完成标志。

➢ local_wdata_req:写数据请求信号。在avalon-mm模式时不使用该信号。

3、2controller 与PHY间的接口信号线

➢ 时钟与复位信号

afi_clk:AFI接口的所有数据变化都是与该时钟同步的。

➢ 地址和控制信号

➢ 写数据相关信号

➢ 读数据相关信号

➢ afi校准状态信号

➢ 跟踪管理信号

3、3 PHY与外部memory间的接口信号线

➢ ddr_dq:数据线接口,位宽是local_wdata,local_rdata的1/2(因为memory是双边沿读写数据)。

➢ ddr_dqs: 探测ddr_dq上的数据信号。读操作时,ddr_dqs边沿与读数据边沿对齐;写操作时,ddr_dqs边沿与写数据中间对齐。

➢ clk_to_sdram, clk_to_sdram_n:memory的差分时钟输入。

➢ ddr_a[]:memory的地址总线。

➢ ddr_ba[]:memory的bank地址总线。

➢ ddr_cas_n:memory列地址有效信号。

➢ ddr_cke[]:memory的时钟使能信号。

➢ ddr_cs_n[]:memory的片选信号。

➢ ddr_dm: data mask写数据到memory时,ddr_dq上的数据是否屏蔽。(ddr_dm为‘1’时,对应ddr_dq数据无效;为‘0’时数据有效)。

➢ ddr_odt:memory内部终结电阻器控制信号。(memory在内部集成了终结电阻,以减少反射的干扰信号)

➢ ddr_cas_n: memory行地址有效信号。ddr_we_n:memory写数据使能信号。

4、ddr2 sdram的half-rate ,full-rate读写时序。

➢ full-rate时:afi_clk与 mem_ck频率相同。avl_data 数据位宽是mem_data的2倍

➢ half-rate时:afi_clk是mem_ck频率的一半。avl_data 数据位宽是mem_data的4倍

4、1full-rate ddr2 sdram write时序

4、2half-rate ddr2 sdram write时序

4、3 full-rate ddr2 sdram read时序

4、4 half-rate ddr2 sdram read时序

5、altera例化ddr2 sdram ip核参数设置

首先肯定是在quartus ii里新建一个工程,然后选择tools->Megawizard Plug-in Manager选择创建一个新的IP核,然后在interface->external memory里找到ddr2 sdram 选中,命名。然后点击next就出来ddr2 ip核的配置界面。

fpga芯片选用的是Cyclone V :5CEFA5F23C8。速度等级是8

5.1 Interface Type

勾选此项表示使能硬核外部存储器接口。不勾选表示用逻辑单元去生成ddr2 ip核。

硬核与软核的区别。

1、硬核是固化在FPGA内部的专用硬件电路,而软核是用逻辑单元去构建的;

1、 硬核的可工作频率比软核更高;

2、 硬核的外接memory引脚只能用指定的引脚,而软核可以自己指定。

5.2 PHY Settings

➢ Speed_Grade: 8 (fpga芯片选用的是Cyclone V :5CEFA5F23C8。速度等级是8。

➢ Generate phy only: 勾选此选项的话,就只会生成PHY模块,不会生成控制模块。

➢ Memory clock frequency : memory工作的时钟频率,此值不能超过min{fpga芯片指定的工作频率,Memory device speed grade}。本工程中设置的Memory clock

frequency为200Mhz。

➢ PLL reference clock frequency: 25 Mhz 给 IP核锁相环 输入的时钟频率。

➢ Rate on Avalon-MM interface:有 Half 和Full两个选项。Half:指本地用户接口的时钟频率 afi_clk为memory侧时钟的1/2。Full: 则本地用户接口的时钟频率 afi_clk与memory侧时钟频率相同。

➢ Advanced PHY Settings

PLL,DLL,OCT sharing mode 设置其PLL,DLL,OCT是否输出给其他的UniPHY模块使用。

➢ Enable AFI half rate clock:表示使能输出AFI half rate clock,频率为AFI rate clock的一半

5、2 Memory Parameters

Memory的参数设置,根据memory的datasheet 设置。

➢ Memory vendor:选择memory的器件厂家,本工程选择Micron

➢ Memory format:选择memory的形式 ,本工程选择Discrete device

Discrete device: 分立器件。就是单片的memory

DIMM:Dual-Inline-Memory-Modules,即双列直插式存储模块。

Unbuffered DIMM: 不带缓存的内存,也就是说在内存条PCB上没有缓存(buffer)或寄存器(register)的内存条。这类内存条主要定位于桌面PC市场,是我们常见的低价内存模组。它的主要工作原理是所有的信号都是从内存控制器直通到DRAM芯片颗粒上,信号传输延迟小性能较高。但也正是这个原因Unbuffered DIMM并不如带寄存器的内存模组工作稳定,因而Unbuffered DIMM一般不在服务器上应用,可以应用在要求不高的桌面PC上。

Registered DIMM:

最常见的内存模块类型。RDIMM使用寄存器,从电力上将内存模块从剩余主板中隔离出来。积极的一方面是,只需更少的电力负载支持,系统能够填充更多RDIMM,支撑内存容量。不好的是缓冲组件增加了对内存转换的延迟,稍微降低了性能并增加了能耗需求。

➢ Memory device speed grade: memory的速度等级,根据memory手册选择,本工程选333.333Mhz

➢ Total Interface width:memroy数据总线(DQ)的宽度,本工程选择16位宽。

➢ DQ/DQS group size:指每一组DQS对应的DQ位宽。自动生成位8

➢ Number of DQS groups:DQS的组数,自动生成为2

➢ Number of chip selects: memory芯片的个数本工程用了1pcsmemroy,选择1

Number of clocks:memory使用的时钟个数。本工程为1。

Row address width:memory的行地址宽度,本工程为13。

Column address width:memory的列地址宽度,本工程为10。

Bank-addres width: memory的bank宽度。

Enable DM pins:使能memory的DM(data mask)pins 。

DQS # Enable: 使能DQS(DQ strobe)引脚。

Burst length: 设置memory的突发长度,即memory一次读写的数据(DQ)个数。

Read Burst Type: 设置突发读的方式 一般都是用Sequential。

Sequential:顺序读,即给一个初始地址,读的下一个数据的地址就是初始地址+1。

Interleaved:交叉模式。下面截图是美光ddr2 spec里Interleaved的工作模式。

DLL precharge power down:DLL在预充电下电时,DDL选择“fast exit”or “slow txit”,选择默认fast exit。

Memory CAS latency setting:指设置CAS(列地址选通脉冲)潜伏周期,从CAS与读取命令发出到第一个数据输出的时间。从memory datasheet查找,本处为4。

Output drive strength setting:输出驱动阻抗设置,选择默认的full。

Memory additive CAS latency setting:选择默认设置0。

ODT setting: 终结电阻值设置。

SRT Enable:刷新速率设置。0°到85°时选择1x refresh rate,大于85°选2X;此处选择1X。

5、3 Memory Timing

该部分主要是设置memory的一些时序参数,具体参数值可以查询memory对应的datasheet。或者从下图的Preset 里选择对应你使用的memory器件型号,双击就会设置好memory timing里的参数。

下面几个截图就是从美光memory 型号MICRON MT47H64M16HR-3IT里边查找到的时序参数。

tRP=15ns

tRCD=15ns,

tRRD=10ns

tRFC=127.5ns

tDQSCK=400ps

tDQSS=0.25cycle

tDQSH=0.35 cycle

tDSS=0.2 cycle

tDSH=0.2 cycle

tDQSQ=240ps

tQHS=340ps

tDSb=100ps

tDHb=175ps

tISb=200ps

tIHb=275ps

tRAS=40ps

tFAW=50ps

tRTP=7.5ps (因为tCK=3.75,所有tRTP=2cycle)

tWR=15ps

tWTR=7.5ns

tMRD=2 cycle

tRFC=127.5ns

TREFIIT=3.9us

Tinit=200us 初始化时间,从datasheet里的初始化时序图上得出。

5、4 Board Setting

Pcb板仿真参数设置,主要是与PCB板上走线一些时序相关设置。采用默认的设置即可。

5、5 Controller Settings

该部分是设置用户接口侧(一般都是AVALON-MM总线接口)一些相关的参数。

➢ Generate power -of-2 data bus width for Qsys or SOPC Buillder

➢ Genetate SOPC Builder compatible resets

上面这两个选项是在用SOPC时需勾选的,此处设置不用勾选。

➢ Maximum Avalon-MM burst length:设置Avalon-MM的最大突发长度。即用户接口侧你一次能连续读写的最大长度(此处的4是指4个64位宽的data )。

➢ Enable Avalon-MM byte enable signal:该选项是用来使能 Avalon-MM总线(即用户接口侧)的字节使能信号用的。此处勾选。

➢ Avalon interface address width 和data width 是根据配置自动生成,不能修改。

➢ Low Power Mode: 低功耗模式设置。选择默认的两个都不选择。

Enable Self-Refresh Controls: 使能自刷新控制。

Enable Auto Power-Down:使能自动进入下电模式。

➢ Efficency:

Enable user Auto-Refresh Controls:使能用户自动刷新控制,不勾选。

Enable Auto-Prechare Control:使能自动预充电控制,不勾选。

Local-to-Memory Address Mapping:本地 到memeory侧的地址映射方式。选择CHIP-

BANK-ROW-COL。例如该设置中的Avalon interface address width是24bits。下图是本地地址位宽计算公式的截图。本工程使用的memory芯片个数是1个,BANK是3位宽,memory的行ROW是13位宽,列宽是10位。图上的计算是在本地接口时钟为full-rate(200Mhz)的时候,width是减1(此处减1是因为memory侧是在时钟的上升下降沿都收发数据,而本地接口只在时钟上升沿时收发数据),由于本工程中的本地接口时钟是half-rate模式(100Mhz)。所以需要再减1,即width=3+13+10-2=24。根据选择的地址映射关系,可知Avalon address[23:21]是bank地址位,Avalon

address[20:8]是行地址,Avalon address[7:0]是列地址。

➢ 剩下的参数选择默认即可。

5、6 Diagnostics

该页按给出的默认设置即可,不用修改。

最后点击右下角的finish按钮就可以生成ddr2 ip核了。至于ip核的具体使用后面再上传相关文档


发布者:admin,转转请注明出处:http://www.yc00.com/news/1705049537a1388659.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信