搜索
bottom↓
回复: 6

SDRAM的mode设置为CAS=2 为何实际却是CL=3出数据

[复制链接]

出0入0汤圆

发表于 2014-1-9 15:31:25 | 显示全部楼层 |阅读模式
SDRAM的mode设置为CAS=2 为何实际却是CL=3出数据

研究了好几天都没结果,附上 signaltag抓取的图
请哪位大侠帮忙分析下是哪里的问题


为何第一个数据0102会持续延续3个周期,照道理在发送READ命令的时候假设为T0,那么应该在T1时刻出数据0102啊,


然后我尝试把mode的cas设置为3,结果却是CL=5出数据,附图

在T0时刻发送READ命令,结果却在T5时刻真正出现第一个0102数据,后面的  0203 0304都是对的

在附一张BURST TERMINAL命令的图
datasheet上面说在读取的时候,burst terminal命令发送之后,其实还会传送CL个数据,结果却是传送了CL+1个数据

总结下来,即是说SDRAM实际设置的MODE里面的CAS跟实际 读取CL相差一个周期,虽然可以解决,但是原理上面讲不通

不知道哪位碰到过这样的问题, sdram用的是现代的 -6的模块

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

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

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2014-1-9 16:03:42 | 显示全部楼层
附上一段设置SDRAM的测试OK的代码,希望对你有帮助:
case(init_state_read)
                                                        PRECHARGE://100
                                                                begin
                                                                        CMD <= PRECHARGE;
//                                                                        o_test_pin_38 = 1'b0;
                                                                        if(i_cmd_ack==1'b1)
                                                                                begin
                                                                                        CMD <= NOP;
                                                                                        init_state_read <= LOAD_MODE;
//                                                                                        config_data[2:0] <= 3'b000;//Burst=1
//                                                                                        config_data[2:0] <= 3'b001;//Burst=2
//                                                                                        config_data[2:0] <= 3'b010;//Burst=4
//                                                                                        config_data[2:0] <= 3'b011;//Burst=8
                                                                                        config_data[2:0] <= 3'b111;//Burst=page
                                                                                        config_data[6:4] <= cl;//CL=3
                                                                                end
                                                                        else
                                                                                init_state_read <= PRECHARGE;
                                                                end
                                                        LOAD_MODE://101
                                                                begin
                                                                        ADDR[15:0] <= config_data;
                                                                        CMD <= LOAD_MODE;
                                                                        if(i_cmd_ack==1'b1)
                                                                                begin
                                                                                        CMD <= NOP;
                                                                                        init_state_read <= LOAD_REG2;
                                                                                end
                                                                        else
                                                                                init_state_read <= LOAD_MODE;
                                                                end
                                                        LOAD_REG2://111
                                                                begin
                                                                        ADDR[15:0] <= refresh_cnt; //refresh counter=0x1d4
                                                                        CMD <= LOAD_REG2;
                                                                        config_data <= 23'd0;
                                                                        if(i_cmd_ack==1'b1)
                                                                                begin
                                                                                        CMD <= NOP;
                                                                                        ADDR <= 0;
                                                                                        init_state_read <= LOAD_REG1;
                                                                                        config_data[1:0] <= cl;//3
                                                                                        config_data[3:2] <= rc;//3
                                                                                        config_data[8] <=  pm_page;//pm_burst;//pm=1'b0;//SDR SDRAM control mode, 0=normal, 1=page mode
                                                                                        config_data[12:9] <= bl_page;//bl_burst8;//parameter bl=4'd8;//burst length, valude=1,2,4,8
                                                                                end
                                                                        else
                                                                                init_state_read <= LOAD_REG2;
                                                                end
                                                        LOAD_REG1://110
                                                                begin
                                                                        ADDR[15:0] <= config_data;
                                                                        CMD <= LOAD_REG1;
                                                                        if(i_cmd_ack==1'b1)
                                                                                begin
                                                                                        CMD <= NOP;
                                                                                        ADDR <= 0;
                                                                                        config_data <= 23'd0;
                                                                                        main_state <= MAIN_STATE_READA;
                                                                                        init_state_read <= PRECHARGE;
                                                                                end
                                                                        else
                                                                                init_state_read <= LOAD_REG1;
                                                                end
                                                endcase

出0入442汤圆

发表于 2014-1-9 18:04:43 | 显示全部楼层
ximuyi 发表于 2014-1-9 16:03
附上一段设置SDRAM的测试OK的代码,希望对你有帮助:
case(init_state_read)
                                                        PRECHARGE://100

你就直接告诉LZ原因好了。很简单,CL=2 SDRAM出数据,但是FPGA得花一周期读入,所以就变成CL=3了。

出0入0汤圆

发表于 2014-1-9 20:13:23 | 显示全部楼层
CL=2是从sdram 吐出data开始算大约2个cycle,到controller latch data还要经过板子delay,fpga pad delay,你要自己算controller的clock latch实际data的时间是在什么时候

出0入0汤圆

 楼主| 发表于 2014-1-9 21:12:36 | 显示全部楼层
谢谢楼上几位热心的回答,但是我感觉不是这个问题,另外有个问题比较疑惑,设计这类模块的时候,大家有没有在第一拍锁存数据,比如一个sdram模块,外部输入信号为wr_en信号和16位地址信号,大家在wr_en=1的时候,有没有锁存地址信号,这样外部调用的时候wr_en和地址信号只需要维持一个时钟周期就行了,,但是这样的话,第一拍必须锁存,这样的话,跟不锁存相比,就慢了一拍了,  不知道大家有没有理解这个意思,因为如果是时序逻辑,必定慢一拍,但是如果用组合逻辑却可以实现不慢一拍,但是逻辑消耗感觉有比较大,不知道大家怎么处理的

出0入0汤圆

发表于 2014-1-10 09:52:51 | 显示全部楼层
也在学,你抓的图上面怎么没有clock啊,能再抓个带时钟的吗?最好有SDRAM的时钟和控制器的都带上,一起学习一下;

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-8-27 06:09

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

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