欢迎来到天天文库
浏览记录
ID:38524680
大小:205.84 KB
页数:9页
时间:2019-06-14
《特权同学sdram源程序分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、特权同学SDRAM-测试程序程序分析知识点:sdram控制器,时序约束,测试文件第一部分:基本模块Sdram测试包括外部数据产生模块,fifo模块,sdram控制器,uart-RS232传输模块。Sdram控制器模块分块三块:控制模块,命令模块,数据传输模块具体来说,1.为什么要用FIFO模块呢?是因为外部数据与SDRAM控制器接收的速率不匹配,外部数据产生速率是FPGA系统时钟(25MHz),而SDRAM是100MHz;同样,把SDRAM中数据通过串口传输出到上位机时,也会有一个速率匹配问题,所以就有两个FIFO,
2、其中一个写FIFO,一个读FIFO。2.Sdram控制器中控制模块完成初始化,自刷新,读写控制。命令模块有两个状态机,一个是初始化状态,另一个是工作状态。第二部分:各个部分详解1.Sdram控制模块输入引脚有:读、写请求,输出引脚有:写应答(表明正在写),读应答,忙信号(表明正在工作),初始状态,工作状态,计数时钟(用于定义时间段,与数据传输模块紧密联系)因为要用到好多时间参数,就直接建立一个参数文件。这个参数文件不是一个模块,所以不能用moduleendmodule来表示,里面所有参数有`define来开始,只是最
3、后命名为.v文件。要用这个文件参数必须要前面加个“`”。`defineend_trpcnt_clk_r==TRP_CLK,其中cnt_clk_r与控制模块中cnt_clk_r一致。(这点是新学的)初始化过程分为200us等待,所有L-band预充电,8个预刷新,模式寄存器设置。//------------------------------------------------------------------------------//上电后200us计时,计时时间到,则done_200us=1//--------
4、---------------------------------------------------------------------reg[14:0]cnt_200us;always@(posedgeclkornegedgerst_n)if(!rst_n)cnt_200us<=15'd0;elseif(cnt_200us<15'd20_000)cnt_200us<=cnt_200us+1'b1;//计数assigndone_200us=(cnt_200us==15'd20_000);//条件满足则done_20
5、0us=1,此后一直保持高电平,因为计数器保持不变,这不同于一个脉冲信号//------------------------------------------------------------------------------//SDRAM的初始化操作状态机//------------------------------------------------------------------------------这个时间是怎么计算的?主要分析一个这个时间计算相当于用一个计时开关,这个开关就是cnt_rst_n
6、(低电平计数器复位)。在参数文件中,`defineend_trpcnt_clk_r==TRP_CLK。cnt_clk_r在启动时就一直递增,而达到TRP_CLK时,也就是end_trp成立,完成标志,关闭开关cnt_rst_n.always@(posedgeclkornegedgerst_n)if(!rst_n)cnt_clk_r<=9'd0;//计数寄存器复位elseif(!cnt_rst_n)cnt_clk_r<=9'd0;//计数寄存器清零elsecnt_clk_r<=cnt_clk_r+1'b1;//启动计数
7、延时//计数器控制逻辑always@(init_state_rorwork_state_rorcnt_clk_r)begincase(init_state_r)`I_NOP:cnt_rst_n<=1'b0;`I_PRE:cnt_rst_n<=(TRP_CLK!=0);//预充电延时计数启动`I_TRP:cnt_rst_n<=(`end_trp)?1'b0:1'b1;//预充电计数正好是TRP_CLK,计数结束,清零计数器//-----------------------------------------------
8、-------------------------------//15us计时,产生自刷新请求。//每60ms全部4096行存储区进行一次自刷新,一行刷新时间是15us,这是一直在循环//(存储体中电容的数据有效保存期上限是64ms)//------------------------------------------------------
此文档下载收益归作者所有