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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: sxymj

[原创] 参照特权同学的代码自己修改的sdram控制器

[复制链接]
发表于 2013-7-11 13:52:22 | 显示全部楼层
下来看看
发表于 2013-7-18 08:45:07 | 显示全部楼层
参考一下
发表于 2013-7-18 09:53:46 | 显示全部楼层
这个得定下~~~~~~~~~~~~~~
发表于 2013-8-8 22:13:01 | 显示全部楼层
这个要顶一下,不过觉得MIG挺好的。
发表于 2013-9-2 22:17:12 | 显示全部楼层
能用吗?
发表于 2013-9-3 11:24:07 | 显示全部楼层
不错,顶楼主
发表于 2013-10-20 14:55:42 | 显示全部楼层
请问下楼主:该程序中的SDRAM读写地址这一部分是怎么理解的啊?
    //读写sdram地址产生
        reg[18:0] addr;
//sdram地址寄存器

     always @(posedge clk or negedge rst_n)

    if(!rst_n) addr <= 19'd0;

       else if(!wr_done && cntwr == 6'h3f) addr <= addr+1'b1;//写地址产生

        else if(wr_done && neg_rdack) addr <= addr+1'b1;
//读地址产生
////////////test

      assign moni_addr = {addr,3'b000};


从这里可以看出用cntwr做计数,每过1个3F的长度,地址才加1,但是后面又可以看到每个cntwr的时钟下又会写一次数据


always @(posedge clk or negedge rst_n)

if(!rst_n) wrf_wrreqr <= 1'b0;

else if(!wr_done) begin
//上电0.5ms延时完成

if(cntwr == 6'h05) wrf_wrreqr <= 1'b1;
//写请求信号产生

else if(cntwr == 6'h0d) wrf_wrreqr <= 1'b0;
//请求信号撤销

end

always @(posedge clk or negedge rst_n)

if(!rst_n) wrf_dinr <= 16'd0;

else if(!wr_done && ((cntwr > 6'h05) && (cntwr <= 6'h0d))) begin
//上电0.5ms延时完成

wrf_dinr <= wrf_dinr+1'b1;
//写入数据递增

end

这里cntwr从06开始到0D之间,每过一个clk的就写入一个数据,所以我很奇怪,为什么数据已经在变了,但是地址没变呢?


还有就是moni_addr = {addr,3'b000},这个地址为读写SDRAM时地址暂存器,(bit21-20)L-Bank地址bit19-8)为行地址,(bit7-0)为列地址 ,那为什么后三位全给0呢?

   非常期待您的回答!谢谢!
发表于 2013-12-17 18:48:03 | 显示全部楼层
下来看一哈
发表于 2013-12-26 16:46:03 | 显示全部楼层
学习一下
发表于 2013-12-26 22:01:20 | 显示全部楼层
下来看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

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

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