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

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 13020|回复: 29

Altera的SDRAM Controller及DDR SDRAM Controller参考代码大讨论,欢迎参与!

[复制链接]
发表于 2004-5-13 09:36:45 | 显示全部楼层 |阅读模式

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

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

x
SDRAM的控制器还好一些,但他的DDR Controller有明显的问题:
(1)DDR SDRAM已经不存在Page Mode操作问题,但他的代码却已然存在Page操作模式。
(2)模式寄存器和扩展模式寄存器设置:DDR SDRAM的模式寄存器跟SDRAM的模式寄存器有很大区别,各个位的含义也不太一样,而参考中好像跟SDRAM一样一样的。
(3)待续。。。。
不久我将给出我修改过的代码,欢迎大家参与讨论,共同提高!
发表于 2004-5-13 10:22:35 | 显示全部楼层

Altera的SDRAM Controller及DDR SDRAM Controller参考代码大讨论,欢迎参与!

ddr
always @(posedge CLK or negedge RESET_N)
begin
        if (RESET_N == 0)
        begin
                oe_shift <= 0;
                oe1      <= 0;
                oe2      <= 0;
                OE       <= 0;
        end
        else
        begin
                if (do_writea1 == 1)
                begin
                        if (SC_BL == 1)                          //  Set the shift register to the appropriate
                                oe_shift <= 1;                   // value based on burst length.
                        else if (SC_BL == 2)
                                oe_shift <= 3;
                        else if (SC_BL == 4)
                                oe_shift <= 15;
                                oe1 <= 1;
                end
                else
                begin
                        oe_shift[6:0] <= oe_shift[7:1];          // Do the shift operation
                        oe_shift[7]   <= 0;
                        oe1  <= oe_shift[0];
                        oe2  <= oe1;
                        oe3  <= oe2;
                        oe4  <= oe3;
                        if (SC_RC == 2)
                                OE   <= oe3;
                        else
                                OE   <= oe4;
                end
        end
end
sdram
always @(posedge CLK or negedge RESET_N)
begin
        if (RESET_N == 0)
        begin
                oe_shift <= 0;
                oe1      <= 0;
                oe2      <= 0;
                OE       <= 0;
        end
        else
        begin
                if (SC_PM == 0)
                begin
                        if (do_writea1 == 1)
                        begin
                                if (SC_BL == 1)                       //  Set the shift register to the appropriate
                                        oe_shift <= 0;                // value based on burst length.
                                else if (SC_BL == 2)
                                        oe_shift <= 1;
                                else if (SC_BL == 4)
                                        oe_shift <= 7;
                                else if (SC_BL == 8)
                                        oe_shift <= 127;
                                oe1 <= 1;
                        end
                        else
                        begin
                                oe_shift[6:0] <= oe_shift[7:1];       // Do the shift operation
                                oe_shift[7]   <= 0;
                                oe1  <= oe_shift[0];
                                oe2  <= oe1;
                                oe3  <= oe2;
                                oe4   <= oe3;
                                if (SC_RC == 2)
                                        OE <= oe3;
                                else
                                        OE <= oe4;
                        end
                end
                else
                begin
                        if (do_writea1 == 1)                                    // OE generation for page mode accesses
                                oe4   <= 1;
                        else if (do_precharge == 1 | do_reada == 1 | do_refresh)
                                oe4   <= 0;
                        OE <= oe4;
                end
                              
        end
end
发表于 2004-5-13 10:27:00 | 显示全部楼层

Altera的SDRAM Controller及DDR SDRAM Controller参考代码大讨论,欢迎参与!

[这个贴子最后由atuhappy在 2004/05/13 10:29am 第 1 次编辑]

altera的代码只是一个参考,并不一定能用,买ip才行
估计是同一个人写的代码
自己用,还是要自己设计的
发表于 2004-5-13 10:42:19 | 显示全部楼层

Altera的SDRAM Controller及DDR SDRAM Controller参考代码大讨论,欢迎参与!

                               SA[10] <= !SC_PM;           // set SA[10] for autoprecharge read/write or for a precharge all command
                                                         // don't set it if the controller is in page mode.  
ddr中用于充电或刷新设置,是整个芯片还是当前行
 楼主| 发表于 2004-5-13 11:08:23 | 显示全部楼层

Altera的SDRAM Controller及DDR SDRAM Controller参考代码大讨论,欢迎参与!

Precharge All是刷新整个芯片。
我想在这个参考设计的基础上进行修改,你觉得可行不?
还有他的整个设计没有使用状态机,使用状态机改进一下可能更好一些。
发表于 2004-5-13 12:09:12 | 显示全部楼层

Altera的SDRAM Controller及DDR SDRAM Controller参考代码大讨论,欢迎参与!

你的ddr控制器是用在什么地方。
当然可以在这个基础上修改了。
用不用状态机问题不大。如果有主机完全控制,状态机没必要,否则还是加上的好
 楼主| 发表于 2004-5-13 12:30:40 | 显示全部楼层

Altera的SDRAM Controller及DDR SDRAM Controller参考代码大讨论,欢迎参与!

用于信号产生,有DSP控制。
发表于 2004-5-13 12:57:28 | 显示全部楼层

Altera的SDRAM Controller及DDR SDRAM Controller参考代码大讨论,欢迎参与!

用于信号发生器?
 楼主| 发表于 2004-5-14 09:29:27 | 显示全部楼层

Altera的SDRAM Controller及DDR SDRAM Controller参考代码大讨论,欢迎参与!

对阿!把DDR当做SRAM使用。
发表于 2004-5-14 10:13:21 | 显示全部楼层

Altera的SDRAM Controller及DDR SDRAM Controller参考代码大讨论,欢迎参与!

好象有片文章写的就是用ddr做信号发生器的
你可以参考以下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-8 22:40 , Processed in 0.022688 second(s), 7 queries , Gzip On, Redis On.

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