在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
查看: 11956|回复: 23

见鬼了,我控制的SDRAM内存条就是读不出数据来?

[复制链接]
发表于 2003-11-20 10:14:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
不知道我的思路会有什么问题,数据总读不出来,是不是加给内存条的时钟振幅太低了,:
1.器件:使用SDRAM内存条,FPGA用ACEX1K-3,外加20MHZ的时钟(速度要求不高),另外,该时钟通过FPGA倒相之后直接加给内存条做为它的运行时钟(不知为什么,振幅只有2.1V左右).
2.上电之后,不立即进行初始设置.只有当FPGA从计算机端口锁存第一个数据时,FPGA才对内存条进行模式设置和初次充电和刷新等初始工作.以后每接一个数据就充电和刷新一次,时间最大不会超过13us .
初始化程序如下:
--process4: Issue the Initialization command first;
initial: Process(clk,reset)
        signal     initial_temp:    std_logic_vector(10 downto 0);
         begin
          if reset = '0' then
                initial_addr_counter<="000000000000";
                initial_temp<="0000000000000001";
                cmd0<="1111";
                initial_end<='0';
          elsif clk'event and clk='1' then
            if load_mode_con='1' then
              if initial_temp(15)='0' then
                   initial_temp(15 downto 1)<=initial_temp(14 downto 0);
                   initial_temp(0)<='0';
                   if initial_temp(2)='1' then
                      cmd0<="1111";
                      initial_addr_counter(10) <='1';
                   elsif initial_temp(3)='1' then
                      cmd0<="0010";    ------ -----precharge
                   elsif initial_temp(4)='1' then
                      cmd0<="1111";    ------ -----precharge
                      initial_addr_counter(10)<='0';
                   elsif initial_temp(5)='1' or initial_temp(9)='1' then
                      cmd0<="0001"; ---auto refresh
                      initial_addr_counter(10)<='0';
                   elsif initial_temp(12)='1' then
                      cmd0<="1111";
                      initial_addr_counter<="001000100000";
                   elsif initial_temp(13)='1' then
                      cmd0<="0000";    ------mode register set
                      initial_addr_counter<="001000100000";
                              --A12-A0-13 bits
                              --burst=1; cas_latency=2;single write and read;
                              --sequential addressing mode
                   elsif initial_temp(14)='1' then
                      cmd0<="1111";
                   else
                      cmd0<="1111";
                     initial_addr_counter<="000000000000";
                   end if;
                   initial_end<='0';
              else
                  initial_end<='1';
                  cmd0<="1111";
                  initial_addr_counter<="000000000000";   
             end if;
           end if;
          end if;
     end process;
其中cmd0<=cs&ras&cas&we.
发表于 2003-11-20 13:48:00 | 显示全部楼层

见鬼了,我控制的SDRAM内存条就是读不出数据来?

请问你用sdram module 仿真过么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-11-20 15:49:51 | 显示全部楼层

见鬼了,我控制的SDRAM内存条就是读不出数据来?

坛主,怎么仿真啊.
不过好象我的上电操作真有问题.
回复 支持 反对

使用道具 举报

发表于 2003-11-20 15:57:58 | 显示全部楼层

见鬼了,我控制的SDRAM内存条就是读不出数据来?

你的建立一个sdram dimm 的方真模型,用该模型来模拟你的真实的内存条,然后检验你的设计是否能正确读写。
sdram 的颗粒仿真模型可以到美光的网站上找到相应的型号,然后把这些模型组合起来形成一个dimm的方真模型。
仿真是一定要做的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-11-20 16:53:47 | 显示全部楼层

见鬼了,我控制的SDRAM内存条就是读不出数据来?

那我到没有做,我只是在QUARTUS下进行时序仿真后配置到FPGA,用控制器读出来判断.
我试试看,谢谢坛主
回复 支持 反对

使用道具 举报

发表于 2003-12-22 05:11:42 | 显示全部楼层

见鬼了,我控制的SDRAM内存条就是读不出数据来?

Wherer is 美光的网站??? Please.
回复 支持 反对

使用道具 举报

发表于 2003-12-22 08:59:27 | 显示全部楼层

见鬼了,我控制的SDRAM内存条就是读不出数据来?

http://www.micron.com/products/dram/sdram/part.aspx?part=MT48LC128M4A2TG-7E#SIM
回复 支持 反对

使用道具 举报

发表于 2004-7-15 11:07:56 | 显示全部楼层

见鬼了,我控制的SDRAM内存条就是读不出数据来?

坛主,能不能说的再详细点呢,有了仿真模型,那测试文件该写些什么呢?
而且美光上面的SDRAM模型好象有bug,我总是解决不好,坛主能不能给一个编译好了的模型呢。谢谢!
回复 支持 反对

使用道具 举报

发表于 2004-7-15 11:30:05 | 显示全部楼层

见鬼了,我控制的SDRAM内存条就是读不出数据来?

mt48lc8m16a2

5_708_8.zip

8.93 KB, 下载次数: 61 , 下载积分: 资产 -2 信元, 下载支出 2 信元

回复 支持 反对

使用道具 举报

发表于 2004-7-15 15:15:52 | 显示全部楼层

见鬼了,我控制的SDRAM内存条就是读不出数据来?

谢谢楼主,可是我用ISE的XST综合的时候就老是出错。
parameter tAC  =   5.4;
    parameter tHZ  =   5.4;
    parameter tOH  =   3.0;
    parameter tMRD =   2.0;     // 2 Clk Cycles
    parameter tRAS =  37.0;
    parameter tRC  =  60.0;
    parameter tRCD =  15.0;
    parameter tRFC =  66.0;
    parameter tRP  =  15.0;
    parameter tRRD =  14.0;
    parameter tWRa =   7.0;     // A2 Version - Auto precharge mode (1 Clk + 7 ns)
    parameter tWRm =  14.0;     // A2 Version - Manual precharge mode (14 ns)
ERROR:Xst:919 - mt48lc8m16a2.v line 140: Unsupported constant.
ERROR:Xst:862 - mt48lc8m16a2.v line 140: Unsupported parameter declaration.

    // Timing Check variable
    time  MRD_chk;
    time  WR_chkm [0 : 3];
    time  RFC_chk, RRD_chk;
    time  RC_chk0, RC_chk1, RC_chk2, RC_chk3;
    time  RAS_chk0, RAS_chk1, RAS_chk2, RAS_chk3;
    time  RCD_chk0, RCD_chk1, RCD_chk2, RCD_chk3;
    time  RP_chk0, RP_chk1, RP_chk2, RP_chk3;
ERROR:Xst:850 - mt48lc8m16a2.v line 156: Unsupported Time variable.
这是它的提示错误,我都不知道错在什么地方。真是郁闷啊5555555555
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐 上一条 /1 下一条


手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-8-26 10:48 , Processed in 0.025030 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表