芯路恒电子技术论坛

 找回密码
 立即注册

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

热搜: 合集
查看: 5300|回复: 1

【高云FPGA】更新DDR IP之后初始化不起来的问题解决方案

[复制链接]

该用户从未签到

67

主题

73

帖子

843

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
843
发表于 2024-11-25 15:04:23 | 显示全部楼层 |阅读模式
问题描述

我们使用之前提供的DDR工程,其中一些工程在新版软件中更新IP之后,明明配置一样,但是会出现DDR初始化不起来的情况,这是因为我们之前工程建立的比较早,用的软件也是很早之前的版本,在后续软件版本中,对DDR IP又进行了很多修改,其中最主要就是时钟和复位信号,这个需要根据最新手册并结合官方例程进行修改。

问题解决方法

1.参考官方例程对DDR需要的时钟,重新建立PLL IP,配置如下所示。

1.jpg

2.jpg

3.jpg

4.jpg

5.jpg

然后在工程例化新建的代码:

7.jpg

2.DDR3 IP需要输入pll_lock信号,如果pll_lock信号没有接入PLL的LOCK信号,IP将不能检测时钟是否稳定,此时容易出现DDR初始化问题,这个lock就是上一步建立的PLL IP输出的pll_lock信号。

3.对于5A的器件,建立完DDR3 IP之后,会输出pll_stop信号,这个信号在很早的版本中没有,所以我们有的例程没有输出该信号,现在我们需要使用到该信号,该信号是memory_clk的开关,低有效,使用138K器件时,pll_stop直接接入PLL的encllk2。使用25K器件时,pll_stop需要接入转接模块pll_mDRP_intf,间接控制PLL的clkout2输出,pll_mDRP_intf的clk 与PLL的mdclk和clkin相同,添加代码如下

8.jpg

4.修改DDR IP的时钟,前面PLL IP最终配置的memory_clk为400M,具体计算请参看官方PLL IP手册中的时钟计算

6.jpg

5.将DDR3 IP的pll_stop信号引出

9.jpg

10.jpg

下面是我在ACG525开发板上修改的工程

acg525_ov5640_ddr3_tft.rar (5.1 MB, 下载次数: 1206)

以下是官方给的138K和25K的DDR3 IP工程,以及25k需要的pll_mDRP_intf模块文件

DDR3_MC_PHY_1vs4_5a138k.rar (6.65 MB, 下载次数: 1222)

DDR3_MC_PHY_1vs4_5a25k.rar (6.32 MB, 下载次数: 1244)

pll_mDRP_intf.v (5.09 KB, 下载次数: 1923)

摄像头接靠1脚那边的口






回复

使用道具 举报

  • TA的每日心情
    慵懒
    2025-8-7 16:02
  • 29

    主题

    32

    帖子

    523

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    523
    发表于 2025-10-17 11:53:35 | 显示全部楼层
    对于有些按照一楼方法仍不能解决初始化问题,可以参照高云官方提供的的最新DDR例程(2025)进行修改。(适用于25K与60K器件
    PLL配置方法:

    image.png
    image.png

    image.png

    image.png

    工程配置与例化:
    [C#] 纯文本查看 复制代码
        wire mdrp_inc;     
        wire [1:0] mdrp_op;     
        wire [7:0] mdrp_wdata;     
        wire [7:0] mdrp_rdata;     
        wire pll_stop;     
        reg pll_stop_r;
        reg wr;
        wire pll_lock;
        reg [15:0] pll_lock_reg;
    
        always @ (posedge clk50M)
            pll_lock_reg    <=  {pll_lock_reg[14:0], pll_lock};
    
        always@(posedge clk50M)
            pll_stop_r <= pll_stop;
    
        always@(posedge clk50M)
        if(!pll_lock_reg[15])
            wr <= 1'b0;
        else if(~pll_stop & pll_stop_r)begin
            wr <= 1'b1;
        end
        else if(pll_stop & (~pll_stop_r))begin
            wr <= 1'b1;
        end
        else begin
            wr <= 1'b0;
        end
    
        pll_mDRP_intf u_pll_mDRP_intf(
            .clk(clk50M),
            .rst_n(1'b1),
            .pll_lock(pll_lock_reg[15]),
            .wr(wr),
            .mdrp_inc(mdrp_inc),
            .mdrp_op(mdrp_op),
            .mdrp_wdata(mdrp_wdata),
            .mdrp_rdata(mdrp_rdata)
        );    
    
            ddr_pll ddr_pll(
            .lock(pll_lock), //output lock
            .clkout0(), //output clkout0
            .clkout2(loc_clk400m), //output clkout2
            .mdrdo(mdrp_rdata), //output [7:0] mdrdo
            .clkin(clk50M), //input clkin
            .reset(!reset_n), //input reset
            .pll_init_bypass(pll_lock_reg[15]), //input  pll_init_bypass
            .mdclk(clk50M), //input mdclk
            .mdopc(mdrp_op), //input [1:0] mdopc
            .mdainc(mdrp_inc), //input mdainc
            .mdwdi(mdrp_wdata) //input [7:0] mdwdi
        );


    其余配置和一楼一致。
    具体可参考如下例程(ACG525):
    ch43_ov5640_ddr3_hdmi.zip (4.54 MB, 下载次数: 80)

    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

    GMT+8, 2025-11-22 05:55 , Processed in 0.080366 second(s), 32 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

    快速回复 返回顶部 返回列表