问题描述
对于所有采用校准输入端接的MCB设计的通用ES Spartan-6器件,应使用特定的引脚位置作为RZQ参考电阻。
对于通用ES XC6SLX16-2CSG324CES器件,Spartan-6 FPGA MCB设计的MIG v3.1输出需要针对正确的行为进行特定的RTL更改。
从MIG v3.2开始,不需要这些RTL更改。
请使用最新版本的MIG。
本答复记录详述了所有设计要求。
解决/修复方法
所有通用ES Spartan-6器件的要求 :
对于计划使用校准输入端接的设计,应将以下引脚位置用于RZQ参考电阻:
LX器件
XC6SLX16-2CSG324CES
==================
MCB Bank 1 – 针脚M13
MCB Bank 3 – 引脚C2
XC6SLX45-2CSG324CES
==================
MCB Bank 1 – 针脚M14
MCB Bank 3 – 针脚L6
XC6SLX45-2FGG484CES
==================
MCB Bank 1 – 引脚M19
MCB Bank 3 – 针脚K7
XC6SLX150-2FGG484CES
====================
MCB Bank 1 – 引脚M19
MCB Bank 3 – 针脚K7
XC6SLX150-2CSG484CES
====================
MCB Bank 1 – 引脚W20
MCB Bank 3 – 针脚H6
LXT器件
XC6SLX45T-2FGG484CES
==================
MCB Bank 1 – 引脚P19
MCB Bank 3 – 针脚K7
XC6SLX150T-2FGG484CES
====================
MCB Bank 1 – 引脚P19
MCB Bank 3 – 针脚K7
XC6SLX150T-2FGG676CES
====================
MCB Bank 1 – 引脚U21
MCB Bank 3 – 针脚M10
MCB Bank 4针M4
MCB Bank 5针M21
使用MIG v3.1时,通用ES Spartan-6器件XC6SLX16-2CSG324CES的设计要求 :
注意: MIG v3.2和转发不需要这些RTL更改。
请使用最新版本的MIG。
要求1
如器件勘误表(文件EN113)中所述:
http://www.xilinx.com/support/documentation/spartan-6.htm#131538
此通用ES器件不完全支持MCB启动顺序中定义的硬件校准操作。
请注意,任何Spartan-6器件都不支持最初在MCB用户指南中引用的DQ数据位的每位偏移校正硬件校准。
因此,要确保可靠的内存接口:
- 遵循推荐的PCB布局指南,以最大限度地减少DQ位之间的偏差。
- 对于MIG 3.1,通过编辑最顶层MIG设计文件中的校准参数(例如,<component name> .v或example_top.v),将DQS选通中心置于DQ读取数据捕获窗口中,如下所示:
Bank1中的MCB
C1_MC_CALIB_BYPASS =“否”
C1_MC_CALIBRATION_MODE =“NOCALIBRATION”
C1_MC_CALIBRATION_DELAY =“HALF”
MCB在Bank 3
C3_MC_CALIB_BYPASS =“否”
C3_MC_CALIBRATION_MODE =“NOCALIBRATION”
C3_MC_CALIBRATION_DELAY =“HALF”
请参考Spartan-6 FPGA内存控制器用户指南(UG388):
http://www.xilinx.com/support/documentation/ip_documentation/ug388.pdf
有关更多信息:
校准参数 – 见第3章
PCB布局指南 – 见第4章
MCB启动顺序 – 请参阅第5章
注意:默认情况下,MIG 3.2(11.3)版本中将对这些更改进行处理。
将不再需要手动修改。
要求2
对于MIG 3.1,在“mmb_raw_wrapper.v”文件的底部插入以下Verilog代码行,就在“endmodule”语句之前。
// DQS PULLDOWN
生成
if(C_MEM_TYPE ==“DDR”|| C_MEM_TYPE ==“MDDR”||(C_MEM_TYPE ==“DDR2”&&(C_MEM_DDR2_DIFF_DQS_EN ==“NO”)))begin:gen_dqs_pullupdn
PULLDOWN dqs_pulldown(.O(mcbx_dram_dqs));
结束其他开始:gen_dqs_pullupdn_ds
PULLDOWN dqs_pulldown(.O(mcbx_dram_dqs));
PULLUP dqs_n_pullup(.O(mcbx_dram_dqs_n));
结束
endgenerate
// DQSN PULLUP
生成
if((C_MEM_TYPE ==“DDR”|| C_MEM_TYPE ==“MDDR”||(C_MEM_TYPE ==“DDR2”&&(C_MEM_DDR2_DIFF_DQS_EN ==“NO”)))&& C_NUM_DQ_PINS == 16)begin:gen_udqs_pullupdn
PULLDOWN udqs_pulldown(.O(mcbx_dram_udqs));
如果(C_NUM_DQ_PINS == 16)开始,则结束:gen_udqs_pullupdn_ds
PULLDOWN udqs_pulldown(.O(mcbx_dram_udqs));
PULLUP udqs_n_pullup(.O(mcbx_dram_udqs_n));
结束
endgenerate
注意:默认情况下,MIG 3.2(11.3)版本中将对这些更改进行处理。
将不再需要手动修改。
没有回复内容