SPRATAN6_MCB_使用分享

2019-01-26 22:09

Spartan6 ------MCB_DDR2 设计说明

如今的存储器工艺、性能发展之快真是让人岑木结舌,但是随之而来的控制复杂度

也大大增加,对于PCB设计要求、如何使存储器跑到最大带宽,都是工程师们要考虑的事。对于电子市场来讲,现在一片1Gbit的800M速率的DDR2颗粒价格在40元左右,无论从成本和性能讲都有绝对大的优势。

XILINX 公司率先在FPGA芯片中集成了MCB硬核,它可以支持到DDR3,而且对于大多数厂家的芯片系列都支持,这也是spartan6系列闪耀的地方。对于工程来讲,其MCB硬核优秀的误码校验和偏移时钟校验,以及PLL_ADV工作时的稳定、高精度都大大保证了项目产品的质量。而对于用户接口又是以FIFO的读写方式,代替复杂的ddr2读写逻辑。以sram的地址映射方式代替复杂的行列地址选择。可见spartan6 ——MCB控制器的诞生是值得大家高兴的。

本文从(1)“MCB_CLK”设计须知”(系统时钟需要考虑的问题)

(2)“CORE Gen的使用” (即MCB控制器的生成) (3)“硬件平台调试” (红色飓风spartan6开发板完成DDR2高速的

读写并且校验误码)

(4)“Xilinx谦虚的地方” (揭秘PLL_ADV / MCB硬核的性能指标) (5)“您用得到的我粘出来” (在XILINX应用设计中很有用的文档)

MCB ——CLK设计须知

1. MCB -CLK驱动说明

(1) 对于两个以上的MCB同时使用,对于同端的PLL输出clkout0、clkout1要共用。

如果只应用一个,Xilinx建议首先要选择3_bank,这样不会占用配置引脚和复用引脚。

MCB布局

从PLL输出的时钟只有两条时钟线可以到达硬件的左右两侧,并与IO_clk网络相连,因此同侧的MCB要共用一样的IO_clk网络、跑相同的速率。(如clkin200M则clkout0、1=400M).

(2) BUFPLL_MCB驱动器内部参数为DIVIDE=2,2x_clk提供给ddr2的通讯速率为

doudle rate,是pll输入时钟的两倍,而1xclk则给ddr2的硬件主时钟。

MCB驱动器示意图

(3)Calibration clk校验时钟则要求时钟设计在min=50M / max=100M

(4)HDL内部逻辑时钟则与MCB端口设置的宽度有关 最佳设置公式如下,时钟应该大于等于这个clk0:Clk0(内部逻控制辑同步时钟)=system_clk(硬件输入时钟)*2(double rate)*X

(X=ddr2的数据宽度*16 or*8 or*4)/MCB端口的设置宽度128 or 64 and etc。

(5)CMD_FIFO的读写clk建议要使用一致的时钟,如使用Clk0(内部逻控制辑同步时钟)。

2. 关于程序中时钟PLL的设置

module memc3_infrastructure # 中主要是设计时钟源的文件,系统的时钟都在这里设置

(1) 内部差分时钟输入可以根据自己设计选择加入或否

(比如你愿意出高价格买差分的晶振“100M差分170RMB”,你可以加上如下的BUF转成单时钟,反之修改设计中的这部“如下”注销即可,并将NET“sys_clk_ibufg” LOC=“单端晶振”)

// IBUFDS SYS_CLK_INST // (

// .I (sys_clk_p), // .IB (sys_clk_n), // .O (sys_clk_ibufg) // );

(2)内部时钟输入相位和频率可以根据自己设计选择参数,具体如下: (后面有对其评估的详细报告)

PLL_ADV # (

.BANDWIDTH (\ .CLKIN1_PERIOD (CLK_PERIOD_NS), .CLKIN2_PERIOD (1),

.CLKOUT0_DIVIDE (1), //******用于处理外部的ddr2数据的2X时钟 .CLKOUT1_DIVIDE (1), //******用于处理外部的ddr2数据的2X_180时钟 .CLKOUT2_DIVIDE (6),//*******内部logic工作时钟 .CLKOUT3_DIVIDE (6),//*******校验时钟50---100M .CLKOUT4_DIVIDE (1),//*******可选频率端口 .CLKOUT5_DIVIDE (1), //*******可选频率端口 .CLKOUT0_PHASE (0.000), .CLKOUT1_PHASE (180.000), .CLKOUT0_DUTY_CYCLE (0.500), .CLKOUT1_DUTY_CYCLE (0.500), .CLKOUT2_DUTY_CYCLE (0.500), .CLKOUT3_DUTY_CYCLE (0.500),

.COMPENSATION (\ .DIVCLK_DIVIDE (1),

.CLKFBOUT_MULT (6),//**参数设置 MUSLT/clkoutx*clkinbuf=actecl clk .CLKFBOUT_PHASE (0.0), .REF_JITTER (0.005000) )

说明:设输入的时钟为X

CLKOUT0_DIVIDE= X * CLKFBOUT_MULT/ CLKOUT0_DIVIDE _paramater

CORE GENERATER

“为了大家学习截图很多,照做就可以”

1新建工程(ise11.1以上版本)file—>new project

2. 选择spartan6_etc配置如下(选择新片类型)

3. 选择语言Verilog,点击OK下一步设置(其他配置如下图:

4. 在Memory ——IP中选中MIG如下图

然后的两个对话框都为next下一步。

5. 选择硬件在bank3调用MCB, DDR2器件


SPRATAN6_MCB_使用分享.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:Altera-QuartusII 中的PLL锁相环配置简述

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: