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条)