Spartan-6 FPGA MCB  – 通用ES Spartan-6 FPGA的设计要求-Altera-Intel社区-FPGA CPLD-ChipDebug

Spartan-6 FPGA MCB – 通用ES Spartan-6 FPGA的设计要求

问题描述

对于所有采用校准输入端接的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)版本中将对这些更改进行处理。

将不再需要手动修改。

请登录后发表评论

    没有回复内容