您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息

基于Cyclone III FPGA的DDR2接口设计

2024/4/18 14:51:25发布8次查看
欢迎进入it技术社区论坛,与200万技术人员互动交流 >>进入 ddr sdram是double data rate sdram的缩写,即双倍速率同步动态随机存储器。ddr内存是在sdram内存基础上发展而来的,能够在时钟的上升沿和下降沿各传输一次数据,可以在与sdram相同的总线时钟频率下
欢迎进入it技术社区论坛,与200万技术人员互动交流 >>进入
>ddr sdram是double data rate sdram的缩写,即双倍速率同步动态随机存储器。ddr内存是在sdram内存基础上发展而来的,能够在时钟的上升沿和下降沿各传输一次数据,可以在与sdram相同的总线时钟频率下达到更高的数据传输率。虽然ddr2和ddr一样,都采用相同采样方式进行数据传输,但ddr2拥有两倍于ddr的预读取系统命令数据的能力。也就是说,在同样100mhz的工作频率下,ddr的实际频率为200mhz,而ddr2则可以达到400mhz。ddr2还引入了三项新的技术,它们是ocd、odt和post cas。
我们的设计(图1)采用altera公司cyclone iii系列型号为ep3c16f484c6n的fpga作为控制器,以micron公司生产的型号为mt47h16m16bg-5e(16m×16bit)的ddr2 sdram为存储器。用一个ip核完成对4片ddr2的控制(带宽为64bit),且ddr2的最高速率可达200mhz,以此完成对数据的高速大容量存储。由于采用一个ddr2的ip核进行控制,所以4片ddr2以地址和控制线共用、数据线独立的方式进行管脚连接。
图1 接口总框图
ep3c16只有top和bottom边的bank支持200mhz ddr2接口(因为ddr2管脚的特殊要求,dqs、dq、dm管脚在fpga上都需要专用管脚),且最高速率可达200mhz。
表1中column i/o是指top和bottom i/o,row i/o是指right和left i/o。hybrid mode是指由column和row i/o混合。
从表1中可以看出,cyclone iii只有6系列的fpga在top和bottom bank才支持200mhz频率的ddr2。为了满足设计要求,我们将4片ddr2分别挂在fpga的top和bottom的4个bank。
表1 fpga bank管脚速度
从表2中可以看到,ep3c16 f484封装系列的fpga每个边所支持的dqs和dq组。因为在ddr中若干个dq是由一个dqs进行采样的,所以fpga以若干个dq和一个dqs为最小单位进行分组。
表2 fpga bank dq
如number of ×8 groups,其中×8就是指8个dq,一个dqs即和8个dq组成一个group(即这8个dq由这一个dqs进行采样)。fpga分别有left、right、top和bottom四边,其表示fpga的每边都支持4个dqs和dq组,而每一边有两个bank,即每个bank都支持两个×8架构的dqs和dq组。图2展示了fpga的dqs和dq组的分配。
由于设计中采用top和bottom边的bank,这里以第3个bank的dqs为例进行说明。在图2可以看到,fpga的bank3有三个dqs,分别为dqs1b、dqs3b和dqs5b。由于每组dq都要和各自对应的dqs配对,所以理论上dqs1b应该和dq1b为一组,dqs3b应该和dq3b为一组,dqs5b应该和dq5b为一组。
图2 fpga bank dqs/dq
表3中展示了fpga管脚中的dq分配。可以看到,对于×8架构的ddr2,bank3只有dq3b和dq5b,且dq3b和dq5b各自都有9个,dqs1b其实没有属于自己的dq。其实在bank4中还有1个dqs2b和8个dq2b,1个dqs4b和8个dq4b。
而对于×16架构的ddr2,则有18个dq3b和1个dq5b,dqs1b没有属于自己的dq,其实在bank4中还有17个dq5b,这样在bank3和bank4中一共就有18个dq5b。
表3 fpga bank pin
在×32架构的ddr2中则有19个dq5b,没有dq1b和dq3b,在bank4中还有17个dq5b,这样在bank3和bank4中一共就有36个dq5b。
对于×9/×18/×36这里暂不讨论,其为qdrii sram设计,其多余dq做奇偶校验使用。
表4 不同架构ddr2的支持数量
从表4可以看出fpga是如何支持不同架构的ddr2的,还可以知道同一组的dq不一定在同一个bank,不是每个dqs都有自己的dq,即使dqs有自己的dq,其dq数量也不一定相同。
图3 fpga dq/dqs pin
除了dqs和dq外,dm也有自己专用的管脚,在ddr中dm为数据信号(dq)屏蔽位,由于dm是以8bit为单位起作用的,所以理论上只要有8个dq便会有一个dm。事实上在fpga的bottom边bank中dm的分配如表5所示。
表5 fpga的bottom边bank中dm的分配
了解清楚fpga中的dqs,dq和dm分配,我们再来看看ddr2的架构。ddr2选用micron生产的mt47h16m16bg-5e,其大小为16m×16bit,每一片分为4个bank,每个bank为4m×16bit。如果看到×16,你就认为这是一片×16架构的ddr2,再按照fpga上×16架构的管脚去设计,那就大错特错了。
虽然该ddr2是16位的带宽,但其却有两个dqs,分别是ldqs和uqds,也就是说其实两个dqs分别采样低8位和高8位数据。请注意,即使是32位带宽的ddr,其也有4个dqs,每个dqs也仅采样8位数据。至于有没有一个dqs能采样16位或32位数据的ddr,这就不为人知了。
确定了ddr2的架构,就确定了ddr2和fpga的dqs,dq和dm的连接方式。由于我们采用的是×8架构的ddr2,所以一组内的dq仅需要8个,而有的dqs带有9个dq,在选用该dq的时候只要任意选取其中的8个就可以。
在sstl-18电平标准中,为了实现更高的信号频率,输入信号需要和一个参考电压(vref)进行比较输出后才被认为是实际输入。因为ddr2采用1.8v的sstl电平进行数据传输,所以ddr2所在fpga 的bank电压必须是1.8v,fpga就必须在该bank使用vref参考电压。在fpga的每个bank都有两个vref参考电压输入,该bank的i/o分属这两个vref组,如在bank3存在vrefb3n0和vrefb3n1。
当fpga的一个bank存在vref输入或双向的管脚时,为了防止输出的开关噪声转移到vref和限制输送到vccio的噪声水平,fpga输入输出io的位置有如下限制(bga封装的fpga):
每个vref最多支持32个输入;
在top和bottom bank每12个连续的管脚最多只支持9个输出。在right和left bank每14个连续的管脚最多只支持9个输出;
在vref和输出管脚(除了dq和dqs)之间必须用两个输入或空脚进行隔离。一般是空着,因为输入会因为输出管脚引来的噪声而导致读入不正确;
如果不需vref参考,一般在一个bank中只要全部是同组数据总线或地址总线时,输出个数不受限制(即受同一个oe控制的不受限制)。如果不是同一个oe控制就要满足上面约束关系,以及驱动型接口要考虑驱动能力。
图4所示,输出脚必须和vref用两个输入或空脚进行隔离。另外,由于ddr2的地址和控制线都是输出管脚,所以在手动分配管脚的时候很容易超出2所述的限制,而且fpga是bga封装,只从symbol上很难看出管脚的连续性。fpga的管脚在外部看来是方阵排列,但其在fpga的内部却是线性的排列,所以硬件设计时最好通过软件去看管脚的连续性。在原理图设计分配ddr2所在bank的输出管脚时,建议采用quartus ii软件自动分配,这样才能更好地避免错误。
图4 fpga output pad
此外,还要注意:
在cyclone iii系列的fpga中,不支持差分的dqs,该fpga的ip只在写模式下用到dqs,在读数据时不用(因为ip复位时ip会发送接收训练序列自校正产生捕获时钟);
多余不用的dq可以当做普通i/o使用;
quartus ii软件自动分配管脚时不会区分同一组的dq和dm,即dq和dm可以互换(在ep3c16时仅有top边的dq和dm可以互换);
ddr2的地址和控制线在fpga上没有专用管脚,可以任意使用其它io(只要符合输入输出位置限制);
可以使用任何一对临近的差分i/o管脚当作ddr2的时钟。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录