SDRAM 控制器(五)——数据读模块

本文详细介绍了SDRAM的全页突发读取模式,包括激活指令、行激活、列读取、潜伏期和数据读取的时序。通过状态机实现模块功能,控制数据读取并确保正确时序,以读取SDRAM中的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、知识点

        SDRAM提供了多种数据读取方式,诸如单个读、页突发读(突发长度1、2、4、8、全页)等。本文目前只对全页突发的模式做一个讲解与仿真。

各信号说明如下:

        CK:工作时钟,具体时钟频率视不同的芯片而不同 

        CKE:时钟使能,在整个突发读过程中都需要拉高(实际上除了在休眠模式拉低,其他操作全需要拉高)

        COMMAND:SDRAM命令,由4根线拼接而成,分别是CS#(片选信号),RAS#(行选通信号),CAS#(列选通信号),WE#(写使能信号),通过这4根命令线,再结合SDRAM的地址、输入输出数据等,就可以对SDRAM进行各种命令操作

        DQM/DQML,DQMU:数据掩码,通过数据掩码可以实现对输入或输出数据的某一位进行“掩埋”,也就是使某一位失效

        A[9:0],A[12:11]:数据地址线,同时也可用来设置模式寄存器

        A10:数据地址线,同时也可以用来使能一些具体操作,比如控制自动预充电使能、使能预充电bank数量

        BA[1:0]:bank地址

        DQ数据:数据总线,突发读过程中需要根据时序获取数据总线上SDRAM输出的数据

通过对时序图的分析可以总结出初始化过程如下:

        1.发送激活指令,同时在bank总线输出想要写入数据的bank地址,在地址总线输出写入数据的行地址,所以该操作也称之为 “ 行激活 ”

        2.发送激活指令后需要等待一定的时间,即tRCD,在此期间同样需要发送NOP空指令(发送空指令是为了防止对SDRAM进行误操作)

        3.等待结束后发送读指令,在地址总线输出要读取数据的列首地址,然后等待潜伏期(CL,CAS latency)个时钟周期

        4.潜伏期结束后,数据总线开始输出数据,此后每个周期均有数据输出,直到向SDRAM发送突发终止指令,结束这次突发读取,由此可实现突发长度的控制(不能超过一行数据的最大数,即2*9=512个数据)

(注:本次不带有自动预充电过程即不需要以下操作:

        5.发送预充电指令对所有BANK进行预充电操作,A10拉高即是选中所有BANK

        6.进行预充电操作后需要等待一定的时间,即tRP,在此期间同样需要发送NOP空指令(发送空指令是为了防止对SDRAM进行误操作)

        7.tRP时间结束后,一次突发写操作完成)

 2、设计

信号名称 位宽 描述 信号名称 位宽 描述
sys_clk 1 时钟信号100M rd_cmd 4 4位SDRAM命令,组成{CS#,RAS#,CAS#,WE#}
sys_rst_n 1 复位信号,低电平有效 rd_ba 2 2位BANK地址,共4个BANK
init_end     1 初始化完成信号,只有完成初始化后才能进行读操作 rd_addr   13 13位SDRAM地址
rd_data  16 从SDRAM读取到的数据 rd_ack 1 读操作响应信号,表示该模块对SDRAM进行了读操作
rd_burst_len     10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发光中请勿扰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值