如今,在FPGA系统的设计中,系统的复杂度越来越高,对内存的要求也是越来越高。通常,综合体积、容量等考虑,DDR2已成为FPGA系统的首选。这里,就针对Cyclone IV系列FPGA的DDR2设计作一小结,对于其它系列的FPGA和DDR设计类似。
根据Cyclone IV的手册,在进行DDR2设计时,FPGA的管脚分配是要有所考虑的,而不能随意分配。
首先,对DDR2的信号引脚做一下说明。这里以MT47H128M8(16Meg×8bit×8banks)为例说明。
它的信号线(共34根)包括:
时钟及控制线:CLK+/-,CKE,RASn,CASn,CSn,WEn;
数据控制线:BA0~BA2,DQS,DQM;
地址线:A0~A13;
数据线:D0~D7;
在FPGA中,为了更好的发挥出DDR的性能,其会对DDR引脚的分配做相关的约束。
这里以EP4CE75F23C8N为例,F484封装。
它在进行8位DDR2设计时,就指定了相关的DQ、DQS和DQM引脚,我们设计时应该遵从这些引脚约束。
在该FPGA的上、下、左、右区域分别都指定有这些引脚:
每个方向又都分有4个区,若是选择8位的DDR,则每个区有9个DQ引脚和相应的DQS、DQM:
(1)左:DQ0L、DQ1L、DQ2L、DQ3L,以及DQSL和DML;
(2)下:DQ2B、DQ3B、DQ4B、DQ5B,以及DQSB和DMB;
(3)右:DQ0R、DQ1R、DQ2R、DQ3R,以及DQSR和DMR;
(4)上:DQ2T、DQ3T、DQ4T、DQ5T,以及DQST和DMT;
比如:在DQ5B中,这9个DQ引脚为:Y10,W10,V11,AA8,AA9,AB8,U10,Y8,AB7,以及AB9(DQS)、AA7(DQM)。
因此,在硬件设计时,应该将这些相应的引脚(8位数据DQ和DQS、DQM)正确分配,至于这8位DQ数据的位置则可以根据布线的方便而相互对调,保证它们在同一区即可(如DQ5B区);而对于其它的DDR2引脚(地址线、控制线等),则可以根据布线的方便而随意分配,但必须保证所有DDR2的引脚都在FPGA的同一个或两个Bank区(如Bank3和Bank4,因为有时一个Bank区放不了所有这些引脚),这样做的目的就是为了便于对它们进行统一的VCCIO电压的指定,以及考虑后续PCB布线的方便性,注意该Bank区的VCCIO电压必须指定为1.8V。
在Quartus II中,同样也要进行正确的引脚分配,并且还要注意这些电平标准为1.8V。
如果硬件设计时不按照这些约束进行相关的引脚分配,在Quartus II编译时,则可能就会报错,而导致DDR2无法正常使用。
以上为个人在设计中的一点心得,在此与各位分享。