搜索
bottom↓
回复: 6

SDRAM 中几个时序延时参数的意义

[复制链接]

出0入0汤圆

发表于 2013-5-27 22:20:31 | 显示全部楼层 |阅读模式
大家都知道SDRAM 时序中有几个重要的延时参数,比如 预充电有效时间,行选通周期,和CAS 潜伏期
最近在学习特权的代码,发现一大堆奇怪的延时参数,比如自动预刷新周期 ...

请问 大家知道它们的意义吗?SDRAM 手册里怎么没有这些东西呢?


        // SDRAM时序延时参数
parameter                        TRP_CLK                = 9'd4,//1,        //TRP=18ns预充电有效周期
                                TRCD_CLK          = 9'd2,//1,        //TRCD=18ns行选通周期
                                TCL_CLK                = 9'd3,                //潜伏期TCL_CLK=3个CLK,在初始化模式寄存器中可设置

                                TRFC_CLK                = 9'd6,//3,        //TRC=60ns自动预刷新周期
                                TMRD_CLK          = 9'd6,//2,        //模式寄存器设置等待时钟周期
                               
                                TREAD_CLK        = 9'd8,        //突发读数据周期256CLK
                                TWRITE_CLK        = 9'd8,          //突发写数据256CLK
                                TDAL_CLK                = 9'd3;        //写入等待

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-5-27 22:31:21 | 显示全部楼层
应当有,比如美光的数据手册有,倒是HY的手册简陋的很

出0入0汤圆

 楼主| 发表于 2013-5-27 22:36:55 | 显示全部楼层
NJ8888 发表于 2013-5-27 22:31
应当有,比如美光的数据手册有,倒是HY的手册简陋的很

N 元老,你看到特权的SDRAM 代码吗?
明明上面定义了TRP_CLK 是个常量, 为什么状态机里面还进行判断是否为零?  这个到底有什么意图? 直接转到下个状态不就行吗》?感觉好像多此一举~~~~

always @ (posedge clk or negedge rst_n)
        if(!rst_n) init_state_r <= `I_NOP;
        else
                case (init_state_r)
                                `I_NOP:         init_state_r <= done_200us ? `I_PRE:`I_NOP;                //上电复位后200us结束则进入下一状态
                                `I_PRE:         init_state_r <= (TRP_CLK == 0) ? `I_AR1:`I_TRP;        //预充电状态
                                `I_TRP:         init_state_r <= (`end_trp) ? `I_AR1:`I_TRP;                        //预充电等待TRP_CLK个时钟周期
                                `I_AR1:         init_state_r <= (TRFC_CLK == 0) ? `I_AR2:`I_TRF1;        //第1次自刷新
                                `I_TRF1:        init_state_r <= (`end_trfc) ? `I_AR2:`I_TRF1;                        //等待第1次自刷新结束,TRFC_CLK个时钟周期
                                `I_AR2:         init_state_r <= (TRFC_CLK == 0) ? `I_AR3:`I_TRF2; //第2次自刷新       
                                `I_TRF2:        init_state_r <= (`end_trfc) ? `I_AR3:`I_TRF2;                 //等待第2次自刷新结束,TRFC_CLK个时钟周期
                                `I_AR3:         init_state_r <= (TRFC_CLK == 0) ? `I_AR4:`I_TRF3; //第3次自刷新       
                                `I_TRF3:        init_state_r <= (`end_trfc) ? `I_AR4:`I_TRF3;                        //等待第3次自刷新结束,TRFC_CLK个时钟周期
                                `I_AR4:         init_state_r <= (TRFC_CLK == 0) ? `I_AR5:`I_TRF4; //第4次自刷新
                                `I_TRF4:        init_state_r <= (`end_trfc) ? `I_AR5:`I_TRF4;                 //等待第4次自刷新结束,TRFC_CLK个时钟周期
                                `I_AR5:         init_state_r <= (TRFC_CLK == 0) ? `I_AR6:`I_TRF5; //第5次自刷新
                                `I_TRF5:        init_state_r <= (`end_trfc) ? `I_AR6:`I_TRF5;                        //等待第5次自刷新结束,TRFC_CLK个时钟周期
                                `I_AR6:         init_state_r <= (TRFC_CLK == 0) ? `I_AR7:`I_TRF6; //第6次自刷新
                                `I_TRF6:        init_state_r <= (`end_trfc) ? `I_AR7:`I_TRF6;                        //等待第6次自刷新结束,TRFC_CLK个时钟周期
                                `I_AR7:         init_state_r <= (TRFC_CLK == 0) ? `I_AR8:`I_TRF7; //第7次自刷新       
                                `I_TRF7:         init_state_r <= (`end_trfc) ? `I_AR8:`I_TRF7;                        //等待第7次自刷新结束,TRFC_CLK个时钟周期
                                `I_AR8:         init_state_r <= (TRFC_CLK == 0) ? `I_MRS:`I_TRF8;        //第8次自刷新
                                `I_TRF8:        init_state_r <= (`end_trfc) ? `I_MRS:`I_TRF8;                        //等待第8次自刷新结束,TRFC_CLK个时钟周期
                                `I_MRS:                init_state_r <= (TMRD_CLK == 0) ? `I_DONE:`I_TMRD;//模式寄存器设置(MRS)       
                                `I_TMRD:        init_state_r <= (`end_tmrd) ? `I_DONE:`I_TMRD;                //等待模式寄存器设置完成,TMRD_CLK个时钟周期
                                `I_DONE:        init_state_r <= `I_DONE;                // SDRAM的初始化设置完成标志
                                default: init_state_r <= `I_NOP;
                                endcase

出0入0汤圆

发表于 2013-5-27 22:38:35 | 显示全部楼层
本帖最后由 NJ8888 于 2013-5-27 22:39 编辑

没看,因为我用VHDL,verilog的代码能看懂思路,不过总不如用verilog的人

出0入0汤圆

 楼主| 发表于 2013-5-27 22:43:40 | 显示全部楼层
NJ8888 发表于 2013-5-27 22:31
应当有,比如美光的数据手册有,倒是HY的手册简陋的很

是不是所有的SDRAM 都是一样的呢? 三星的datasheet 找不到什么自动刷新周期 ,模式寄存器设置等待时钟周期....

出0入0汤圆

发表于 2013-5-27 22:45:08 | 显示全部楼层
不确定完全一样,我看过美光 HY,对于我所关心参数,能通用。有的是4096刷新,有的是8192刷新

出0入0汤圆

 楼主| 发表于 2013-5-27 22:55:29 | 显示全部楼层
NJ8888 发表于 2013-5-27 22:38
没看,因为我用VHDL,verilog的代码能看懂思路,不过总不如用verilog的人

( ⊙ o ⊙ )啊! 救星啊,我也是用VHDL !!! 能否让我拜读拜读~~~qq812331053
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 07:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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