MIG连载-----7系列MIG介绍(2)

Spartan6 DDR占用MCB资源(硬核资源),7系列占用MIG资源;

1.添加IP

博文较多,此处至重点介绍其中关键信息;
在这里插入图片描述
Clock Period : 指的是IP核给DDR3的时钟,和速度等级有关,-n,其中n越大则最高频率越大。
PHY to Controler Clock Ratio :MIG内部datapath的时钟与DDR3的工作时钟之间的比例。ui_clk是MIG内部输出给用户端的时钟,同输入给datapath的时钟,也即ui_clk :ddr3_clkp,n = 1:4
在这里插入图片描述
Memory Part :若用的DDR选项里没有,可以先点击Creat Custom Part 进行创新建。

在这里插入图片描述
Input Clock Period :用户给IP核的时钟。
在这里插入图片描述
Systerm Clock :系统时钟,进过PLL后传输给DDD3;单端且来自本模块,推荐选择No Buffer
Reference Clock :参考时钟,用于生成往datapath(IP核里面逻辑)里面写的时钟和IP核输出给用户的时钟;在Systerm Clock=200M的时候,参考时钟可以用系统时钟。
在这里插入图片描述
Global :编译这个IP和工程
Out of context per IP :单独编译IP

2.IP和初始化仿真

Add source --> Creat File 在这里插入图片描述
添加例化MIG文件
在这里插入图片描述

  mig_7series_0_mig u_mig_7series_0_mig (

    // Memory interface ports
    .ddr3_addr                      (ddr3_addr),
    .ddr3_ba                        (ddr3_ba),
    .ddr3_cas_n                     (ddr3_cas_n),
    .ddr3_ck_n                      (ddr3_ck_n),
    .ddr3_ck_p                      (ddr3_ck_p),
    .ddr3_cke                       (ddr3_cke),
    .ddr3_ras_n                     (ddr3_ras_n),
    .ddr3_reset_n                   (ddr3_reset_n),
    .ddr3_we_n                      (ddr3_we_n),
    .ddr3_dq                        (ddr3_dq),
    .ddr3_dqs_n                     (ddr3_dqs_n),
    .ddr3_dqs_p                     (ddr3_dqs_p),
    .init_calib_complete            (init_calib_complete),
      
    .ddr3_cs_n                      (ddr3_cs_n),
    .ddr3_dm                        (ddr3_dm),
    .ddr3_odt                       (ddr3_odt),
    // Application interface ports
    .app_addr                       (app_addr),
    .app_cmd                        (app_cmd),  //命令控制信号
    .app_en                         (app_en),      //命令,地址使能信号
    .app_wdf_data                   (app_wdf_data),
    .app_wdf_end                    (app_wdf_end),  //写数据的最后一个数,类似于突发指示的功能,因为用户接口没有突发长度指示;每一次传输只能传输128bit的数据,可以根据app_end来判断哪些有效。7系列以上MIG只有8突发一种形式。
    .app_wdf_wren                   (app_wdf_wren),
    .app_rd_data                    (app_rd_data),
    .app_rd_data_end                (app_rd_data_end),
    .app_rd_data_valid              (app_rd_data_valid),
    .app_rdy                        (app_rdy),  //该信号表示IP核是否准备好接受数据,当它与app_en同时有效时写数据有效,针对于命令
    .app_wdf_rdy                    (app_wdf_rdy), //写数据准备好信号指示,针对于数据
    .app_sr_req                     (app_sr_req),
    .app_ref_req                    (app_ref_req),  //refresh 的request,刷新的请求;一般用不上填0即可,因为刷新MIG可以自动完成,如果人为需要刷新,1个周期的1即可
    .app_zq_req                     (app_zq_req),
    .app_sr_active                  (app_sr_active),
    .app_ref_ack                    (app_ref_ack),
    .app_zq_ack                     (app_zq_ack),
    .ui_clk                         (ui_clk),            //ip核输出给用户的时钟
    .ui_clk_sync_rst                (ui_clk_sync_rst),    //IP核输出的同步复位
    .app_wdf_mask                   (app_wdf_mask),
    // System Clock Ports
    .sys_clk_p                       (sys_clk_p),
    .sys_clk_n                       (sys_clk_n),
    // Reference Clock Ports
    .clk_ref_p                      (clk_ref_p),
    .clk_ref_n                      (clk_ref_n),
    .sys_rst                        (sys_rst)
    );

在这里插入图片描述

地址映射关系

在这里插入图片描述
可以看到app_addr有28根地址线全部用上,cow address有10bit,row address有15bit和DDR3对应。所以第一个128bit数据传输完成之后吗,下一次连续传输地址+8;MIG内部会自行将输入进来的128bit的数据转化为8个16bit的数据写入DDR3中,地址也是MIG内部自动走动分配的,只需要给出8个首地址即可。
在这里插入图片描述

写时序图

在这里插入图片描述
有地址和数据关三种写入方式,1对应数据和命令同时给出,2对应数据先于数据给出,3对应数据在命令给出之后给出,第三种方式数据最晚不能晚于命令给出的两个周期后给出。这样会发现每次写一个128bit的数据时,由于MIG的突发长度固定位8,因此对于位宽16bit的DDR3来说,第一个128bit里面也包含了该次写入的最后一个数据,因此app_end信号始终有效;
下面以1. app_data64 位,DDR3位宽为8位,PHY to controller clock ratio = 4:1介绍详细app_end的不同情况(from UG586):
在这里插入图片描述
这种情况下由于时钟比例是4:1,因此每个64bit数据既是本次突发的第一个数据也是本次突发的最后一个数据,因此aa_end始终有效。
2. app_data32 位,DDR3位宽为8位,PHY to controller clock ratio = 2:1
在这里插入图片描述
总线位宽为32bit,因此在传输第二个32bit数据时才会有app_end有效,注意MIG中突发长度固定位8,当DDR3位宽为8时,每一次传输会传输M8*8(BL)=64bit数据。

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值