特权同学sdram接口源程序分析.pdf

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
特权同学SDRAM-测试程序程序分析 知识点:sdram控制器,时序约束,测试文件 第一部分:基本模块 Sdram测试包括外部数据产生模块,fifo模块,sdram 控制器,uart-RS232传输模块。 Sdram控制器模块分块三块:控制模块,命令模块,数据传输模块 具体来说, 1. 为什么要用FIFO模块呢?是因为外部数据与SDRAM 控制器接收的速率不匹配,外部数 据产生速率是FPGA 系统时钟(25MHz),而SDRAM 是100MHz;同样,把SDRAM 中数 据通过串口传输出到上位机时,也会有一个速率匹配问题,所以就有两个 FIFO,其中一个 写FIFO,一个读FIFO。 2. Sdram 控制器中控制模块完成初始化,自刷新,读写控制。命令模块有两个状态机,一 个是初始化状态,另一个是工作状态。 第二部分:各个部分详解 1. Sdram 控制模块 输入引脚有:读、写请求, 输出引脚有:写应答(表明正在写),读应答,忙信号(表明正在工作),初始状态,工 作状态,计数时钟(用于定义时间段,与数据传输模块紧密联系) 因为要用到好多时间参数,就直接建立一个参数文件。这个参数文件不是一个模块,所以不 能用module endmodule 来表示,里面所有参数有`define 来开始,只是最后命名为.v 文件。 要用这个文件参数必须要前面加个“`”。`define end_trp cnt_clk_r= =TRP_CLK, 其 中 cnt_clk_r与控制模块中cnt_clk_r一致。(这点是新学的) 初始化过程分为200us 等待,所有L-band预充电,8个预刷新,模式寄存器设置。 // //上电后200us 计时,计时时间到,则done_200us=1 // reg[14:0] cnt_200us; always @(posedge clkornegedge rst_n) if(!rst_n) cnt_200us = 15d0; else if(cnt_200us 15d20_000) cnt_200us = cnt_200us+1b1; //计数 assign done_200us = (cnt_200us == 15d20_000); //条件满足则done_200us=1,此后一直保 持高电平,因为计数器保持不变,这不同于一个脉冲信号 // //SDRAM 的初始化操作状态机 // 主要分析一个这个时间是怎么计算的?这个时间计算相当于用一个计时开关,这个开关就是 cnt_rst_n(低电平计数器复位)。在参数文件中,`define end_trp cnt_clk_r= =TRP_CLK 。 cnt_clk_r 在启动时就一直递增,而达到TRP_CLK 时,也就是end_trp 成立,完成标志,关 闭开关cnt_rst_n. always @(posedge clkornegedge rst_n) if(!rst_n) cnt_clk_r= 9d0; //计数寄存器复位 else if(!cnt_rst_n) cnt_clk_r= 9d0; //计数寄存器清零 else cnt_clk_r= cnt_clk_r+1b1; //启动计数延时 //计数器控制逻辑 always @(init_state_r orwork_state_rorcnt_clk_r)begin case (init_state_r) `I_NOP: cnt_rst_n= 1b0; `I_PRE: cnt_rst_n= (TRP_CLK != 0);//预充电延时计数启动 `I_TRP: cnt_rst_n= (`end_trp)? 1b0:1b1; //预充电计数正好是TRP_CLK, 计数结束,清零计数器 // //15us 计时,产生自刷新请求。//每60ms 全部4096 行存储区进行一次自刷新,一行刷新时间 是15us,这是一直在循环 //( 存储体中电容的数据有效保存期上限是64ms ) // 这怎么与行选通配合呢?应该是在15us 内进行了一次行有效跳转。 刷新操作分为两种:自动刷新(AR)和自刷新(selfrefresh,SR),不论是何种刷新方式,都 不需要外部提供行地址信息,因为这是一个内部的自动操作。对于AR,SDRAM 内部有一 个行地址生成器(也叫刷新计数器)用来自动的依次生成行地址。由于刷新是针对一行中所 有存储体进行,所以无

您可能关注的文档

文档评论(0)

wx171113 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档