Heim >Datenbank >MySQL-Tutorial >基于Cyclone III FPGA的DDR2接口设计

基于Cyclone III FPGA的DDR2接口设计

WBOY
WBOYOriginal
2016-06-07 15:00:441569Durchsuche

欢迎进入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以地址和控制线共用、数据线独立的方式进行管脚连接。

基于Cyclone III FPGA的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管脚速度

基于Cyclone III FPGA的DDR2接口设计

  从表2中可以看到,EP3C16 F484封装系列的FPGA每个边所支持的DQS和DQ组。因为在DDR中若干个DQ是由一个DQS进行采样的,所以FPGA以若干个DQ和一个DQS为最小单位进行分组。

  表2 FPGA BANK DQ

基于Cyclone III FPGA的DDR2接口设计

  如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为一组。

基于Cyclone III FPGA的DDR2接口设计

  图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

基于Cyclone III FPGA的DDR2接口设计

  在×32架构的DDR2中则有19个DQ5B,没有DQ1B和DQ3B,在Bank4中还有17个DQ5B,这样在Bank3和Bank4中一共就有36个DQ5B。

  对于×9/×18/×36这里暂不讨论,其为QDRII SRAM设计,其多余DQ做奇偶校验使用。

  表4 不同架构DDR2的支持数量

基于Cyclone III FPGA的DDR2接口设计

  从表4可以看出FPGA是如何支持不同架构的DDR2的,还可以知道同一组的DQ不一定在同一个Bank,不是每个DQS都有自己的DQ,即使DQS有自己的DQ,其DQ数量也不一定相同。

基于Cyclone III FPGA的DDR2接口设计

  图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的分配

基于Cyclone III FPGA的DDR2接口设计

  了解清楚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软件自动分配,这样才能更好地避免错误。

基于Cyclone III FPGA的DDR2接口设计

  图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的时钟。

基于Cyclone III FPGA的DDR2接口设计

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn